单片机液晶显示课程设计.docx
- 文档编号:10290873
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:42
- 大小:503.34KB
单片机液晶显示课程设计.docx
《单片机液晶显示课程设计.docx》由会员分享,可在线阅读,更多相关《单片机液晶显示课程设计.docx(42页珍藏版)》请在冰点文库上搜索。
单片机液晶显示课程设计
河南理工大学
《微机原理与单片机课程设计》报告
题目:
基于单片机LCD液晶动态显示
姓名:
***
学号:
**********
专业班级:
电气12**
指导老师:
张宏伟
所在学院:
电气工程与自动化学院
201*年4月14日
摘要
如今,科技进步给我们的生活带来了很大的变化。
液晶显示设备越来越多,各种各样的液晶显示产品走进我们生活中。
液晶显示器由于具有低压、微功耗、显示信息量大、体积小等特点,在移动通信终端、便携计算机、GPS卫星定位系统等领域有广泛用途,成为使用量最大的显示器件。
液晶显示控制器作为液晶驱动电路的核心部件通常由集成电路组成,通过为液晶显示系统提供时序信号和显示数据来实现液晶显示。
本设计主要是以AT89C51单片机为控制设备,AMPIRE128*64液晶显示器为显示设备,实现的一个可以显示静态汉字、动态字符、图片的液晶显示设计。
引入密码锁功能,通过键盘和密码锁的配合,实现控制显示内容与显示效果。
通过设置字模提取软件的相关参数值,再根据AMPIRE128*64LCD的指令表及程序设计等提取所要用的汉字、字符、图片程序送往液晶显示器显示,并可做一些灵活的动态显示变换,提升显示效果。
并能通过设置密码和键盘控制显示内容和提示语。
其中,时钟电路和复位电路是单片机中最为基础的两个电路。
当键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。
在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。
这样,一个端口就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显。
本设计在Keil软件下,采用的是C语言进行软件设计,C语言使用助记符、符号、和数字等来表示指令的程序语言,具有容易理解和记忆且通用性强,设计方便等优点。
此次设计利用Proteus软件进行仿真验证了实验的正确性。
本次课程设计较好的实现在液晶显示器AMPIRE128*64LCD显示器上显示汉字、图片等,并且实现密码和键盘控制,具有现实使用价值。
1.概述
随着科技的高速发展,液晶显示设备越来越多,各种各样的液晶显示产品走进我们生活中。
从手机到电脑显示器,从掌上电脑到平板电视。
无处没有液晶显示技术的身影。
液晶显示器由于具有低压、微功耗、显示信息量大、体积小等特点,在移动通信终端、便携计算机、GPS卫星定位系统等领域有广泛用途,成为使用量最大的显示器件。
液晶显示控制器作为液晶驱动电路的核心部件通常由集成电路组成,通过为液晶显示系统提供时序信号和显示数据来实现液晶显示。
本文以AT89C51单片机为控制设备,AMPIRE128*64液晶显示器为显示设备,实现的一个可以显示静态汉字、动态字符、图片的液晶显示设计。
1.1LCD液晶屏简介
液晶是一种有机复合物,由长棒状的分子构成。
在自然状态下,这些棒状分子的长轴大致平行。
LCD是由两个相互垂直的极化滤光片构成,所以在正常情况下应该阻断所有试图穿透的光线。
但是,由于两个滤光片之间充满了扭曲液晶,所以在光线穿出第一个滤光片后,会被液晶分子扭转90度,最后从第二个滤光片中穿出。
另一方面,若为液晶加一个电压,分子又会重新排列并完全平行,使光线不再扭转,所以正好被第二个滤光片挡住。
总之,加电将光线阻断,不加电则使光线射出。
当然,也可以改变LCD中的液晶排列,使光线在加电时射出,而不加电时被阻断。
但由于液晶屏幕几乎总是亮着的,所以只有"加电将光线阻。
1.2LCD工作原理
屏幕能显示的基本原理就是在两块平行板之间填充液晶材料,通过电压来改变液晶材料内部分子的排列状况,以达到遮光和透光的目的来显示深浅不一,错落有致的图像,而且只要在两块平板间再加上三元色的滤光层,就可实现显示彩色图像。
2.系统总体方案及硬件设计
2.1设计的目标和功能
本设计采用AT89C51模拟仿真,要求设计12864液晶显示与单片机的显示接口电路,显示简单的静态汉字,图片以及由多个图片组成的简单动画。
还可实现密码锁的功能。
2.2设计的总体思路
液晶显示器12864的控制器KS0108可以显示字母、数字符号、中文字型及自定图形显示,只要一个最小的微处理系统,将液晶显示模块的接口作为I/O设备直接与之连接,就可以进行控制液晶显示器和数据传输,从而达到理想的显示效果。
使用P2口给液晶显示器提供控制信号,P0口给液晶显示器传送数据。
12864液晶显示器的控制信号有PSB、RS、R/W、E,其中RS、E、R/W分别对应接在AT89C51的P2.0、P2.1、P2.2、上,在本次设计中采用并行接口,故PSB接高电平,而8位数据口DB0~DB7对应接在P0口上。
背光灯的电源正极、液晶显示器模块的电源正极以及LCD驱动电压输入端都接在+5V的稳压电源上。
背光灯负极和模块的电源负极统一接地。
液晶显示器模块的复位脚连接开关按纽与地相连。
选择按键接高电平,即可实现单片机对液晶显示汉字的控制。
2.3框图
此设计控制系统由AT89C51单片机芯片、LCD显示电路、复位电路、晶体振荡电路和按键组成,如图2.3所示:
2.4硬件部分原理图
单片机最小系统主要由单片机AT89C51、电源电路、复位电路、时钟电路组成。
图2.4硬件部分原理图
2.5控制电路部分
2.5.1单片机简介
AT89C51是一个低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C51单片机在电子行业中有着广泛的应用。
2.5.2单片机功能
其主要功能特性有以下几点:
(1)与MCS-51产品指令系统完全兼容
(2)4k字节可反复擦写(大于1000次)Flash ROM;
(3)32个可编程I/O口线;
(4)128x8bit内部RAM;
(5)2个16位可编程定时/计数器中断;
(6)时钟频率0-24MHz;
(7)可编程UART串行通道;
(8)6个中断源;
(9)三级加密程序存储器;
(10)低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;
(11)有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。
2.5.3单片机引脚排列图
AT89C51为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc51相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
其引脚图如图2.5.3所示。
图2.5.3AT89C51引脚图
2.5.4单片机在本次实验中所用到的引脚说明
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
反向振荡器的输出。
EA:
在FLASH编程期间,加编程电源(VPP)。
RST:
复位输入。
当振荡器复位器件时,保持RST脚两个机器周期的高电平时间。
P0口:
数据口可以被定义为数据/地址的低八位,能够用于外部程序/数据存储器。
作通用I/O口使用时,加上拉电阻。
P1口:
控制按键,标准输入输出I/O口,P1口管脚写入1后,被内部上拉为高,可用作输入。
P2口:
控制液晶,既可用于标准输入输出I/O,也可用于外部或数据存储器程序存储器访问时的高八位地址。
P3.2/INT0:
控制中断,外部中断0输入。
2.6时钟电路部分
单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得到的时钟信号比较稳定,实际使用中常采用这种方式。
图2.6振荡电路图
利用晶体本身的特性,可以利用晶振与电容搭建振荡电路与AT89C51引脚XTAL1及XTAL2相连,向单片机提供一个频率定度较高的时钟脉冲。
电路中电容典型值通常选择30pF。
电容的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。
晶体振荡频率的范围通常是在1.2-12MHz。
晶体频率越高,系统的时钟频率越高,单片机的运行速度也就越快。
2.7复位电路部分
单片机在启动运行时,都需要先复位,它的作用是使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。
MCS-51系列单片机本身,一般不能自动进行复位,必须配合相应的外部电路才能实现。
复位电路的作用就是使单片机在上电时能够复位或运行出错时进行复位状态。
2.7复位电路图
AT89C51的复位引脚RST外接开关复位电路,当电路工作后,闭合开关,只要在RST引脚上出现2个机器周期以上的高电平,单片机即可复位。
若RST始终保持高电平,则可对AT89C51循环复位。
通过外部复位电路给电容C充电加至RST引脚一个短的高低电平信号,此信号随着Vcc对电容C的充电过程而逐渐回落,即RST引脚上的高电平持续时间取决于电容C的充电时间,因此为保证系统能可靠地复位,RST引脚上的高电平必须维持足够长的时间。
2.8LCD显示部分
本系统采用液晶显示模块AMPIRE128X64,为单色LCD,其外形如图2.8.1所示。
屏幕分为两半控制,控制引脚为CS1和CS2,数据通过移位寄存器输入。
通过改变电压而改变液晶的旋光状态,液晶材料的作用类似于一个个小的光阀,如图2.8.2所示。
图2.8.1AMPIRE128*64外形图图2.8.2旋光光阀
其引脚及其功能如表2.8.3所示
表2.8.3AMPIRE128*64的引脚
管脚号
管脚名称
LEVER
管脚功能描述
1
CS1
H/L
H:
选择芯片(右半屏)信号
2
CS2
H/L
H:
选择芯片(左半屏)信号
3
GND
0
电源地
4
VCC
+5.0V
电源电压
5
PSB
H/L
H:
并口方式L:
口串口方式
6
RS(CS)
H/L
并行的指令/数据选择信号;串行的片选信号
7
R/W(SID)
H/L
并行的读写选择信号;串行的数据口
8
E(CLK)
H/L
并行的使能信号;串行的同步时钟
9
DB0
H/L
数据0
10
DB1
H/L
数据1
11
DB2
H/L
数据2
12
DB3
H/L
数据3
13
DB4
H/L
数据4
14
DB5
H/L
数据5
15
DB6
H/L
数据6
16
DB7
H/L
数据7
17
LED_A
-
背光源正极(LED+5V)
18
LED_K
-
背光源负极(LED-OV)
2.9矩阵键盘部分
2.9.1矩阵键盘外形图
图2.9.1矩阵键盘外形图
2.9.2矩阵键盘工作原理
先读取键盘的状态,得到按键的特征编码。
先从P1口的高四位输出低电平,低四位输出高电平,从P1口的低四位读取键盘状态。
再从P1口的低四位输出低电平,高四位输出高电平,从P1口的高四位读取键盘状态。
将两次读取结果组合起来就可以得到当前按键的特征编码。
使用上述方法我们得到16个键的特征编码。
图2.9.2矩阵键盘
2.9.3矩阵键盘扫描方法——行扫描法
1、判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
2、判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:
依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
高低电平翻转法:
1、首先让P1口高四位为1,低四位为0,。
若有按键按下,则高四位中会有一个1翻转为0,低四位不会变,此时即可确定被按下的键的行位置。
2、然后让P1口高四位为0,低四位为1,。
若有按键按下,则低四位中会有一个1翻转为0,高四位不会变,此时即可确定被按下的键的列位置。
3.软件部分
3.1软件部分流程图
图3.1软件部分流程图
3.2LCD液晶动态显示的基本性能指标
在使用12864LCD前先必须了解以下功能器件才能进行编程。
3.2.112864内部功能器件及相关功能
1、指令寄存器(IR)
IR是用于寄存指令码,与数据寄存器数据相对应。
当D/I=0时,在E信号下降沿的作用下,指令码写入IR。
2、数据寄存器(DR)
DR是用于寄存数据的,与指令寄存器寄存指令相对应。
当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7∽DB0数据总线。
DR和DDRAM之间的数据传输是模块内部自动执行的。
3、忙标志:
BF
BF标志提供内部工作情况。
BF=1表示模块在内部操作,此时模块不接受外部指令和数据。
BF=0时,模块为准备状态,随时可接受外部指令和数据。
利用STATUSREAD指令,可以将BF读到DB7总线,从检验模块之工作状态。
4、显示控制触发器DFF
此触发器是用于模块屏幕显示开和关的控制。
DFF=1为开显示(DISPLAYOFF),DDRAM的内容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。
DDF的状态是指令DISPLAYON/OFF和RST信号控制的。
5、XY地址计数器
XY地址计数器是一个9位计数器。
高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针。
X地址计数器是没有记数功能的,只能用指令设置。
Y地址计数器具有循环记数功能,各显示数据写入后,Y地址自动加1,Y地址指针从0到63。
6、显示数据RAM(DDRAM)
DDRAM是存储图形显示数据的。
数据为1表示显示选择,数据为0表示显示非选择。
DDRAM与地址和显示位置的关系见DDRAM地址表。
7、Z地址计数器
Z地址计数器是一个6位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。
当一行扫描完成,此地址计数器自动加1,指向下一行扫描数据,RST复位后Z地址计数器为0。
Z地址计数器可以用指令DISPLAYSTARTLINE预置。
因此,显示屏幕的起始行就由此指令控制,即DDRAM的数据从哪一行开始显示在屏幕的第一行。
此模块的DDRAM共64行,屏幕可以循环滚动显示64行。
3.2.2主要参数
表3.2.2主要参数
3.2.3读写操作时序
读操作时序如图3.2.3
(1)所示;写操作时序如图3.2.3
(2)所示:
图3.2.3
(1)读操作时序
图3.2.3
(2)写操作时序
3.3AMPIRE128*64的指令系统
此类液晶显示模块的指令系统比较简单,共有七种。
其指令如下表所示。
1.显示开/关指令
表3.3.1显示开/关指令
代码
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
形式
0
0
0
0
1
1
1
1
1
D
D=1:
开显示(DISPLAYON)意即显示器可以进行各种显示操作
D=0:
关显示(DISPLAYOFF)意即不能对显示器可以进行各种显示操作
2.显示起始行设置指令
表3.3.2显示起始行设置指令
代码
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
形式
0
0
1
1
A5
A4
A3
A2
A1
A0
前面在Z地址计数器一节已经描述了显示起始行是由Z地址计数器控制的。
A5∽A0的6位地址自动送入Z地址计数器,起始行的地址可以是0∽63的任意一行。
例如:
选择A5∽A0是62,则起始行与DDRAM行的对应关系如下:
DDRAM行:
62630123·····················2829
屏幕显示行:
123456·····················3132
3.页设置指令
表3.3.3页设置指令
代码
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
形式
0
0
1
0
1
1
1
A2
A1
A0
所谓页地址就是DDRAM的行地址,8行为一页,模块共64行即8页,A2∽A0表示0∽7页。
读写数据对地址没有影响,页地址由本指令或RST信号改变复位后页地址为0。
页地址与DDRAM的对应关系见DDRAM地址表
4.列地址设置指令
表3.3.4
(1)列地址设置指令
代码
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
形式
0
0
0
1
A5
A4
A3
A2
A1
A0
此指令的作用是将A5∽A0送入列地址计数器,作为DDRAM的列地址指针。
在对DDRAM进行读写操作后,列地址指针自动加1,指向下一个DDRAM单元。
DDRAM地址表如表2.3.4
(2)所示
表3.3.4
(2)DDRAM地址表
5.读状态指令
表3.3.5读状态指令
代码
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
形式
0
0
BUSY
0
ON/OFF
RET
0
0
0
0
当R/W=1D/I=0时,在E信号为“H”的作用下,状态分别输出到数据总线(DB7∽DB0)的相应位。
ON/OFF:
表示DFF触发器的状态(见DFF触发器一节)。
RST:
RST=1表示内部正在初始化,此时组件不接受任何指令和数据。
6.写数据指令
表3.3.6写数据指令
代码
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
形式
0
1
D7
D6
D5
D4
D3
D2
D1
D0
D7∽D0为显示数据,此指令把D7∽D0写入相应的DDRAM单元,Y地指针自动加1
7.读数据指令
表3.3.7读数据指令
代码
R/W
D/I
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
形式
1
1
D7
D6
D5
D4
D3
D2
D1
D0
此指令把DDRAM的内容D7∽D0读到数据总线DB7∽DB0,Y地址指针自动加1。
由RAM地址映射表可知LCD显示屏由两片控制器控制,分别用CS1和CS2控制。
每个内部带有64X64位(512字节)的RAM缓冲区,对应关系如图3.3所示。
图3.3LCD地址映射图
整个屏幕分左、右两个屏,每个半屏右8页,每页有8行,注意数据是竖行排列。
显示一个字要16*16点,全屏有128*64个点,故可显示32个中文汉字。
每两页显示一行汉字,可显示4行汉字,每行8个汉字,共32个汉字。
而显示数据需要16*8个点,可显示数据是汉字的两陪。
屏幕是通过CS1、CS2两信号来控制的,不同的组合方式所选的屏幕是不同的,对应关系如表3.3.8所示
表3.3.8对应关系
CS1
CS2
选屏
0
0
全屏
0
1
左屏
1
0
右屏
1
1
不选
3.4字模提取软件的应用
对于我们需要显示的一两个字符来说,用手工的方法去取模是可以的,但是随着我们需要显示的字符的数量增加以及多样化,手工取模就显的很吃力,并且效率底下,所以我们需要一个取模工具,网上流传的一个字模提取软件可以让我们高效的得到我们需要显示的字符的代码。
随着电子行业的发展,很多研发机构把汉字以代码的形式固化在液晶显示屏中,形成了带字库的液晶显示屏,方便了我们使用液晶显示屏,但是对于复杂多变的图形,他就显得就无能为力了,只能用取模软件去取得显示代码,因此学会字摸软件的使用,会使我们的工作效率事半功倍的。
字模软件界面如下:
图3.4字模软件界面图
4.Proteus软件仿真
图4.1电路仿真图
………略…………….
否则
图4.2仿真运行结果
结果分析:
测试的结果如图片所示。
显示器显示正确如仿真时的结果。
开机后显示开机文字和开机动画,如上图流程,直到出现输入密码界面暂停。
用户开始使用键盘输入密码,若密码输入正确,则进入祝福界面;若密码输入错误,则进入密码错误提示界面。
键盘可以正确的实现密码输入与控制,效果良好,达到的预期的效果。
设计使用的控制器结构简单、显示准确,具有一定的实际应用价值。
5.课程设计体会
众所周知,单片机是电子信息工程专业的一们重要的课程,也是当今电子行业的重要分支之一,应用范围之广,普遍程度之高大家有目共睹,所以学好单片机对于电电气学院的学生来说至关重要,甚至直接关系到日后的就业。
正因为这重要性才需要我们去实践,去锻炼。
在此次课程设计中,在最初的写程序及设计时遇到了一些困难。
因为一开始课堂上接触的是汇编语句,但汇编语句不易读懂,所以难以下手。
后来改用C语言,也因为之前的C基础,比较容易上手,所以最后程序是用C程序编写。
这样来不仅进一步增强了自己对单片机的兴趣,也让自己对单片机的认识又有新的提高。
虽然此次的选题难度并不大,但是就是这样一个简单的题目却让我明白“纸上得来终觉浅”的深刻意义。
经过一次次的修改程序和软件调试,使我了解了KEIL、PROTUES和自摸提取软件的使用,为日后自己主动地去设计一些东西打下了基础。
当然在此期间也出现了问题,如:
1.在写程序的时候,中断的灵活使用掌握不是很好;
通过此次课程设计,我们懂得不管做什么事都要有恒心,只要坚持一切都会会实现的。
让我了解了AMPIRE128*64液晶显示器的基本知识和使用方法,激发了强烈的兴趣,也重新让我温习了下WORD的使用。
感谢老师的教导,感谢同学的帮助。
参考文献
书、专著:
[1]张刚毅.单片机原理及应用.高等教育出版.2012.5.
[2]徐爱均.徐阳.KeilC51单片机高级语言应用编程与实践.电子工业出版社.2013.12
[3]李泉溪.单片机原理与应用实例仿真,中国计量出版北京航空航天大学出版社社.2012.5.
[4]毛学军.液晶显示技术.北京:
电子工业出版社,2014.8
电子文献:
[1]LCD12864原理与应用(源程序+原理图+Proteus仿真)
附1:
源程序代码
#include
#include"lcd12864.h"
#include"ziku.c"
#includ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 液晶显示 课程设计