基于单片机的LCD显示系统软件设计.docx
《基于单片机的LCD显示系统软件设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的LCD显示系统软件设计.docx(34页珍藏版)》请在冰点文库上搜索。
![基于单片机的LCD显示系统软件设计.docx](https://file1.bingdoc.com/fileroot1/2023-6/4/f6da17ac-6b97-4d3d-bb19-63cff4b58e5e/f6da17ac-6b97-4d3d-bb19-63cff4b58e5e1.gif)
基于单片机的LCD显示系统软件设计
本科毕业设计(论文)
基于单片机的LCD显示系统软件设计
SoftwareDesignofLCDDisplaySystemBasedonSingle-ChipMicrocomputer
总计:
毕业设计(论文)27页
表格:
6个
插图:
17幅
学院(系):
电子与电气工程系
专业:
电子信息工程
基于单片机的LCD显示系统软件设计
[摘要]本文撰写的是基于单片机的LCD显示系统的软件设计,主导思想是软、硬件相结合,以硬件为基础,来进行各功能模块的软件设计。
本设计以单片机控制LCD液晶显示系统为主线,重点对其中四大模块:
串口模块,看门狗模块,键盘模块和液晶显示模块的软件设计分别做了详细介绍。
采用2片74LS244将单片机串口扩展为4路串口,并由键盘控制分别实现RS485、TTLUART、RS232、USB串口与单片机之间的通信,采用SMC1602A实现字符的液晶显示,并由看门狗模块对单片机运行状态进行实时监测。
软件设计重点阐述看如何通过编程实现上述各模块的功能。
其次阐述了部分程序的流程图和实现过程。
同时并附以系统结构框图加以说明。
[关键词]单片机;串口通信;LCD显示;看门狗
SoftwareDesignofLCDDisplaySystemBasedonSingle-ChipMicrocomputer
Abstract:
ThisarticleiswrittenrevivificationofLCDdisplaysystemsoftwaredesign,theleadingideaisasoft,hardware,hardwarebasedonafunctionalmodulesofsoftwaredesign.ThisarticleonamonolithicintegratedcircuitsdesignLCDdisplaysystemasacontroller,theemphasisontheoneinchargeofthefourmodules:
serialport,theguarddog,thekeyboardandLCDmodulesshowsthatsoftwaredesignaremadeadetailedpresentation.Thetwopiecesofstringmouth74LS244monolithicintegratedcircuitswillbeextendedtofourroadserialport,andthekeyboardcontrol,andachievingRS485,TTLUART,RS232,USBandtheseriesmonolithicintegratedcircuits,theuseofcommunicationSMC1602AtheLCDdisplay,andthewatchdogmoduletomonolithicintegratedcircuitsoperationofstateforreal-timemonitoring.Softwarewasdesignedtofocusonhowtoimplementthesemodulesprogramfeatures.Thesecondpartoftheapplicationprocessesandimplementation.
Keywords:
SCM;serialcommunication;LCDdisplay;watchdog
1引言
LCD液晶显示技术作为人机交互的主流方式,正广泛应用于家电、手机、个人电脑等显示终端。
随着电子技术的发展,单片机技术的应用产品日益增多,研究以单片机作为主控制器的LCD液晶显示器控制系统意义重大。
展望未来,急速的响应速度将会成为个性化LCD的发展趋势,越来越多的单片机正如雨后春笋般涌现。
越来越多的LCD向着成本低廉核心系统成本低廉,相对于用户的经济水平来说比较容易接受的方向发展。
其次要求操作简单,友好的人机界面通过串口与PC机相连接,用户在使用时只要按动键盘上的数字就可以显示了。
同时要求结构轻巧,系统的硬件设计上充分考虑了便携性,整个系统的主要就是单片机,LCD和键盘,而它们的所占空间小,重量轻等特点。
1.1研究现状及发展前景
当今是一个信息化的时代,信息的重要性是不言而喻的,获取手段显得尤其重要。
人们所接受的信息有70%来自于人的视觉,无论用何种方式获取的信息最终需要有某种显示方式来表示。
在当代显示技术中,主流的有LED显示屏及LCD液晶显示,而在这些显示技术中,尤其以液晶显示器LCD(LiquidCrystalDisplay)为代表的平板显示器发展最快、应用最广。
LCD是典型的光电器件,它以材料科学为基础,综合利用了精密机械、光电及计算机技术,并正在微机械、微光学、纤维光学等前沿领域研究基础上,向高集成化、智能化方向发展[1]。
如果说目前主流显示器市场上是纯平显示器的天下的话,那么液晶(LCD)显示技术就是当之无愧的明日之花了。
液晶显示器的原理是利用液晶的物理特性,通电时导通,排列变得有秩序,使光线容易通过;不通电时排列混乱,阻止光线通过。
通过和不通过的组合就可以在屏幕上显示出图像来。
由于LCD本身的工作原理,也就决定了液晶显示具有厚度薄、适于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛地应用在便携式电脑、数码摄像机、PDA移动通信工具等众多领域。
与传统的显示技术相比,液晶(LCD)显示器具有很多重要的优越性。
首先LCD显示器不使用电子枪轰击方式来成像,因此它完全没有辐射危害,对人体安全;同时LCD显示器不闪烁、颜色失真近乎与零;而且LCD显示器工作电压低、功耗小、重量轻、体积小等等优点。
1.2设计内容
该题目设计主要包括LCD显示接口技术和单片机接口技术。
LCD作为显示界面在嵌入式系统获得了广泛的应用,不同的系统需要的接口、数据显示格式和通信距离不同,本设计通过单片机实现与LCD接口,实现TTL串口、RS232、RS485和USB接口等不同接口和通信距离,通过单片机编程实现不同的数据格式,从而简化LCD的应用。
控制系统的CPU采用单片机AT89C51,用来处理液晶显示模块显示的内容及键盘与液晶模块的通信和处理扩展四路串口与主机的通信,同时保证与键盘的通信,获取键盘的指令,通过内部译码传送给液晶显示模块;也为单片机扩展了EEPROM,用来扩展单片机的闪存空间;看门狗用来保证单片机能够正常工作,防止系统进入死循环。
图1LCD液晶显示系统框图
本设计整个系统框图如图1所示,软件部分设计分为四个模块:
串口模块转换软件设计,液晶模块显示软件设计,键盘模块软件设计,看门狗模块和EEPROM软件设计。
串行端口通过74LS244转换为4路串口分别实现与RS232,TTLUART,RS485和USB的连接通信。
液晶显示模块采用SMC1602A芯片,键盘采用2×3的矩阵式键盘接口,看门狗和EEPROM采用X5045芯片。
用Proteus仿真软件及Keil开发环境。
2.各模块软件设计
2.1系统整体流程图
系统整体流程图如图2所示。
串口要实现与单片机的通信首先要串口初始化,用户所编的显示程序,开始必须进行初始化,否则模块无法正常显示,利用内部复位电路进行初始化。
本设计单片机串口由74LS244扩展为4路串口,通过键盘扫描打开要进行通信的串口,液晶屏经过初始化、选屏后显示发送端传输的字符,在显示过程中还要不断的喂狗。
2.2串口通信软件设计
2.2.1系统串口通信协议
本设计要实现的是字符显示,采用SMC1602A,其显示容量为16*2字符,即每行最多可显示16个字符,总共两行。
为了使主机和从机之间能够正确通信,减少传输错误必须制定双方共同遵守的协议[2]。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。
发送端发送一串字符(最多32个字节),如发送“NanyangInstituteofTechnology”,第一行显示前16个字符“NanyangInstitute”,第二行显示其余字符“ofTechnology”空格不显示。
除了32字节显示,还必须有1字节以检查通信是否有误,还有1字节反馈,当通信无误时反馈01H,当通信有误时反馈02H。
图2系统整体流程图
2.2.2串口通信软件设计
单片机串行端口通过74244转换为4路串口分别实现与RS232,TTLUART,RS485和USB的连接通信。
串口运行流程图如图3所示。
图3串口运行流程图
74LS244是专门设计的8缓冲器及线驱动器,通过内部缓冲器,扩展为四路串口,改变了单片机串口接口少的限制。
74LS244由2组、每组四路输入、输出构成。
每组有一个控制端G,由控制端的高或低电平决定该组数据被接通还是断开[3]。
要扩展四路串口,因此需要两片74LS244芯片。
将两片74LS244的四个使能键分别接P0.4-P0.7,再通过键盘的控制来选择使用哪路通道。
S1-S4分别控制RS485,TTLUART,RS232和USB串口的开闭,当键盘扫描有键按下时判断键值,并打开相应的串口,使其与单片机进行通信,并把信息传给液晶屏进行显示。
串口通信的基本原理:
串行端口的本质功能是作为CPU和串行设备间的编码转换器。
当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位。
在接收数据时,串行的位被转换为字节数据[4]。
MCS-51内部含有一个可编程全双工串行通信接口,具有UART的全部功能。
该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。
在进行异步通信时,数据的发送和接收分别在各自的时钟(TCLK和RCLK)控制下进行的,但都必须与字符位数的波特率保持一致。
MCS-51串行口的发送和接收时钟可由两种方式产生,一种是由主机频率fosc经分频后产生,另一种方式是由内部定时器T1或T2的溢出率经16分频后提供。
(1)发送和接收
串行口的发送过程由指令MOVSBUF,A启动,即CPU由一条写发送缓冲器的指令把数据(字符)写入串行口的发送缓冲器SBUF(发)中,再由硬件电路自动在字符的始、末加上起始位(低电平)、停止位(高电平)及其它控制位(如奇偶位等),然后在移位脉冲SHIFT的控制下,低位在前,高位在后,从TXD端(方式0除外)一位位地向外发送。
串行口的接收与否受制于允许接收位REN的状态,当REN被软件置“1”后,允许接收器接收。
接收端RXD一位位地接收数据,直到收到一个完整的字符数据后,控制电路进行最后一次移位,自动去掉启始位,使接收中断标志RI置“1”,并向CPU申请中断。
CPU响应中断,用一条指令(MOV A,SBUF)把接收缓冲器SBUF(收)的内容读入累加器。
TI和RI是由硬件置位的,但需要用软件复位。
(2)相关的寄存器
●SBUF是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。
两个缓冲器只用一个字节地址99H,可通过指令对SBUF的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。
串行口对外有两条独立的收发信号线RXD(P3.0)、TXD(P3.1),因此可以同时发送、接收数据,实现全双工。
●SCON寄存器用来控制串行口的工作方式和状态,可按位寻址,其字节地址为98H。
●PCON中的SMOD用来控制波特率加倍。
●TMOD设置定时器1的工作方式,用来产生波特率。
如果用到中断,则还需要用到中断相关的寄存器IE,IP等[5]。
2.3液晶显示模块软件设计
2.3.1液晶显示原理
LCD是基于液晶电光效应的显示器件。
包括段显示方式的字符段显示器件;矩阵显示方式的字符、图形、图像显示器件;矩阵显示方式的大屏幕液晶投影电视液晶屏等。
液晶显示器的工作原理是利用液晶的物理特性,在通电时导通,使液晶排列变得有秩序,使光线容易通过;不通电时,排列则变得混乱,阻止光线通过[6]。
液晶显示器各种图形的显示原理:
(1)线段的显示
点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。
例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。
(2)字符的显示
用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。
这样一来就组成某个字符。
但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。
(3)汉字的显示
汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5……右边为2、4、6……根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节……直到32B显示完就可以LCD上得到一个完整汉字。
2.3.2液晶显示流程图
图4液晶显示流程图
显示部分由SMC1602A液晶显示的,其中单片机的P0口作为显示数据输出口,而P3.0-P3.2口是控制液晶显示命令输入输出口。
数据位是8位输出。
RS数据/命令选择端(H/L),R/W读写选择端(H/L),E使能信号端。
液晶显示流程图如图4所示。
源程序见附录。
2.3.3SMC1602A软件设计
本设计液晶显示模块采用SMC1602A芯片,SMC1602A可以采用两种方式与单片机连接,一种是采用8位数据总线D0-D7和RS、R/W、EN三个控制端口:
另一种是只用D4—D7作为四位数据分两次传送。
本实验将使用并采用八位数据方式来控制SMC1602A显示。
SMC1602A引脚功能如表1所示。
表1LCD1602引脚功能
符号
名称
功能
1
VSS
接地
0V
2
VDD
电路电源
5V+/-10%
3
VEE
液晶驱动电压
保证VDD-VEE=4.5~5V电压差
4
RS
寄存器选择信号
H:
数据寄存器L:
指令寄存器
5
R/W
读/写信号
H:
读L:
写
6
E
片选信号
下降沿触发,锁存数据
7-14
DB0-DB7
数据线
数据传输
15
BLA
背光源正极
16
BLK
背光源负极
SMC1602A软件设计主要包括:
(1)主要功能
●40通道点阵LCD驱动;
●可选择当作行驱动或列驱动;
●输入/输出信号:
输出,能产生20×2个LCD驱动波形;输入,接受控制器送出的串行数据和控制信号,偏压(V1∽V6);
●通过单片机控制将所测的频率信号读数显示出来。
(2)SMC1602A的显示与控制命令
SMC1602A液晶模块内部的字符发生内存(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、和常用的符号等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41中的点阵字符图形显示出来,我们就能看到字母“A”。
显示位与DDRAM地址的对应关系如表2所示。
SMC1602A液晶模块内部的控制器共有11条控制指令,指令如下,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的(说明:
1为高电平,0为低电平)。
表2显示位与DDRAM地址的对应关系
显示位序号
12345…………………40
DDRAM地址(HEX)
第一行
0001020304…………27
第二行
4041424344…………67
指令2:
光标复位,光标返回到地址00H。
指令3:
光标和显示模式设置I/D:
光标移动方向,高电平右移,低电平左移,S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效。
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示;C:
控制光标的开与关,高电平表示有游标,低电平表示无游标;B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位元S/C:
高电平时移动显示的文字,低电平时移动光标。
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线N:
低电平时为单行显示,高电平时双行显示F:
低电平时显示5×7的点阵字符,高电平时显示5×10的点阵字符。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读忙信号和光标地址BF:
为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:
写数据。
指令11:
读数据。
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。
表3液晶显示涉及的功能函数及说明
函数定义
功能描述
L1602_ReadStatus()
读1602的状态
L1602_Write(chardata1,chardata2,charbusy)
data1写指令或写数据
data2指令或数据内容
busy是否检测忙位
L1602_ReadData()
从当前地址读取一个字符
L1602_Read(charaddr)
从指定地址读取一个字符
L1602_DisplayOneChar(charX,charY,char
ongchar)
在液晶屏的X行Y列写一个字符
L1602_DisplayString(charX,charY,char
*stringdata)
从液晶屏的X行Y列开始写入一列字符
设计中采用的SMC1602A液晶,首先通过以下几条语句设置液晶寄存器配置。
L1602_Write(COM,0x38)//设置16X2显示,5X7点阵,8位数据接口
L1602_Write(COM,0x06)//读或写一个字符后地址指针加一,且光标加一
L1602_Write(COM,0x0c)//开显示,不显示光标,光标不闪烁
L1602_Write(COM,0x01)//清屏
其中关于液晶显示及相关函数如表3所示[7]。
寄存器选择功能如表4所示。
表4寄存器选择功能
RS
R/W
操作
0
0
指令寄存器(IR)写入
0
1
忙标志和地址计数器读出
1
0
数据寄存器(DR)写入
1
1
数据寄存器读出
(3)初始化方法
用户所编的显示程序,开始必须进行初始化,否则模块无法正常显示,利用内部复位电路进行初始化。
下面指令是在初始化过程中执行的。
●清屏(DISPLAYCLEAR);
●功能设置(FUNCTIONSET);
DL=1:
8Bit接口数据;
N=0:
1行显示;F=0:
5×7dot字形;
●显示开/关控制(DISPLAYON/OFFCONTROL);
D=0:
显示关;C=0:
光标关;B=0:
消隐关;
●输入方式设置(ENTRYMODESET);
I/D=1:
(增量);S=0:
无移位。
2.4看门狗模块软件设计
2.4.1看门狗
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称“看门狗”。
看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:
看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。
看门狗程序流程图如图5所示。
图5看门狗程序流程图
基本原理:
看门狗,是一个定时器电路,一般有一个输入叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,,每隔一端时间输出一个信号到喂狗端,给WDT清零,如果超过规定的时间不喂狗,(一般在程序跑飞时),WDT定时超过,就会给出一个复位信号到MCU,是MCU复位,防止MCU死机。
看门狗的作用就是防止程序发生死循环,或者说程序跑飞。
工作原理:
在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。
所以在使用有看门狗的芯片时要注意清看门狗。
看门狗分为硬件看门狗和软件看门狗,本设计采用硬件看门狗。
硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位如果出现死循环,或者说PC指针不能回来。
那么定时时间到后就会使单片机复位。
2.4.2X5045看门狗软件设计
本课题看门狗模块设计采用X5045芯片。
X5045是美国Xicor公司的生产的标准化8脚集成电路,它将EEPROM、看门狗定时器、电压监控三种功能组合在单个芯片之内,大大简化了硬件设计,提高了系统的可靠性,减少了对印制电路板的空间要求,降低了成本和系统功耗,是一种理想的单片机外围芯片[8]。
X5045是一种集上电复位、看门狗、电压监控和串行EEPROM四种功能于一身的可编程控制电路,它有助于简化应用系统的设计,减少电路板的占用面积,提高可靠性。
(1)上电复位
X5045加电时会激活其内部的上电复位电路,从而使RESET引脚有效。
该信号可避免系统微处理器在电压不足或振荡器未稳定的情况下工作。
当VCC超过器件的Vtrip限值时,电路将在200ms(典型)延时后释放RESET以允许系统开始工作。
(2)低电压检测
工作时,X5045对VCC电平进行监测,若电源电压跌落至预置的最小Vtrip以下时,系统即确认RESET,从而避免微处理器在电源失效或断开