单片机的汉字显示控制系统.docx
《单片机的汉字显示控制系统.docx》由会员分享,可在线阅读,更多相关《单片机的汉字显示控制系统.docx(17页珍藏版)》请在冰豆网上搜索。
![单片机的汉字显示控制系统.docx](https://file1.bdocx.com/fileroot1/2023-1/10/96106cb2-8166-40d5-a933-396d950b0966/96106cb2-8166-40d5-a933-396d950b09661.gif)
单片机的汉字显示控制系统
单片机的汉字显示控制系统
摘要:
LCD液晶显示器由于显示质量高、没有电磁辐射、可视面积大、画面效果好、体积小、质量轻、功耗低等优点,已经成为各种便携式电子产品的理想显示器。
本设计以单片机作为LCD液晶显示控制器为主线,首先描述了系统硬件工作原理,重点对单片机和液晶显示模块分别做了详细介绍,同时也对部分芯片和外围电路进行了介绍和设计,并附以系统结构框图加以说明。
软件系统是以单片机的C语言进行设计,既可以简单的实现对显示内容的调整,又方便在Proteus中进行仿真。
其次阐述了部分程序的流程图和实现过程。
撰写本文的主导思想是软、硬件相结合,以硬件为基础,进行程序的编写。
最后对LCD液晶汉字显示原理、设计思想和软、硬件调试作了详细的论述。
设计方案简单、成本低,具有广泛的应有价值。
关键词:
AT89S52;TS-12864;液晶汉显
ChinesecharacterdisplaycontrolsystemofSCM
Abstract:
LCDliquidcrystaldisplayshavebecometheidealdisplayofportableelectronicproductsbecauseoftheirhighquality,visualarea,pictureeffect,smallsize,lightweight,lowpowerconsumptionandthereisnoelectromagneticradiation.ThedesignusesSCMasthemainlineofLCDliquidcrystaldisplaysystemcontroller.Firstofall,itdescribestheworkingprincipleofthehardwaresystemandputemphasisonthesinglechipandliquidcrystaldisplaymodules.Atthesametime,apartofchipsandexternalcircuitsareintroduced,thedesignusestheblockdiagramtoillustratethesystem.ThesystemisbasedontheClanguageofSCMtodesign,whichisconvenienttorealizethesimpledisplayofadjustmentandsimulateintheProteus.Secondly,itdescribestheflowchartofsomeproceduresandimplementationprocess.Thisarticleiswrittenbytheleadingideasofhardwareandsoftwarecombinationanditisbasedonhardwaretocarryoutthepreparationprocedures.Finally,LCDliquidcrystaldisplayprinciple,design,thesoftwareandhardwaredebuggingarediscussedindetail.Thedesignisusedbroadlybecauseofitssimpleandlowcost.
KeyWords:
AT89S52;TS-12864;LCDcharacterdisplay
引言
LCD液晶显示技术作为人机交互的主流方式,正广泛应用于家电、手机、个人电脑等显示终端。
随着电子技术的发展,单片机技术的应用产品日益增多,研究以单片机作为主控制器的LCD液晶显示器控制系统意义重大。
展望未来,急速的响应速度将会成为个性化LCD的发展趋势,越来越多的单片机正如雨后春笋般涌现。
本设计由软件和硬件两部分构成,硬件部分以89S52单片机为控制核心,构成主控制电路,以18624构成显示电路。
软件部分由单片机编程实现,采用C语言进行设计[1]。
1.设计方案的选择和论证
1.1设计要求
(1)显示全部汉字、英文字符及一些简单的图片。
(2)显示(4*8)32个汉字。
(3)完成程序编写、调试、仿真,并做出硬件电路产品。
1.2单片机芯片的选择和论证
方案一:
采用AT89C51芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术[2],当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。
方案二:
采用AT89S52,片内ROM全都采用FlashROM;能以3V的超底压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有89C51的功能,且具有在线编程可擦除技术[3],当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏[4]。
1.3显示模块的选择和论证
方案一:
采用LED显示,LED一般都是数码显示,管虽价格相对比较低,但其显示内容少,耗电量大,控制比较复杂。
方案二:
采用LCD显示,LCD价格适中,显示的内容比较多,耗电低,控制简单,可以显示字符、图片等等。
LCD液晶显示模块TS12864A-2自带汉字库、内嵌先进的智能拼音输入法、串行接口控制、128*64汉字显示。
综上各方案所述,对本设计的方案选定:
采用AT89S52作为主控制系统;LCD液晶模块TS12864A-2做为显示电路。
2.系统的硬件设计与实现
2.1电路设计方框图
图1系统方框图
2.2系统硬件概述
本设计硬件电路主控系统采用AT89S52单片机[4],显示电路采用自带汉字库、内嵌先进的智能拼音输入法、串行接口控制、128*64汉字显示液晶模块TS12864A-2来实现单片机开发系统中的汉字显示。
2.3主控系统电路
AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入[5]。
单片机89S52的时钟信号有两种形式[4]:
一是内部时钟方式;另一种是外部时钟方式。
内部时钟方式是在单片机的XTAL1和XTAL2引脚外接石英晶体[6]。
这就构成了自激振荡并在单片机内部产生时钟脉冲信号,其中晶振频率一般是1.2MHz-12MHz。
外部时钟方式是把外部已有的时钟信号引到单片机内,该方式常用于多片单片机,同时工作,以便各单片机同步。
故本设计选择内部时钟方式,晶振频率选择12MHz。
图2单片机晶振电路
单片机89S52的REST引脚引入高电平并保持两个周期时,单片机内部就执行复位操作。
在实际应用中,复位操作有两种基本形式:
一种是上电复位,另一种是上电和按键均有效的复位[7]。
本设计选择上电和按键均有效的复位,这样便于控制一些。
图3单片机复位电路
单片机的最小系统[8]如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。
第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端[9]。
图4主控制系统电路
2.4LCD液晶显示电路设计
图5液晶显示电路
2.4.1点阵LCD的显示原理
在数字电路中[2],所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。
对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。
而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。
而剩下的低128位则留给英文字符使用,即英文的内码。
那么,得到了汉字的内码后,还仅是一组数字,那又如何在屏幕上去显示呢?
这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状[2]。
12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×64全点阵液晶显示器组成。
可完成图形显示,也可以显示8×4个(16×16点阵)汉字[10]。
12864引脚[11]说明如下表:
表112864LCD引脚说明
管脚号
管脚名称
LEVER
管脚功能描述
1
VSS
0
电源地
2
VDD
+5.0V
电源电压
3
V0
-
液晶显示器驱动电压
4
D/I(RS)
H/L
D/I=“H”,表示DB7∽DB0为显示数据
D/I=“L”,表示DB7∽DB0为显示指令数据
5
R/W
H/L
R/W=“H”,E=“H”数据被读到DB7∽DB0
R/W=“L”,E=“H→L”数据被写到IR或DR
6
E
H/L
R/W=“L”,E信号下降沿锁存DB7∽DB0
R/W=“H”,E=“H”DDRAM数据读到DB7∽DB0
7
DB0
H/L
数据线
8
DB1
H/L
数据线
9
DB2
H/L
数据线
10
DB3
H/L
数据线
11
DB4
H/L
数据线
12
DB5
H/L
数据线
13
DB6
H/L
数据线
14
DB7
H/L
数据线
15
CS1
H/L
H:
选择芯片(右半屏)信号
16
CS2
H/L
H:
选择芯片(左半屏)信号
17
RET
H/L
复位信号,低电平复位
18
VOUT
-10V
LCD驱动负电压
19
LED+
-
LED背光板电源
20
LED-
-
LED背光板电源
2.4.212864LCD的指令系统及时序
12864液晶显示模块的指令系统比较简单,共有七种。
其指令如表2所示:
表212864指令表
指令名称
控制信号
控制代码
R/W
RS
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
显示开关
0
0
0
0
1
1
1
1
1
1/0
显示起始行设置
0
0
1
1
X
X
X
X
X
X
页设置
0
0
1
0
1
1
1
X
X
X
列地址设置
0
0
0
1
X
X
X
X
X
X
读状态
1
0
BUSY
0
ON/OFF
RST
0
0
0
0
写数据
0
1
写数据
读数据
1
1
读数据
3.系统的软件设计
3.1系统程序流程图
本设计的硬件电路相对来说比较简单,其功能的实现主要由软件完成。
本程序的软件部分采用单片机C语言编程[12]。
系统程序流程主要包括:
图6程序流程图
4.制作与调试
4.1硬件电路的布线与焊接
本设计的电路设计比较简单,应用Proteus软件在原理图的基础上生成PCB板,经转印、腐蚀做成电路板[13]。
在焊接电路板时,以电路原理图为参照,对电路板进行仔细检测,防止短线、错线的产生;同时对元器件进行测量,防止使用已损坏的元器件[14]。
4.2硬件测试
本设计的电路焊接并不是太多,不过电路系统的任何一处错误,都将导致整个设计的失败,所以在完成整个电路板焊接后,要进行相关的硬件测试[15]。
主要包括一下几个部分:
(1)单片机及其晶振、复位电路能否正常工作,特别是复位电路是否能拉低电平使单片机复位。
(2)12864液晶模块能否正常工作。
调整电位器阻值以调节液晶显示屏的亮度。
4.3软件测试
本设计的软件编写比较复杂[16],在程序编写和作品性能调试时,出现了比较多的问题,主要是12864的控制字和时序问题。
在此期间得到了指导老师和同学们的帮助,最终成功完成了软件部分的调试。
4.4测试结果分析与结论
在测试中如发现单片机及其外围电路不能正常工作,要仔细观察是否存在漏焊、虚焊、或者元器件损坏。
液晶显示屏出现不显、闪屏或显示不全的情况时注意检查排线是否有问题,电位器阻值是否过大等。
经过多次的仿真、测试与分析,在对系统电路原理、功能充分理解和熟悉的基础上,反复修改程序,最终完成了对本设计的最终调试。
结论
51系列单片机,体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好。
本设计以51单片机为主控系统,实现了单片机的汉字显示与控制。
随着电子技术的发展,LCD液晶显示作为人机交互的重要方式正应用于各种电子产品,以单片机作为主控制器的LCD液晶显示器控制系统的应用必将越来越广泛。
参考文献
[1]陈大钦.电子技术基础实验-电子电路实验·设计·仿真[M].北京:
高等教育出版社,2002.
[2]阎石.数字电子技术基础[M].北京:
高等教育出版社,1997:
240~260.
[3]何立民.单片机高级教程[M].北京:
航空航天大学出版社,2000:
25~26.
[4]陈光东.单片微型计算机原理与接口技术[M].武汉:
华中理工大学出版社,1997:
110~112.
[5]张毅刚.MCS-51单片机应用设计[M].哈尔滨:
哈尔滨工业大学出版,1997:
123~125.
[6]王沛民,熊立扉.微型计算机原理及接口技术[M].西安:
西北电讯工程学院出版社,1985:
99~101.
[7]杨子文.单片机原理及应用[M].西安:
西安电子科技大学出版社,2006:
77~102.
[8]王法能.单片机原理及应用[M].北京:
科学出版社,2004:
112~135.
[9]李朝青.单片机原理与接口技术[M].北京:
航空航天大学出版社,1997:
217~218.
[10]李全利.单片机原理及应用[M].北京:
清华大学出版社,2006:
71~96.
[11]孙涵芳,徐爱卿.MCS-51系列单片机原理及应用[M].北京:
北京航空航天大学出版社,1992:
58~59.
[12]陈正振.电子电路设计与制作[M].北京:
电子工业出版社,2007:
67~94.
[13]WayneC.Thetoxinsofcyanbacteria[J].ScientificAmerican,1994,270
(1):
78~86.
[14]ThomasL.Floy.ElectronicDevices[J],5thed.NewJersey:
Prentice-Hall,1999:
32~43.
[15]Intel.MCS-51FamilyofSingleChipMicrocomputersUser’sManual[M].2000:
24~35.
[16]BuchbergerB,CollinsGE.ComputerAlgebraSymbolicandAlgebraicComputation[M].NewYork:
SpringerVersa,1998:
58~76.
附录
系统程序清单:
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitCS1=P1^3;//片选1
sbitCS2=P1^4;//片选2
sbitRS=P1^5;//
sbitRW=P1^6;
sbitE=P1^7;
uintcodeaa1[]=//数据表
{
0x10,0x60,0x02,0x8C,0x00,0x84,0xE4,0x1C,0x05,0xC6,0xBC,0x24,0x24,0xE4,0x04,0x00,
0x00,0x00,0x00,0x00,0x7F,0x49,0x49,0x49,0x49,0x49,0x7F,0x00,0x00,0x00,0x00,0x00,
0x10,0x60,0x02,0x0C,0xC0,0x02,0x1E,0xE2,0x02,0x02,0x02,0xE2,0x1E,0x00,0x00,0x00,
0x00,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,0x00,
0x04,0x04,0x7E,0x01,0x00,0x00,0xFF,0x82,0x41,0x26,0x18,0x29,0x46,0x81,0x80,0x00,
0x00,0xFF,0x49,0x49,0x49,0x49,0xFF,0x00,0xFF,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,
0x04,0x04,0x7C,0x03,0x80,0x80,0x40,0x20,0x13,0x0C,0x13,0x20,0x40,0x80,0x80,0x00,
0x40,0x42,0x44,0x58,0x40,0x7F,0x40,0x40,0x40,0x7F,0x40,0x50,0x48,0x46,0x40,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,
0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,
0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,
0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
0x00,0x20,0x18,0xC7,0x44,0x44,0x44,0x44,0xFC,0x44,0x44,0x44,0x44,0x04,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00
};
uintcodeaa2[]=//数据表
{
0x10,0x0C,0x04,0x84,0x14,0x64,0x05,0x06,0xF4,0x04,0x04,0x04,0x04,0x14,0x0C,0x00,
0x04,0x84,0x84,0xFC,0x84,0x84,0x00,0xFE,0x02,0x02,0xF2,0x02,0x02,0xFE,0x00,0x00,
0x10,0x10,0x10,0xFF,0x90,0x20,0x98,0x48,0x28,0x09,0x0E,0x28,0x48,0xA8,0x18,0x00,
0x40,0x50,0x4E,0x48,0x48,0xFF,0x48,0x48,0x48,0x40,0xF8,0x00,0x00,0xFF,0x00,0x00,
0x04,0x84,0x84,0x44,0x47,0x24,0x14,0x0C,0x07,0x0