图10-58 字符代码与图形对应图
10.8.2.5 1602LCD的一般初始化(复位)过程 延时15mS
写指令38H(不检测忙信号) 延时5mS
写指令38H(不检测忙信号) 延时5mS
写指令38H(不检测忙信号)
以后每次写指令、读/写数据操作均需要检测忙信号 写指令38H:显示模式设置 写指令08H:显示关闭 写指令01H:显示清屏
写指令06H:显示光标移动设置 写指令0CH:显示开及光标设置 10.8.3 1602LCD的软硬件设计实例
在1602LCD第一行显示网站名:www.hificat.com在第二行显示联系电话:0571-85956028。实验前应先将显示切换开关切换到LCD工作状态。
图10-59 1602LCD实验演示图
10.8.3.1 硬件原理图
1602液晶显示模块可以和单片机AT89C51直接接口,电路如图10-60所示。
图10-60 硬件原理图
10.8.3.2 程序流程图
图10-61 软件流程图
10.8.3.3 软件代码
#include
unsigned char code dis1[] = {%unsigned char code dis2[] = {\void delay(unsigned char ms) {
unsigned char i; while(ms--) {
for(i = 0; i< 250; i++) {
_nop_(); _nop_(); _nop_(); _nop_(); } } }
bit lcd_bz() {
bit result; rs = 0; rw = 1; ep = 1; _nop_(); _nop_(); _nop_(); _nop_();
result = (bit)(P0 & 0x80); ep = 0;
return result; }
void lcd_wcmd(unsigned char cmd) {
while(lcd_bz());//判断LCD是否忙碌 rs = 0; rw = 0; ep = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; }
void lcd_pos(unsigned char pos) {
lcd_wcmd(pos | 0x80); }
void lcd_wdat(unsigned char dat) {
while(lcd_bz());//判断LCD是否忙碌