读写数据和指令程序

 LED大屏幕     |      2021-03-03 10:35

1602 液晶手册提供了一个初始化进程,由于不检测“忙”位,所以措施较量巨大,而我们总结了一个越发浅易利便的进程提供应各人,手册上描写的谁人,各人仅仅作为相识就可以了,下面我把措施写出来各人看下,我们的初始化只用了 4 条语句,没有像手册先容的那么繁琐。 #include <reg52.h> #define LCD1602_DB P0 sbit LCD1602_RS = P1^0; sbit LCD1602_RW = P1^1; sbit LCD1602_E = P1^5; void InitLcd1602(); void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str); void main(){ unsigned char str[] = "Kingst Studio"; InitLcd1602(); LcdShowStr(2, 0, str); LcdShowStr(0, 1, "Welcome to KST51"); while (1); } /* 期待液晶筹备好 */ void LcdWaitReady(){ unsigned char sta; LCD1602_DB = 0xFF; LCD1602_RS = 0; LCD1602_RW = 1; do { LCD1602_E = 1; sta = LCD1602_DB; //读取状态字 LCD1602_E = 0; }while (sta & 0x80); //bit7 便是 1 暗示液晶正忙,反复检测直到其便是 0 为止 } /* 向 LCD1602 液晶写入一字节呼吁,cmd-待写入呼吁值 */ void LcdWriteCmd(unsigned char cmd){ LcdWaitReady(); LCD1602_RS = 0; LCD1602_RW = 0; LCD1602_DB = cmd; LCD1602_E = 1; LCD1602_E = 0; } /* 向 LCD1602 液晶写入一字节数据,dat-待写入数据值 */ void LcdWriteDat(unsigned char dat){ LcdWaitReady(); LCD1602_RS = 1; LCD1602_RW = 0; LCD1602_DB = dat; LCD1602_E = 1; LCD1602_E = 0; } /* 配置显示 RAM 起始地点,亦即光标位置,(x,y)-对应屏幕上的字符坐标 */ void LcdSetCursor(unsigned char x, unsigned char y){ unsigned char addr; if (y == 0){ //由输入的屏幕坐标计较显示 RAM 的地点 addr = 0x00 + x; //第一行字符地点从 0x00 起始 }else{ addr = 0x40 + x; //第二行字符地点从 0x40 起始 } LcdWriteCmd(addr | 0x80); //配置 RAM 地点 } /* 在液晶上显示字符串,(x,y)-对应屏幕上的起始坐标,str-字符串指针 */ void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str){ LcdSetCursor(x, y); //配置起始地点 while (*str != '\0'){ //持续写入字符串数据,直到检测到竣事符 LcdWriteDat(*str++); //先取 str 指向的数据,然后 str 自加 1 } } /* 初始化 1602 液晶 */ void InitLcd1602(){ LcdWriteCmd(0x38); //16*2 显示,5*7 点阵,8 位数据接口 LcdWriteCmd(0x0C); //显示器开,光标封锁 LcdWriteCmd(0x06); //文字不动,地点自动+1 LcdWriteCmd(0x01); //清屏 } 措施中有具体的注释,团结本节前面的讲授,各人本身阐明下,把握 1602 液晶的根基操纵函数。LcdWriteDat(*str++)这行语句中对指针 str 的操纵各人必然要领略透彻,先把 str指向的数据取出来用,然后 str 再加 1 以指向下一个数据,这长短经常用的一种简写方法。别的关于本措施尚有几点值得提一下:

首先,我们把措施所有的成果都利用函数模块化了,这样很是有利于措施的维护,不管要写一个什么样的成果,只要挪用相应的函数就可以了,各人留意进修这种编程要领。

其次,我们利用液晶的习惯,也是用数学上的(x,y)坐标来举办屏幕定位,但与数学坐标系差异的是,液晶的左上角的坐标是 x=0,y=0,往右边是 x+偏移,下边是 y+偏移。

第三,第一次打仗多个参数通报的函数,并且还带了指针范例的参数,所以多把稳熟悉一下。

第四,读写数据和指令措施,每次都必需举办“忙”判定。

第五,明确一下指针在这个处所的巧妙用法,你可以实验不消指针改写措施试试,感觉一下指针的优势。