智能小车数据的液晶显示研究

2018-08-06 09:11邹全胜
滁州职业技术学院学报 2018年2期
关键词:低电平高电平液晶

邹全胜

(滁州职业技术学院,安徽 滁州 239000)

一、引言

显示模块在单片机中不可或缺,如用数码管显示温度,12864液晶显示汉字或工作界面。而用12864液晶显示图片作为开始界能够是整个单片机项目增色不少,我们在这里将加以介绍。

图一 效果图

二、系统实现方案

本方案的实现主要包括:单片机最小系统、12864液晶与单片机的连接、显示函数的编写、图片转换、图片字模的生成及系统的调试。

(一)单片机的简介

单片机微型计算机是微型计算机的一个重要分支,它是单片机微型计算机简称,通常用于控制领域,故又称为微控制器。

单片机由单块集成电路芯片构成,内部集成计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。

本项目采用AT89s52单片机,AT89S52是Atmel公司采用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容,并且具有8K在系统可编程Flash存储器。

AT89s52具有32位I/O口,分别是P0口、P1口、P2口、P3口各8位,总共32位。每个口的8位都可作为通用的输入输出口,其中P3口还兼有第二功能:P3.0(RXD)串行数据接收端P3.1(TXD)串行数据发送端,P3.2(INT0)外部中断源0输入端,P3.3(INT1)外部中断源1输入端,P3.4(T0)定时/计数器T0计数脉冲输入端,P3.5(T1)定时/计数器T1计数脉冲输入端,P3.6(WR)外部RAM写选通端,P3.7(RD)外部RAM读选通端。另外P0和P2口用作地址线端口时,分别对应地址的低8位和高8位。[1]

(二)12864无字符液晶的简介

图二 12864方块图

1、模块简介

12864液晶主要由显示模块、驱动器、控制器及背景光几部分组成。12864液晶显示分左右半屏,其中左半屏64列,右半屏64列,加在一起128列。左右半屏又各有64行,所以称之为12864液晶。其中液晶的64行又分为8页(0~7),每页8行。左右半屏的选择,依靠控制器的CS1、CS2来选择。屏幕的亮度取决与背景光的亮度,亮度的调节又取决于背景光的电压值。

2、接口的定义

图三 接口定义示意图

12864共有20个接口:

1脚VSS和2脚VDD分别为电压的负极和正极。

4脚R/S端为控制寄存器操作选择端,即选择是对数据还是指令进行操作:H(高电平)时为对数据进行操作,L(低电平)时为对指令进行操作。

5脚R/W端为读写控制端:H(高电平)时表示“读“,即数据从12864中读出,L(低电平)是表示”写“,即数据被写入到12864中。

6脚E为控制使能:只有此脚从高电平向低电平跳变时(即下降沿),相关的读写的数据才能有效。

7~14脚为数据总线。

15脚CS1为右半屏选择信号,H高电平时选中。

16脚CS2为左半屏选择信号,H高电平时选中。

17脚RET为复位信号,低电平复位。

18脚为LCD驱动负电压。

19、20脚分别为LED背光板电源。

图四 12864液晶的写时序图

3、写指令和写数据函数的编写通过以上接口的定义我们再来看看12864的时

序图:从图中我们看出,如果我们要往12864液晶中

写数据,首先R/W要为0,其次在数据DB0-7数据有

效时,E要从高电平向低电平跳变,由此我们可得出

写指令和写数据的函数的如下写法:

写指令函数:

写数据函数:

从两个函数可看出它们的不同之处在于,写指令函数的RS=0,而写数据的函数RS=1。而它们的相同之处在于同样RW=0,代表向12864中写,同时E都在P0口数据稳定时有1向0跳变,也即从高电平向低电平跳变。[2]

4、指令介绍

图五 12864显示控制指令

知道的12864液晶写数据和写指令函数的编写,我们在来看看12864各指令的含义。

之前我们说12864液晶分左右屏,有分8页和左右屏各64列,那么怎么样把数据精准的定位到我们要显示的位置呢?靠的就是12864液晶的显示控制指令,下面我们一一解释:

开关显示:从表中看出,首先RS要为L,因为我们要写的是控制12864显示的指令而不是要显示的数据。R/W为L代表向12864中写(下面同此,不再说明)。在看DB7-DB0只有DB0是可变的,L代表关,H代表开。所以开关显示的二进制码就为00111110(关)(十六进制 0X3E),00111111(开)(十六进制0X3F)。

设置Y地址:可见此指令预留的6位用于指定12864的64列的地址,那么起始地址的二进制码为:01000000(十六进制0X40)。

设置X地址:X地址即为128654的页地址,共有8页,所以此字节预留的3位用于指定8页的地址,起始地址的二进制码为10111000(十六进制0XB8)。

显示开始线:此指令用于指定从12864的64行中的那一行开始显示,我们一般从第一行开始显示,这样Z地址的起始地址的二进制码为:11000000(十六进制0XC0)。

(三)12864与单片机的连接

12864液晶与单片机的连接如图。AT89S52单片机的P0口与12864的DB0-DB7相连,作为单片机与12864交换数据的数据口。RST接P2.4口,CS1和CS2分别接P2.4和P2.3,E接P2.2口,R/W接P2.1口,RS接P2.0口。VCC和GND分别接电源正极和负极。由于此图为仿真图,其它接口忽略(实际中不可)。[3]

图六12864与单片机连接图

(四)图片的转换

图片转换的目的,由于我们12864的像素有限,只有128×64,所以我们要将下载的黑白图片进行转换。

这里我们以下载好的黑白图片为类:首先我们打开画图软件,用画图软件打开我们下载好的黑白图片。

图七

由于图片较大,我们选择查看,进行缩小。然后用选择工具选择要截取的部分然后复制。

新建文件,在新建的画图板中粘贴。选择图片右下角进行拖动,直到下面的像素显示为128×64为止。(如下图)

图八

这时打开文件的属性面板

图九属性面板设置

设置属性中的宽度为128,高度为64,单位为像素,颜色为黑白,最后进行保存。这样我们的图片的转换就做好了。

(五)图片子模的生成

12864的显示原理是:每次向12864写一个字节的数据,一个字节8位,高电平1在12864上显示的黑点,低电平0在12864上显示的是个空白(或白点)。且这一个字节的8位是纵向方式写入的,所以我们在取字模时一定要纵向取模,字节倒序也要勾选上。

参数设置如下图所示:

设置完成后,点击“基本操作”,“打开图像图标”。

打开我们事先转换好的黑白图片,打开后的效果如图所示。

最后点击“取模方式”,选择“C51格式”即可在“点阵生成区”看到生成后的十六进制代码。赋值生成的所有代码,在主函数中以数据的形式保存即可。

三、主程序的编写与系统的调试

主程序的编写我们主要介绍显示图片函数的写法。图片显示函数是我们本系统的关键,它用到了以上我们介绍的所有知识,下面我们来详细介绍。

首先,整个图片是以整个屏幕的大小实现处理好的,取模方式我们也是采用的纵向取模,所以整个字模的个数为8×128个字模(8×128字节的数据)。8代表有8也,128代表有128列,其中左半屏64列,右半屏64列。每列从0开始计数也就是0列-63列,页也是从0开始计数即0页-7页。所以我们用两个局部变量i和j,分别代表页和列。

其次,在写每一页的128列时要能自动识别左右半屏,采用的方法就是看列参数j是否小于64和大于63。小于64也即0-63在左半屏,大于63即64-128在右半屏,在右半屏时,左右半屏要切换(CS1、CS2的高低电平要互换),同时列数的值要在j的基础上减去 64(64-64=0、127-64=63,符号右半屏0列-63列的原则)。

再次,每写完128列要换行(也即换页),采用的方法是每写完128个数据,列数据要在参数j的基础上加上i×128,这样随主i的增加j就在127的基础上加上逐渐128,从而实现自动换行。

图片显示函数如下:

系统的调试我们采用PROTEUS单片机仿真,线路的连接我们采用的是网络标号的方法,相同的网络标号代表两端是连接在一起的。程序用keil软件别写好之后,生成相对应HEX文件。双击仿真软件中的单片机(我们实际使用的是AT89S52,仿真时我们用 AT89CF51代替),在“program file”栏中选择刚生成好的HEX文件,点击“确定按钮”。最后点击PROTEUS软件左下角的“开始按钮”,即可实现本系统设计。

最终的效果如下图:

猜你喜欢
低电平高电平液晶
一种基于FPGA的PWM防错输出控制电路
不可压液晶方程组的Serrin解
《液晶与显示》征稿简则
TS-03C全固态PDM中波发射机开关机控制电路原理及故障分析
2017款凯迪拉克2.8L/3.0L/3.2L/3.6L车型低电平参考电压总线电路图
浅谈物理电路与数字电路
PDM 1kW中波广播发射机保护电路分析
15-MeV电子直线加速器的低电平系统
液晶与显示2015年第30卷第1期 目录
液晶与显示2014年第29卷第2期 目录