目录一、概述 (2)二、系统总体方案及硬件设计 (2)系统框图 (3)单片机最小系统 (4)显示电路 (6)按键控制电路 (6)]三、系统软件设计 (9)软件设计概述 (9)汉字显示 (10)上下移屏........................................ 错误!未定义书签。
左右移屏....................................... 错误!未定义书签。
四、课程设计体会................................... 错误!未定义书签。
五、参考文献 (13)六、附录 (14)…总电路图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .总程序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .%一、概述/随着社会的发展,趣来趣多的地方需要应用显示功能,各种数字显示仪器中的显示、广告牌、数码产品等,传统的数码管显示已经远远不能满足各行各业的需求。
基于单片机的LCD显示是一种用单片机来控制的一种显示系统,它不仅能显示种各数字、字母、还能显示各种字体的汉字以及一些简单的图象,使用起来极为方便,只要通过对单片机写入一定的程序来控制LCD 的显示即可完成,根据程序的不同而产生不同不效果以满足各种不同需求。
本文围绕设计以单片机作为LCD液晶显示系统控制器为主线,基于单片机AT89S51,采用的液晶显示控制器的芯片是SED1520,主要实现由按键控制的中文显示、图片显示、滚屏以及左右移动功能。
同时也对部分芯片和外围电路进行了介绍和设计,并附以系统结构框图加以说明,着重介绍了本系统应用的各硬件接口技术和各个接口模块的功能及工作过程,并详细阐述了程序的各个模块。
本系统是以单片机的C语言来进行软件设计,指令的执行速度快,可读性强。
为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。
使硬件在软件的控制下协调运作。
其次阐述了部分程序的流程图和实现过程。
本文撰写的主导思想是软、硬件相结合,以硬件为基础,来进行各功能模块的编写。
最后对我所开发的用单片机实现LCD液晶显示器控制原理的设计思想和软、硬件调试作了详细的论述。
二、系统总体方案及硬件设计系统框图本系统由电源部分、单片机最小系统部分、LCD12864显示电路部分、按键控制部分组成。
其中,单片机最小系统部分包括晶振电路、复位电路。
单片机最小系统`、AT89S52单片机89S51各引脚功能介绍:1.VCC:2.89S51 电源正端输入,接+5V。
3.VSS:4.电源地端。
5.XTAL1:6.单芯片系统时钟的反相放大器输入端。
7.`8.XTAL2:9.系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。
10.RESET:11.89S51的重置引脚,高电平动作,当要对晶A T89S51片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。
12.EA/Vpp:13."EA"为英文"External Access"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。
因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。
如果是使用 8751 内部程序空间时,此引脚要接成高电平。
此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。
14.ALE/PROG:15.端口3的管脚设置:16.17.:RXD,串行通信输入。
18.:TXD,串行通信输出。
19.:INT0,外部中断0输入。
20.:INT1,外部中断1输入。
21.:T0,计时计数器0输入。
22.:T1,计时计数器1输入。
23.:WR:外部数据存储器的写入信号。
24.:RD,外部数据存储器的读取信号。
、复位电路电路图如下:上电自动复位是通过外部复位电路的电容充电来实现的。
只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。
图单片机复位电路、时钟电路时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。
因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。
本文用的是内部时钟方式。
)电路图如下:图晶振电路显示电路管脚名称及功能:管脚号管脚名称电平】管脚功能描述1VSS0V电源地2VCC~+5V/电源正3V0-对比度(亮度)调整4RS(CS)H/L !RS=“H”,表示DB7——DB0为显示数据RS=“L”,表示DB7——DB0为显示指令数据5R/W(SID)H/LR/W=“H”,E=“H”,数据被读到DB7——DB0R/W=“L”,E=“H→L”, DB7——DB0的数据被写到IR或DR6(E(SCLK)H/L使能信号7DB0H/L三态数据线8@DB1H/L三态数据线9DB2H/L三态数据线基本指令系统:模块控制芯片提供两套控制命令,基本指令和扩充指令如下:指|指令码功能令RSR/WD7D6D5'D4D3D2D1D清除显示0/0000000《1将DDRAM填满"20H",并且设定DDRAM的地址计数器(AC)到"00H"地址归位00000,001X设定DDRAM的地址计数器(AC)到"00H",并且将游标移到开头原点位置;这个指令不改变DDRAM 的内容显示状态开/关0\00001D C、BD=1: 整体显示 ONC=1: 游标ON B=1:游标位置反白允许进入点设定00000\01I/DS指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位游标或显示移位控制0|0001S/CR/LX!X设定游标的移动与显示的移位控制位;这个指令不改变DDRAM 的内容、按键控制电路电路由三个独立按键开关组成,分别与单片机的I/O相连,控制调整电路的加、减以及确定。
按键的开关状态通过一定的电路转换为高、低电平状态。
按键闭合过程在相应的I/O端口形成一个负脉冲。
闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。
抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。
为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。
本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。
口表示下移功能键,当开关闭合时,控制显示屏内容整体向下滚动。
(口表示上移功能键,当开关闭合时,控制显示屏内容整体向上滚动。
口表示右移功能键,当开关闭合时,控制显示屏内容整体向右移动。
口表示左移功能键,当开关闭合时,控制显示屏内容整体向左移动。
按键控制电路三、软件部分、软件系统概论此设计是由单片机控制的LCD显示系统,外设四个按钮来控制显示的方式。
对于按钮的工作方式可以是中断也可以是查询,在此设计中所选用的顺序结构。
用单片机的 P3口的低4来作为LCD的显示控制端,即控制LCD使能端、读写控制揣、数据指令选择端及两个选屏端。
对于此设计课题,因为要求是用128×64的显示器来显示汉字,而汉字及字符(如空格等)是需要显示代码的。
所以,首先是通过一定的软件如ZIMO等来获取你想要显示的汉字的编码代码。
有了这款软件,就方便多了,只在要软件中打入你想要显示的汉字或是字符,它就会自动生成代码,使用起来非常方便,而不需要人工去编写相应的代码。
}开始——显示图形——检测按键——显示相应内容。
、汉字显示对于此设计课题,因为要求是用128×64的显示器来显示汉字,而汉字及字符(如空格等)是需要显示代码的。
所以,首先是通过一定的软件如ZIMO等来获取你想要显示的汉字的编码代码。
有了这款软件,就方便多了,只在要软件中打入你想要显示的汉字或是字符,它就会自动生成代码,使用起来非常方便,而不需要人工去编写相应的代码。
由于此LCD的显示屏是被分为了两部分的,即左半屏和右半屏,分别由CS1和 CS2来控制,两个半屏的内存都分别由X和Y两个地址来确定,X地址共64位,而Y地址两边各64位,一共128位,所以有的时候就称其为12864显示器。
X地址共有8个值,从0到7,即每个值有8位,每显示一个字符要2个X值,而Y共128个值,分为两块即左右两块,分别从0到63,即每个值一位。
每显示一个汉字要16个Y值,每显示一个字符要8个Y值。
所以应该对两半屏分别编程取显示地址。
同时还得用一个显示子程序来显示显示地址中保存的显示代码(汉字代码)。
由此LCD的显示时序图可知,在显示过程中还需要一定的延时(不同的型号,延时时间是不同的)并且在显示前需将一些特定的控制端置相应的电平,比如说还所有输入之关需先把LCD总使能端打开,即置E端为高电平,然后应再输入指令代码,对其进行相关的设置。
所以还需要一个适当的延时子程序以及输入数据前的准备程序。
除了这些外,还应写一个初始化程序,用来对中断等一些程序所需要的端口进行初始。
对于开中断,应打开总中断EA以及相应的低级中断EX0和 EX1。
再者就是两个中断程序,对于这两个中断程序比较简单,只需对要执行相关控制(即常规显示和滚动显示)所需要的每件进行满足即可。
最后就是主函数,它的主要功能就是判断中断是否来临,来临了,然后判断是外部中断0还是外部中断1,然后根据是0还是1来执行相应的程序,选择相应的显示方式。
当四行全显示完了后,中断失效,即不管你是否还按键,都不再会对显示造成影响。
显示出来的内容将一直保持。
、图片显示显示图片和显示汉字类似,都是先通过字模软件先取模,然后再显示。
、上下移动~由此可见12864的显示起始行为0xc0,有规律的改变起始行的位置,就可以改实现上下移的效果。
代码如下左右移动在本设计中,通过循环改变汉字字符在单片机上显示的左右半屏以及在左右半屏上显示的列位,行位不变,达到了左右移屏的效果。