⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_1602a.c

📁 1602A 显示的英文句子。实验板上已通过
💻 C
字号:
//该程序用于lcd滚动字幕显示
//作者:龙爷2009年01月11日

//------头文件及配置---------------
#include<pic.h>
 __CONFIG(0xf73a);       
//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡

//-----函数申明及数据定义---------------
#define rs RA1
#define rw RA2
#define e  RA3
const char diyi[ ]={'I','t',' ','i','s',' ','i','m','p','o','s','s','i','b','l','e',' ','t','o',' ','d','e','f','i','d','e',' '};
const char dier[ ]={'A',' ','p','e','r','s','o','n',' ','w','h','o',' ','n','e','v','e','r',' ','g','i','v','e','s',' ','u','p','!'};
void init();                   //I/O口初始化函数
void lcd_init();               //LCD初始化函数
void write_yi();               //显示第一行地址函数
void write_er();               //显示第二行地址函数
void write_yiyd();             //第一行移动函数
void write_eryd();             //第二行移动函数
void write(char x);            //显示1字节数据函数
void lcd_enable();             //LCD显示设置函数
void delay();                  //延时函数
void delay1();                 //延时函数1

//----------主函数-----------------------------

void main()
 { 
    while(1)
      {
        init();                //调用I/O口初始化函数
        lcd_init();            //调用LCD初始化函数
        write_yi();           //调用显示第一行
        PORTD=0X07;           //LCD移动显示初始化
        lcd_enable();
        write_yiyd();         //移动显示第一行后面的字幕
        PORTD=0X1;            //清除显示
        lcd_enable();
        PORTD=0X06;            //文字不动,光标右移
        lcd_enable();          //去掉这两条语句,想想为什么不可以。
        PORTD=0XC0;            //设置第2行显示地址
        lcd_enable();          //调用LCD显示设置函数
        write_er();           //调用第二行函数
        PORTD=0X07;           //LCD移动显示初始化
        lcd_enable();
        write_eryd(); 
        
  
      }
 }
 
//---------------------------------------
//I/O口初始化函数
void init()
 {
    ADCON1=0X07;               //设置A口为普通I/O口
    TRISA=0X00;                //设置A口为输出
    TRISD=0X00;                //设置D口为输出
 }

//---------------------------------------
//LCD初始化函数
void lcd_init()
 {
    PORTD=0X1;                 //清除显示
    lcd_enable();
    PORTD=0X38;                //8位2行5*7点阵
    lcd_enable();
    PORTD=0X0e;                //显示开,光标开,闪烁
    lcd_enable();
    PORTD=0X06;                //文字不动,光标右移
    lcd_enable();
    PORTD=0X80;                //地址置零,也即地址为头一位。
    lcd_enable();
 }
 
//--------------------------------------
//显示及移动第一行子函数
void write_yi()
 {
    int i;
    for(i=0;i<0x10;i++)        //一共16字节数据
       {
         write(diyi[i]);        //查表获取数据并调用写一个字节数据函数送LCD显示
         delay1();
       }
 }

void write_yiyd()
 {
    int i;
    for(i=0X10;i<0X1B;i++)        //一共16字节数据
       {
         write(diyi[i]);        //查表获取数据并调用写一个字节数据函数送LCD显示
         delay1();              //延时,便于观察
       }
 }



//--------------------------------------
//显示及移动第二行子函数
 void write_er()
 {
    int i;
    for(i=0;i<0x10;i++)       //一共显示16字节数据
       {
         write(dier[i]);       //查表获取数据并调用写一个字节数据函数送LCD显示
         delay1();
       }
 }
  
 void write_eryd()
 {
	 int i;
    for(i=0X10;i<0X1c;i++)        //一共16字节数据
       {
         write(dier[i]);        //查表获取数据并调用写一个字节数据函数送LCD显示
         delay1();              //延时,便于观察
       }
 }
//--------------------------------------
//写一个字节数据函数  
void write(char x)
 {
  PORTD=x;                   //待显示数据送PORTD口
  rs=1;                      //该字节数据为数据,而不是命令
  rw=0;                      //此次操作为写,而不是读
  e=0;                       //拉低使能信号
  delay();                   //保持使能信号为低一段时间
  e=1;                       //拉高使能信号,建立LCD操作所需要的上升沿
 }

//--------------------------------------
//LCD显示设置函数
void lcd_enable()
 {
   rs=0;                     //该字节数据为命令,而不是数据
   rw=0;                     //此次操作为写,而不是读
   e=0;                      //拉低使能信号
   delay();                  //保持使能信号为低一段时间
   e=1;                      //拉高使能信号,建立LCD操作所需要的上升沿
 }

//--------------------------------------
//延时函数
void delay()
{
	int i;
	for(i=5000;i>0;i--);
	}
	
void delay1()
 {
   int i,j;
   for(i=1000;i>0;i--)
  {
	  for(j=30;j>0;j--);
	  }
 }

 


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -