51单片机汉字显示DOC.docx
《51单片机汉字显示DOC.docx》由会员分享,可在线阅读,更多相关《51单片机汉字显示DOC.docx(37页珍藏版)》请在冰豆网上搜索。
51单片机汉字显示DOC
基于单片机的液晶汉字显示屏的设计
摘要:
本课题为基于51单片机的LCD汉字显示技术。
基于在对单片机研究的基础上,本文提出了一种以AT89C51为核心的单片机构成液晶显示器的方法。
该钟的显示电路采用160128点阵的图形点阵的液晶屏。
关键字:
单片机,LCD
1引言-1-
1.1课题背景-2-
1.28051单片机输入输出口-2-
1.38051单片机的指令时序-4-
2单片机的编程软件及仿真软件介绍-6-
2.1.1Proteus的简介-6-
2.1.2Keil软件及其调试功能简介-7-
2.1.3软件连接使用-9-
3控制系统硬件设计-11-
3.1硬件电路图-11-
3.2显示部分-11-
4软件设计-12-
4.1程序仿真-12-
5结论-13-
6谢辞-13-
7参考文献-14-
附录:
程序-15-
1引言
1.1课题背景
目前单片机已渗透到生活的各个领域,几乎很难找到哪个领域没有单片机的足迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说全自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的工程师和科学家。
科技越发达,智能化的东西就越多。
看来学习单片机是社会发展的必然需求。
单片机即单片微型计算机,又称为微控制器,它的体积小,功能强,可靠性好,价格又便宜,成为传统工业技术改造和新产品更新换代的理想品种,具有广阔的发展前景,其中最具有代表性的就是Intel公司的8051系列单片机。
本文在对单片机研究的基础上,以AT89C51为核心控制芯片,对汉字显示屏进行设计与应用,通过对其原理深入分析,探讨以AT89C51单片机构成LCD液晶显示屏的实现方法。
1.28051单片机输入输出口
8051有4组8位1/0口:
P0,P1,P2和P3口,P1、P2和P3为准双向口,PO口则为双向三态输入输出口,下面分别介绍这几个口线:
PO口和P2口:
PO口和P2口电路中包含一个数据输出锁存器和两个三态数据输入缓冲器,另外还有一个数据输出的驱动和控制电路。
这两组口线用来作为CPU与外部数据存储器、外部程序存储器和I/0扩展口,而不能像Pl、P3直接用作输出口。
它们一起可以作为外部地址总线,PO口身兼两职,既可作为地址总线,也可作为数据总线[5][7]。
P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15。
PO口由ALE选通作为地址总线的低8位输出ABO-AB7。
外部的程序存储器由PSEA信号选通,数据存储器则由WR和RD读写信号选通,8051最大可外接64kB的程序存储器和数据存储器。
P1口:
P1口为8位准双向口,每一位均可单独定义为输入或输出口,当作为输入口时,1写入锁存器,Q(非)=0,内上拉电阻将电位拉至“1”,此时该口输出为1,当0写入锁存器,Q(非)=1,输出则为0。
作为输入口时,锁存器置l,Q(非)=0,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,正因为这个原因,P1口常称为准双向口。
需要说明的是,作为输入口使用时,有两种情况,其一是:
首先是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读一修改一写操作,像JBC(逻辑判断)、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)和ORL(逻辑或)指令均属于这类操作。
其二是:
读P1口线状态时,打开三态门G2,将外部状态读入CPU。
P3口:
P3口为准双向口,为适应引脚的第二功能的需要,增加了第二功能控制逻辑,在真正的应用电路中,第二功能显得更为重要。
由于第二功能信号有输入输出两种情况,分别加以说明。
P3口的输入输出及P3口锁存器、中断、定时/计数器、串行口和特殊功能寄存器有关,P3口的第一功能和P1口一样可作为输入输出端口,同样具有字节操作和位操作两种方式,在位操作模式下,每一位均可定义为输入或输出。
着重讨论P3口的第二功能,P3口的第二功能各管脚定义如下:
P3.0串行输入口(RXD)
P3.1串行输出口((TXD)
P3.2外中断0(INTO)
P3.3外中断1(INT1)
P3.4定时/计数器0的外部输入口(TO)
P3.5定时/计数器1的外部输入口(T1)
P3.6外部数据存储器写选通(WR)
P3.7外部数据存储器读选通(RD)
第二功能为输出引脚,当作I/0口使用时,第二功能信号线应保持高电平与非门开通,以维持从锁存器到输出口数据输出通路畅通。
当作第二功能口线用时,该位的锁存器置高电平,使与非门对第二功能信号的输出是畅通,从而实现第二功能信号的输出。
对于第二功能为输入的信号引脚,在口线上的输入通路增设了一个缓冲器,输入的第二功能信号即从这个缓冲器的输出端取得。
而作为I/0口线输入端时,取自三态缓冲器的输出端。
这样,不管是作为输入口使用还是第二功能信号输入,输出电路中的锁存器输出和第二功能输出信号线均应置“1”。
1.38051单片机的指令时序
时序是用定时单位来描述的,8051的时序单位有四个,它们分别是节拍、状态、机器周期和指令周期,接下来分别加以说明。
节拍与状态:
把振荡脉冲的周期定义为节拍(为方便描述,用P表示),振荡脉冲经过二分频后即得到整个单片机工作系统的时钟信号,把时钟信号的周期定义为状态(用S表示),这样一个状态就有两个节拍,前半周期相应的节拍定义为1(P),后半周期对应的节拍定义为2(P)。
机器周期:
8051有固定的机器周期,规定一个机器周期有6个状态,分别表示S1-S6。
而一个状态包含两个节拍,那么一个机器周期就有12个节拍,可以记着SIP2,SIP2......S6P1,S6P2,一个机器周期共包含12个振荡脉冲,即机器周期就是振荡脉冲的12分频,显然,如果使用6MHZ的时钟频率,一个机器周期就是2us,而如使用12MHz的时钟频率,一个机器周期就是lus。
指令周期:
执行一条指令所需要的时间称为指令周期,8051的指令有单字节、双字节和三字节的,所以它们的指令周期不尽相同,也就是说它们所需的机器周期不相同,可能包括一到四个不等的机器周期。
8051的指令时序:
8051指令系统中,按它们的长度可分为单字节指令、双字节指令和三字节指令。
执行这些指令需要的时间是不同的,也就是它们所需的机器周期是不同的,有下面几种形式:
单字节指令单机器周期;单字节指令双机器周期;双字节指令单机器周期;双字节指令双机器周期;三字节指令双机器周期;单字节指令四机器周期(如单字节的乘除法指令)。
单字节单周期指令:
单字节单周期指令只进行一次读指令操作,当第二个ALE信号有效时,PC并不加1,读出的还是原指令,属于一次无效的读操作。
双字节单周期指令:
这类指令两次的ALE信号都是有效的,只是第一个ALE信号有效时读的是操作码,第二个ALE信号有效时读的是操作数。
单字节双周期指令:
两个机器周期需进行四次读指令操作,但只有一次读操作是有效的,后三次的读操作均为无效操作。
单字节双周期指令有一种特殊的情况,像MOVX这类指令,执行这类指令时,先在ROM中读取指令,然后对外部数据存储器进行读或写操作,头一个机器周期的第一次读指令的操作码为有效,而第二次读指令操作则为无效的。
在第二个指令周期时,则访问外部数据存储器,这时,ALE信号对其操作无影响,即不会再有读指令操作动作。
外部程序存储器(ROM)读时序:
8051外部程序存储器读时序图时PO口提供低8位地址,P2口提供高8位地址,S2结束前,PO口上的低8位地址是有效的,之后出现在PO口上的就不再是低8位的地址信号,而是指令数据信号。
当然地址信号与指令数据信号之间有一段缓冲的过度时间,这就要求在S2期间必须把低8位的地址信号锁存起来,这时是用ALE选通脉冲去控制锁存器把低8位地址予以锁存,P2口只输出地址信号,而没有指令数据信号。
整个机器周期地址信号都是有效的,因而无需锁存地址信号。
从外部程序存储器读取指令,必须有两个信号进行控制,除了上述的ALE信号,还有一个PSEN(外部ROM读选通脉冲)。
PSEN开始有效,直到将地址信号送出和外部程序存储器的数据读入CPU后方才失效,接着从S4P2开始执行第二个读指令操作。
外部数据存储器(RAM)读时序:
从ROM中读取需执行的指令,而CPU对外部数据存储的访问是对RAM进行数据的读或写操作,属于指令的执行周期,读或写是两个不同的机器周期,但他们的时序却是相似的,只对RAM的读时序进行分析。
上一个机器周期是取指阶段,是从ROM中读取指令数据,接着的下个周期才开始读取外部数据存储器RAM中的内容。
在S4结束后,先把需读取RAM中的地址放到总线上,包括PO口上的低8位地址AO-A7和P2口上的高8位地址A8-A15。
当RD选通脉冲有效时,将RAM的数据通过PO数据总线读进CPU。
第二个机器周期的ALE信号仍然出现,进行一次外部ROM的读操作,但是这一次的读操作属于无效操作。
对外部RAM进行写操作时,CPU输出的则是WR(写选通信号),将数据通过P0数据总线写入外部存储中。
2单片机的编程软件及仿真软件介绍
2.1.1Proteus的简介
ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件[9]。
它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
①实现了单片机仿真和SPICE电路仿真相结合。
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
②支持主流单片机系统的仿真。
目前支持的单片机类型有:
68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
③提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件。
④具有强大的原理图绘制功能。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
Proteus主要用于绘制原理图并可进行电路仿真,ProteusARES主要用于PCB设计。
ISIS的主界面主要包括:
1是电路图概览区、2是元器件列表区、3是绘图区。
绘制电路图的过程如下:
单击2区的P命令即弹出元器件选择(PickDevices)对话框,Proteus提供了丰富的元器件资源,包括30余种元器件库,有些元器件库还具有子库。
利用该对话框提供的关键词(Keywords)搜索功能,输入所要添加的元器件名称,即可在结果(Results)中查找,找到后双击鼠标左键即可将该元器件添到2区,待所有需要的元器件添加完成后点击对话框右下角的OK按钮,返回主界面。
接着在2区中选中某一个元器件名称,直接在3区中单击鼠标左键即可将该元器件添加到3区。
由于是英国的软件,特别要注意的是绘图区中鼠标的操作和一般软件的操作习惯不同,这正像是司机座位和人行道走向和国内不同一样。
单击左键是完成在2区中被选中的元器件的粘贴功能;将鼠标置于某元器件上并单击右键则是选中该元器件(呈现红色),若再次单击右键的话则删除该元器件,而单击左键的话则会弹出该元器件的编辑对话框(EditComponent);若不需再选中任何元器件,则将鼠标置于3区的空白处单击右键即可;另外如果想移动某元器件,则选中该元器件后再按住鼠标左键即可将之移动。
元器件之间的连线方法为:
将鼠标移至元器件的某引脚,即会出现一个“×”符号,按住鼠标左键后移动鼠标,将线引至另一引脚处将再次出现符号“×”,此时单击鼠标左键便可完成连线。
连线时在需拐弯的地方单击鼠标左键即可实现方向的改变。
绘制好电路后,可利用1区的绿色边框对3区的电路进行定位。
2.1.2Keil软件及其调试功能简介
目前流行的51系列单片机开发软件是德国Keil公司推出的KeilC51软件,它是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6.0以上的版本将编译和仿真软件统一为μVision(通常称为μV2)。
Keil提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,由以下几部分组成:
μVisionIDE集成开发环境(包括工程管理器、源程序编辑器、程序调试器)、C51编译器、A51汇编器、LIB51库管理器、BL51连接/定位器、OH51目标文件生成器以及Monitor-51、RTX51实时操作系统。
应用Keil进行软件仿真开发的主要步骤为:
编写源程序并保存——建立工程并添加源文件——设置工程——编译/汇编、连接,产生目标文件——程序调试。
Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。
工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。
首先选择菜单File—New…,在源程序编辑器中输入汇编语言或C语言源程序(或选择File—Open…,直接打开已用其他编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c;然后选择菜单Project—NewProject…,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2);工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。
这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择SourceGroup1,右击鼠标弹出快捷菜单,选择“AddFiletoGroup‘SourceGroup1’”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其他文件)。
加入文件后点close返回主界面,展开“SourceGroup1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。
紧接着对工程进行设置,选择工程管理窗口的Target1,再选择Project—OptionforTarget’Target1’(或点右键弹出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如要写片,还必须在Output选项卡中选中“CreatHexFi”;其他选项卡内容一般可取默认值。
工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。
成功编译/汇编、连接后,选择菜单Debug—Start/StopDebugSession(或按Ctrl+F5键)进入程序调试状态,Keil提供对程序的模拟调试功能,内建一个功能强大的仿真CPU以模拟执行程序。
Keil能以单步执行(按F11或选择Debug—Step)、过程单步执行(按F10或选择Debug—StepOver)、全速执行等多种运行方式进行程序调试。
如果发现程序有错,可采用在线汇编功能对程序进行在线修改(Debug—InlineAssambly…),不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。
对于一些必须满足一定条件(如按键被按下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理(Debug—Insert/RemoveBreakpoint或Debug—Breakpoints…等)。
在模拟调试程序后,还须通过编程器将.hex目标文件烧写入单片机中才能观察目标样机真实的运行状况。
Keil软件Eval版(免费产品)的功能与商业版相同,只是程序的最大代码量不得超过2kB,但对初学者而言已是足够。
Keil软件由于其强大的软件仿真功能,友好的用户界面以及易于掌握的特点而受到工程技术人员的欢迎,有人甚至认为Keil是目前最好的51单片机开发应用软件。
2.1.3软件连接使用
a、假若KeilC与Proteus均已正确安装在C:
\ProgramFiles的目录里,把C:
\ProgrameFile\LabcenterElectronics\Proteus6Professional\MODELS\VDM51.dl复制到C:
\ProgramFile\KeilC\C51\BIN目录里。
b、用记事本打开C:
\ProgramFiles\keilC\C51\TOOLS.INI文件,在[C51]栏目下加入:
TDRV5=BIN\VDM51.DLL("ProteusVSMMonitor-51Driver")
其中“TDRV5”中的“5”要根据实际情况写,不要和原来的重复。
(步骤1和2只需在初次使用设置。
)
c、进入KeilCμVision2开发集成环境,创建一个新项目(Project),并为该项目选定合适的单片机CPU器件(如:
Atmel公司的AT89C51)。
并为该项目加入KeilC源程序。
d、单击“Project菜单/OptionsforTarget”选项或者点击工具栏的“optionfortarget”按钮
,弹出窗口,点击“Debug”按钮,出现如图所示页面。
在出现的对话框里在右栏上部的下拉菜单里选中“ProteusVSMMonitor一51Driver”。
并且还要点击一下“Use”前面表明选中的小圆点。
再点击“Setting”按钮,设置通信接口,在“Host”后面添上“127.0.0.1”,如果使用的不是同一台电脑,则需要在这里添上另一台电脑的IP地址(另一台电脑也应安装Proteus)。
在“Port”后面添加“8000”。
设置好的情形如图所示,点击“OK”按钮即可。
最后将工程编译,进入调试状态,并运行。
e、Proteus的设置
进入Proteus的ISIS,鼠标左键点击菜单“Debug”,选中“useromotedebugermonitor”,如图所示。
此后,便可实现KeilC与Proteus连接调试。
f、KeilC与Proteus连接仿真调试
单击仿真运行开始按钮
,我们能清楚地观察到每一个引脚的电频变化,红色代表高电频,蓝色代表低电频。
3控制系统硬件设计
3.1硬件电路图
3.2显示部分
显示部分采用160X128的图形液晶显示器。
、
4软件设计
4.1程序仿真
从proteus里可以看到程序的运行效果很令人满意
5结论
本文主要对数字电子钟进行了研究,在学习单片机理论知识的基础上,以AT89C51芯片为控制核心,设计了检测系统的硬件电路和软件。
本文主要完成下面工作:
1.8051芯片性能参数的分析。
2.相关软件的学习和使用。
3.数字电子钟的设计方案、显示电路及相应的软件的设计
4.8051构成的液晶显示器及相应的软件的设计
5.单片机系统抗干扰方法从软件和硬件方面进行分析。
由于能力有限,不能够充分利用所学知识,对所设计的显示器不能有进一步的简化,其电路及软件还有待更好的改善。
6谢辞
衷心感谢我的指导老师!
本课题的研究工作是在老师的悉心指导和关怀下才得以顺利完成。
老师勤奋好思、严谨求实,在我学习过程中,给了我很多的启示和帮助。
指导老师给予我的不仅仅是知识上、学习上的,更有方法上,思想上的帮助!
感谢我们组的同学对我的帮助和支持,再次感谢大家!
7参考文献
参考文献:
[1]梅丽凤,王艳秋.单片机原理及接口技术[M].北京:
清华大学出版社,2004.P12~P16
[2]朱定华,刘玉.单片机原理及应用技术学习辅导[M].北京:
电子工业出版社,2001.P19~P02
[3]夏继强.单片机实验与实践教程[M].北京:
北京航空航天大学出
(二)2001.P18~P26
[4]何立明.MCS-51系列单片机应用系统设计[M].北京:
北京航天航空大学出版社,2001.P30~P35
[5]胡汉才.单片机原理及其接口技术[M].北京:
清华大学出版社,1996.
P58~P62P80~P93
[6]杨拴科.模拟电子技术[M].北京:
高等教育出版社,2003.
[7]范立南,谢子殿.单片机原理及应用教程[M].北京:
清华大学出版社,2003.P30~P42P103~P110
[8]辛友顺.单片机应用系统设计与实现[M].北京:
电子工业出版社,1996.P26~P30
[9]杨志忠,郭顺华.数字电子技术基础[M].北京:
高等教育出版社,2003.P100~P108
[10]薛钧义.MCS-51/96系列单片机微型计算机及其应用[M].西安:
西安交通大学出版社,1998.P90~P95
[11]唐前辉.PROTEUS中文教程+实例.puterA
[12]YaoLiang,ZhangZhenren,ZhangBo.CommunicationrealizationBetweenPCandMCS-51SCMBasedonMODBUSProtocol
附录:
程序
T_SETBITP1.0;调整
A_SETBITP1.1;加1
S_SETBITP1.2;减1
D_SETBITP1.3;日期
TIMER_SETBITP1.4;设置定时时间
MM_SETBITP1.5;秒表
SECONDEQU32H
MINUTEEQU31H
HOUREQU30H
TCNTEQU39H;t0中断次数
COUNTEQU40H;判断哪位
FRISTEQU36H
MIDDLEEQU37H
LASTEREQU38H
YEAREQU33H
MONEQU34H
DAYEQU35H
TIMER_HOUREQU41H
TIMER_MINUTEEQU42H
TIMER_SECONDEQU43H
TIMER_COUNTEQU44H;定时判断哪位
TIMERSYMBOLEQU45H;定时到达标志位
MMSECEQU47H;秒表,0。
1秒
MSECEQU48H;1秒
MMINEQU49H;1分
ORG0000H
SJMPSTART
ORG0BH
LJMPINT_T0
ORG001BH
LJMPINT_T1
START:
MOVDPTR,#TABLE
MOVHOUR,#12
MOVMINUTE,#35
MOVSECOND,#55
MOVYEAR,#07
MOVMON,#5
MOVDAY,#15
MOVTIMER_HOUR,#12
MOVTIMER_MINUTE,#30
MOVTIMER_SECOND,#30
MOVTCNT,#0
MOVCOUNT,#0
MOVTIMER_COUNT,#0
MOVTIMER