单片机LCD12864显示系统课程设计Word文档下载推荐.docx
《单片机LCD12864显示系统课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机LCD12864显示系统课程设计Word文档下载推荐.docx(35页珍藏版)》请在冰豆网上搜索。
![单片机LCD12864显示系统课程设计Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-10/8/f135dced-a23f-43f2-b50f-f1a1a3025f11/f135dced-a23f-43f2-b50f-f1a1a3025f111.gif)
管脚功能描述
1
VSS
0V
电源地
2
VCC
3.0~+5V
电源正
3
V0
-
对比度(亮度)调整
4
RS(CS)
H/L
RS=“H”,表示DB7——DB0为显示数据
RS=“L”,表示DB7——DB0为显示指令数据
5
R/W(SID)
R/W=“H”,E=“H”,数据被读到DB7——DB0
R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR
6
E(SCLK)
使能信号
7
DB0
三态数据线
8
DB1
9
DB2
10
DB3
11
DB4
12
DB5
13
DB6
14
DB7
15
PSB
H:
8位或4位并口方式,L:
串口方式(见注释1)
16
NC
空脚
17
/RESET
复位端,低电平有效(见注释2)
18
VOUT
LCD驱动电压输出端
19
A
VDD
背光源正端(+5V)(见注释3)
20
K
背光源负端(见注释3)
电气参数:
项目
符号
最小
典型
最大
单位
电源电压
VDD-VSS
4.75
5.0
5.25
V
液晶驱动电压
VDD-VADJ
Ta=0
-11.0
-11.5
-12.0
Ta=25
-10.5
Ta=50
-10.0
输入信号电压
VIH
0.8VDD
VDD+0.3
VIL
0.2VDD
LCM工作电流
IDD
mA
背光驱动电流
ILED
60
80
液晶驱动电流
IEE
基本指令系统:
模块控制芯片提供两套控制命令,基本指令和扩充指令如下:
指
指令码
功能
令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
清除显示
将DDRAM填满"
20H"
并且设定DDRAM的地址计数器(AC)到"
00H"
地址归位
X
设定DDRAM的地址计数器(AC)到"
并且将游标移到开头原点位置;
这个指令不改变DDRAM的内容
显示状态开/关
D
C
B
D=1:
整体显示ONC=1:
游标ONB=1:
游标位置反白允许
进入点设定
I/D
S
指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位
游标或显示移位控制
S/C
R/L
设定游标的移动与显示的移位控制位;
功能设定
DL
RE
DL=0/1:
4/8位数据RE=1:
扩充指令操作RE=0:
基本指令操作
设定CGRAM地址
AC5
AC4
AC3
AC2
AC1
AC0
设定CGRAM地址
设定DDRAM地址
设定DDRAM地址(显示位址)第一行:
80H-87H第二行:
90H-97H
读取忙标志和地址
BF
AC6
读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值
写数据到RAM
数据
将数据D7——D0写入到内部的RAM(DDRAM/CGRAM/IRAM/GRAM)
读出RAM的值
从内部RAM读取数据D7——D0(DDRAM/CGRAM/IRAM/GRAM)
2.2.5、按键控制电路
电路由三个独立按键开关组成,分别与单片机的I/O相连,控制调整电路的加、减以及确定。
按键的开关状态通过一定的电路转换为高、低电平状态。
按键闭合过程在相应的I/O端口形成一个负脉冲。
闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。
抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。
为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。
本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。
P3.0口表示下移功能键,当开关闭合时,控制显示屏内容整体向下滚动。
P3.1口表示上移功能键,当开关闭合时,控制显示屏内容整体向上滚动。
P3.2口表示右移功能键,当开关闭合时,控制显示屏内容整体向右移动。
P3.3口表示左移功能键,当开关闭合时,控制显示屏内容整体向左移动。
按键控制电路
三、软件部分
3.1、软件系统概论
此设计是由单片机控制的LCD显示系统,外设四个按钮来控制显示的方式。
对于按钮的工作方式可以是中断也可以是查询,在此设计中所选用的顺序结构。
用单片机的P3口的低4来作为LCD的显示控制端,即控制LCD使能端、读写控制揣、数据指令选择端及两个选屏端。
对于此设计课题,因为要求是用128×
64的显示器来显示汉字,而汉字及字符(如空格等)是需要显示代码的。
所以,首先是通过一定的软件如ZIMO等来获取你想要显示的汉字的编码代码。
有了这款软件,就方便多了,只在要软件中打入你想要显示的汉字或是字符,它就会自动生成代码,使用起来非常方便,而不需要人工去编写相应的代码。
开始——显示图形——检测按键——显示相应内容。
3.2、汉字显示
对于此设计课题,因为要求是用128×
由于此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来执行相应的程序,选择相应的显示方式。
当四行全显示完了后,中断失效,即不管你是否还按键,都不再会对显示造成影响。
显示出来的内容将一直保持。
3.3、图片显示
显示图片和显示汉字类似,都是先通过字模软件先取模,然后再显示。
3.4、上下移动
由此可见12864的显示起始行为0xc0,有规律的改变起始行的位置,就可以改实现上下移的效果。
代码如下
3.5左右移动
在本设计中,通过循环改变汉字字符在单片机上显示的左右半屏以及在左右半屏上显示的列位,行位不变,达到了左右移屏的效果。
for(i=0;
i<
64;
i++)//下滚屏
{
SelectScreen(0);
display(0,i);
delay(5000);
}
voiddisplay(intunm,intnum)
{
Set_line(unm);
ClearScreen(0);
//显示开始行
Display_HZ(((num+0)/4)%2+1,0,(num+0)%4,yier);
//ucharscreen,ucharpage,ucharcolumn,uchar*p)
Display_HZ(((num+1)/4)%2+1,0,(num+1)%4,dian);
Display_HZ(((num+2)/4)%2+1,0,(num+2)%4,hua)