Proteus仿真单片机实验模拟资料.doc
《Proteus仿真单片机实验模拟资料.doc》由会员分享,可在线阅读,更多相关《Proteus仿真单片机实验模拟资料.doc(47页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、目录目录引言.1实验 1 PROTUES 环境及 LED 闪烁综合实验.6实验 2 多路开关状态指示.9实验 3 报警产生器.12实验 4 I/O 并行口直接驱动 LED 显示.15实验 5 按键识别方法之一.18实验 6 一键多功能按键识别技术.21实验 7 定时计数器 T0 作定时应用技术.24实验 8 定时计数器 T0 作定时应用技术.27实验 9 “嘀、嘀、”报警声.31实验 10 8X8 LED 点阵显示技术 .35实验 11 电子琴.39引言引言 单片机体积小,重量轻,具有很强的灵活性而且价格便宜,具有逻辑判断,定时计数等多 种功能,广泛应用于仪器仪表,家用电器,医用设备的智能化管
2、理和过程控制等领域。以 单片机为核心的嵌入式系统已经成为目前电子设计最活跃的领域之一。在嵌入式系统的中, 开发板成本高,特别是对于大量的初学者而言,还可能由于设计的错误导致开发板损坏。 利用 Proteus 我们可以很好地解决这个问题,由此我们可以快速地建立一个单片机仿真系统。1. Proteus 介绍介绍Proteus 是英国 Labcenter Electronics 公司开发的一款电路仿真软件,软件由两部分组成: 一部分是智能原理图输入系统 ISIS(Intelligent Schematic Input System)和虚拟系统模型 VSM(Virtual Model System);
3、另一部分是高级布线及编辑软件 ARES (Advanced Routing and Editing Software)也就是 PCB。1.1 Proteus VSM 的仿真的仿真Proteus 可以仿真模拟电路及数字电路,也可以仿真模拟数字混合电路。 Proteus 可提供 30 多种元件库,超过 8000 种模拟、数字元器件。可以按照设计的要求 选择不同生产厂家的元器件。此外,对于元器件库中没有的元件,设计者也可以通过软件 自己创建。 除拥有丰富的元器件外,Proteus 还提供了各种虚拟仪器,如常用的电流表,电压表, 示波器,计数/定时/频率计,SPI 调试器等虚拟终端。支持图形化的分析功
4、能等。Proteus 特别适合对嵌入式系统进行软硬件协同设计与仿真,其最大的特点是可以仿真 8051,PIA,AVR,ARM 等多种系列的处理器。Protues 包含强大的调试工具,具有对寄存 器和存储器、断点和单步模式 IAR C-SPY, Keil, MPLAB 等开发工具的源程序进行调试的功 能;能够观察代码在仿真硬件上的实时运行效果;对显示,按钮,键盘等外设的交互可视 化进行仿真。1.2 Proteus PCBProteus 的 PCB 设计除了有自动布线仿真功能外,还集成了 PCB 设计,支持多达 16 个 布线层,可以任意角度放置元件和焊接连线;集成了高智能的布线算法,可以方便地进
5、行 PCB 设计。2. 一个基于一个基于 Protesus 的单片机实例的单片机实例2.1 软件的编写软件的编写本例题采用 8 个 LED,编写程序使之闪烁起来。 软件的编写是采用汇编语言,芯片的型号选择 AT89C51, 编写 LED.ASM 文件,利用 Proteus 本身的 51 汇编功能进行编译,编译成功后生成 LED.hex 文件。2.2 绘制绘制电路图电路图运行 Proteus 的 ISIS,进入仿真软件的主界面,如图 1 所示。主界面分为菜单栏,工具 栏,模型显示窗口,模型选择区,元件列表区等。图 1 ISIS 启动界面通过左侧的工具栏区的 P(从库中选择元件)命令,在 Pick
6、 devices 窗口中选择系统所需 元器件,还可以选择元件的类别,生产厂家等。本例所需主要元器件有:AT89C51 芯片, 电阻、电容、石英晶振和发光二极管,详见表 1。 表 1 元器件清单选择元器件后连接图 2 所示电路。图 2 电路原理图Microproccessor ICs 类的芯片的引脚与实际的芯片基本相同, 唯一的差别是隐去了 GND 和 VCC 引脚,系统默认的是把它们分别连接到地和+5V 直流电源。故在电路连线时 可以不考虑电源和地的连接。 电路连接完成后,选中 AT89C51 单击鼠标左键,打开“Edit Component”对话窗口如图 3 所示,可以直接在“Clock F
7、requency”后进行频率设定,设定单片机的时钟频率为 12MHz。在“Add/remove source file”栏中选择已经编好的 LED.asm 文件,然后单击“OK”按 钮保存设计。至此,就可以进行单片机的仿真。图 3 单片机属性的设定2.3 Proteus 仿真结果仿真结果单片机的仿真结果图如图 4,模拟信号经 A/D 转换后,结果送入单片机,再在数码管上 显示;通过调节可调电阻的阻值,可以得到不同的显示结果。仿真结果表明,系统达到了 预先的设计要求。 在仿真的过程中每个管脚旁边会出现一个小方块,红色的方快表示高电平,蓝色的表 示低电平。 通过方快颜色的变化可以很方便地知道每个管
8、脚电平的变化,从而能对系统的 运行有更直观的了解,这对程序的调试有很大的帮助。 图 4 仿真结果3总结本文结合一个 LED 闪烁的单片机电路详细说明了 Proteus 在单片机开发中的应用。可 以看出,Proteus 功能十分强大,能仿真各种数字模拟电路,且操作简单,使用方便。能快 速地进行单片机仿真,加快系统开发的过程,降低开发成本。实验实验 1 PROTUES 环境及环境及 LED 闪烁综合实验闪烁综合实验1 实验任务 做单一灯的左移右移,硬件电路如图所示,八个发光二极管 L1L8 分别接在单片机 的 P1.0P1.7 接口上,输出“0”时,发光二极管亮,开始时 P1.0P1.1P1.2P
9、1.3P1.7P1.6P1.0 亮,重复循环。 2 电路原理图 图 1 3 程序设计内容 我们可以运用输出端口指令 MOV P1,A 或 MOV P1,DATA,只要给累加器 值或常数值,然后执行上述的指令,即可达到输出控制的动作。 每次送出的数据是不同,具体的数据如下表 1 所示 :P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0说明 L8L7L6L5L4L3L2L1 11111110L1 亮 11111101L2 亮 11111011L3 亮11110111L4 亮 11101111L5 亮 11011111L6 亮 10111111L7 亮 01111111L8 亮4 程
10、序框图图 25 汇编源程序ORG 0 START: MOV R2,#8 MOV A,#0FEH SETB C LOOP: MOV P1,A LCALL DELAY RLC A DJNZ R2,LOOP MOV R2,#8 LOOP1: MOV P1,A LCALL DELAY RRC A DJNZ R2,LOOP1 LJMP START DELAY: MOV R5,#20 ; D1: MOV R6,#20D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END实验实验 2 多路开关状态指示多路开关状态指示 1 实验任务 如图 1 所示,AT
11、89S51 单片机的 P1.0P1.3 接四个发光二极管 L1L4,P1.4P1.7 接了四个开关 K1K4,编程将开关的状态反映到发光二极管上。 (开关闭合,对应的灯亮, 开关断开,对应的灯灭) 。 2 电路原理图 图 1 3 程序设计内容 3.1 开关状态检测 对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相应的发光二极管指示,可以采用 JB P1.X,REL 或 JNB P1.X,REL 指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用 MOV A,P1 指令一次把 P1 端口的状态全部读入,然后取高 4 位的状态来指示。
12、3.2 输出控制 根据开关的状态,由发光二极管 L1L4 来指示,我们可以用 SETB P1.X 和 CLR P1.X 指令来完成,也可以采用 MOV P1,1111XXXXB 方法一次指示。 4 程序框图 读 P1 口数据到 ACC中 ACC内容右移 4 次 ACC内容与 F0H 相或 ACC内容送入 P1 口 图 2 5 解决方案方法一(汇编源程序) ORG 00H START: MOV A,P1 ANL A,#0F0H RR ARR A RR A RR A ORl A,#0F0H MOV P1,A SJMP START END方法二(汇编源程序) ORG 00H START: JB P1
13、.4,NEXT1 CLR P1.0 SJMP NEX1 NEXT1: SETB P1.0 NEX1: JB P1.5,NEXT2 CLR P1.1 SJMP NEX2 NEXT2: SETB P1.1 NEX2: JB P1.6,NEXT3 CLR P1.2 SJMP NEX3 NEXT3: SETB P1.2 NEX3: JB P1.7,NEXT4 CLR P1.3 SJMP NEX4 NEXT4: SETB P1.3 NEX4: SJMP START END实验实验 3 报警产生器报警产生器 1 实验任务 用 P1.0 输出 1KHz 和 500Hz 的音频信号驱动扬声器,作报警信号,要求
14、 1KHz 信号响 100ms,500Hz 信号响 200ms,交替进行,P1.7 接一开关进行控制,当开关合上响报警信号, 当开关断开告警信号停止,编出程序。 2 电路原理图 图 1 3 程序设计内容 3.1 信号产生的方法 500Hz 信号周期为 2ms,信号电平为每 1ms 变反 1 次,1KHz 的信号周期为 1ms,信号 电平每 500us 变反 1 次; 4 程序框图 图 2 5 汇编源程序FLAG BIT 00H ORG 00H START: JB P1.7,START JNB FLAG,NEXT MOV R2,#200 DV: CPL P1.0 LCALL DELY500 LC
15、ALL DELY500 DJNZ R2,DV CPL FLAG NEXT: MOV R2,#200 DV1: CPL P1.0 LCALL DELY500 DJNZ R2,DV1CPL FLAG SJMP START DELY500: MOV R7,#250 LOOP: NOP DJNZ R7,LOOP RET END实验实验 4 I/O 并行口直接驱动并行口直接驱动 LED 显示显示 1. 实验任务 如图 1 所示,利用 AT89S51 单片机的 P0 端口的 P0.0P0.7 连接到一个共阴数码管 的 ah 的笔段上,数码管的公共端接地。在数码管上循环显示 09 数字,时间间隔 0.2 秒
16、。 2. 电路原理图 图 1 3 程序设计内容 (1) LED 数码显示原理 七段 LED 显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。 LED 数码管的 ga 七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不 同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码见 表 2 “0”3FH“8”7FH “1”06H“9”6FH “2”5BH“A”77H “3”4FH“b”7CH “4”66H“C”39H “5”6DH“d”5EH “6”7DH“E”79H “7”07H“F”71H (2) 由于显示的
17、数字 09 的字形码没有规律可循,只能采用查表的方式来完成我们所需 的要求了。这样我们按着数字 09 的顺序,把每个数字的笔段代码按顺序排好!建立的表 格如下所示:TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH。4程序框图图 25 汇编源程序ORG 0 START: MOV R1,#00HNEXT: MOV A,R1 MOV DPTR,#TABLE MOVC A,A+DPTR MOV P0,A LCALL DELAY INC R1 CJNE R1,#10,NEXT LJMP START DELAY: MOV R5,#20 D2: MOV R6,
18、#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END实验实验 5 按键识别方法之一按键识别方法之一1 实验任务 每按下一次开关 SP1,计数值加 1,通过 AT89S51 单片机的 P1 端口的 P1.0 到 P1.3 显示出其的二进制计数值。 2 电路原理图 3 程序设计方法 (1)其实,作为一个按键从没有按下到按下以及释放是一个完整的过程,也就是说,当我 们按下一个按键时,总希望某个命令只执行一次,而在按键按下的 过程中,不要
19、有干扰进 来,因为,在按下的过程中,一旦有干扰过来,可能造成误触发过程,这并不是我们所想 要的。因此在按键按下的时候,图 2 要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况下, 我们可以采用电容来滤除掉这些干扰信号,但实际上,会增加硬件成本及硬件电路的体积, 这是我们不希望,总得有个办法解决这个问题,因此我们可以采用软件滤波的方法去除这 些干扰 信号,一般情况下,一个按键按下的时候,总是在按下的时刻存在着一定的干扰信 号,按下之后就基本上进入了稳定的状态。具体的一个按键从按下到释放的全过程的信号 图如上图所示: 从图中可以看出,我们在程序设计时,从按键被识别按下之后,延时
20、 5ms 以上,从 而避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下,若真得已经按下, 这时肯定输出为低电平,若这时检测到的是高电平,证明刚才是由于干扰信号引起的误触 发,CPU 就认为是误触发信号而舍弃这次的按键识别过程。从而提高了系统的可靠性。 由于要求每按下一次,命令被执行一次,直到下一次再按下的时候,再执行一次命 令,因此从按键被识别出来之后,我们就可以执行这次的命令,所以要有一个等待按键释 放的过程,显然释放的过程,就是使其恢复成高电平状态。 (1)对于按键识别的指令,我们依然选择如下指令 JB BIT,REL 指令是用来检测 BIT 是否为高电平,若 BIT1,则程序
21、转向 REL 处执行程序,否则就继续向下执行程序。 或者是 JNB BIT,REL 指令是用来检测 BIT 是否为低电平,若 BIT0,则程序转向 REL 处执行程序,否则就继续向下执行程序。 (2)但对程序设计过程中按键识别过程的框图如右图所示:图 34 程序框图 图 46 汇编源程序ORG 0 START: MOV R1,#00H ;初始化 R1 为 0,表示从 0 开始计数 MOV A,R1 ; CPL A ;取反指令 MOV P1,A ;送出 P1 端口由发光二极管显示 REL: JNB P3.7,REL ;判断 SP1 是否按下 LCALL DELAY10MS ;若按下,则延时 10
22、ms 左右 JNB P3.7,REL ;再判断 SP1 是否真得按下 INC R1 ;若真得按下,则进行按键处理,使 MOV A,R1 ;计数内容加 1,并送出 P1 端口由 CPL A ;发光二极管显示 MOV P1,A ; JNB P3.7,$ ;等待 SP1 释放 SJMP REL ;继续对 K1 按键扫描 DELAY10MS: MOV R6,#20 ;延时 10ms 子程序 L1: MOV R7,#248 DJNZ R7,$ DJNZ R6,L1 RET END实验实验 6 一键多功能按键识别技术一键多功能按键识别技术 1实验任务 如图 1 所示,开关 SP1 接在 P3.7/RD 管
23、脚上,在 AT89S51 单片机的 P1 端口接有四 个发光二极管,上电的时候,L1 接在 P1.0 管脚上的发光二极管在闪烁,当每一次按下开 关 SP1 的时候,L2 接在 P1.1 管脚上的发光二极管在闪烁,再按下开关 SP1 的时候,L3 接 在 P1.2 管脚上的发光二极管在闪烁,再按下开关 SP1 的时候,L4 接在 P1.3 管脚上的发光 二极管在闪烁,再按下开关 SP1 的时候,又轮到 L1 在闪烁了,如此轮流下去。 2电路原理图 图 1 3程序设计方法 (1)设计思想由来 在我们生活中,我们很容易通过这个叫张三,那个叫李四,另外一个是王五;那是 因为每个人有不同的名子,我们就很
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Proteus 仿真 单片机 实验 模拟 资料
限制150内