原创 单片机与液晶显示器的接口及应用

2009-8-13 16:11 2941 9 9 分类: MCU/ 嵌入式
The interface and application of MCU and LCD
X)gm+R$^G6Z'z3J0摘 要:在介绍图形点阵式液晶显示模块GTG240128的结构和功能的基础上,讨论了其与AT89C55单片机的硬件接口电路和接口软件编程方法,并给出了写指令、写数据、初始化和汉字显示等通用程序。电子园51单片机学习网kG^7Z*I7`\xy7Y
关键词:液晶显示模块;接口技术;AT89C55;T6963C电子园51单片机学习网^+M0o,Y:I RW
 
Wax Sx2o N0电子园51单片机学习网P&H.a'h1du
引言电子园51单片机学习网6Gy-_ |c&L7` b{!l5m
---液晶显示器(LCD)具有工作电压低、微功耗、显示信息量大和接口方便等优点,现在已被广泛应用于计算机和数字式仪表等领域,成为测量结果显示和人机对话的重要工具。液晶显示器按其功能可分为三类:笔段式液晶显示器、字符点阵式液晶显示器和图形点阵式液晶显示器。前两种可显示数字、字符和符号等,而图形点阵式液晶显示器还可以显示汉字和任意图形,达到图文并茂的效果,其应用越来越广泛。本文在介绍以T6963C为控制器的GTG240128液晶显示模块的结构和功能的基础上,讨论了其与AT89C55单片机的硬件接口电路及接口软件编程方法。
Pw"Hx7x/K8s/C.Tv(S0
:oHB)y5FqkMd6n0GTG240128液晶显示模块
8bB4RthB(U0---1 模块特点
q6[k,?Kfb4o0---GTG240128图形点阵式液晶显示器的点阵的大小为240×128,带背光功能。内置1片T6963C液晶显示控制器和5片KS0086驱动器。该液晶显示模块具有如下特点。
G.P?/D{!DyIj0---● 8位并行总线接口,能直接与80系列的微处理器相连;电子园51单片机学习网(CAnJ+I
---● 可以显示数字、字母、汉字和图形等;
7|n5lz3e[0---● 具有128种5×8点阵的ASCI字符字模库CGROM;
6R3A1[-d\*]0---● 具有64kb的显示存储器(可被划分为文本显示区、图形显示区、文本属性区和自定义字符库区),并允许MCU随时访问;
6|@vEY;~ Z!_0---● 可用图形方式、文本方式以及图形和文本合成方式显示。电子园51单片机学习网w0J;_s"\ u^
---2 模块接口引脚功能电子园51单片机学习网`cE([3@+G
---GTG240128液晶显示模块与微处理器的接口共有21个引脚,各引脚功能如表1所示。电子园51单片机学习网 d9a k~:X3H7P2y
---3 模块指令集简介电子园51单片机学习网0D7]5p"v Q6LR.r
---GTG240128 液晶显示模块使用了硬件初始化设置,使得其指令功能集中于显示功能的设置上,从而加强了显示能力。该模块的指令可带一个或两个参数,也可不带参数。若指令中含有参数,则参数必须在指令之前输入。在每次数据或指令的写入操作和数据的读取操作之前都要进行状态字检测,只有在不“忙”的状态下,MCU对模块的操作才有效。其状态位由低位到高位的含义如表2所示。电子园51单片机学习网k"K%Gv tc m5h!E
---在MCU写指令或一次读/写数据时,S0和S1要同时有效;当MCU使用自动读/写功能时,S2和S3将取代S0和S1作为忙标志位,此时MCU就要判别它是否有效;S6是考察T6963C屏读或屏拷贝指令执行情况的标志位;S5和S7表示模块内部的运行状态,一般不用。
%tH?3^Nw{ ?0
.tSxG UO&mOu8A/qW0与AT89C55的接口电路
yF'WQe;R0---GTG240128 与AT89C55的接口有直接访问和间接访问两种方式。直接访问方式就是把显示器模块作为存储器或I/O设备直接挂在单片机总线上;间接访问方式就是把显示器模块与单片机的某个I/O接口连接,单片机通过对该I/O口的操作间接实现对模块的控制。本文采用直接访问方式,硬件连接电路如图1所示。电子园51单片机学习网N(b}7y6~{
---如图1所示,液晶显示器模块的数据线接在AT89C55的数据总线上,片选信号由地址线A7和A0提供,寄存器选择信号由地址线A7和A1提供(指令通道地址为0xf1,数据通道地址为0xf3),读和写操作由AT89C55的读写操作信号控制;模块Vo端所接的电位器用来调节液晶显示器的对比度。电子园51单片机学习网,E j ksAE#C$G

.I Qg]I8C,P[u)O0软件设计电子园51单片机学习网&[\E i!K5PHwN d7Nc,Y
6136_2009040711323014qw2.jpg---软件采用Keil C51语言开发,主要包括三个部分:第一部分是写指令和写数据等面向液晶显示模块硬件的驱动程序;第二部分包括液晶显示模块初始化和清屏等通用子程序;第三部分是汉字、字符和图形的显示程序。
*yjb3AY^_GB0电子园51单片机学习网"zC$VPm
1 写指令、写数据子程序电子园51单片机学习网4k7MhuOzX
---这部分是液晶显示模块的驱动程序,所有对液晶显示模块的操作都是通过调用这部分程序实现的。液晶显示模块的指令通道地址为0xf1,数据通道的地址为0xf3,具体驱动程序如下。电子园51单片机学习网P'`i+]*D#K(S
#define LCD_Cmd 0xf1 //模块指令通道地址
2zy2R C7~3x$fv0#define LCD_Data 0xf3 //模块数据通道地址
&An+G'YGA uQ/?4G0//写指令子程序
@+D{7r,@$}0void Write_LCD_Cmd(unsigned char cmd)电子园51单片机学习网s^:F%E,G h
{
[]"rm7xT`2u0while ((PBYTE[LCD_Cmd]&3)!=3);电子园51单片机学习网5QA^KW+QAH
PBYTE[LCD_Cmd]=cmd;
:l(jJcn:O~7G0}电子园51单片机学习网Y+mj#~(`Ad
//写数据子程序
YMPNN]m*Cc0void Write_LCD_Data(unsigned char dat)电子园51单片机学习网"R)C0m)kDZ{l
{
a3Y$K s&`j&gQ0while ((PBYTE[LCD_Cmd]&3)!=3);电子园51单片机学习网*C'm{"cc;_8T@
PBYTE[LCD_Data]=dat;电子园51单片机学习网#^2V:b-U.I/E o
}电子园51单片机学习网"XA/|2x IW
电子园51单片机学习网"R2~9X#nWyP
2 初始化子程序电子园51单片机学习网C2V V~,\T R
---这部分程序是液晶显示模块进行显示之前的必要工作,包括设置文本页首地址、图形页首地址、文本页地址、图形页地址、初始化和清屏等子程序。本文中把液晶显示模块的显示存储器分为16个文本页和6个图形页。文本页的起止地址为0x0000~0x1fff;图形页的起止地址为0x2000~0x7fff。
:i$i gmG0//设定文本页首地址子程序
`"As\ T G8N0void Text_Home_Address(unsigned char tpage)电子园51单片机学习网 gcV/w6Sl(j(X#h
{电子园51单片机学习网A#N vq3y[
Write_LCD_Data(0);
%Cq8@x n I _0Write_LCD_Data(tpage*0x02);电子园51单片机学习网oi `fcR
Write_LCD_Cmd(0x40); }
G9XC%Gb(|^I W&ggQ0//设定图形页首地址子程序
j#[@,X(x4j8|0void Graph_Home_Address(unsigned char gpage)
6k&o?;BFT0{电子园51单片机学习网*L#j w(B}7G8U ]
gpage+= 2;
Y)_ Iyr%D0Write_LCD_Data(0);
!zIp];n:N gTJ"s0Write_LCD_Data(gpage*0x10);
SKBkn I0Write_LCD_Cmd(0x42); }电子园51单片机学习网(k;T#wl1^ iH8L{
//设定文本页地址子程序电子园51单片机学习网:Uo"xOGN
void Text_Address(unsigned char x, unsigned char y)
l@-SL@@0{电子园51单片机学习网v3s)N Q.Dk,I;s
extern unsigned char textpage;
T$}!}B7f/cT$h*J0unsigned int xy;
]CWB oOw5Vr+h0xy=y*32+x+textpage*0x0200;
OKu6`nQ0Write_LCD_Data(xy&0xff);电子园51单片机学习网9M6r*\'Q!J#o$s
Write_LCD_Data(xy/256);
r:B;P^k^3k7PM?O0Write_LCD_Cmd(0x24);电子园51单片机学习网L9R*tidz't
}电子园51单片机学习网W VS#s`QQ
//设定图形页地址子程序
e3Vz`*H*~md@0void Graph_Address(unsigned char x,电子园51单片机学习网m[;U:H j
unsigned char y)电子园51单片机学习网U j%Kgy:}
{
-W%J/I5c/y et0extern unsigned char graphpage; unsigned int xy;电子园51单片机学习网7pY7e OVt;|%d Z
graphpage+=2;
#i%Bn2_%gy.A-g wy0xy=y*32+x+graphpage*0x1000;
7aT2vXP1n0Write_LCD_Data(xy&0xff);
)\w"^u#f"A}0Write_LCD_Data(xy/256);
xn^QH7C&E0Write_LCD_Cmd(0x24);电子园51单片机学习网w#`.@.ct1d
}电子园51单片机学习网0veT-Y!sx
//初始化子程序电子园51单片机学习网7iE&eAoZ S9RmX
void Init_LCD(void)
'w H-V-p5rm0{
2apoy+VEa+UR0Write_LCD_Cmd(0x90);
7UKI uB,v`_0Write_LCD_Data(0x20);
4O8V7\%T n9XQYe0Write_LCD_Data(0x00);
"x,}w&Hf+ME#L0Write_LCD_Cmd(0x41);
Bf3M*zr*m/|7h8Q0Write_LCD_Data(0x20);
z3F ] I qz|'eG0Write_LCD_Data(0x00);电子园51单片机学习网#jZ^p(}:^ s
Write_LCD_Cmd(0x43);
^8ou,_,y2kx*D*P.I0Write_LCD_Cmd(0x89);电子园51单片机学习网LL/H*~,AY)rM;n.F-IW
Write_LCD_Cmd(0xa1);电子园51单片机学习网P-HD ZbE!| X
Write_LCD_Data(0x0F);
u^Zb;`IUf3B-mv0Write_LCD_Data(0x00);
,Ku9b0~ez6mA.W0Write_LCD_Cmd(0x22);
@r\:\s vZrJ9c K0Write_LCD_Cmd(0x9c);
n EPPm ^Q0}电子园51单片机学习网 n9H_,x"y,Y2{.z
电子园51单片机学习网U xf5r9c4[
3 汉字、字符和图形的显示程序
^%a:~ ykp-nf0---通过调用前面编写的驱动、初始化和清屏程序就可以方便的实现汉字、字符和图形的显示。本文以汉字显示为例介绍显示程序的编制。汉字既可以以文本方式显示也可以以图形方式显示。以文本方式显示时,每次开机都要先把汉字字模写进液晶显示模块的CGRAM,浪费了时间,而且由于CGRAM的容量只有2kb,显示的汉字有限,所以一般用图形方式显示汉字。以图形方式显示时先把汉字字模写在Flash存储器中,显示时再从Flash存储器中取出来,这样不用每次开机时都写汉字字模,节约时间,而且显示的汉字数量多。下面给出以图形方式显示汉字的通用子程序。汉字字模存储在Flash存储器中。
@/U.Hw;@ d0a0void put_hanzi (char c)
"d:E-x3F"_7V0{电子园51单片机学习网OA^5hX,D`
unsigned char kk="c";
m3Y iS%K5z0unsigned int order;
2V9T2V'_Yt^"KO0unsigned int aaa;
uH#m DS.We0static unsigned char previous="0x00";
lP klj Q0if(previous==0) previous="c";
`*w!QE(Bv9R#Nq0else
6u ~GI6^#R0{
+_my5v$A&^.mO0order=((unsigned int)电子园51单片机学习网!fHks h%Z F;o\
(previous-0xa1)*94+kk-0xa1);
yR*iS(HNk0Z7`0previous=order%8;电子园51单片机学习网nt[ g G*P1z
aaa=32*previous;电子园51单片机学习网(|2v%C)G(c
order=order/8;
&E9\.X5h"h&Q/F)YT;n1~0SCON=0;电子园51单片机学习网/b VG-V#t7_&[
SBUF=concode[0x52];电子园51单片机学习网$eQ*a4Qw|+b)G+c
kk=order/128;电子园51单片机学习网`&U$U2o8njgr
while(!TI);
f.t:t#Yvw4T4E0SCON=0;
(QcL-I2tXj0SBUF=concode[kk]; kk="order"%128;电子园51单片机学习网]!B2\#g"~8a
kk<<=1;
(Apn1`+F!_xAR0while(!TI);电子园51单片机学习网 _ NRD$`d?;TR
SCON=0;
L w+R ES4xG y0SBUF=concode[kk]; kk="aaa"%256;
2KJ6punO t0while(!TI);
D:F5g M*o0SCON=0;
r _8q#x}TK!b0SBUF=concode[kk]; for(kk=0;kk<4;kk++)电子园51单片机学习网W dY]7j+mb u5\
{
L2@eoZ {0while(!TI);电子园51单片机学习网7g JS toA2i,f
SCON=0;电子园51单片机学习网+[&H8qX8N m+Vd[%q
SBUF=concode[0xff]; }电子园51单片机学习网 r:nU&cZw]P,U
while(!TI);
uM Nc1F$vx/?0SCON=0x10;电子园51单片机学习网} C#V d$`
for (kk=0;kk<16;kk++)电子园51单片机学习网HOU.o7qa a
{
*n6k'i8f\Z#C"Rp0Graph_Address(x,y*8+kk);电子园51单片机学习网Xn%dR"T$V$I
while(!RI);
Me?"Y,VM0previous=SBUF;
A \)A2k[^0SCON=0x10;电子园51单片机学习网x/L*H/sk,R(~
write_lcd(concode[previous]);电子园51单片机学习网l_hu#[4k;X
ctrl(0xc0);电子园51单片机学习网6x"x/pomL`[I
while(!RI);
$u3}*n-Tyie!Rd$D-a0previous=SBUF;
e)H)?1{6e U r(m0SCON=0x10;
~7WN5r+}$cF9o6n0write_lcd(concode[previous]);
C)P4U&Q,[#Pi0ctrl(0xc0);
.i2e n`$eR {n0}电子园51单片机学习网 |!Qi*fa/W/w A+U
previous=0x00;电子园51单片机学习网6t+}bTS"nf
}
:n|6G3uCf0}电子园51单片机学习网%ms;Re[QC.B


:R#T0W5[(wE0结束语
5JA%S|u(w0---随着现代测控技术的发展,良好的人机界面也越来越受到设计者的重视。本文介绍的液晶显示模块已成功应用在便携式轨头断面激光检测仪中,由于其具有与MCU接口方便、显示功能强和编程简单等优点,具有广泛的应用价值。电子园51单片机学习网~yIsLpR9x

电子园51单片机学习网#Fh E$?5~!}^}S

参考文献电子园51单片机学习网+wWis3IZB| z
1 郭强等. 液晶显示应用技术. 电子工业出版社. 2000电子园51单片机学习网OI*}2mH&K0p
2 王建校等. 51系列单片机及C51程序设计. 科学出版社. 2002
1{F`#O"dME+Q2r03 李朝青. 单片机原理及接口技术. 北京航空航天大学出版社. 1999电子园51单片机学习网U2S w]f!~%my

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条