电子发烧友网 > 控制/MCU > 正文

51单片机对LCD液晶显示器的控制

2018年12月05日 16:04 次阅读
要想实现人机交互,显示装置是不可缺少的。这篇文章主要关于如何控制液晶显示,并在此基础上加上定时器的功能,把原来已用数码管显示的定时器搬到液晶屏上来。 这里用到的液晶为LCD1602,能够同时显示16x02即32个字符(16列2行)。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号等,直接向其写入ASCII码即可显示相应字符。1602共16个 管脚,管脚功能如下: 51单片机对LCD液晶显示器的控制 实际应用时,所用液晶模块与单片机的连接图如下: 51单片机对LCD液晶显示器的控制 其中7~14管脚为IO,与单片机的P0口相接,单片机可通过向P0口发送数据被液晶模块并行接收。 4管脚为数据命令选择端,与单片机P3^5口相连。故可通过控制P3^5口的电平高低,向液晶模块写入命令或数据。由数据手册得知, 写指令时,RS=L,RW=L,D0~D7为指令码,E管脚为一高电平脉冲; 写数据时,RS=H,RW=L,D0~D7为数据,E管脚也为一高电平脉冲。 P3^4与液晶模块6管脚相连,控制液晶模块使能。 首先介绍液晶模块的指令。 初始化指令0x38:设置液晶为16x2显示。 显示开关及光标设置: 00001DCB D=1,开显示; C=1。显示光标; B=1,光标闪烁。 000001NS N=1,读写一个字符后地址指针加1,光标加1; N=0,读写一个字符后地址指针减1,光标减1 S=1,写一个字符时,整屏显示向左移动(N=1)或右移(N=0) S=0,不移动 数据写入控制指令: LCD模块中的RAM地址映射如下 51单片机对LCD液晶显示器的控制 要想把数据写入X地址,则先要输入指令0x80+X; 例如想让字符显示在第二行的第一个,则在将字符传入前,要写入指令write_command(0x80+0x40) 此外,0x01H表示显示清屏,数据指针清零,所有显示清零; 0x02H表示显示回车,数据指针清零。 了解了这些之后,可以知道如果我们想要控制液晶的显示,就要先学会怎样向液晶写指令和写数据。 写指令函数 //向LCD1602写指令 voidwrite_com(ucharcom) { lcdrs=0;//RS=L P0=com;//P0口输出 delay(5);//延时 lcden=1;//E=H delay(5); lcden=0;//延时后,E变为L,造成了一个高电平脉冲,P0口高低电平被写入 } 写数据的方法与此类似,照葫芦画瓢即可: //向LCD1602写数据 /* 只需要将RS置高即可, 其他语句与写指令函数相同 */ voidwrite_date(uchardate) { lcdrs=1;//RS=H P0=date; delay(5); lcden=1; delay(5); lcden=0; } 有了这两个函数,我们就可以向液晶模块里面写入指令和数据,从而实现对其的控制了。 为了实现一个完整的对LCD1602功能的封装体现,我们还要再写一个初始化的函数,用于对LS1602的初始化工作 voidInital() { lcden=0;//先不使能 write_com(0x38);//写入初始化指令 write_com(0x0e);//显示开,光标显示但不闪烁 write_com(0x06);//读写后指针加1,光标加1 write_com(0x01);//显示清屏,指针清零 } 至此,就完成了对LCD1602的功能封装,在其他的程序中,就可以使用这些函数用于液晶显示,例如下面实现的用1602显示计时器。 计时器量程为1小时,显示格式为XX:XX(前面为分,后面为秒) 用到了单片机中的计时器0,工作方式1,。50ms发生一次中断,使一个用于计数的number自增一次。number初值设为1,故number自增至20时,说明计时1s已到,可以Do Something,也就是把处理函数加进来了。 C文件如下: #include #defineucharunsignedchar #defineuintunsignedint sbitlcden=P3^4; sbitlcdrs=P3^5; ucharnum=1; ucharmiao=0; ucharfen=0; voidInital(); voidInital_Time(); voidwrite_com(ucharcom); voidwrite_date(uchardate); voiddelay(ucharTIme); voidClock(); voidDisplay(ucharx,uchary); voidmain() { Inital_TIme(); Inital(); TR0=1; while(1) { if(num》=20)//1s { //DoSomething Clock(); Display(fen,miao); } } } //在LCD上显示分,秒 voidDisplay(ucharx,uchary) { //本例中,x为分钟,y为秒 ucharxshi,xge,yshi,yge; xshi=x/10; xge=x%10; yshi=y/10; yge=y%10; write_com(0x01); write_date(xshi+‘0’); write_date(xge+‘0’); write_date(‘:’); write_date(yshi+‘0’); write_date(yge+‘0’); } //1s到时对计时器(也就是fen,miao变量)的处理函数 voidClock() { num=1; miao++; //1min if(miao》=60) { fen++; miao=0; } //1h,重新开始 if(fen》=60) { fen=0; miao=0; } } //中断服务函数,num自增,重新装载初值 voidser_TImer0()interrupt1 { num++; TH0=0x4c; TL0=0x00; } //LCD1602初始化 voidInital() { lcden=0;//先不使能 write_com(0x38);//写入初始化指令 write_com(0x0e);//显示开,光标显示但不闪烁 write_com(0x06);//读写后指针加1,光标加1 write_com(0x01);//显示清屏,指针清零 } //定时器初始化 voidInital_TIme() { TR0=0; //设置定时器工作方式 TMOD=0x01; //开定时器中断 EA=1; ET0=1; //装填初值 TH0=0x4c; TL0=0x00; } //向LCD1602写指令 voidwrite_com(ucharcom) { lcdrs=0;//RS=L P0=com;//P0口输出 delay(5);//延时 lcden=1;//E=H delay(5); lcden=0;//延时后,E变为L,造成了一个高电平脉冲,P0口高低电平被写入 } //向LCD1602写数据 /* 只需要将RS

技术专区

下载发烧友APP
打造属于您的人脉电子圈
关注电子发烧友微信
有趣有料的资讯及技术干货
关注发烧友课堂
锁定最新课程活动及技术直播
电子发烧友观察
一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

基于OMAP5912的手持多媒体终端的人机接口实现

发表于 2018-12-06 10:18 19次阅读
基于OMAP5912的手持多媒体终端的人机接口实现

基于单片机的智能窗系统设计(电路+流程)

发表于 2018-12-05 16:39 451次阅读
基于单片机的智能窗系统设计(电路+流程)

LCD控制器驱动的24位TFT真彩屏接口设计

发表于 2018-12-05 10:12 21次阅读
LCD控制器驱动的24位TFT真彩屏接口设计

敢问大神,LCD1602的RD端和WR端和LCDE端,分别接51单片机的io口P3.2,P3.3,P3.4,为什么不能正常显示,换个P2io口就行了

发表于 2018-12-04 22:29 232次阅读
敢问大神,LCD1602的RD端和WR端和LCDE端,分别接51单片机的io口P3.2,P3.3,P3.4,为什么不能正常显示,换个P2io口就行了

微压力传感器接口电路设计

发表于 2018-12-04 15:48 23次阅读
微压力传感器接口电路设计

基于有机气敏变色材料的传感器系统

发表于 2018-12-04 15:24 37次阅读
基于有机气敏变色材料的传感器系统

传感器连接显示装置

发表于 2018-12-04 14:59 23次阅读
传感器连接显示装置

应该用0终止char数组吗?

发表于 2018-12-04 13:38 13次阅读
应该用0终止char数组吗?

基于DSP的液晶显示若干问题的探讨

发表于 2018-12-04 10:37 30次阅读
基于DSP的液晶显示若干问题的探讨

智能厚度测量系统设计(测厚仪+论文+程序)

发表于 2018-12-03 23:18 45次阅读
智能厚度测量系统设计(测厚仪+论文+程序)

传华为nova4将搭载第三代LCD全面屏

目前国内的面板厂如京东方、天马、华星光电、友达等厂商都在积极研发挖孔屏,希望抢占市场,但从目前曝光的...
发表于 2018-12-03 17:22 927次阅读
传华为nova4将搭载第三代LCD全面屏

STM32单片机FSMC的使用解析

LCD有如下控制线: CS:Chip Select片选,低电平有效 RS:Registe...
发表于 2018-12-03 14:17 58次阅读
STM32单片机FSMC的使用解析

三星推出的Galaxy A8s手机将采用Infi...

消息消息称,根据一份未经证实的行业报告,三星即将推出的Galaxy A8s手机,将采用Infinit...
发表于 2018-12-02 10:47 183次阅读
三星推出的Galaxy A8s手机将采用Infi...

罗姆取得汽车行业功能安全标准开发流程认证

位于日本京都的半导体制造商罗姆,今年3月通过了德国第三方认证机构TÜV Rheinland(莱茵TU...
发表于 2018-11-30 15:46 352次阅读
罗姆取得汽车行业功能安全标准开发流程认证

51单片机PPM波的测试设计

先说说PPM波,从图上可以看出周期为20ms,冠丽控实际是6通控,但预留两通没有使用。通道的高电平区...
发表于 2018-11-30 15:40 72次阅读
51单片机PPM波的测试设计

PWM和DC这两种屏幕调光方式究竟是怎么回事

很多人认为亮度越低,PWM调光的频率就越低,就对眼镜不好,这是错误的。因为对于PWM屏来说,影响亮度...
发表于 2018-11-29 10:36 460次阅读
PWM和DC这两种屏幕调光方式究竟是怎么回事

三星Galaxy A8S将搭载京东方LCD打孔屏

继折叠屏手机后又一次被中国企业抢了“首发”的三星打孔屏手机参数近日被公开。
发表于 2018-11-29 09:26 587次阅读
三星Galaxy A8S将搭载京东方LCD打孔屏

官宣了三星电子与LGD将长久合作TV面板

从去年末以供应43吋面板为契机,三星电子与LG显示(LGD)的合作持续到了今年,预计明年也将继续维持...
发表于 2018-11-24 09:43 672次阅读
官宣了三星电子与LGD将长久合作TV面板

六款常用单片机的比较

EM78系列单片机采用高速CMOS工艺制造,低功耗设计为低功耗产品,价格较低。具有三个中断源、R-O...
发表于 2018-11-23 15:25 231次阅读
六款常用单片机的比较

51单片机的外部中断实验设计

实验结果:当杜邦线另一端接电源时,led灭;当接地时,led就亮 结论:无论配置与否,51单片...
发表于 2018-11-23 15:16 172次阅读
51单片机的外部中断实验设计

浅谈开关电源的控制原理及分类

开关电源是一种电压转换电路。 其主要工作内容是提升和降压。它广泛用于现代电子产品中。因为开关三极管总...
发表于 2018-11-22 17:05 709次阅读
浅谈开关电源的控制原理及分类

超声波模块HC-SR04电路测量原理讲解

发表于 2018-11-22 16:31 264次阅读
超声波模块HC-SR04电路测量原理讲解

51单片机的SCON寄存器与C程序解析

SCON寄存器是51单片机一个可寻址的专用寄存器,用于串行数据通信的控制,其字节地址为:98H,位地...
发表于 2018-11-22 16:15 128次阅读
51单片机的SCON寄存器与C程序解析

51单片机寄存器寻址的方法

1、4个工作寄存器组共有32个通用寄存器,但在指令中只能使用当前寄存器组(工作寄存器组的选择在前面专...
发表于 2018-11-22 15:46 93次阅读
51单片机寄存器寻址的方法

详细解析嵌入式LCD的接口分类

LCD的接口有多种,分类很细。主要看LCD的驱动方式和控制方式,目前手机上的彩色LCD的连接方式一般...
发表于 2018-11-21 16:22 374次阅读
详细解析嵌入式LCD的接口分类

如何使用51单片机实现串口通信

51单片机的串口引脚为P3.0引脚与P3.1引脚,分别是RXD和TXD引脚。串口通信可以用于单片机和...
发表于 2018-11-21 15:47 175次阅读
如何使用51单片机实现串口通信

HMD宣布诺基亚手机将于12月5日在迪拜举行最后...

诺基亚X7采用6.18英寸LCD显示屏,分辨率为2246×1080,屏占比为86.5%,顶部为时下流...
发表于 2018-11-20 16:00 1410次阅读
HMD宣布诺基亚手机将于12月5日在迪拜举行最后...

如何用51单片机实现IIC通信

在之前的MCS-51系列单片机中内部没有IIC通信资源,所如果要想用51单片机实现IIC通信,就只能...
发表于 2018-11-20 15:52 185次阅读
如何用51单片机实现IIC通信

51单片机的学习经验总结

单片机就是一款自动控制的芯片。注意,是芯片,你做的工作就是如何编程来是这款芯片工作,是这款芯片在规定...
发表于 2018-11-20 15:37 153次阅读
51单片机的学习经验总结

如何使用SAM4E单片机点亮LCD并显示出文字

在Atmel Studio 6中,集成了Atmel Software Framework(ASF框架...
发表于 2018-11-20 15:20 90次阅读
如何使用SAM4E单片机点亮LCD并显示出文字

51单片机定时器模式2与波特率的应用

一般来说,我们都是采用定时器1的模式2(自动重装模式)来作为波特率发生器的,同理,定时器1的中断也就...
发表于 2018-11-19 16:12 120次阅读
51单片机定时器模式2与波特率的应用

超声集团推动企业不断做强做大做优,为推动汕头经济...

据许统广介绍,以超声电子上市为契机,超声集团进一步深化以科技创新为第一驱动力的高质量发展策略,全面强...
发表于 2018-11-19 10:50 491次阅读
超声集团推动企业不断做强做大做优,为推动汕头经济...

仁寿第5代TFT-LCD高端显示器项目搬入首批设...

2018年11月12日,“信利(仁寿)高端显示科技有限公司第5代TFT-LCD高端显示器项目设备搬入...
发表于 2018-11-19 09:25 424次阅读
仁寿第5代TFT-LCD高端显示器项目搬入首批设...

oled和lcd哪个伤眼睛

手机的亮度一般在60%以下,在这个低亮度下,使用OLED部分人会感觉明显不适,这也就是频闪造成的,因...
发表于 2018-11-16 15:57 4152次阅读
oled和lcd哪个伤眼睛

51单片机实现通讯协议的串口通讯编程

51中一般针对串口通讯编程,通常采取中断接受查询发送的方式。中断函数在接受数据到达时被重复调用,其实...
发表于 2018-11-16 15:54 153次阅读
51单片机实现通讯协议的串口通讯编程

oled和lcd发光原理区别

LED显示屏用的是金属材料,而OLED显示屏用的是有机物材料,两者的发光原理是一样的,区别在于OLE...
发表于 2018-11-16 15:52 538次阅读
oled和lcd发光原理区别

51单片机对LED点阵屏的设计

微控制器的IO口均不能流过过大的电流,LED点亮时有约10ms的电流,因此LED点阵引脚不要直接接单...
发表于 2018-11-15 16:52 192次阅读
51单片机对LED点阵屏的设计

基于51单片机对两路DS18B20温度传感器的设...

目前,温度控制器存在的问题是如何缩减成本,减少功耗,温度测量的准确性和多路温度的同时显示。本方案设计...
发表于 2018-11-15 16:35 172次阅读
基于51单片机对两路DS18B20温度传感器的设...

努比亚X评测 LCD屏占比第一旗舰

说起努比亚,笔者印象最深的还是它于2015年推出的努比亚Z9,从某种意义上讲,这款手机才是目前全面屏...
发表于 2018-11-13 16:23 649次阅读
努比亚X评测 LCD屏占比第一旗舰

2019年显示市场将迎来变更/LED显示产业链雏...

2018年年初三星发布Micro-LED模组化电视“The Wall”后,在Micro-LED显示领...
发表于 2018-11-13 16:12 171次阅读
2019年显示市场将迎来变更/LED显示产业链雏...

柔性OLED显示将成为未来一段时间内新型显示技?