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

📄 lcd1602.txt

📁 液晶1602源程序
💻 TXT
字号:
unsigned char BUSY;//用来判断是否忙,0x80为忙
 
 void delay1ms(unsigned int i) 	//用于液晶显示的延时1ms子程序
 {                   			 //当i取uint,y取uchar,y=150,晶振为12M时,比较准确
    unsigned char y;
    while(i--)
	{
	    for(y=0;y<150;y++);
	}
 }

 void Read(void)//读状态
 {
    RS=0;RW=1;
	   En=0;		// 此处的“EN” 反相后接到液晶的使能端,时序很重要,最好严格按照来做
    P0=0xff;	// 经试验,为必须的,没有的话,可能侥幸会正常,
            	// 但有时出了什么问题都不懂
    BUSY=(P0&0x80);
	   En=0;RW=0;
 }

 void WriteI(unsigned char i)	//写指令
 { 
    do Read();
    while(BUSY==0x80);
    RS=0;RW=0;
	P0=i;		//写指令时是先赋值再使能
	En=0;
	En=1;RW=1;
}

void InitWriteI(unsigned char i)//初始时写指令,不用判忙
{
    RS=0;RW=0;
	   P0=i;
	   En=0;
	   En=1;RW=1;
}

void WriteD(unsigned char i)//写数据
{
    do Read();
    while(BUSY==0x80);
    RS=1;RW=0;
	   P0=i;
	   En=0;
	   En=1;RW=1;
}

void Init()        //严格按照液晶的文档来写的,所以会有刚开始的3个delay1ms()函数
{
    unsigned char i;
	   delay1ms(15);
	   InitWriteI(0x38);//显示模式设置
	   delay1ms(5);
	   InitWriteI(0x38);
	   delay1ms(5);
	   InitWriteI(0x38);
	   WriteI(0x38);
	   WriteI(0x08);//关闭显示
	   WriteI(0x01);//显示清屏
    WriteI(0x06);//显示光标移动设置
   	WriteI(0x0f);//显示开及光标设置
	
	for(i=5;i<=13;i++)//显示频率字符
	      {
	       WriteI(0x80|i);//指定要写的位置,要或0x80
	       WriteD(buffer_KHz[i-5]);//在当前位置写入数据
	      }
	
	for(i=6;i<=11;i++)//显示相位字符
	      {
	       WriteI(0x80|i);//指定要写的位置,要或0x80
	       WriteD(buffer_pha[i-6]);//在当前位置写入数据
	      }
   	for(i=0x40;i<=0x45;i++)//显示频率字符
	      {
	       WriteI(0x80 + i);//指定要写的位置,要或0x80
	       WriteD(buffer_KHz[i-0x40]);//在当前位置写入数据
	      }
	
	for(i=0x46;i<=0x4b;i++)//显示相位字符
	      {
	       WriteI(0x80 + i);//指定要写的位置,要或0x80
	       WriteD(buffer_pha[i-0x46]);//在当前位置写入数据
	      }

}

⌨️ 快捷键说明

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