1 6 0 2 液晶显示字符串(附带程序) (注意说明:使用的实验板是郭天祥老师的 5 2 单片机板) 基本操作电路 状态字说明 RAM 地址映射图 初始化相关指令的意思 读时序图 写时序图 要想通过1602 液晶来显示你想要显示字符串,其实是很简单的,程序虽然有点长,但是都是按照步骤来的。 1602 的五大步骤 第一个步骤: 检查 LCD 忙状态 lcd_busy 为 1 时,忙,等待。lcd-busy 为 0 时,闲,可写指令与数据。 第二个步骤: 写指令数据到 LCD RS=L,RW=L,E=高脉冲,D0-D7=指令码。 第三个步骤: 写显示数据到 LCD RS=H,RW=L,E=高脉冲,D0-D7=数据。 第四个步骤: 设定显示位置 第五个步骤: LCD 初始化设定 只要这五步你弄懂了,什么样的字符串都可以按照你的方式显示。至于这其中的步骤的具体的方式,我们就要参照1602 的资料和时序图!不过你大可不必,这份文档就足够了! #include #include #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; sbit LCD_RS = P3^5; sbit LCD_RW = P3^6; sbit LCD_EN = P3^4; uchar code dis1[] = {" WLCOME TO "}; uchar code dis2[] = {" JIANG GAN HUA "}; uchar code dis3[] = {" NAN CHANG "}; uchar code dis4[] = {" HANG KONG DX"}; void delay(int ms) { int i; while(ms--) { for(i = 0; i< 110; i++) { _nop_(); } } } bit lcd_busy() { bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P0&0x80); LCD_EN = 0; return result; } void lcd_wcmd(uchar cmd) { while(lcd_busy()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN = 0; } void lcd_wdat(uchar dat) { while(lcd_busy()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN = 0; } void lcd_pos(uchar pos) { lcd_wcmd(pos|0x80); //数据指针=80+地址变量 } void lc...