51单片机的驱动LCD屏

液晶显示器(liquidcrystal display,简称lcd)可以显示数字、字母、汉字、以及图形图像等丰富的内容,应用非常广泛。液晶显示器由液晶显示部分和控制器两部分组成,控制器通过控制液晶显示区的电压,实现字符的显示。lcd可分为段型、字符型和点阵型三种。其中1602字符型液晶是应用最广泛的液晶显示器之一。
一、lcd简介1602液晶的控制器是采用日立公司的hd44780集成电路,只需将待显字符的ascii码放入其数据存储器,字符就会自动在液晶显示器上显示。该显示器每屏最多可显示2行,每行16个字符,共32个字符。
1602型lcd分有背光(16个引脚)和无背光(14个引脚)两种。14脚1602型lcd引脚共分成三类:
1、电源引脚: 引脚1和引脚2 分别是电源正极(vdd)和负极(vss)。
2、数据引脚: 引脚7到引脚14共8个引脚是双向数据总线的第0位到第8位。由于p0口无上拉电阻,因此如果需要接到p0口,则必须接上拉电阻。而接到其他并口,可不接上拉电阻。
二、控制介绍控制引脚:
引脚3(vl)是反视度调整引脚,通常接地。
引脚4(rs)是寄存器选择引脚,当rs=1时选择数据寄存器,当rs=0时,选择指令寄存器。
引脚5(r/w)是读写选择引脚,当r/w=1时读,当r/w=0时写。
引脚6(e)是模块使能信号,当e上为高电平时,可以读出数据或指令;当e上电平正跳变时,开始写入数据或指令;当e上电平负跳变时,开始执行指令。
三、lcd初始化关于这一点,lcd1602说明手册上已经明确告诉我们了,想都不要去想,管你这些什么意思,照做即可。
延时15ms写指令38h延时5ms写指令38h写指令08h写指令01h写指令06h写指令0ch以上为初始化过程,延时部分好解决,前面讲过了。这里就看如何“写指令”了。问题来了,液晶模块怎么知道单片机给我的是命令还是数据。(叁议电子www.ppptalk.com)lcd1602看到rs为高时,就明白了,哦,你要给我传送数据了;看到rs为低时,就知道你要给我指令了。这个只是选择“命令”还是“数据”,还有一个问题,我们的目的是“写指令”,那么液晶模块怎么知道是“写”还是“读”呢?
再来看rw信号,当rw为低的时候,液晶模块就知道了,单片机要给我“写”了;当rw为高的时候,液晶模块也知道了,单片机要“读”了。很明显,我们这里要把rw设置为低。“写/读”和“指令/数据”都知道如何告诉液晶模块了,那么这个指令从怎么传过去呢?
通过d0-d7这8根线(也就是p2端口)来传输,比如我要传送的指令为x033,那么就把这个数据0x33放到p2端口,当lcd1602看到“写”和“指令”的时候,就知道把p2端口上的0x33这个指令拿过来了。这样就达到了“写”“指令”“0x33”的目的。
但是不是这样就能让lcd1602正常执行了。不是的。回到我们前面讲的那个例子,这里加个条件,屋内人听到敲门三下后,判断暗号正确了,但是没有直接开门,而是通知了他的上级,得到上级的授权后,才开门。也就是两个条件,暗号正确和上级授权。
lcd1602也一样,收到指令没有立即执行,还要等另外一个信号,就是en使能信号。此时en给个一定宽度的脉冲,lcd1602才开始执行。
四、驱动代码void lcd_write_cmd(unsigned char cmd) { delayms(5);//注意这里需要延时5ms比较保险 代替判断忙信号 rw = 0; p2 = cmd; //准备好指令 rs=0; //告诉lcd1602,p0中放的是指令不是数据 en=1; delayus(5); //根据时序图,脉冲要有一定宽度 en=0; //使指令有效,开始执行}同样的道理,以上代码中,只需改一下rs信号为1,就是写数据的代码了
voidlcd_write_data(unsignedcharmdata) { rw = 0; delayms(5);//注意这里需要延时5ms比较保险代替判断忙信号 p2=mdata;//准备好指令 rs=1;//告诉lcd1602,p0中放的是数据不是指令 en=1; delayus(5);//根据时序图,脉冲要有一定宽度 en=0;//使指令有效,开始执行}五、代码讲解指令1:清显示,指令码01h,光标复位到地址00h位置。
指令2:光标复位,光标返回到地址00h。
指令3:光标和显示模式设置i/d:光标移动方向,高电平右移,低电平左移s:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。
指令4:显示开关控制。d:控制整体显示的开与关,高电平表示开显示,低电平表示关显示c:控制光标的开与关,高电平表示有光标,低电平表示无光标b:控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:光标或显示移位s/c:高电平时移动显示的文字,低电平时移动光标。
指令6:功能设置命令dl:高电平时为4位总线,低电平时为8位总线n:低电平时为单行显示,高电平时双行显示f:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:字符发生器ram地址设置。
指令8:ddram地址设置。
指令9:读忙信号和光标地址bf:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:写数据。
指令11:读数据。
这样你需要给lcd1602什么指令,只需要传递给void write_com(unsigned char cmd)函数中的cmd参数就行了。

智能制造设备有哪些 智能制造系统的特征
关于6kW户用光伏系统典型设计的分析和研究
i9-9900F处理器曝光 8核心16线程支持双通道DDR4-2666内存
华米Amazfit智能手表开售 售价799元
索尼半导体推出全新低功耗NB2芯片组
51单片机的驱动LCD屏
AI成为增长关键!谷歌发布两大可穿戴设备,创新加速
PCB设计流程你有没有了解
如何根据需求选择正确的PCB制造材料
具有14通道分配功能的单芯片时钟发生器解决了网络中的时序挑战
青灯有味是儿时 飞利浦晶亮LED台灯评测
光刻技术是迄今所能达到的最高精度的加工技术
制冷压缩机根据工作原理分几类
ROSEMOUNT罗斯蒙特644RANA温度变送器
不仅热衷抢红包,OPPOR9s红色版成年轻人最爱
接触式油位测量变送器的工作原理及设计
小米6c、小米max2最新消息:小米6又闹乌龙?小米将推骁龙660版小米6是假的,或是小米max2、小米6c
波音总裁喊话拜登政府要求“贸易归贸易,人权归人权”
导线弧垂的测量方法_导线和电缆的安全电流
别怕!可拆卸加热套温度过高有妙招!