基于Proteus软件的实验板仿真.docx
《基于Proteus软件的实验板仿真.docx》由会员分享,可在线阅读,更多相关《基于Proteus软件的实验板仿真.docx(24页珍藏版)》请在冰豆网上搜索。
基于Proteus软件的实验板仿真
基于Proteus软件的实验板仿真
摘要:
随着计算机渗透于社会各领域和大规模集成电路的迅速发展,单片机的应用不断走向深入,由于单片机具有功能强、体积小、功耗低、价格便宜、工作可靠、使用方便等特点,越来越广泛地应用各个领域。
因此运用Proteus软件开发出单片机仿真实验板对教学实验具有重要意义,可以为学生提供良好的单片机学习平台。
本设计以AT89C52单片机作为控制器,由D/A转换模块、A/D转换模块,独立按键模块、LCD液晶显示模块组成单片机仿真实验板。
主要运用Proteus仿真软件和Keil编程软件进行单片机实验板仿真设计,能够通过按键实现信号输入,通过LCD液晶实现信号输出,通过ADC0832实现模拟量到数字量转换,通过DAC0832实现数字量至模拟量转换。
仿真结果表明整个单片机仿真实验板,运行稳定,操作简单,效果明显,能为学生提供单片机的许多仿真实验。
关键字:
Proteus,单片机,仿真实验
ThesimulationexperimentboardbasedonProteus
Abstract:
Ascomputerspermeateallareasofsocietyandtherapiddevelopmentoflargescaleintegratedcircuits,single-chipapplicationscontinuetogodeeper,becauseMCUhasstrongfunction,smallsize,lowpowerconsumption,cheap,reliable,easytousefeatures,increasinglyThemorewidelyusedinvariousfields.Therefore,theuseofProteussoftwaresimulationdevelopedmicrocontrollerboardisimportantforteachingexperimentscanprovidestudentswithagoodchiplearningplatform.
ThedesignusesAT89C52microcontrollerasthecontroller,theD/Aconvertermodule,A/Dconversionmodule,independentkeymodule,LCDliquidcrystaldisplaymodulechipsimulationboard.ThemainuseofProteusandKeilMicrocontrollerExperimentboardprogrammingsoftwaresimulationdesignedtoachievethroughthekeysignalinput,signaloutputthroughtheLCDtoachieve,achievedthroughADC0832analog-to-digitalconversion,theDAC0832digitaltoanalogconversionamount.Simulationresultsshowthatthewholechipsimulationboard,stable,simpleoperation,theeffectisobvious,toprovidestudentswithmanyMCUsimulation.
Keywords:
Proteus,microcontroller,simulation
目录
1绪论2
1.1项目背景分析2
1.2技术发展趋势2
1.3课题的意义2
2开发工具介绍3
2.1Proteus软件介绍3
2.2Proteus应用方式3
2.3KeilC51软件介绍3
2.4KeilC51的应用方式4
3硬件电路设计5
3.1总体方案设计5
3.2模块电路设计5
4仿真运行12
4.1独立按键仿真12
4.2LCD液晶显示仿真13
4.3A/D转换电路仿真14
4.3D/A转换电路仿真15
5结论16
参考文献17
1绪论
1.1项目背景分析
单片机实验板以单片机为控制核心,实现外围输入输出电路的控制。
真正的实验板系统设计包括硬件电路设计和程序设计,软件调试必须在硬件电路板设计完成、元器件焊接完调试成功后进行,而且电路板制作、元器件焊接比较费时费力。
但如果运用Proteus仿真软件进行单片机系统设计,不用制作实际的电路板也能够完成单片机开发。
因此运用Proteus进行单片机系统测试成功后再进行硬件电路制作,可以大大提高开发效率、降低开发成本、提高开发速度,这些因素对于嵌入式开发的公司提高效率很有帮助。
同样单片机实验板仿真设计对于教育教学具有重要意义,可以为学生提供良好的单片机学习和开发平台。
1.2技术发展趋势
21世纪科技发展迅速,计算机软件硬件技术随之发展迅速,运用现有的计算机软件仿真技术,可以很好地仿真单片机实验板系统等实际问题。
当前单片机系统已经广泛地应用到军事技术、工程设计、科学研究、各类产业和商业文化艺术以及日常生活中的方方面面。
由于社会对掌握单片机技术人才的大量需求,使得单片机软硬件工程师成为近几年国内热门的职业,许多高校也已经开设基于单片机系统设计的课程。
基于单片机系统设计是理论与实践结合密切的课程。
但对于热衷于单片机设计开发的学生而言,一般没有足够的资金购买单片机开发板来进行开发设计,因此选择通过软件仿真来学习单片机系统开发是明智的选择。
而且Proteus是目前能够虚拟单片机系统设计的最好的EDA开发工具,是单片机系统开发人员必备仿真工具。
Proteus仿真软件与其它仿真软件最大的不同体现在Proteus不仅可以仿真单片机本身运行情况,而且能仿真单片机外围电路和没有单片机控制的外围电路的运行情况。
因此在硬件仿真和软件程序调试时,我们不再关心程序执行时单片机内部寄存器、存储器内容变化,而从总体的角度直接看程序运行和外围电路工作的过程和结果。
因此这样的仿真系统软件,很大程度上弥补理论和实践之间的矛盾。
1.3课题的意义
现代电子工程领域中单片机技术发展最迅速,广泛应用于各类嵌入式系统设计中。
单片机技术的发展和推广迅速推动电子工业的发展,最终推广到产业界和教育界仍然是目前业界讨论的热点。
因此运用Proteus仿真软件开发出单片机实验板仿真系统对于教育教学意义重大,可以为学生提供良好的单片机学习和开发平台。
本课题充分运用Proteus仿真软件和KeilC51编程软件的功能,以AT89S52单片机为控制器,实现独立按键、LCD1602液晶显示、ADC0832模数转换、DAC0832数模转换各个模块电路的仿真。
最终设计的单片机仿真实验板可以为学生提供一个简单的虚拟硬件环境,可以进行基本的单片机学习和开发。
2开发工具介绍
2.1Proteus软件介绍
Proteus仿真软件是英国Labcenterelectronics公司开发的EDA工具软件,不但具有大多数EDA工具软件的仿真功能,而且能仿真单片机和外围器件,毋容置疑Proteus是仿真单片机及外围器件目前最好的仿真软件。
Proteus在国内虽然刚刚推广,但受到许多单片机开发人员、单片机教学教师以及致力于单片机开发应用研究人员的青睐。
Proteus软件是世界著名的仿真软件,在于从原理图设计、代码设计到单片机与外围电路协同仿真,一键就可以切换到PCB设计,完全实现从概念到产品的完整设计。
Proteus也是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的单片机开发平台,支持8051、8086、HC11、PIC、AVR、ARM、MSP430等系列的处理器型号,2010年还能支持Cortex和DSP系列处理器,每年持续增加许多其他系列处理器型号。
在编译器方面支持IAR、Keil以及其他编译器。
Proteus主要由ISIS和ARES两个软件构成,其中ISIS是原理图编辑仿真软件,ARES是布线编辑软件,本设计主要运用ISIS软件开发设计,具有以下特点:
(1)丰富的器件库:
超过27000种元器件,可方便地创建新元件;
(2)智能的器件搜索:
通过模糊搜索可以快速定位所需要的器件;
(3)智能化的连线功能:
自动连线功能使连接导线简单快捷,大大缩短绘图时间;
(4)支持总线结构:
使用总线器件和总线布线使电路设计简明清晰;
(5)可输出高质量图纸:
通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供Word、PowerPoint等多种文档使用。
2.2Proteus应用方式
第一步运行Proteus的ISIS程序后,进入该仿真软件的主界面。
在工作前,要设置菜单下的捕捉对齐和系统下的颜色以及图形界面大小。
通过工具栏中的选择命令,在选择设备窗口中选择本设计所需的元器件,放置好元器件并调整好位置,设置好元器件参数,连线元器件之间的电路,编写好程序;在资源菜单下定义代码生成器菜单命令下,选择程序编译的工具、路径、扩展名等项目;在资源菜单的添加删除资源文件命令下,加入单片机硬件电路的对应程序;通过调试菜单相应命令查看仿真程序和电路的运行状态。
第二步运用Proteus软件进行调试程序。
因为Proteus提供非常丰富的模拟信号和数字信号的测试信号可以用于电路的测试。
对于单片机硬件和软件的调试,不但可以看系统总体执行效果,还可以分步调试看每个步骤具体执行情况。
如果要看程序总体执行效果,只需要执行调试菜单下的生成菜单选择项或者按下快捷键F12就可以启动执行,用调试菜单下的暂停运行菜单选择项或暂停键就可以暂停运行仿真系统;还可以用调试菜单下的停止运行菜单选择项或shift+break组合键停止仿真系统运行。
所有的运行方式都可以选择工具栏中的相应工具进行。
如果要程序要分步调试,应先执行调试菜单下的开始调试菜单选择项命令,此时可以选择跨越、步入和步出命令执行程序或者用快捷键F10、F11、Ctrl+F11进行调试,执行的效果是单步执行、进入子程序执行和跳出子程序执行。
在执行完开始调试命令后,在调试菜单下面出现仿真的所涉及到的软件列表以及单片机系统资源等,可供软件硬件调试时分析和查看。
2.3KeilC51软件介绍
KeilC51编程软件不但提供丰富的库函数和功能强大的集成开发调试工具Windows界面,而且只要看看编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常高,大多数语句生成的汇编代码很紧凑,也很容易理解。
如果开发大型软件时更能体现高级语言的优势。
KeilC51软件支持许多公司的MCS51架构单片机,集编辑、编译、仿真于一身,同时还支持PLM语言、汇编语言和C语言的程序设计。
软件开发界面友好,在调试程序、软件仿真方面具有强大功能,通过设置就可以与Proteus的ISIS软件联机调试单片机系统。
KeilC51工具包中uVision与Ishell分别是C51forWindows和forDOS的集成开发环境,可以完成编辑、编译、连接、调试、仿真等整个开发流程。
本设计运用的是KeiluVision4进行软件编程设计,类似于VisualC++6.0开发环境。
2.4KeilC51的应用方式
第一步安装KeilC51uVision4与Proteus7.8SP2软件;
第二步把Proteus安装目录下vdm51.dll文件复制到Keil安装目录\C51\bin目录中;
第三步修改Keil安装目录下tools.ini文件,在C51字段加入tdrv5=bin\vdm51.dll;
第四步打开Proteus,绘制硬件电路,在Proteus工具菜单中选中使用远程调试工具;
第五步在Keil软件中编写单片机控制程序;
第六步进入Keil的工程菜单选择目标“工程名”,在调试选项中右栏上部的下拉菜选中51单片机驱动;
第七步在Keil中进行调试,同时可以在Proteus中查看直观的调试结果。
3硬件电路设计
3.1总体方案设计
单片机实验板由单片机最小系统,独立按键模块,LCD液晶显示模块,A/D转换模块,D/A转换模块组成。
控制核心部分采用最基本的AT89C52单片机就可以实现基本的控制要求,无论是存储器容量,运算器运算能力都完全满足要求。
液晶显示模块采用LCD1602可以显示32个字符或者数字,也能够满足基本单片机实验板要求。
模数转换模块采用ADC0832双通道8位串行A/D转换器能够满足基本0-5V电压模数转换,符合要求。
数模转换采用DAC0832并行8位D/A转换器将数字信号转换为电压信号,完全满足要求。
单片机实验板结构设计如图3.1所示。
图3.1单片机实验板结构设计图
3.2模块电路设计
3.2.1单片机最小系统设计
本设计采用AT89C52单片机为控制器,负责整个单片机实验板系统的运算和控制,包括所有的数据存储和数据运算,所有的外围器件都是要与单片机控制器进行数据交换,不论是数据读取还是写入都需要单片机,最终实现控制的要求。
AT89C52是美国Atmel公司生产的8位低电压、高性能单片机,片内具有8KB的可重复擦写的程序存储器和12B的随机存取数据存储器,并且采用Atmel公司的高密度、非易失性存储技术进行批量生产的,完全兼容标准MCS-51指令系统,片内集成通用八位中央处理器CPU和Flash存储单元,功能强大的AT89C52单片机广泛应用于各类控制领域。
本设计采用的AT89C52单片机属于AT89C51单片机的增强型,与Intel公司生产的80C52在硬件组成、引脚排列、指令系统和工作特点方面完全兼容。
工作特性如下:
片内程序存储器中有8KB属于Flash程序存储器,可擦写1000次以上;片内数据存储
器有256KB的RAM;具有32根通用I/O双向口;具有3个独立的可编程定时器;中断系统具有8个中断源、6个中断矢量、2个级优先权的中断结构;串行口是具有1个全双工的可编程串行通信口;具有1个数据指针DPTR;具有低功耗工作模式、空闲模式、掉电模式;具有可编程的3级程序锁定位;工作电源电压为5V左右,典型值为5V;最高工作频率为24MHz。
AT89C52的内部结构框图如图3.2所示。
图3.2AT89C52的内部结构框图
其中AT89C52的引脚说明如下:
VCC:
接+5V电压。
GND:
接电源地。
P0口:
P0口是8位漏级开路双向I/O口,每脚可吸收8个TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
而且P0能够用于外部程序数据存储器,也可以被定义为八位数据/地址。
FLASH编程时,P0口可以作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入口,P1口被外部下拉为低电平时,将输出电流,因为内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口是内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,也可以作为输入口。
因此作为输入时,P2口的管脚被外部拉低,将输出电流。
也是因为内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,可以利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并可以用作输入口。
作为输入,由于外部下拉为低电平,P3口将输出电流,这是因为上拉的缘故。
RST:
复位输入端。
当振荡器复位时,必须保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
高电平时,ALE端以不变的频率周期输出正脉冲信号,频率为振荡器频率的六分之一。
因此可以用作对外部输出的脉冲或用于定时。
然而必须注意的是:
每当用作外部数据存储器时,将跳过1个ALE脉冲。
如果要禁止ALE的输出可在SFR寄存器的8EH地址置0。
此时,ALE只有在执行MOVX,MOVC指令时ALE才能起作用,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位将无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当EA保持低电平时,外部程序存储器地址为0000H-FFFFH,不管是否有内部程序存储器。
加密方式为1时,EA将内部锁定为RESET;当EA端保持高电平时,默认为内部程序存储器。
在FLASH编程期间该引脚也可以用于施加12V编程电源。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
最终Proteus软件仿真设计的如图3.3,省去单片机的复位电路和晶振电路,电源电路和晶振电路,实际电路设计是不能省略的。
电源分别是VCC接+5V,GND接地。
RST引脚接20uF电解电容到VCC,再接1K电阻下拉到地,组成阻容复位电路,单片机上电后自动复位。
晶振电路是XTAL1和XTAL2分别接12M或者11.0592M晶振两端,再接20-30pF瓷片电容拉到地。
图3.3单片机最小系统电路
3.2.2独立按键电路设计
独立按键设计比较简单,每个按键对应一个IO口,在单片机IO资源充足的时候可以这样设计。
Proteus仿真下按键电路设计如图3.4所示,直接将独立按键的一端接到IO口,一端接地,这样设计完全可以实现功能,实际电路设计时一般要加上一个1-10K电阻拉高,防止按键没有按下时不会自动恢复高电平,主动拉高有利于实际运用。
本设计四个按键分别接到P3.2、P3.3、P3.4、P3.5。
图3.4按键电路设计
3.2.3LCD液晶电路设计
LCD1602液晶电路设计也比较简单,8位并行数据口与单片机P0口连接,3位控制口与单片机P2.5、P2.6、P2.7连接,Proteus仿真LCD1602液晶电路设计如图3.5所示,实际电路设计时还需要加上10K电位器调节背光的亮度。
图3.5LCD1602液晶显示电路图
Proteus软件中LCD1602液晶选用的芯片是LM016L,即16×2字符LCD显示屏。
数据线D7~D0,控制线分别为RS、RW、E,1根地线VSS;两根电源线VDD和VEE,每行的字符数为16,行数为2,时钟为250KHz,行1的字符的地址为80H~8FH,行2的字符地址为C0H~CFH。
用LCD显示字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它为“0”,为“1”的点亮,为“0”的不亮。
这样就组成某个字符。
由于液晶内部自带字符发生器的控制器,显示字符就比较简单,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。
3.2.4A/D转换电路设计
本设计模数转换采用双通道8位串行A/D转换器ADC0832芯片,用10K的电位器作为模拟量输入信号,通过ADC0832的通道0测量模拟的电压信号,转化为数字信号给单片机,再通过LCD1602液晶显示。
Proteus仿真A/D转换电路如图3.6所示。
图3.6A/D转换电路
ADC0832是NS(NationalSemiconductor)公司生产的串行接口8位A/D转换器,通过三线接口与单片机连接,功耗低,性能价格比较高,适宜在袖珍式的智能仪器仪表中使用。
ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。
芯片具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。
独立的芯片使能输入,使多器件连接和处理器控制变得更加方便。
通过DI数据输入端,可以轻易的实现通道功能的选择。
其主要特点如下:
8位分辨率,逐次逼近型,基准电压为5V;5V单电源供电;输入模拟信号电压范围为0~5V;输入和输出电平与TTL和CMOS兼容;在250KHZ时钟频率时,转换时间为32us;具有两个可供选择的模拟输入通道;功耗低,15mW。
ADC0832引脚说明如下:
CS:
片选端,低电平有效;CH0,CH1:
两路模拟信号输入端;DI:
两路模拟输入选择输入端;DO:
模数转换结果串行输出端;CLK:
串行时钟输入端;VCC/REF:
正电源端和基准电压输入端;GND:
电源地。
ADC0832与单片机的接口一般为4条数据线,分别是CS、CLK、DO、DI。
但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根数据线上使用。
当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。
当要进行A/D转换时,须先将CS端置于低电平并且保持低电平直到转换完全结束。
此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK提供时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。
在第1个时钟脉冲到来之前DI端必须是高电平,表示启动位。
在第2、3个时钟脉冲到来之前DI端应输入2位数据用于选择通道功能,其功能项见表3.1。
输入形式
配置位
选择通道
CH0
CH1
CHO
CH1
差分输入
0
0
+
-
0
1
-
+
单端输入
1
0
+
1
1
+
表3.1ADC0832配置位
如表3.1所示,当配置位2位数据为1、0时,只对CH0进行单通道转换。
当配置2位数据为1、1时,只对CH1进行单通道转换。
当配置2位数据为0、0时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。
当配置2位数据为0、1时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行输入。
到第3个时钟脉冲到来之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。
从第4个时钟脉冲开始由DO端输出转换数据最高位D7,随后每一个脉冲DO端输出下一位数据。
直到第11个脉冲时发出最低位数据D0,一个字节的数据输出完成。
也正是从此位开始输出下一个相反字节的数据,即从第11个时钟脉冲输出D0。
随后输出8位数据,到第19个脉冲时数据输出完成,也标志着一次A/D转换的结束。
最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以,ADC0832时序如图3.7所示。
图3.7A/D转换时序图
3.2.4D/A转换电路设计
本设计数模转换采用8位并行D/