电路仿真与工具软件应用学习第九章_第1页
电路仿真与工具软件应用学习第九章_第2页
电路仿真与工具软件应用学习第九章_第3页
电路仿真与工具软件应用学习第九章_第4页
电路仿真与工具软件应用学习第九章_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、山东师范大学山东师范大学第九讲:PROTEUS_ISIS、KEIL软件的综合应用实例51系列单片机在很多产品中得到了广泛的应用。在具体的工程实践中,单片机应用技术所涉及的实践环节较多,且硬件投入较大,如果因为控制方案有误而进行相应的开发设计,会浪费较多的时间和经费。Proteus仿真软件很好地解决了这些问题,它可以绘制硬件原理图并实现硬件调试,再与Keil编程软件进行联调,实现对控制方案的验证。尤其对于初学单片机的用户提供了极大的方便。9.1 PROTEUS_ISIS的微处理器仿真应用-8位抢答器9.2 PROTEUS_ISIS与KEIL软件的综合仿真应用-流水灯电路山东师范大学山东师范大学9

2、.1 PROTEUS_ISIS9.1 PROTEUS_ISIS的微处理器仿真应的微处理器仿真应用用-8-8位抢答器位抢答器在Proteus ISIS系统中对多种微处理器进行仿真,是其最突出的特点。在这个系统中可以通过仿真方式在计算机上执行各种微处理器的指令,并与所连接的接口电路同时仿真实现对电路的快速调试。【例【例9-19-1】:】:ProteusProteus仿真设计一个八位的抢答器。仿真设计一个八位的抢答器。在本例中用到了数码管、蜂鸣器、三极管、按键这些最普通也是最常用的元器件,也用到了总线和总线分支这种布线方式。我们用51单片机的P1口来驱动一个数码管;用P3口作为八个抢答信号的输入端;

3、用P2.0通过三极管Q1来驱动蜂鸣器;用P2.2作为抢答器复位信号的输入端。电路如下图所示。9.1.1 9.1.1 元器件查找、放置与电路连线元器件查找、放置与电路连线山东师范大学山东师范大学山东师范大学山东师范大学9.1.29.1.2软件编程软件编程设计好了硬件线路之后,接下来就是软件编程的问题。如何编写程序呢?当然需要根据硬件的连接情况和控制要求来编写程序。程序要达到的控制要求是:只要一开电源或者主持人按下复位按键,数码管就显示“0”表示可以开始抢答。一旦有抢答信号,就立即判断出是那一位最先抢答,并把相应的位号送至数码管显示,对其后的抢答信号不再响应,同时蜂鸣器持续间隔鸣响,给出音响提示信

4、号。当主持人按下复位信号后开始下一轮抢答!程序设计流程图右图所示。山东师范大学山东师范大学八位输入抢答器参考程序清单 ORG 0000 JMP BEGIN;程序开始BEGIN: MOV P2,#0FFH ;P2口置高电平,准备接收信号。 MOV R4,#0; “R4”的位标志值清零。 MOV A,R4; “R4”位标志值送A寄存器AGAIN: MOV DPTR,#TABLE ;共阴极数码管代码表首址送DPTR MOVC A,A+DPTR ;取出显示”0”的代码送P口显示 MOV P1,ALOOP: MOV A,P3 ;接收P3口的抢答信号。 CPL A ;抢答信号求反 JZ LOOP ;如果没

5、有抢答信号再返回LOOP继续扫描LOOP1: RRC A ;有抢答信号则逐次移动判断是那一位抢答 INC R4 ;每移一次位,R4位标志值加1 JNC LOOP1;如果没有遇到抢答信号返回LOOP1继续移位 MOV A,R4 ;遇到抢答信号把R4位标志的只送A MOVC A,A+DPTR ;找到相应位的显示代码 MOV P1,A ;送P1口显示山东师范大学山东师范大学LOOP2: JNB P2.2, BEGIN ;若主持人按了复位信号健则转向程序复位 CPL P2.0 ;若没按复位信号键,则通过P2.2给出高低信号驱动蜂鸣器 MOV R5,#20 ;准备调用20次延时20ms程序 LCALL

6、DELAY ;调用延时程序 SJMP LOOP2;P2.2口反复间隔0.4秒变化,驱动蜂鸣器DELAY: MOV R6,#50 ;延时R520ms子程序 D1: MOV R7,#100 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,DELAY RET TABLE: ;共阴极数码管代码表 DB 3FH,06H,5BH,4FH,66H ;01234 DB 6DH,7DH,07H,7FH,6FH ;46789 DB 77H,7CH,0B9H,5EH,79H,71h ;ABCDEF END山东师范大学山东师范大学9.1.3 Proteus9.1.3 Proteus中的源程序设计与编译中的源

7、程序设计与编译Proteus VSM提供了简单的文本编辑器,用它作为源程序的编辑环境。对于不同系列的单片机,VSM均提供了相应的编译器,使用时可根据单片机的型号和语言要求来选取。编译器有以下几种:ASEM51(51系列单片机编译器);ASM11(Motorola单片机编译器);AVRASM(Atmel AVR系列单片机编译器);AVRASM32(Atmel AVR系列单片机编译器);MPASM(PIC单片机编译器);MPASMSWIN(PIC单片机编译器)。1)建立源程序文件在Proteus ISIS界面中单击菜单Soure(源程序),在弹出的下拉菜单中单击“Add/Remove Source

8、 Files”(添加/移开源程序)选项,弹出对话框。山东师范大学山东师范大学单击“Code Generation Tool”(目标代码生成工具)下方框中按钮,弹出下拉菜单,根据需要选择相应的编译器,例如“ASEM51”(51系列单片机编译器)。 山东师范大学山东师范大学在对话框中单击“New”按钮,弹出下图所示的对话框,在文件名框中输入新建源程序文件名“qdq1”,单击“打开”按钮,弹出下图中所示的小对话框,选择“是”按钮,新建的源程序文件就添加到“Source Code Filename”方框中。同时在ISIS界面的“Source”菜单中也加入了源程序文件名“qdq1.asm”。山东师范大学

9、山东师范大学2. 编写源程序代码单击菜单【Source】【qdq1.asm】,出现下图所示的源程序编辑窗口。编写源程序后存盘退出。图6-5 源程序编辑窗口山东师范大学山东师范大学3. 3. 源程序编译源程序编译 (1) 编译器设置。第一次使用编译器时需进行相关的设置,单击菜单【Source】【Define Code Generation Tools】,出现下图所示界面,本例中实际设置结果如图所示 编译源程序,生成目标代码文件。图6-6 编译器设置界面山东师范大学山东师范大学(2)生成.hex文件单击【Source】【Build All】,编译结果在弹出的编译日志对话框中。如果没有错误便成功生成

10、目标代码“.hex”文件。本例中生成的目标代码文件为“.HEX”。山东师范大学山东师范大学抢答器仿真后的结果山东师范大学山东师范大学9.2 建立一个建立一个Keil程序程序现通过建立一个简单的LED流水灯的例子来初步学习keil的基本用法。硬件参考电路如下图所示。 流水灯(跑马灯)电路山东师范大学山东师范大学 启动Keil软件。通过双击电脑桌面上的Keil uVision3快捷方式图标来启动。 新建工程。执行Keil软件的菜单Project | New Project,弹出一个名为Create New Project的对话框。如下图所示,先选择一个合适的文件夹准备来存放工程文件,比如E:Pro

11、jectLedFlash,其中LedFlash是新建的文件夹。建议:今后每新建一个工程都要在适当的磁盘位置新建一个文件夹用来保存工程文件,以方便管理,并养成良好的习惯。最后,为工程取名为LedFlash,并保存。 新建Keil 工程山东师范大学山东师范大学 为项目选择CPU器件选择CPU。紧接着,Keil C51 提示选择CPU 器件。8051内核单片机最早是由鼎鼎大名的Intel 公司发明的,后来其他厂商如Philips、Atmel、Winbond 等先后推出其兼容产品,并在8051 的基础上扩展了许多增强功能。在这里可以选择Atmel 公司新推出89S52参见下图。山东师范大学山东师范大学

12、 接下来弹出一个如下图所示的对话框。该对话框提示用户是否要把标准8051 的启动代码添加到工程中去。Keil C51 既支持C 语言编程也支持汇编语言编程。如果打算用汇编语言写程序,则应当选择“否(N)”。如果打算用C 语言写程序,一般也选择“否(N)”,但是,如果用到了某些增强功能需要初始化配置时,则可以选择“是(Y)”。在这里,我们选择“否(N)”,即不添加启动代码。 至此,一个空的Keil工程建立完毕。 选择是否要添加启动代码山东师范大学山东师范大学 执行菜单File | New,出现一个名为Text n(其中n 表示序号)的文档。 接着执行菜单File | Save,弹出一个名为Sav

13、e As的对话框。将文件名改为main.c,然后保存,参见下图。注意:扩展名“.c”不可省略。 保存新建的源程序文件山东师范大学山东师范大学准备添加源程序文件到工程中添加源程序文件到工程中。一个空的源程序文件main.c已经建立,但是这个文件与刚才新建的工程之间并没有什么内在联系。我们需要把它添加到工程中去。单击Keil软件左边项目工作窗口“Target 1”上的“”,将其展开。然后右击“Source Group 1”文件夹,会弹出如下图所示的选择菜单。单击其中的“Add Files to Group Source Group 1”项,将弹出如下页图所示的对话框。山东师范大学山东师范大学向工程

14、中添加源程序文件山东师范大学山东师范大学 现在开始输入源程序。先最大化“main.c”源程序窗口,然后请按下面给出的参考程序清单输入程序代码。 程序清单程序清单 #include #define uchar unsigned char #define uint unsigned int uchar code display72= 0 xFE,0 xFD,0 xFB,0 xF7,0 xEF,0 xDF,0 xBF,0 x7F, 0 xBF,0 xDF,0 xEF,0 xF7,0 xFB,0 xFD,0 xFE,0 xFF, 0 xFE,0 xFC,0 xF8,0 xF0,0 xE0,0 xC0,

15、0 x80,0 x00, 0 x80,0 xC0,0 xE0,0 xF0,0 xF8,0 xFC,0 xFE,0 xFF, 0 xFC,0 xF9,0 xF3,0 xE7,0 xCF,0 x9F,0 x3F, 0 x9F,0 xCF,0 xE7,0 xF3,0 xF9,0 xFC,0 xFF, 0 xE7,0 xDB,0 xBD,0 x7E,0 xBD,0 xDB,0 xE7,0 xFF, 0 xE7,0 xC3,0 x81,0 x00,0 x81,0 xC3,0 xE7,0 xFF, 0 xAA,0 x55,0 x18,0 xFF,0 xF0,0 x0F, 0 x00,0 xFF,0 x00

16、,0 xFF ; 山东师范大学山东师范大学void delayms(uint); /延时函数的声明 void main(void) uchar i; while (1) for(i = 0 ; i 72; i+ ) P1=displayi; delayms(350); /延时,设实参为350 /end of while /end of main void delayms(uint ms) / 延时子程序 uchar k; while(ms-) for(k = 0; k 120; k+); 山东师范大学山东师范大学 单击Keil工具栏的“ ”图标,弹出名为Options for Target T

17、arget 1的对话框。单击Output标签页,选中Create HEX File项,然后“确定确定”。参见下图。 编译环境设置山东师范大学山东师范大学 单击工具栏的按钮“ ”编译当前源程序。编译结果会显示在输出窗口内。如果是“0 Error(s), 0 Warning(s).”就表示程序没有问题了(至少是在语法上不存在问题了)。如果存在错误或警告,请仔细检查程序是否与参考程序清单一致。修改后,再编译,直到通过为止。 编译后的结果会生成Intel HEX 格式的程序LedFlash.hex文件。该文件可以被专门的芯片烧写工具(编程器)载入并最终烧录到具体的芯片中。 如果用PROTEUS做仿真调试,可按图跑马灯电路在PROTEUS ISIS平台下画好电路,鼠标指向微处理器89C52,右键点击,这时89

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论