1602字符型液晶显示篇
忙信号) 以后每次写指令、读/写数据操作均需要检测忙信号 写指令38H:显示模式设置 写指令08H:显示关闭 写指令01H:显示清屏 写指令06H:显示光标移动设置 写指令0CH:显示开及光标设置 10.8.3 1602LCD的软硬件设计实例 图10-59 1602LCD实验演示图 10.8.3.1 硬件原理图 图10-60 硬件原理图 10.8.3.2 程序流程图 图10-61 软件流程图 10.8.3.3 软件代码 #include #include sbit rs= P2^0; sbit rw = P2^1; sbit ep = P2^2; unsigned char code dis1[] = {"www.hificat.com"}; unsigned char code dis2[] = {"0571-85956028"}; 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是否忙碌 rs = 1; rw = 0; ep = 0; P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; } void lcd_init() { lcd_wcmd(0x38); delay(1); lcd_wcmd(0x0c); delay(1); lcd_wcmd(0x06); delay(1); lcd_wcmd(0x01); delay(1); } void main(void) { unsigned char i; lcd_init();// 初始化LCD delay(10); lcd_pos(0x01);//设置显示位置 i = 0; while(dis1[i] != ) { lcd_wdat(dis1[i]);//显示字符 i++; } lcd_pos(0x42);// 设置显示位置 i = 0; while(dis2[i] != ) { lcd_wdat(dis2[i]);// 显示字符 i++; } while(1); }



1602字符型液晶显 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
