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

📄 lcd1602.c

📁 好用的lcd1602 液晶驱动程序
💻 C
字号:
#include"reg51.h"
#include"lcd1602.h"
#include"intrins.h"
#define XTAL 12	

/******************** START *****************************/
void delay_xms(uchar x){	  /*delay  x ms */
   uchar i;
   for(;x>0;x--)
   {  for(i=0;i<(uchar)(1000*XTAL/60-2/5);i++);   }	  /*delay_1ms*/
}
/*产生一个使能脉冲*/
void En_Toggle(void)
{ 
   LCD_EN=1;
   _nop_();
   LCD_EN=0;
   _nop_();
}
/*检测忙标志,忙则等待*/
void wait_until_ready(void) 
{  uchar temp=0 ;
   LCD_RS=0;
   LCD_RW=1;
   LCD_EN=1;
   LCD_DATA=0xff;
   do{temp=LCD_DATA;}while(temp&0x80);
   LCD_EN=0;
}
/*LCD1602初始化*/
void LCD_init(void)
{  delay_xms(5);
    LCD_cmd(0x01);   /*清显示*/
	LCD_cmd(0x38);
	delay_xms(5);	 /*显示模式设置*/
	LCD_cmd(0x08);   /*显示关闭*/
	delay_xms(5);    
    LCD_cmd(0x06);   /*写入数据后光标右移*/
    LCD_cmd(0x0c);   /*0x0c显示开,不显示光标 ;0x0f显示光标*/
}
void LCD_cmd(uchar cmd)/*写入控制命令,RS=0,RW=0*/
{
   wait_until_ready();	
   LCD_RS=0;
   LCD_RW=0;
   _nop_();
   LCD_DATA=cmd;
   _nop_();
   En_Toggle();   
}
void LCD_char(char str)/*写入要显示的字符,RS=1,RW=0-*/
{
   wait_until_ready();
   LCD_RS=1;
   LCD_RW=0;
   _nop_();_nop_();_nop_();
   LCD_DATA=str;
   _nop_();_nop_();_nop_();
   En_Toggle();	    
}
void setxy(uchar x,uchar y)/*设定显示位置,行x=1/2,列y=1~16的任意整数*/
{
   uchar temp=1;
   if(x==1)
   { temp=0x80+y-1; LCD_cmd(temp);  }
   else
   { temp=0xC0+y-1; LCD_cmd(temp);  }
}
/*写字符串*/
void LCD_string(char *s)
{
 for( ;*s!='\0';s++)LCD_char(*s);
}
/*************LCD1602  END ********************/

⌨️ 快捷键说明

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