《2022年单片机+LCD液晶显示字符串 .pdf》由会员分享,可在线阅读,更多相关《2022年单片机+LCD液晶显示字符串 .pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1602 液晶显示字符串(附带程序)(注意说明:使用的实验板是郭天祥老师的52 单片机板)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 基本操作电路状态字说明RAM 地址映射图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - 初始化相关指令的意思读时序图名师资料总
2、结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 写时序图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - 要想通过 1602 液晶来显示你想要显示字符串,其实是很简单的,程序虽然有点长,但是都是按照步骤来的。1602 的五大步骤第一个步骤:检查 LCD 忙状态lcd_busy
3、为 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 unsigne
4、d int 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - sbit dula=P26; sbit wela=P27; sbit LCD_RS = P35; sbit LCD_RW = P36; sbit LCD_EN = P34; uchar code dis1 = WLCOME TO ; uchar code dis2 = JIANG GAN HUA ; uchar code dis3 = NAN CHANG ; uchar
5、 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&0 x80); LCD_EN = 0; return result; void lcd_wcmd(uchar cmd) while(lcd_busy(); LCD_RS = 0
6、; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN = 1; _nop_(); _nop_(); _nop_(); _nop_(); LCD_EN = 0; void lcd_wdat(uchar dat) while(lcd_busy();
7、 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|0 x80); /数据指针 =80+地址变量 void lcd_init() dula=0; wela=0; lcd_wcmd(0 x38); /16*2 显示, 5*7 点阵, 8 位数据delay(5); lcd_wcmd(0 x38)
8、; delay(5); lcd_wcmd(0 x38); delay(5); lcd_wcmd(0 x0c); /显示开,关光标名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - delay(5); lcd_wcmd(0 x06); /移动光标delay(5); lcd_wcmd(0 x01); /清除 LCD 的显示内容delay(5); main() uchar i; delay(10); lcd_init(); / 初始化 L
9、CD while(1) lcd_wcmd(0 x06); /向右移动光标lcd_pos(0); /设置显示位置为第一行的第1 个字符i = 0; while(dis1i != 0) /显示字符lcd_wdat(dis1i); i+; delay(50); /控制两字之间显示速度 lcd_pos(0 x40); /设置显示位置为第二行第1 个字符i = 0; while(dis2i != 0) lcd_wdat(dis2i); /显示字符 i+; delay(50); /控制两字之间显示速度 /闪动二次lcd_wcmd(0 x01); /清除 LCD 的显示内容delay(200); /控制转换
10、时间lcd_wcmd(0 x04); /向左移动光标lcd_pos(15); /设置显示位置为第一行的第16个字符i = 0; delay(50); while(dis3i != 0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - /显示字符 lcd_wdat(dis3i); i+; delay(50); /控制两字之间显示速度 lcd_pos(0 x4F); /设置显示位置为第二行的第16个字符i = 0; while(dis4i != 0) lcd_wdat(dis4i); /显示字符 i+; delay(50); /控制两字之间显示速度 lcd_wcmd(0 x01); /清除 LCD 的显示内容delay(100); /控制转换时间 实验现象, 1602 液晶显示我在数组里设置的字符串!739141300 疑问解答!名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -