1602的常用函数 - 图文 下载本文

EN_SET;

DataPort= com; _nop_(); EN_CLR; }

//********写指令函数************

void LCD_write_command(uchar dat) {

delay_n40us(10); LCD_RS=0;//指令 LCD_RW=0;//写入 LCD_E=1;//允许 LCD_DB=dat;

delay_n40us(10);//实践证明,我的LCD1602上,用for循环1次就能完成普通写指令。 LCD_E=0;

delay_n40us(10);//实践证明,我的LCD1602上,用for循环1次就能完成普通写指令。 }

3)写入数据函数

void LCD_Write_Data(unsigned char Data) {

while(LCD_Check_Busy()); //忙则等待 RS_SET; RW_CLR; EN_SET;

DataPort= Data; _nop_(); EN_CLR; }

//********写数据函数*************

void LCD_write_data(uchar dat) {

delay_n40us(10); LCD_RS=1;//数据 LCD_RW=0;//写入 LCD_E=1;//允许 LCD_DB=dat; delay_n40us(10); LCD_E=0; delay_n40us(10); }

4)清屏函数

void LCD_Clear(void) {

LCD_Write_Com(0x01); DelayMs(5); }

5)写入字符串函数

void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) {

if (y == 0) {

LCD_Write_Com(0x80 + x); //表示第一行 } else {

LCD_Write_Com(0xC0 + x); //表示第二行 } while(*s) {

LCD_Write_Data( *s); s ++; } }

6)写入字符函数

void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) {

if (y == 0) {

LCD_Write_Com(0x80 + x); //0x80为第一行首地址 } else {

LCD_Write_Com(0xC0 + x); //0xC0为第二行首地址 }

LCD_Write_Data(Data);

}

7)初始化函数

void LCD_Init(void) {

LCD_Write_Com(0x38); DelayMs(5);

LCD_Write_Com(0x06); DelayMs(5);

LCD_Write_Com(0x0C); }

//*******初始化函数*************** void LCD_init(void) {

delay_n40us(10);

LCD_write_command(0x38);//设置8位格式,2行,5x7 delay_n40us(10);

LCD_write_command(0x0c);//整体显示,关光标,不闪烁 delay_n40us(10);

LCD_write_command(0x06);//设定输入方式,增量不移位 delay_n40us(10);

LCD_write_command(0x01);//清除屏幕显示

delay_n40us(100);//实践证明,我的LCD1602上,用for循环200次就能可靠完成清屏指令。 }