毕业论文 单片机的在线仿真实验系统.docx
《毕业论文 单片机的在线仿真实验系统.docx》由会员分享,可在线阅读,更多相关《毕业论文 单片机的在线仿真实验系统.docx(108页珍藏版)》请在冰豆网上搜索。
毕业论文单片机的在线仿真实验系统
编号:
()字号
本科生毕业设计(论文)
题目:
基于MCS-51单片机的在线仿真实验系统
摘要
MCS-51系列单片机是最经典的单片机,在实际使用中也是使用最广泛的。
经过几十年的发展,市场上也出现各种不同的单片机实验仿真设备,以及个人设计的单片机仿真实验仪。
参考了以往的设计,本文设计的51单片机实时仿真实验系统可以方便学习者直接进行实验,省略了繁琐复杂的电气接线,并且可以保证接线的正确性。
实验系统总共由13个相关的硬件模块组成,包括单片机最小系统、Led灯、按键、译码器、数码管、点阵显示、AD/DA转换模块、串行通信模块、液晶显示屏、继电器、蜂鸣器等。
针对设计的各个模块,设置了相应的实验内容,分为17个独立的实验,分别为I/O端口控制实验、闪烁灯实验、驱动蜂鸣器实验、定时器应用实验、数码管显示实验、外部中断和定时器中断实验、独立按键和矩阵按键实验、点阵显示和液晶显示实验、串行通信实验、数模模数转换实验等。
通过proteus软件对每一个实验的硬件电路和软件程序都进行了仿真实验,验证了设计的正确性。
本文设计的仿真实验系统,功能较为完善,可以满足大部分MCS-51单片机学习者的需求。
关键词:
单片机MCS-51实验下载器
ABSTRACT
MCS-51seriesmicrocontrollerunit(MCU)isoneofthemostclassicmicrocontrollerunit,alsoisthemostwidelyusedinthepracticaluse.Afterdecadesofdevelopment,avarietyofMCUsimulationexperimentequipmentalsoappearedinthemarket,sodotheinstrumentsdesignedbyindividualforthesimulationexperimentofMCU.Withreferencetothepreviousdesign,51seriesMCUreal-timesimulationexperimentsystemdesignedinthispapercanhelplearnerstoexperimentwithoutthecumbersomeandcomplexelectricalwiring,andcanguaranteethecorrectnessofwiring.
Theexperimentalsystemconsistsof13hardwaremodules,includingtheminimumsystemoftheMCU,Ledlight,button,decoder,digitaltube,latticedisplay,AD/DAconversionmodule,serialcommunicationmodule,LCDdisplay,relay,buzzerandsoon.Foreachmoduledesigned,thecorrespondingexperimentsweresetup,whichcouldbedividedinto17separateparts,suchasI/Oports,flashinglights,driveringbuzzer,theapplicationoftimer,digitaltubedisplaying,theexternalinterruptandtimerinterrupt,theindependentkeyandkeymatrix,dotmatrixdisplayandliquidcrystaldisplay,serialcommunicationandanalog-to-digitalconversionexperiment.Eachhardwarecircuitandsoftwareprogramhavebeentestedwiththeproteussoftware,whichprovedthecorrectnessofthedesign.Thesimulationexperimentsystemdesignedinthispaperisprefect,andcansatisfytheneedofpeoplelearningMCS-51MCU.
KeyWord:
MicrocontrollerUnit(MCU),MCS-51,Experiment,Downloader
目录
1绪论1
1.1课题研究意义1
1.2国内外研究现状和水平1
1.3研究方向与趋势1
2基本方案的确定2
2.1设计流程2
2.2设计工具的选择2
3系统硬件的设计2
3.1单片机最小系统2
3.1.1AT89S51简介3
3.1.2AT89S51引脚说明3
3.1.3AT89S51电源与复位电路的设计5
3.1.4AT89S51单片机时钟电路设计6
3.1.5程序下载电路6
3.28路led灯7
3.3按键7
3.3.1独立按键7
3.3.2矩阵键盘8
3.4译码器9
3.5数码管11
3.5.1静态式11
3.5.2动态式12
3.6LED点阵13
3.7AD/DA转换模块14
3.8RS232串行模块15
3.9液晶屏LCD160216
3.10555定时器17
3.11继电器18
3.12蜂鸣器18
3.13液晶屏LCD(12864)19
4系统仿真及实验设置21
4.1系统实验设置概述21
4.2单片机程序设计21
4.2.1用C语言进行单片机程序开发的优点22
4.2.2单片机C语言中的基本数据类型和基础语句22
4.2.3单片机C语言程序工程的基础构成22
4.3实验系统基本实验程序设计和仿真结果23
4.3.1单片机I/O口控制实验23
4.3.2闪烁灯实验26
4.3.4驱动蜂鸣器实验28
4.3.5定时器应用实验30
4.3.6数码管静态显示实验32
4.3.7数码管动态显示实验35
4.3.8外部中断实验38
4.3.9定时器中断应用实验40
4.3.10点阵显示实验45
4.3.11独立按键实验47
4.3.12矩阵键盘实验51
4.3.13串口应用实验53
4.3.14A/DPCF8591实验56
4.3.15D/APCF8591实验60
4.3.161602液晶显示实验60
4.3.17液晶屏LCD(12864)显示实验63
5总结66
参考文献67
外文资料原文68
中文译文76
致谢83
1绪论
1.1课题研究意义
大学实验室是培养学生和开展课题研究的重要基地,以实验的形式来培养学生的动手能力和理解能力是高校教学中重要的一项手段。
而由于51单片机的特殊性,它的程序存储器和数据存储器是分离的,单片机的数据与程序存储器一般相互独立,程序通过PSEN信号获取指令,调试程序只能在单片机开发系统进行,系统对自身的程序存储器不能进行写操作。
所以,一套适合的单片机实验板对于学生的学习就至关重要。
学生在做实验时无须连线即可进行接口实验的软件调试,从而避免将大量的时间花费在硬件的连接上,直接对8051程序进行修改和调试。
1.2国内外研究现状和水平
51单片机技术自发展以来已走过了几十年的发展路程。
单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,以广泛的应用领域拉动,表现出较微处理器更具个性的发展趋势。
而市场中叶出现了不少单片机仿真实验装置,以及个人设计的单片机仿真实验仪。
种类繁多,各自的功能也简繁不一。
由简单的只有下载器和支持51单片机的晶振、电源,也有适合实验用的包含不同模块可进行多种项目实验的实验板。
技术已经很成熟,不同的产品都有不同的针对用户。
1.3研究方向与趋势
在单片机课程的学习中,学生普遍感觉到课程内容比较困难,对理论知识难以理解、消化。
其主要原因是学生只接触到了理论,对单片机并无实际的接触,不能很好理解,单片机系统的工作方式。
MCS-51单片机仿真实验系统的开发,主要的发展方向就是更高效的辅助学生进行理论知识的学习,更快更好的掌握有关51单片机的知识。
能够设计以51单片机为微控制器的控制电路。
为实现以上的目的,51单片机仿真实验系统就需要实现更好的与计算机通信,以及全面直观的呈现51单片机的各种功能。
将各个功能模块分开设计,可以进行独立的实验,便于学生循序渐进的掌握。
实现在线实时仿真,以节约时间,更高效的进行实验。
这些都是目前51单片机研究方向以及未来的发展趋势。
2基本方案的确定
2.1设计流程
2.2设计工具的选择
电路原理的设计使用protel99SE和Proteus。
Proteus是著名的仿真软件,广泛的受到了工程师和老师学生的喜爱。
Proteus不仅可以仿真单片机CPU,也可以仿真外围的电路,并且能够实时显示电路动态,助于电路开发设计和学习。
Proteus可是实现从制作元件,画原理图,PCB图,软件代码调试等一系列的任务,功能十分全面,可以支持8051、AVR、ARM等芯片。
Protel是较早推出的软件,已经在广大高校和公司中普及,绝大部分的工厂支持Protel产生的PCB文件做电路板,因此选择此软件作为制图软件。
软件的部分的设计由KeilC51软件进行。
KeilC51是专门适用于MCS-51单片机的编程软件,同时支持C语言和汇编语言,也是目前用于单片机编程最流行的软件。
KeilC51集成了C编译器、宏汇编、连接器、库管理模块和一个功能强大的仿真模块。
同时支持虚拟仿真器仿真和实物在线仿真,有助于软件的编写开发。
3系统硬件的设计
3.1单片机最小系统
MCS-51系列单片机是8位增强型,其主要的技术特征是为单片机配置了完善的外部并行总线和具有多级识别功能的串行通讯接口(UART),规范了功能单元的SFR控制模式及适应控制器特点的布尔处理系统和指令系统。
MCS-51单片机是美国INTE公司于1980年推出的产品,与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习
3.1.1AT89S51简介
AT89S51是一个低电压,高性能CMOS8位单片机,片内含4kbytes的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89S51提供了高性价比的解决方案。
主要特性:
AT89S51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,5个中断源,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路。
AT89S51可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
3.1.2AT89S51引脚说明
图3.1AT89S51的引脚图
图3.1为AT89S51的引脚图,各引脚功能如下:
VCC:
电源
GND:
地
P0.0-P0.7:
输入输出脚,称为P0口,是一个8位漏极开路型双向I/O口。
内部不带上拉电阻,当外接上拉电阻时,P0口能以吸收电流的方式驱动八个LSTTL负载电路。
对P0端口写“1”时,引脚用作高阻抗输入。
通常在使用时外接上拉电阻,用来驱动多个数码管。
在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)数据总线,不需要外接上拉电阻。
P1.0-P1.7:
输入输出脚,称为P1口,是一个带内部上拉电阻的8位双向I/0口。
P1口能驱动4个TTL负载。
通常在使用时外不需要外接上拉电阻,就可以直接驱动发光二极管。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
P2.0-P2.7:
输入输出脚,称为P2口,是一个带内部上拉电阻的8位双向I/O口,P2口能驱动4个TTL负载。
端口置1时,内部上拉电阻将端口拉到高电平,作输入用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。
对内部Flash程序存储器编程时,接收高8位地址和控制信息。
在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。
而在访问8位地址的外部数据存储器时其引脚上的内容在此期间会被锁存。
P3.0-P3.7:
输入输出脚,称为P3口,是一个带内部上拉电阻的8位双向I/O口,P3口能驱动4个TTL负载。
端口P3置1时,内部上拉电阻将端口拉到高电平,作输入用。
对内部Flash程序存储器编程时,接控制信息。
P1-3端口在做输入使用时,因内部有上接电阻,被外部拉低的引脚会输出一定的电流。
P3口亦作为AT89S51特殊功能(第二功能)使用,如表3-1所示。
表3-1AT89S51引脚号第二功能
P3.0
RXD(串行输入)
P3.1
TXD(串行输出)
P3.2
INT0(外部中断0)
P3.3
INT0(外部中断0)
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读选通)
RST:
复位输入,在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。
复位后P0-P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。
当复位脚由高电平变为低电平时,芯片为ROM的0000H处开始运行程序。
ALE/PROG:
访问外部存储器时,ALE的输出用于锁存地址低8位字节的输出脉冲。
配合P0口引脚的第二功能使用,其下降沿用于吧片外存储器的低8位地址锁存到外部专用地址锁存器,以便空出P0.0-P0.7去传送数据。
即使不访问外部存储器,ALE端仍以不变的频率输出脉冲信号(此频率是振荡器频率的1/6),可用来作为外部定时器或时钟使用。
对Flash存储器编程时,这个引脚用于输入编程脉冲PROG。
PSEN:
该引是外部程序存储器的选通信号输出端。
当单片机从外部程序存储器取指令或常数时,PSEN每个机器周期输出2个脉冲即两次有效。
但访问外部数据存储器时,将不会有脉冲输出。
EA/Vpp:
外部访问允许端。
当该引脚访问外部程序存储器时,应输入低电平。
要使AT89S51只访问外部程序存储器(地址为0000H-FFFFH),这时该引脚必须保持低电平。
要执行内部程序指令,EA应接上VCC。
对Flash存储器编程时,用于施加12伏的Vpp编程电压。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。
内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。
3.1.3AT89S51电源与复位电路的设计
单片机正常工作需要5V的电源,复位使单片机处于起始状态,并从该起始状态开始运行。
AT89S51的RST引脚为复位端,该引脚连续保持2个机器周期(24个时钟振动周期)以上高电平,则可使单片机复位。
复位操作不会对内部RAM有所影响。
当AT89S51通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。
复位是单片机重新执行程序代码的意思。
AT89S51的复位方式可以是自动复位,也可以是手动复位,见下图3.2。
此外,RST还是一复用脚,Vcc掉电期间,此脚可接上备用电源,以保证单片机内部RAM的数据不丢失。
原理图如下图3.2。
图3.2单片机最小系统
如图所示,RSTK为复位开关,单片机VCC引脚接入电源,电容C5首先进入充电状态,此时RST为高电平,单片机复位,此后C5会放电,RST变低,单片机正常工作。
当单片机工作时,按下RSTK,RST管脚被拉高,单片机也会复位。
3.1.4AT89S51单片机时钟电路设计
AT89S51单片机内部有一个高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端,如果在引脚XTAL1和XTAL2两端跨接上晶体振荡器(晶振)或陶瓷振荡器就构成了稳定的自激振荡电路,该振荡器电路的输出可直接送入内部时序电路。
AT89S51单片机的时钟可由两种方式产生,即内部时钟方式和外部时钟方式。
由于内部时钟方式外部电路接线简单,单片机应用系统中大多采用这种方式。
本设计中采用了内部时钟方式。
内部时钟方式即是由单片机内部的高增益反相放大器和外部跨接的晶振、微调电容构成时钟电路产生时钟的方法,其工作原理如图3.3所示。
图3.3晶振
外接晶振(陶瓷振荡器)时,C1、C2的值通常选择为30pF(40pF)左右;C1、C2对频率有微调作用,晶振或陶瓷谐振器的频率范围可在1.2MHz~12MHz之间选择。
为了减小寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机引脚XTALl和XTAL2靠近。
内部时钟方式产生的时钟信号的频率就是晶振的固有频率,常用fsoc来表示。
如选择12MHz晶振,则fsoc=12×10^6Hz。
3.1.5程序下载电路
ISP(In-SystemProgramming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。
本文中设计的单片机实验系统采用的就是ISP下载原理,接口原理图如下图3.4。
图3.4ISP下载接口
3.28路led灯
发光二极管的种类很多,如图3.5,是常用普通发光二极管的图形符号。
当在它的A和K两个电极加上合适的电压时,它就会亮起来。
不同的发光二极管工作电压并不相同,一般是在1.6V-2.8V之间,而工作电流则一般是在2-30mA之间,但实际工作中选择的范围一般是4-10mA之间。
A
K
图3.5发光二极管符号
图3.6所示是实验板上与Led相关电路,Led上串接电阻大小事1K。
如果此时Led上的电压时2.0V,那么此时通过Led的电流则为3mA。
可以点亮二极管。
图3.6二极管电路
3.3按键
按键是单片机系统中常用的信息输入部件,同时也是人机对话中不可缺少的输入设备。
在单片机系统中,按键通常有两种不同的接法,一种叫做独立式按键,另外一种叫做行列式或者是扫描式按键。
3.3.1独立按键
一般的按键从实物上来看,是个四端口器件,但实际它是个二端口器件。
参照图3.7容易看出,在按下按键之前,两个触点之间是不导通的,按下的时候就导通,通过外部电路的不同接法,就可以使其中一个端口在按下和不按下的时候产生电平变化,而单片机正是通过检测这种变化来完成对按键输入信息的获得。
假设P0.0口接S0的输出端。
我们知道在P0口是接有上拉电阻的,所以在按键按下之前,S0对应的P0.0保持在高电平状态,当按键按下的时候,P0.0通脱S0接GND,这个时候就是低电平。
所以当单片机程序不断检测P0.0的状态时,就可以根据检测结果判断是否有按键按下。
图3.7独立按键
3.3.2矩阵键盘
矩阵键盘的优点:
当在设计的电路中需要较多的按键的时候,使用矩阵键盘能够大大较少I/O口的占用数量。
例如3*3矩阵键盘需要6跟I/O线,而4*4矩阵键盘只需要8根I/O线就可以,很明显增加了7个按键,可是只是多占用了两个I/O口。
所以,在电路设计中需要较多的按键是,应该使用矩阵键盘。
而且当矩阵键盘的线数越多的时候,这个区别也就会越来越明显,可以大大的提高的单片机的利用率。
当然,矩阵键盘也有不好的地方,如实时性不如独立按键,需要更长的反应时间,在扫描和计算之后才能够得到准确的键值。
不过,这仍然不能掩盖它的优势。
矩阵键盘的结构和电气接线显然还是要比独立按键复杂很多的,识别的过程也是要更加的复杂。
如下图3.8所示。
所有的行线接在不同的I/O口上,所有的列线也接在不同的I/O口上,而每一个按键的另外一个端口都经过一个电阻接电源。
相当于按键一端的电平为“1”,另外一端的接I/O口。
图3.8矩阵键盘
当按键无动作的时候,行线处于高电平的状态;当按键被按下的时候,行线的电平状态有于此行线相连接的列线电平决定。
列线电平如果为低,则行线电平为低,否则,反之。
这是识别按键状态的关键。
常用的矩阵式键盘的按键识别方法:
逐行扫描法和线性反转法。
本设计中采用的逐行扫描法,原理如图3.8所示。
用扫描法识别按键状态的时候分为两步。
第一,识别是否有按键按下:
让所有的列线置为低电平,检查各行线是否有电平变化。
第二,采用扫描法识别具体的键值:
逐列置低电平,其余各列置高电平,再来检查行线的变化。
3.4译码器
74LS138的引脚图,如图3.9所示
图3.974LS138的引脚图
从表3-2中我们都可以看到74LS138的八个输出引脚,任何时刻要么全为高电平1—芯片处于不工作状态,要么只有一个为低电平0,其余7个输出引脚全为高电平1。
如果出现两个输出引脚同时为0的情况,说明该芯片已经损坏。
表3-23线-8线译码器74LS138的功能表
71LS138有三个附加的控制端、和。
当S1输出为高电平(S=1)时,译码器处于工作状态。
否则,译码器被禁止,所有的输出端被封锁在高电平,如表3-2所示。
这三个控制端也叫做“片选”输入端,利用片选的作用可以将多片连接起来以扩展译码器的功能。
图3.10138译码器接口电路
本文设计中用用P2.2、P2.3、P2.4作为地址输入端,片选E3接VCC,E1、E2接GND。
单片机直接输出不同的地址信号,译码器就会有对应的输出。
如图3.10所示。
3.5数码管
在数字系统中,经常需要将测量、时钟或数值运算结果等字符显示出来,便于人们监视数字系统的工作情况。
可见,数字显示电路是数字设备中不可或缺的组成部分。
同样,在嵌入式系统中数字显示器也是常用的外围设备之一。
最常用的就是发光二极管七段显示器(也叫七段数码管)。
它的每一个字段是一个发光二极管。
我们可以通过控制每一个发光二极管的状态来控制显示的内容。
数码管可以根据二极管的共极方向分为两种:
共阴极和共阳极。
1.共阴极数码管
7段荧光数码管有公共的地,即7个发光二极管的负极全部连接在了一起,只要给想点亮的二极管高电平就可以使其发光。
这样做