




免费预览已结束,剩余73页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
简单实例助你快速掌握PROTEUS的用法双击自动滚屏发布者:ebnar 发布时间:2011-12-30 阅读:794次 【字体:大 中 小】子情境1:简单实例助你快速掌握PROTEUS的用法为了更快掌握PROTEUS设计与仿真操作,我们先从一简单实例入手带你入门。让我们首先来熟悉一下仿真软件的主界面:图51 仿真软件的主界面运行protues的ISIS模块,进入仿真软件的主界面,如图51所示,区域为菜单及工具栏,区域为元器件预览区,区域为对象选择器窗口,区域为编辑窗口,区域为绘图工具栏,区域为元器件调整工具栏,区域为运行工具条。Proteus是一种集单片机仿真和SPICE分析于一身的仿真软件。其功能非常强大,不仅能仿真模拟电路、数字电路以及模拟数字混合电路,更重要的是可以仿真51系列、AVR、PIC等常用主流单片机。Protues提供了丰富的资源:(1)Proteus拥有的元器件资源:Proteus可提供30多种元件库,超过8000种模拟、数字元器件。(2)Proteus可提供的仿真仪表资源 :仿真仪器仪表的数量、类型和质量是衡量仿真实验室是否合格的一个关键因素。Proteus可提供常用的示波器(本文的实例中示波器被用来观察产生的波形)、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。以下简要罗列了proteus中常用元器件和仿真仪表中英文对照表:7407 驱动门1N914 二极管74Ls00 与非门74LS04 非门74LS08 与门74LS390 TTL 双十进制计数器7SEG 4针BCD-LED 输出从0-9 对应于4根线的BCD码7SEG 3-8译码器电路BCD-7SEG转换电路AND 与门BATTERY 电池/电池组BUS 总线CAP 电容CAPACITOR 电容器CLOCK 时钟信号源CRYSTAL 晶振FUSE 保险丝GROUND 地LAMP 灯LED-RED 红色发光二极管LM016L 2行16列液晶可显示2行16列英文字符,有8位数据总线D0-D7,RS,R/W,EN三个控制端口(共14线),工作电压为5V。LOGIC ANALYSER 逻辑分析器LOGICPROBE 逻辑探针LOGICPROBEBIG 逻辑探针 用来显示连接位置的逻辑状态LOGICSTATE 逻辑状态 用鼠标点击,可改变该方框连接位置的逻辑状态LOGICTOGGLE 逻辑触发MOTOR 马达OR 或门POT-LIN 三引线可变电阻器POWER 电源RES 电阻RESISTOR 电阻器SWITCH 按钮 手动按一下一个状态VOLTMETER 伏特计VOLTMETER-MILLI mV伏特计VTERM 串行口终端Electromechanical 电机Inductors 变压器Laplace Primitives 拉普拉斯变换Miscellaneous 各种器件 AERIAL-天线;ATAHDD;ATMEGA64;BATTERY;CELL;CRYSTAL-晶振;FUSE;METER-仪表;Optoelectronics 各种发光器件 发光二极管,LED,液晶等等Resistors 各种电阻Simulator Primitives 常用的器件Speakers & Sounders扬声器Switches & Relays 开关,继电器,键盘Transistors 晶体管(三极管,场效应管)TTL 74 seriesTTL 74ALS series TTL 74AS seriesTTL 74F seriesTTL 74HC series TTL 74HCT seriesTTL 74LS seriesTTL 74S series此 模拟电路集成芯片Capacitors 电容集合Connectors 排座,排插Data Converters ADC,DACDebugging Tools 调试工具下面开始我们的第一个任务:11 子情境内容:让单片机动起来,用单片机控制一个LED灯闪烁发光。用P1口的第一个引脚控制一个LED灯, 1秒钟闪烁一次。12 子情境目标:通过此子情境的练习,快速掌握PROTEUS的基本用法13 子情境步骤131步骤一: PROTEUS电路设计整个设计都是在ISIS编辑区中完成的。(1)单击工具栏上的“新建”按钮,新建一个设计文档。单击“保存”按钮,弹出如图52所示的“Save ISIS Designe File”对话框,在文件名框中输入“LED”(简单实例的文件名),再单击“保存”按钮,完成新建设计文件操作,其后缀名自动为.DSN。图52保存ISIS设计文件(2)选取元器件此简单实例需要如下元器件:单片机:AT89C51发光二极管:LED-RED瓷片电容:CAP*电阻:RES*晶振:CRYSTAL按钮:BUTTON单击图53中的“P”按钮,弹出如图54所示的选取元器件对话框,在此对话框左上角“keywords(关键词)”一栏中输入元器件名称,如“AT89C52”,系统在对象库中进行搜索查找,并将与关键词匹配的元器件显示在“Results”中。在“Results”栏中的列表项中,双击“AT89C51”,则可将“AT89C52”添加至对象选择器窗口。按照此方法完成其它元器件的选取,如果忘记关键词的完整写法,可以用“*”代替,如“CRY*”可以找到晶振。被选取的元器件都加入到ISIS对象选择器中。如图55所示。图53单击“P”按钮选取元器件图54选取元器件窗口图55选取元器件均加入到ISIS对象选择器中(3)放置元器件至图形编辑窗口在对象选择器窗口中,选中AT89C51,将鼠标置于图形编辑窗口该对象的欲放置的位置、单击鼠标左键,该对象被完成放置。同理,将BUTTON、RES等放置到图形编辑窗口中。如图5-6所示。若元器件方向需要调整,先在ISIS对象选择器窗口中单击选中该元器件,再单击工具栏上相应的转向按钮,把元器件旋转到合适的方向后再将其放置于图形编辑窗口。若对象位置需要移动,将鼠标移到该对象上,单击鼠标右键,此时我们已经注意到,该对象的颜色已变至红色,表明该对象已被选中,按下鼠标左键,拖动鼠标,将对象移至新位置后,松开鼠标,完成移动操作。通过一系列的移动、旋转、放置等操作,将元器件放在ISIS编辑窗口中合适的位置。如图56所示。(4)放置终端(电源、地)放置电源操作:单击工具栏中的终端按钮,在对象选择器窗口中选择“POWER”如图57所示,再在编辑区中要放电源的位置单击完成。放置地(GROUND)的操作与此类似。图56各元器件放在ISIS编辑窗口中合适的位置图57放置终端符号(5)元器件之间的连线Proteus的智能化可以在你想要画线的时候进行自动检测。下面,我们来操作将电阻R1的右端连接到LED显示器的左端,如图56所示。当鼠标的指针靠近R1右端的连接点时,跟着鼠标的指针就会出现一个“”号,表明找到了R1的连接点,单击鼠标左键,移动鼠标(不用拖动鼠标),将鼠标的指针靠近LED的左端的连接点时,跟着鼠标的指针就会出现一个“”号,表明找到了LED显示器的连接点,单击鼠标左键完成电阻R1和LED的连线。Proteus具有线路自动路径功能(简称WAR),当选中两个连接点后,WAR将选择一个合适的路径连线。WAR可通过使用标准工具栏里的“WAR”命令按钮来关闭或打开,也可以在菜单栏的“Tools”下找到这个图标。同理,我们可以完成其它连线。在此过程的任何时刻,都可以按ESC键或者单击鼠标的右键来放弃画线。(6)修改、设置元器件的属性PROTEUS库中的元器件都有相应的属性,要设置修改元器件的属性,只需要双击ISIS编辑区中的该元器件。例如,发光二极管的限流电阻R1,双击它弹出如图57所示的属性窗口,在窗口中已经将电阻的阻值修改为330欧姆。图59是编辑完成的“简单实例”的电路。图58设置限流电阻阻值为330欧姆图59编辑完成的简单实例的电路图132步骤二:源程序设计与生成目标代码文件(1)程序流程图SHAPE * MERGEFORMAT 图510 发光二极管闪烁的流程图(2)源程序设计将放光二极管闪烁的程序保存在文件FLASH_LED.C中,在keil中编译生成目标代码文件,本例为FLASH_LED.HEX。#include /头文件#define uint unsigned int /宏定义sbit D1=P10; /声明单片机P1口的第一位void delay(uint z); /声明子函数void main() while(1) /大循环 D1=0; /点亮第一个发光二极管 delay(500); /延时500毫秒 D1=1; /关闭第一个发光二极管 delay(500); /延时500毫秒 void delay(uint z) /延时子程序延时约z毫秒 uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);133 步骤三:PROTEUS仿真(1)加载目标代码文件双击编辑窗口的AT89C52器件,在弹出如图511所示属性编辑对话框Program File一栏中单击打开按钮,出现文件浏览对话框,找到FLASH_LED.HEX文件,单击“打开”按钮,完成添加文件。在Clock frequency栏中把频率设置为12MHZ,仿真系统则以12MHZ的时钟频率运行。因为单片机运行的时钟频率以属性设置中的“Clock frequency”为准,所以在编辑区设计MCS-51系列单片机系统电路时,可以略去单片机振荡电路,并且复位电路也可以略去。所以从子情境三开始就将振荡电路和复位电路省略。图511加载目标代码文件窗口(2)仿真单击按钮,启动仿真,仿真运行片段如图512所示。发光二极管间隔500毫秒闪烁。图512仿真运行片段红色方块代表低电平,蓝色方块代表高电平,灰色方块代表不确定电平14 扩展练习改成让P1.1口控制LED灯1秒钟闪烁一次。子情境二:用发光二极管实现流水灯乒乓球效果21 子情境目标:(1)通过AT89C52单片机控制8个发光二极管,实现亮点由低位到高位再由高位到低位来回流动的乒乓球效果(2)用PROTEUS设计、仿真以AT89C52为核心的放光二极管流水灯电路。(3)掌握发光二极管的控制方法22 子情境步骤221 步骤一: PROTEUS电路设计(1)选取元器件:按快捷键“P”按钮,打开元器件选择窗口。在关键词栏中输入元器件的关键词,选取需要的元器件。单片机:AT89C52 电阻、8排阻:RES*红色发光二极管:LED-RED瓷片电容:CAP*晶振:CRYSTAL(2)放置元器件:在对象选择器中单击选中AT89C52,在编辑区中合适的位置单击,器件AT89C52就被放置到编辑区中。如果要改变元器件的放置方向,先在ISIS对象选择器中单击选中该元器件,再单击工具栏上相应的转向按钮,把元器件旋转到合适的方向后再将其放置于图形编辑窗口。(3)放置终端(电源、地)放置电源操作:单击工具栏中的终端按钮,在对象选择器窗口中选择“POWER”,再在编辑区中要放电源的位置单击完成。放置地(GROUND)的操作与此类似。(4)元器件之间的连线 因为ISIS的智能化程度很高,只要单击所要连线的起点和终点。例如元器件的引脚、终端等,在这两点间会自动生成一条线。若要画折线,只要在转折点单击;若中途想取消连线,右击即可。(5)元器件属性设置PROTEUS库中的元器件都有相应的属性,要设置修改元器件的属性,只需要双击ISIS编辑区中的该元器件。设置好的原理图如图513所示。图513流水灯乒乓效果原理图222步骤二:源程序设计与目标代码文件生成 (1)程序流程图SHAPE * MERGEFORMAT (2)源程序设计#include /52系列单片机头文件#include /包含_crol_(循环左移)函数所在的头文件void delay(int z); /声明子函数unsigned char temp; /定义一个变量,用来给P1口赋值int i,j;void main() temp=0xfe; /赋初值11111110 P1=temp; /先点亮第一个发光二极管 while(1) /大循环 for(i=7;i0;i-) /控制亮点从低位往高位移动7次 delay(500); /延时500毫秒 temp=_crol_(temp,1); /将temp循环左移一位后再赋给tempP1=temp; /将移位后的值赋给P1口,从低位到高位逐个点亮发光二极管 for(j=7;j0;j-) /控制亮点从高位往低位移动7次 delay(500); /延时500毫秒 temp=_cror_(temp,1); /将temp循环右移一位后再赋给tempP1=temp; /将移位后的值赋给P1口,从高位到地位逐个点亮发光二极管 void delay(int z) unsigned int x,y; for(x=z;x0;x-) /延时z毫秒 for(y=110;y0;y-);(2)生成目标代码文件在KEIL软件中,编译C语言源程序,生成目标代码文件,本例中为pingpang.hex。223 步骤三:PROTEUS仿真加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框Program File一栏中单击打开按钮,出现文件浏览对话框,找到pingpang.hex文件,单击“打开”按钮,完成添加文件。单击按钮,启动仿真,仿真运行片段如图515所示。通过AT89C52单片机控制8个发光二极管,实现亮点由低位到高位再由高位到低位来回流动的乒乓球效果。图515流水灯乒乓效果运行片段24 扩展练习此子情境中流水灯在同一时刻只显示一盏灯,现在完成同时亮着两个灯流动的效果。子情境三:数码管动态扫描31子情境内容:利用动态扫描让四位数码管稳定的显示1234。32 子情境目标:(1)掌握单片机控制四位数码管的动态扫描技术,包括程序设计和电路设计,本任务的效果是让四位数码管稳定的显示1234。(2)用PROTEUS进行电路设计和实时仿真33 知识点链接(1)数码管动态扫描 (动态扫描的定义以及与静态显示的区别)动态显示的特点是将所有位数码管的段选线s一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。 (2)总线的应用元器件与总线的连线P0口的接线采用总线方式,详细如图517所示。 选择总线按钮 绘制总线:与普通电线的绘制方法一样,选择合适的起点、终点单击。如果终点在空白处,左键双击结束连线。画总线的时候为了和一般的导线区分,我们一般喜欢画斜线来表示分支线。此时我们需要自己决定走线路径,只需在想要拐点处单击鼠标左键即可。在画斜线时,需要关闭线路自动路径功能才好绘制。Proteus的线路自动路径功能简称WAR,当选中两个连接点后,WAR将选择一个合适的路径连线。WAR可通过使用标准工具栏里的“WAR”命令按钮来关闭或打开,也可以在菜单栏的“Tools”下找到这个图标。 给与总线连接的导线贴标签PART LABELS与P0口相连的线标签名依次为P00P06,本电路中的P0口的上拉电阻通过总线与P0口相连,数码管也是通过总线与P0口相连,这些都需要标注,以表明正确的电气连接。单击绘图工具栏中的导线标签按钮,使之处于选中状态。将鼠标置于图形编辑窗口的欲标标签的导线上,跟着鼠标的指针就会出现一个“”号,表明找到了可以标注的导线,单击鼠标左键,弹出编辑导线标签窗口,如图516所示。 在“string”栏中,输入标签名称(如p00),单击“OK”按钮,结束对该导线的标签标定。同理,可以标注其它导线的标签,如图516所示。注意,在标定导线标签的过程中,相互接通的导线必须标注相同的标签名。图516编辑导线标签窗口34 任务步骤341 步骤一:PROTEUS电路设计,单片机控制四位共阴极数码管动态扫描显示的原理图如图517所示。图517 四位共阴极数码管动态扫描显示的原理图1、选取元器件单片机:AT89C52带公共端的排阻:RESPACK-8四位共阴极数码管:7SEG-MPX4-CC2、放置元器件、放置电源和地、连线、元器件属性设置数码管动态扫描显示的原理图如图517所示,整个电路设计操作都在ISIS平台中进行。(1)带公共端的排阻(RESPACK-8)如图518所示,在本电路中作为P0的上拉电阻,在如图519所示Component Value一栏中可更改阻值,例如本例中将阻值更改为200欧姆。 图518排阻 图519排阻属性框至此,我们便完成了整个电路图的绘制。342 步骤二:源程序设计与目标代码文件生成(1)程序流程图SHAPE * MERGEFORMAT SHAPE * MERGEFORMAT 图520 数码管动态扫描的流程图(2)源程序设计#include /52系列单片机头文件#define uchar unsigned char#define uint unsigned intuint x,y;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /共阴极数码管编码void display(uchar,uchar,uchar,uchar); /声明子函数void delay(int); /声明子函数void main() while(1) display(1,2,3,4); /主程序始终调用数码管显示子程序 void display(uchar a,uchar b,uchar c,uchar d) P2=0xef; P0=tablea; /给第一个数码管送a delay(1); /延时1ms P2=0xdf; P0=tableb; /给第二个数码管送b delay(1); /延时1ms P2=0xbf; P0=tablec; /给第三个数码管送c delay(1); /延时1ms P2=0x7f; P0=tabled; /给第三个数码管送d delay(1); /延时1msvoid delay(uint z) /延时子函数 uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);(2)生成目标代码文件在KEIL软件中,编译C语言源程序,生成目标代码文件,本例中为dongtai.hex。343 步骤三:PROTEUS仿真加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框Program File一栏中单击打开按钮,出现文件浏览对话框,找到dongtai.hex文件,单击“打开”按钮,完成添加文件。单击按钮,启动仿真,仿真运行片段如图521所示。通过AT89C52单片机控制四位数码管,实现让四位数码管稳定的显示“1234”的效果。图521数码管动态扫描显示“1234”35 扩展练习本子情境中单片机趋动的是共阴极的数码管,请使用四位共阳极的数码管重新设计和仿真。子情境四:定时/计数器的使用方波发生器41子情境内容:用AT89C51单片机定时/计数器0的定时功能可构成一简单的方波发生器,实现周期为2s的方波,并能在虚拟示波器上直观地显示波形。42 子情境目标:(1)通过用AT89C52单片机定时/计数器0的定时功能构成一简单的方波发生器,掌握定时器的基本用法。(2)用PROTEUS进行电路设计和实时仿真(3)学会使用虚拟示波器观察波形43 知识点链接虚拟示波器的基本操作:单击工具栏中的按钮(虚拟仪器),在对象选择器列表中选择OSCILLOSCOPE(示波器),在ISIS编辑窗口中合适位置单击就可以将示波器放置好了。最后将单片机的P1.0口与示波器的A通道相连,如图522所示。44 任务步骤441 步骤一:PROTEUS电路设计,实现周期为2s的方波的原理图如图522所示。图522 方波发生器原理图1、选取元器件单片机:AT89C52电阻:RESLED发光二极管:LED-RED2、放置元器件、放置电源和地、连线、元器件属性设置方波发生器的原理图如图522所示,整个电路设计操作都在ISIS平台中进行。与子情景3相似,故不详述。(1)程序流程图中断服务程序主程序SHAPE * MERGEFORMAT SHAPE * MERGEFORMAT 图523 方波发生器的流程图(2)源程序设计#include#define uchar unsigned char#define uint unsigned intsbit D1=P10;uchar aa;void main() TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; /定时50ms中断一次 EA=1; /开总中断 ET0=1; /允许定时器T0中断 TR0=1; /起动定时器开始工作 D1=1; /让LED灯初始时处在熄灭状态 while(1); /等待中断产生void my_timer0() interrupt 1 /中断服务程序 TH0=(65536-50000)/256; TL0=(65536-50000)%256; /重新赋初值 aa+; /中断一次变量aa加1if(aa=20) /当aa=20时中断了20次,定时时间为20*50ms=1s,更改一次P1.0口的输出状态,这样得到的方波周期为2s aa=0; /将变量aa清零,以便于下次重新定时 D1=D1; /改变引脚P1.0的输出状态 443 步骤三:PROTEUS仿真加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框Program File一栏中单击打开按钮,出现文件浏览对话框,找到fangbo.hex文件,单击“打开”按钮,完成添加文件。单击按钮,启动仿真,仿真运行片段如图524所示。用AT89C51单片机定时/计数器0的定时功能可构成一简单的方波发生器,实现周期为2s的方波,并能在虚拟示波器上直观地显示波形。我们可以适当调整示波器面板上的按钮来使波形最有利于我们观察。调整好以后,系统产生的波形效果如图525所示。转动如图526所示的A通道的转盘旋钮,可调整A通道的电压显示幅值,范围为2ms20v/格,如图电压幅值为2v/格,从波形可以看出P1.0口输出电压近似为5V。转动如图527所示的转盘旋钮,可调整时基。如图时基为0.5s/格。从图中我们能够看出,波形的周期为2s,这与我们设定的目标相一致。 图524方波发生器仿真运行图图525示波器上显示的方波图 图526 调节电压幅值 图527 调节时基45 扩展练习将子情境中方波的周期更改为1秒,并能在虚拟示波器上直观地显示波形。子情境五:单片机外部中断仿真51子情境内容:外部中断是单片机的重要内容,本子情境用外部中断功能改变流水灯和数码管的显示状态。没有发生中断时,数码管从0至F顺序显示,不断循环。当有外部中断0发生时(在单片机P3.2引脚上有低电平),立即产生中断,数码管从0至F顺序显示的工作停下来,转去执行中断服务程序。中断服务程序为:流水灯上下来回流动3次。完成中断服务程序后,返回主程序原断点处继续执行,数码管接着原来的数字继续顺序显示。程序流程图如529所示。52 子情境目标:(1)理解单片机的中断原理及中断过程(2)用PROTEUS设计、仿真单片机的外部中断。53 知识点链接54 任务步骤541 步骤一:PROTEUS电路设计,实现外部中断功能改变流水灯和数码管的显示状态的原理图如图528所示。1、选取元器件单片机:AT89C51电阻、排阻:RES*LED发光二极管:LED-RED按钮:BUTTON带公共端共阳七段蓝色数码管:7SEG-COM-AN-BLUE2、放置元器件、放置电源和地、连线、元器件属性设置外部中断实验的原理图如图528所示,整个电路设计操作都在ISIS平台中进行。与子情景3相似,故不详述。与LED串联的排阻阻值为1K欧姆,与数码管串联的电阻的阻值为330欧姆左右。图528外部中断子情境原理图542 步骤二:源程序设计与目标代码文件生成(1)程序流程图SHAPE * MERGEFORMAT 图529 外部中断流程图(2)源程序设计#include#include /包含_crol_和_cror_函数所在的头文件#define uchar unsigned char#define uint unsigned intsbit d1=P10; /定义P1口的第一个引脚char i,j,m,n,temp,k;uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0x88,0x83,0xa7,0xa1,0x06,0x8e;/共阳极数码管编码void delay(int z);void main() EA=1; /中断总允许 EX0=1; /允许外部中断0中断 IT0=0; /外部中断0的触发方式为低电平触发 while(1) for(i=0;i16;i+) /主程序一直在从事顺序显示数字的工作 P0=tablei; /将段码逐个送至P0口 delay(500); /延时500ms void my_int0() interrupt 0 /外部中断0的中断服务程序:中断后流水灯上下循环三次 temp=0xfe; /给流水灯赋初值 P1=temp; / 让第一个灯点亮 for(k=0;k3;k+)/ 实现循环三次的功能 for(m=0;m7;m+)/左移7次 delay(200);temp=_crol_(temp,1);/库函数里面的循环左移函数,将temp的值左移一位后重新赋给temp P1=temp; /将左移一位后的temp值送P1口显示 for(n=0;n0;x-) for(y=110;y0;y-);543 步骤三:PROTEUS仿真加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框Program File一栏中单击打开按钮,出现文件浏览对话框,找到zhongduan.hex文件,单击“打开”按钮,完成添加文件。单击按钮,启动仿真,仿真运行片段如图530、531、532所示。图530中是主程序的运行片段,主程序中数码管从0至F顺序显示图531中,按下按钮后,在单片机P3.2引脚上有低电平,立即产生中断,数码管从0至F顺序显示的工作停下来,流水灯上下循环移动三次。图532中,完成中断服务程序后,返回主程序原断点处继续执行,数码管接着原来的数字继续顺序显示。图530主程序中数码管从0至F顺序显示图531按下按钮后数码管停下来,流水灯上下循环移动三次图532完成中断服务程序后,返回主程序原断点处继续执行,数码管接着原来的数字继续顺序显示。55 扩展练习 主程序中数码管从0至9顺序显示数字,中断发生后(在单片机P3.2引脚上有低电平),数码管从9至0反序显示。子情境六:直流电机正反转61子情境内容:用单片机AT89C51控制直流电机正反转。在此将由89C51的P2.0,P2.1通过晶体管控制继电器,当P2.0输出低电平,P2.1输出高电平时,三极管Q1导通,而三极管Q2截止,从而导致与Q1相连的继电器吸合,电机因两端产生电压而转动。由P3.0,P3.1,P3.2控制电机的正传、反转和停止。62 子情境目标:(1)掌握趋动电机正反转的电路(2)用PROTEUS实现电机正反转电路的设计,并进行实时交互仿真63 知识点链接二极管保护电路:在图533中,在两个继电器的两端都反相接了一个二极管,这个二极管非常重要,当使用电磁继电器时必须接。原因如下:线圈通电正常工作时,二极管对电路不起作用。当继电器线圈在断电的一瞬间会产生一个很强的反向电动势,在继电器线圈两端反相并联二极管就是用来消耗这个反向电动势的,通常这个二极管叫做消耗二极管,如果不加这个消耗二极管,反向电动势就会直接作用在趋动三极管上,很容易将三极管烧毁。64 任务步骤641 步骤一:PROTEUS电路设计,实现用单片机AT89C51控制直流电机正反转原理图如图533所示。图533直流电机正反转原理图1、选取元器件单片机:AT89C51电阻:RES*直流电机:MOTOR按钮:BUTTON三极管:NPN*继电器:RELAY* 二极管:DIODE*2、放置元器件、放置电源和地、连线、元器件属性设置直流电机正反转的原理图如图533所示,整个电路设计操作都在ISIS平台中进行。与子情景3相似,故不详述。(1)关于元器件属性的设置在此实例中需要特别注意:三极管基极的限流电阻更改为1K欧姆双击电机图标,弹出如图534所示的电机属性对话框,在Nominal Voltage一栏中将默认值更改为5v 双击继电器图标,在弹出的如图535所示的继电器属性对话框中,在Component Value一栏中将默认值更改为5 v图534更改电机属性图535更改继电器属性642 步骤二:源程序设计与目标代码文件生成(1)程序流程图SHAPE * MERGEFORMAT 图536 电机正反转流程图(2)源程序设计#include sbit p20=P20; /P20的功能是控制三极管的导通和截止sbit p21=P21; /P21的功能是控制三极管的导通和截止sbit p30=P30; /声明直流电机的正传位置sbit p31=P31; /声明直流电机的反转位置sbit p32=P32; /声明直流电机的停止位置void main()while(1) /无穷循环 if(p30=0) /若按下p30 p20=1; /P20控制的三极管截止p21=0; /P21控制的三极管导通,线圈吸合,两者共同控制电机正转 if(p31=0)/若按下p31 p20=0;/P20控制的三极管导通,线圈吸合 p21=1;/P21控制的三极管截止,两者共同控制电机反转 if(p32=0)/若按下p32 p20=1;/P20控制的三极管截止 p21=1;/P21控制的三极管截止,两者共同控制电机停转 643 步骤三:PROTEUS仿真加载目标代码文件,双击编辑窗口的AT89C51器件,在弹出属性编辑对话框Program File一栏中单击打开按钮,出现文件浏览对话框,找到dianji.hex文件,单击“打开”按钮,完成添加文件。单击按钮,启动仿真,仿真运行片段如图所示。图537为电机正转运行状态,按下“正转”按钮,P2.0口输出高电平,三极管处于导通状态,继电器吸合,从而使电机左端为高电平。右端依然为低电平(由于P2.1 口输出低电平,三极管处于截止状态,继电器不吸合)。在电机两端有一个5v的电压,所以电机正转。图538为电机反转运行状态,按下“反转”按钮,原理与正转的情况恰好相反,故不详述。但请大家关注两个图中继电器开关的状态,是恰好相反的。这样在两种情况下,电机的转向是相反的。图537电机正转运行状态图538电机反转运行状态65 扩展练习在此子情境的基础上加上两个按键:加速和减速。控制电机的转速。想想硬件和软件应该做如何改动。子情境七:用ADC0809实现电压表71子情境内容:利用单片机AT89C52和ADC0809设计一个数字电压表,能够测量05V之间的电压值,用四位数码管显示。72 子情境目标:(1)掌握PROTEUS中电压探针和电压表的使用方法(2)通过制作简易电压表,学会AD转换芯片在单片机应用系统中的硬件接口技术和编程方法。73 知识点链接了解ADC0809芯片的功能以及使用方法(1)功能:ADC0809芯片为8通道模/数转换器,可以和单片机直接接口,将IN0IN7任何一通道输入的模拟电压转换成八位二进制数,在时钟为500KHZ时,一次变换时间约为100us。(2)使用方法:28脚双列直插式封装如图539所示,各引脚功能如下:图539 ADC0809引脚图IN0IN7:8个通道的模拟量输入端。可输入05V待转换的模拟电压。本实例中采用IN0通道。ADDA、ADDB、ADDC:为地址输入线,用于选通IN0IN7上的一路模拟量输入,通道选择表如表51所示。在本实例中直接将ADDA、ADDB、ADDC接地,选通IN0通道。地址码输入通道ADDCADDBADDA000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7CLK:外部时钟信号输入端。ADC0809的典型时钟频率为640kHz,转换时间约为100s。本实例中产生时钟信号的方法由软件来提供。START:启动转换信号输入端。在START上升沿时,所有的内部寄存器清零,在下降沿时,开始进行A/D转换;A/D转换期间,START应保持低电平。D0D7:8位转换结果输出端。三态输出,D7是最高位,D0是最低位。EOC:ADC0809自动发出的转换状态端,EOC0,表示正在进行转换;EOC1,表示转换结束;OE:转换数据允许输出控制端。OE=0,表示禁止输出;OE=1,表示允许输出。REF(-)、REF(+):参考电压输入端。ADC0809的参考电压为5V。ALE:为高电平时,通道地址输入到地址锁存器中,下降沿将地址锁存,并译码。所以本实例中将ALE与START相连。由于ALE和START连在一起,因此ADC0809启动转换同时也在锁存通道地址。74 任务步骤741 步骤一:PROTEUS电路设计,利用单片机AT89C52和ADC0809设计一个数字电压表的原理图如图540所示。图540 ADC0809与单片机的接口电路1、选取元器件单片机:AT89C52电阻:RES*4位共阴极的数码管:7SEG-MPX4-CCA/D转换芯片:ADC0808(代替0809)电位器:POT-LOG瓷片电容:CAP晶振:CRYSTAL2、放置元器件、放置电源和地、连线、元器件属性设置数字电压表的原理图如图540所示,整个电路设计操作都在ISIS平台中进行。与子情景3相似,故不详述。(1)电压探针和电压表单击工具栏中中的电压探针按钮,连接到要实时监控的电路上,以便仿真时观察该处电压的实时变化。见图540所示。单击工具栏中的按钮(虚拟仪器),在对象选择器列表中选择DC VOLTMETER(直流电压表),在ISIS编辑窗口中合适位置单击就可以将电压表放置 好了。通过电压表可以观察到电位器电压的实时变化。(2)ADC0809与单片机的接口电路需要做些说明ADDA、ADDB、ADDC:在本实例中直接将ADDA、ADDB、ADDC接地,选通IN0通道。CLK:在图540所示的电路中,CLK与P33口相连,单片机通过软件的方法在P33口输出时钟信号供ADC0809使用。STAR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论