液晶显示控制电路与程序.docx
- 文档编号:3696093
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:22
- 大小:284.12KB
液晶显示控制电路与程序.docx
《液晶显示控制电路与程序.docx》由会员分享,可在线阅读,更多相关《液晶显示控制电路与程序.docx(22页珍藏版)》请在冰豆网上搜索。
液晶显示控制电路与程序
一、选题分析
题目:
液晶显示控制电路与程序设计
内容:
完成单片机液晶接口的电路和程序设计,实现文本显示功能。
(1)液晶显示器为图形点阵液晶,型号YM12864R,控制芯片为ST7920
(2)正确连接液晶显示器与单片机
(3)编写液晶显示控制程序,显示如下内容:
分析:
随着计算机及相关的微电子﹑光电子技术的迅猛发展,液晶显示模块在各种场合得到了越来越广泛的应用。
目前,液晶显示主要有段式和点阵式两种,其中,点阵式更为广泛,其又可分为文本型显示和图形型显示。
YM12864R作为汉字图形点阵液晶显示模块,可以显示汉字及图形,内置8192个中文汉字、128个字符及64X256点阵显示RAM,另外还提供四组16×16点的自定义图像空间。
YM12864R采用的控制芯片为ST7920,它是一种内置128×64汉字图形点阵的液晶显示控制模块,ST7920系列芯片由于内置了汉字库而无须人工取字模,在程序控制上简洁明。
为完成YM12864R控制和数据传输,单片机最小系统选择AT89S51,因为AT89S51片内ROM全都采用FlashROM,具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。
综上,硬件电路搭建可由YM12864R液晶显示电路、单片机的最小系统AT89S51、及外围电路构成。
二、液晶显示控制电路与程序方案设计
2.1系统设计思路与框图
液晶显示器YM12864R的控制器ST7920可以显示字母、数字符号、中文字型及自定图形显示,只要一个最小的微处理系统,将液晶显示模块的接口作为I/O设备直接与之连接,就可以进行控制液晶显示器和数据传输,从而达到理想的显示效果。
使用P3口给液晶显示器提供控制信号,P0口给液晶显示器传送数据。
YM12864R液晶显示器的控制信号有PSB、RS、R/W、E,其中RS、R/W、E分别对应接在AT89S51的P3.0、P3.1、P3.2、P2.3上,在本次设计中采用并行接口,故PSB接高电平,而8位数据口DB0~DB7对应接在P0口上。
背光灯的电源正极、液晶显示器模块的电源正极以及LCD驱动电压输入端都接在+5V的稳压电源上。
背光灯负极和模块的电源负极统一接地。
液晶显示器模块的复位脚连接开关按纽与地相连。
即可实现单片机对液晶显示汉字的控制。
系统设计图框如下图2.1所示,主要由单片机的最小系统AT89S51、YM12864R液晶显示电路及外围电路构成。
图2.1系统设计框图
2.2框图模块功能描述及技术指标分析
时钟振荡器模块:
利用晶体本身的特性,可以利用晶振与电容搭建振荡电路与AT89S51引脚XTAL1及XTAL2相连,向单片机提供一个频率稳定度较高的时钟脉冲,具体连接见原理图。
此外,采用24M晶振获得较高的刷新率,可使屏幕显示更稳定。
开关复位电路模块:
AT89S51的复位引脚RST外接开关复位电路,当电路工作后,闭合开关,只要在RST引脚上出现2个机器周期以上的高电平,单片机即可复位。
若RST始终保持高电平,则可对AT89S51循环复位。
开关复位电路的组成如原理图——电阻R2和开关S1串联后与电容C3并联,然后与R1串联对+5V电压进行分压,R1一端接地另一端接复位信号引脚RST。
AT89S51模块:
作为核心组成部件之一,ATS8951单片机给YM12864R液晶显示提供控制信号和进行数据传输,从整体上实现液晶显示控制。
AT89S51片内ROM全都采用FlashROM,具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。
AT89S51片内具有计算机正常运行所必需的部件,片外有很多供扩展用的(总线,并行和串行的输入/输出)管脚,便于扩展,很容易组成一定规模的计算机应用系统。
具有丰富的控制指令,控制功能强。
此外其体积小,功耗低,价格便宜。
YM12864R液晶显示模块:
YM12864R液晶显示模块,在其控制芯片ST7920调控下用来显示最终结果。
除显示液晶块外,还包含两个重要外围电路——开关复位电路及电源控制电路,具体如原理图所示。
YM12684的复位引脚RET外接开关复位电路,当开关闭合时,RET引脚接地,模块复位;当开关断开时,复位信号无效。
此外,外接电源电路利用滑动变阻器分压分别给YM12864R的电源地引脚VSS和LCD驱动电压输入端引脚V0供电。
2.3电路原理图
电路原理图如图2.2所示,其中单片机AT89S51引脚P3.0-P3.2与YM12864R中RS、R/W、E的连接在图中以网络标签的形式给出。
此外,相较于系统设计框图在液晶显示模块控制芯片的调控上,对复位引脚处以简单开关复位电路控制,而电压地VSS及LCD的操作电压以变阻器控制。
图2.2电路原理图
2.4相关芯片介绍
AT89S51:
AT89S51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89S51引脚图如图2.3,其内部I/O部件包括:
1、四个8位通用I/O端口,对应引脚P0、P1、P2和P3;
2、两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1)
3、一个串行通信接口;(SCON,SBUF)
4、一个中断控制器;(IE,IP)
图2.3AT89S51引脚图
ST7920:
【4】
ST7920是台湾矽创电子公司生产的中文图形控制芯片,它是一种内置128*64-12汉字图形点阵的液晶显示控制模块,用于显示汉字及图形。
该芯片共内置8192个中文汉字(16*16点阵)、128个字符的ASCII字符库(8*16点阵)及64*256点阵显示RAM(GDRAM)。
为了能够简单、有效地显示汉字和图形,该模块内部设计有2MB的中文字型CGROM和64*256点阵的GDRAM绘图区域;同时,该模块还提供有4组可编程控制的16*16点阵造字空间;除此之外,为了适应多种微处理器和单片机接口的需要,该模块还提供了4位并行、8位并行、2线串行以及3线串行等多种接口方式。
利用上述功能可方便地实现汉字、ASCII码、点阵图形、自造字体的同屏显示,所有这些功能(包括显示RAM、字符产生器以及液晶驱动电路和控制器)都包含在集成电路芯片里,因此,只要一个最基本的微处理系统就可以通过ST7920芯片来控制其它的芯片。
ST7920的主要技术参数和显示特性如下:
电源:
VDD(-2.7~+5.5V)+5V(内置升压电路,一般无需负压);
功耗:
正常模式:
450μA,睡眠模式:
3μA,低功耗模式:
30μA;
显示内容:
128列*64行;
显示颜色:
黄绿;
显示角度:
6:
00钟直视;
LCD类型:
STN;
与MCU接口:
8位并行/3位串行;
配置有LED背光显示功能;
带有自动启动复位按钮(RESET);
在对ST7920读或写时,会用到两个8位的寄存器,一个是数据寄存器DR,另一个是指令寄存器IR。
通过数据寄存器DR可以存取DDRAM、CGRAM、CGROM及IRAM的值。
待存取的目标RAM的地址可通过命令来选择,每次数据寄存器DR的操作应以上次选择的目标RAM为主体来进行读出或写入。
通过RS和RW的状态可以选择不同的读写模式,具体配置方法如表1所列。
表1ST7920的寄存器读写状态
RS
RW
功能说明
低电平0
低电平0
MPU写指令到指令寄存器IR
低电平0
高电平1
读出忙标志及地址计数器的状态
高电平1
低电平0
MPU写指令到数据寄存器DR
高电平1
高电平1
MPU从数据寄存器DR读出指令
2.5程序主流程图以及子流程图
整个程序除主函数外包含以下几个子函数:
ST7920初始化、写指令、写数据、汉字显示、延时、清屏。
ST7920初始化子函数用来完成液晶显示模块的初始化操作并设置显示的方式及必要的参数,为显示操作做好必要的准备;写指令函数向指令寄存器写入不同的命令从而控制液晶显示芯片的显示。
写数据函数向数据寄存器写入数据从而在液晶显示屏上显示相应的或字符字符或此外写指令操作与写数据操作的过程基本一致,区别在于写状态对RS及RW的状态选择不同;汉字显示函数包含设置所要显示的汉字或字符的显示的地址,向显示RAM(DDRAM)写入所要显示汉字区码的高八位及低八位三个操作,从而实现在液晶屏上显示字符的功能;延时函数进行一定时间的等待,代替判断忙标志函数,使得上一个指令可以执行完毕,液晶屏处于空闲状态,以便于执行下一条指令;清屏函数用来清除屏幕,进行新的显示;汉字显示主程序包含初始化和调用汉字显示函数显示汉字两个操作,其完成整个汉字送液晶显示的调度。
汉字显示子函数流程、ST7920初始化、写指令、写数据子函数流程分别如图2.4、图2.5、图2.6及图2.7所示。
其中,图2.6流程向ST7920写各种操作指令,图2.6流程向ST7920写各种操作数据,区别在于写状态对RS及RW的状态选择不同。
延时子函数流程如图2.8所示,图2.9为汉字显示主流程,其完成整个汉字送液晶显示的调度。
图2.4汉字显示子函数
图2.5ST7920初始化
图2.6写指令子函数
图2.7写数据子函数
图2.8延时子函数
图2.9汉字显示主流程
三、ST7920指令说明
ST7920的指令集包括基本指令和扩充指令,其中基本指令有11条,扩充指令有7条。
每一个指令的长度都为8位。
16×8点阵的ASCII字符代码也是8位。
但是16×16点阵中文字符的代码为16位,必须分为两次传送,先传送高8位,再传送低8位。
具体指令如下:
1、清除显示
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
0
0
0
1
功能:
清除显示屏幕,把DDRAM位址计数器调整为“00H”。
2、位址归位
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
0
0
1
X
功能:
把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM。
3、进入设定点
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
0
1
I/D
S
功能:
把DDRAM位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM功能:
执行该命令后,所设置的行将显示在屏幕的第一行。
显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。
Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。
4、显示状态开/关
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
1
D
C
B
功能:
D=1;整体显示ONC=1;游标ONB=1;游标位置ON。
5、游标或显示移位控制
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
1
S/C
R/L
X
X
功能:
设定游标的移动与显示的移位控制位:
这个指令并不改变DDRAM的内容。
6、功能设定
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
1
DL
X
0
RE
X
X
功能:
DL=1(必须设为1)RE=1;扩充指令集动作RE=0:
基本指令集动作。
7、设定CGRAM位址
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
1
AC5
AC4
AC3
AC2
AC1
AC0
功能:
设定CGRAM位址到位址计数器(AC)。
8、设定DDRAM位址
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
1
AC6
AC5
AC4
AC3
AC2
AC1
AC0
功能:
设定DDRAM位址到位址计数器(AC)。
9、读取忙碌状态(BF)和位址。
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
1
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
功能:
读取忙碌状态(BF)可以确认内部动作是否完成,同时可以读出位址计数器(AC)的值。
10、写资料到RAM
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
1
0
D7
D6
D5
D4
D3
D2
D1
D0
功能:
写入资料到内部的RAM(DDRAM/CGRAM/TRAM/GDRAM)。
11、读出RAM的值
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
1
1
D7
D6
D5
D4
D3
D2
D1
D0
功能:
从内部RAM读取资料(DDRAM/CGRAM/TRAM/GDRAM)。
12、待命模式(12H)
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
0
0
0
1
功能:
进入待命模式,执行其他命令都可终止待命模式。
13、卷动位址或IRAM位址选择(13H)
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
0
0
1
SR
功能:
SR=1;允许输入卷动位址SR=0;允许输入IRAM位址。
14、反白选择(14H)
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
0
1
R1
R0
功能:
选择4行中的任一行作反白显示,并可决定反白的与否。
15、睡眠模式(015H)
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
0
0
1
SL
X
X
功能:
SL=1;脱离睡眠模式SL=0;进入睡眠模式。
16、扩充功能设定(016H)
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
0
1
1
X
1RE
G
0
功能:
RE=1;扩充指令集动作RE=0;基本指令集动作G=1;绘图显示ONG=0;绘图显示OFF。
17、设定IRAM位址或卷动位址(017H)
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
0
1
AC5
AC4
AC3
AC2
AC1
AC0
功能:
SR=1;AC5~AC0为垂直卷动位址SR=0;AC3~AC0写ICONRAM位。
址
18、设定绘图RAM位址(018H)
CODE:
RW
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
0
0
1
AC6
AC5
AC4
AC3
AC2
AC1
AC0
功能:
设定GDRAM位址到位址计数器(AC)。
当ST7920在接收指令前,MCU必须先确认ST7920处于空闲状态。
即读取BF=0,才能接收新的指令;如果在送出一条指令前不检查BF状态,则需要延时一段时间,确保上一条指令执行完毕。
"RE"是基本指令集与扩充指令集的选择控制位,当更改"RE"的状态后,后续指令维持在最后状态。
除非再次更改"RE"状态,否则使用相同指令集时,无需要重新设置"RE"。
四、具体功能程序及硬件实现
4.1主要功能程序实现
Ø将要显示的汉字及字符在YM12864R数据手册中一一查出,定义于显示数据数组以便用于调用显示。
具体如下:
unsignedcharmx[32][2]=//定义汉字字符数组
{0x20,0x20,//第一行
0xb3,0xa3,0xca,0xec,0xc0,0xed,0xb9,0xa4,0xd1,0xa7,0xd4,0xba,//常熟理工学院
0x20,0x20,
0x20,0x20,0x20,0x20,//第二行显示数据
0xbf,0xce,0xb3,0xcc,0xc9,0xe8,0xbc,0xc6,//课程设计
0x20,0x20,0x20,0x20,
0x20,0x20,//第三行显示数据
0xd7,0xf7,0xd5,0xdf,0xa1,0xc3,0x20,0x20,0xc5,0xa3,0xcc,0xce,//作者:
牛涛
0x20,0x20,
0x20,0x20,//第四行显示数据
0xd5,0xc5,0xc6,0xf4,0xcb,0xb3,0x20,0x20,0xd5,0xd4,0xbd,0xa8,//张启顺赵建
0x20,0x20};
Ø通过改变RS和RW的状态选择不同的读写模式,定义写指令及写数据子函数,以便调用来完成数据在液晶显示器上的显示,其中,通过延时调用来避开向液晶送数据的忙状态。
子函数定义如下:
voidwcom(unsignedchard)//写指令子函数
{
delay
(2);
RW=0;//写选通
RS=0;//写指令
P0=d;//将要写的数据送给P1口
E=1;//使能有效
E=0;//关闭使能信号
delay(10);
}
voiddat(unsignedchard)//写数据子函数
{
delay
(2);
RS=1;//数据操作
RW=0;//写选通
P0=d;//将要写的数据送给P1口
E=1;//使能有效
E=0;//关闭使能信号
delay(10);
}
Ø清屏以便重新显示:
voidclearlcd()//清屏
{
wcom(0x01);//清除显示
}
Ø对硬件端口及液晶显示器初始化:
voidinit()//初始化子函数
{
E=0;//关闭使能信号
wcom(0x38);//功能设定
wcom(0x08);//关显示指令
wcom(0x06);//游标右移
wcom(0x0c);//开显示指令
clearlcd();//清屏
}
Ø定义汉字显示子程序,以便调用向液晶显示器送显示数据:
voidhanzi(unsignedcharw,unsignedcharwb1,unsignedcharwb2)
{wcom(w);//设置起始地址
dat(wb1);//数据送液晶显示
dat(wb2);
}
Ø编写主函数以完成最终整个实现程序过程的调度:
voidmain()
{
inti;
init();//调用初始化函数进行初始化操作
while
(1)
{
for(i=0;i<32;i++)
{
hanzi(addr[i],mx[i][0],mx[i][1]);;//调用汉字显示,向液晶送数据显示
}
}
}
4.2实验步骤
Ø完成硬件电路的设计及焊接
Ø完成软件的设计并编写具体程序
1、新建工程
在菜单Project-NewProject中新建工程my1.uv2;
2、选择CPU
根据对话框选择CPU类型(公司、型号等)本次课程设计采用ATMEL公司的AT89S51,点击确定按钮后出现如下对话框,选择“否”。
3、新建文件
点击File-New,新建文件,并保存为lcm.c;
4、添加源文件
点击Project-Window中Target1文件夹右边的“+”号,显示子文件夹SourceGroup1,选中SourceGroup1文件夹并点击鼠标“右键”,出现快捷菜单。
点击AddFilesToGroup‘SourceGroup1’,在对话框中完成源文件向工程的添加。
添加完成后,在ProjectWorkspace窗口的SourceGroup1项前多了“+”号,点击“+”号即可看到所添加的文件“lcm.c”
5、编译
用快捷按钮Buildtarget对工程进行编译,在OutputWindow中有编译提示信息,可根据该信息对源文件进行修改。
6、软件仿真
点击Strat/StopDebugSession,可对程序进行设置断点、单步、连续等执行操作。
7、HEX文件设置
选中Target1文件夹并点击鼠标“右键”,选择快捷菜单中的OptionforTarget‘Target1’。
在“Output”对话框
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 液晶显示 控制电路 程序