历史上的今天
今天是:2025年03月30日(星期日)
2021年03月30日 | 利用单片机的端口地址实现对液晶显示器的控制
2021-03-30 来源:eefocus
在许多使用单片机控制的场合,为改善人机界面,经常要使用液晶显示器显示控制机构的工作状态及各种参数信息以供操作人员作出决策,由于液晶显示器是一个低速器件,加上它对接口的要求比较特殊,使得单片机对它的控制变得较为烦琐,从而占用了许多机器时间。在我们研制的数字录音机中使用了一块16×2的字符型液晶显示器,由于单片机不断地更新液晶显示器上的显示信息,同时又要处理语音数据,所以节约机器时间显得尤为重要,为此我们采用以端口地址来区分命令的方法,成倍地节约了单片机对液晶操作的时间。
1.硬件接口原理
在笔者所设计的系统中使用的16×2字符型液晶显示器为南京国显电子公司生产,它与8031单片机的典型连接电路如图1所示,模块引脚功能如表1所列,此液晶显示器的连接电路与一般接口电路的不同之处在于:对液晶的操作是在加到读写选择引脚R/W及指令数据选择引脚RS上的两信号稳定tAS(tAS>140ns)时间后,在片选信号E上再施加一个正向脉冲信号,在这一脉冲下降沿的数据为有效数据,而一般接口电路是片选信号在整个操作过程中均有效。液晶显示器的读写时序如图2所示。



在图1所示的典型电路中,按图2的时序要求对液晶显示器进行写操作时,首先要在P2.5、P2.6送出一个状态指示信号,表明将要进行的操作,然后在P1口上送出所写的数据(命令),然后使P2.7变高、再变低,这样共需4条指令和4个指令周期。为节约时间,我们用了地址区分状态的方法,具体电路见图3。
采用图3电路时,其寄存器的选择功能如表2所列。
为确定图3所示电路是否能满足液晶显示器的时序要求,我们需进一步分析由8051的读写时序而产生的RS、R/W、E信号的时间关系。图4为其时序图,从图中可以看出:写操作的时序及由此而产生RS、R/W、E及数据的时间关系(8051工作频率为12MHz,故一个时钟周期约为83ns)为:



地址建立时间tAS=4T(约332ns);允许脉冲宽度PWEH=6T(约498ns);
地址保持时间tAH=2T(约166ns);
数据建立时间tDSW=7T(约580ns);
而液晶显示器要求tAS≥140ns,PWEH≥450ns,tAH≥10ns,tDSW≥195ns,因此均可满足要求。
对读周期的分析也可以得到同样的结论,采用该改进电路后,对液晶的任何操作都可用一条MOVX指令完成,在此电路中ADDRESS=0000H表示写指令寄存器;ADDRESS=08XXH表示读忙标志和地址计数器;ADDRESS=04XXH表示写数据寄存器;ADDRESS=0CXXH表示读数据寄存器。因此指令的执行时间是2个机器周期,比图1电路节约了一半的时间,当对液晶显示器的操作比较频繁时,节约的时间是相当可观的。
2.软件示例程序对比
2.1典型应用程序
采用典型应用电路(图1)的“写命令”程序如下:
mov p1,#command;将命令内容准备好
setb p2.5
clr p2.6;开始发送
setb p2.7
clr p2.7
setb p2.6 ;发送完毕
…
共需4个机器周期
2.2改进应用程序
采用改进应用电路(图3)的“写命令”程序如下:
commamd-wr equ#0000h
…
mov dptr,command-wr;#0000表示将执行“命令写”操作
mov a,#command;将命令内容准备好
movx @dptr,a ;发送命令
只需一条movx指令,2个机器周期
史海拾趣
|
在开发单片机程序时,有许多人依赖于仿真机,一旦离开了仿真机开发程序时就感觉无从下手。其实对FLASH存贮器单片机,不要仿真机也能方便快速地开发程序。具体可以从以下几方面入手: 一、尽量使用高级语言开发系统程序 您有没有在写汇编程序时, ...… 查看全部问答> |
|
中国汽车电子企业的发展机会日经技术在线!报道: 现在人们驾驶汽车时,会发现车上增加了很多诸如:油耗显示、ABS、ASR、EBA、ESP、安全气囊、侧气帘、车内温湿度控制、CD/DVD播放 机、GPS导航仪、电动门窗、电动后视镜、电动座椅记忆调节、LE ...… 查看全部问答> |
|
是这样的: 我下载了一个程序包,里面‘头文件’分支里有除了visual studio自动加载的头文件外还有另外自己起名的,加进去的(比如叫myself.h)。 于是我另外自己新建了一个工程,也在‘头文件’分支里加了个myself.h文件,把前者的代码源源本本 ...… 查看全部问答> |
|
各位大侠: 小弟初来乍到,上面派任务做WinCE一块,主要是底层驱动, 我尝试写了一个流接口驱动程序,几乎所有的流接口函数我都设置为空函数,在BSP特定的硬件平台下dirver目录下编写了source ,makefile,.def,.dirs ...… 查看全部问答> |
|
本人设计一个信号发生器遇到了困难,各位大侠帮帮小弟啊!急求! 本人现在设计一个基于80C51单片机的信号发生器,要求能够输出方波,正弦波及幅值可调,范围在(—10至+10)。我已经知道在单片机外接一个DA就可以输出波形,但如何使幅值的范围在(—10至+10)我就不知道了,希望大家帮帮偶!!!!!!!!… 查看全部问答> |
|
自从树莓派论坛官方网店上线以后,每天都有5个以上的客户反应,显示器无信号、黑屏的问题。其实都是正常的,不必惊慌,简单处理下就会OK的。& [1 a& k4 n8 t\' D2 x\' u 下面说一下: HDMI转VGA本身需要吃掉300mA左右电流,这个一定要知道。& o: ...… 查看全部问答> |
|
大家也许有时候配置环境变量后,明明可以直接用的命令,可是有时需要加权限,加了sudo之后用不了,这时候是因为环境变量没有传递到sudo命令去,如下修改即可: /usr/sbin/visudo ubuntu下为sudoers 在defaults env_keep里面增加你所需要的环境变 ...… 查看全部问答> |




