用Proteus仿真单片机的方法.doc

上传人:hw****26 文档编号:3116351 上传时间:2019-05-21 格式:DOC 页数:12 大小:516.14KB
下载 相关 举报
用Proteus仿真单片机的方法.doc_第1页
第1页 / 共12页
用Proteus仿真单片机的方法.doc_第2页
第2页 / 共12页
用Proteus仿真单片机的方法.doc_第3页
第3页 / 共12页
用Proteus仿真单片机的方法.doc_第4页
第4页 / 共12页
用Proteus仿真单片机的方法.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、 用 PROTEUS对单片机进行仿真的方法与实例吴汉清Proteus软件是英国 Labcenter Electronics公司的一款电路设计与仿真软件,它包括 ISIS、ARES 等软件模块,ARES 模块主要用来完成PCB的设计; ISIS 模块用来完成电路原理图的布图和仿真。它可以进行模拟电路仿真、数字电路仿真,也可以进行单片机及其外围电路组成的系统的仿真;软件提供了各种虚拟仪器,如示波器、逻辑分析仪、信号发生器、电压表、电流表等。和其它仿真软件相比,Proteus ISIS 最大特色是对单片机系统的仿真,目前支持的单片机类型有: 68000系列、8051系列、ARM 系列、AVR 系列、

2、PIC 系列、Z80系列、HC11系列等。本文主要介绍 Proteus软件在单片机方面的仿真功能,即 ISIS模块的用法。在单片机学习开发的过程中,程序的调试是一个很重要的环节,要安装电路进行实验,而且电路在调试过程中往往要进行调整和改变,这不紧增加了费用和难度,而且也影响了学习和开发的进度,这也成了一些初学者学习的障碍。如果使用 Proteus 软件就可以大大节省时间和开发费用,可以在软件仿真通过后再制作印刷电路板进行电路实验。一、Proteus ISIS 软件的工作环境和一些基本使用方法下面通过一个流水灯的实例来说明 Proteus的基本使用方法,使用的软件版本是 Proteus.Prof

3、essional 7.1 SP2。流水灯使用 AT89C51单片机,用 P2口作输出口。先在 Keil uVision编译器中输入下列程序:#include void Delay1ms(unsigned int count)/延时子程序unsigned int i,j;for(i=0;iLEDIndex);if(LEDIndex=7)LEDDirection = !LEDDirection;LEDIndex = (LEDIndex+1)%8;Delay1ms(200);将上述程序编译生成目标文件 LED.hex。然后按下列步骤进行:1. 运行 Proteus 7 Professional(IS

4、IS 7 Professional)出现如图1所示的界面:这是一种标准的 Windows界面,包括标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。2.添加元件到对象选择器元件列表中单击绘图工具栏中的按钮,再单击对象选择按钮 P,出现挑选元件对话框,见图2。按表1添加本例所用的元件。表1名称 元件 种类(Category) 子种类(Sub-category)单片机 AT89C51 Microprocessor ICs 8051 Family按钮开关 BUTTON Switches unsigned in

5、t L;unsigned char codeBitTab3=0xdf,0xef,0xf7;/位驱动码unsigned char codeDispTab11=0x41,0xcf,0x52,0x46,0xcc,0x64,0x60,0x4f,0x40,0x44,0xff;/字形码sbit P1_2=P12;sbit P3_6=P36;void Delay1ms(unsigned int count) /延时程序for(n=0;n=200)DispBuf2=10;DispBuf1=10;DispBuf0=1; /超量程,百位数显示1,个位、十位不显示(灭)else /不超量程,取各位数值DispBuf

6、2=L;/取个位数L=L/10;DispBuf1=L;/取十位数DispBuf0=L/10;/取百位数用 Keil uVision将上述程序编译生成目标文件 DGZS.hex。电路中所使用的元件见表2。表2名称 元件 种类(Category) 子种类(Sub-category)单片机 AT89C2051 Microprocessor ICs 8051 Family电阻器 RES Resistors Generic可变电阻器 POT-LIN Resistors Variable三极管 2N2905 Transistors Bipolar电感器 IND-AIR Inductors Generic4

7、位共阴数码管 7SEG-MPX4-CA Optoelectronics 7-Segment Displays绘制好的仿真电路图如图9。图中添加示波器时,先左键选择模型选择工具栏中的 图标,再选择 OSCILLOSCOPE,并在原理图编辑窗口中左击,这样示波器就被放置到原理图中了。由于 AT89C2051的 P1.0和 P1.1是复用端口,除了作 I/O口外,还有一个功能是作为电压比较器的输入端,P1.0为同相输入端,P1.1为反相输入端,这里作电压比较器的输入端使用,因此在设置 AT89C2051的属性时要将其设置电压比较器的输入端,即 Ehable Comparator选择 Yes,如图10

8、。被测电感器的电感量定为1H。单击开始仿真,可变电阻 RP1是用来校准测量值的,按动 RP1的+或-按钮,调节 RP1使数码管显示100。仿真结果见图10。电阻 R2为换挡电阻,改变它的值即可改变挡位。2. 充电器这是用 PIC12F675单片机做的充电器,能对两节镍镉或镍氢电池充电,充电器采用电压监测的方法判断充电是否结束,充电结束后能自动停止充电。图11是电路图,图中 PIC12F675的7脚作模拟信号输入端 AN0使用。单片机使用内部时钟振荡器,引脚3作充电控制电压输出端 GP4使用。S 为复位开关,复位开关主要在重新放上电池后使用。接上电源后,PIC12F675的 GP4输出低电平,三

9、极管 VT1饱和导通,两节电池开始充电。随着电池电压的上升,输入到单片机的模拟电压也不断升高,当电压大于预定的设定值3V 时,GP4输出高电平使 VT1截止,电池停止充电,并自锁在这一工作状态,即使电池在停止充电后电压略有下降也不会重新进行充电。在 PIC单片机的 MPLAB IDE编译器中输入下列程序:#INCLUDE “P12F675.INC“W_TEMP EQU 20HSW EQU 21HTEMP EQU 22HORG 000HMAIN NOPMOVLW 00HMOVWF SWMOVLW 95HMOVWF TEMPBSF STATUS,RP0MOVLW B00001001MOVWF TR

10、ISIOMOVLW B00000001 MOVWF ANSELMOVLW B10000111 MOVWF OPTION_REGBCF STATUS,RP0MOVLW B00000111MOVWF CMCONBCF GPIO,GP4BSF GPIO,GP5LOOP BTFSC SW,0GOTO LOOPMOVLW B00000001MOVWF ADCON0BSF ADCON0,GOADC BTFSS PIR1,ADIFGOTO ADCMOVF ADRESH,0SUBWF TEMP,0BTFSC STATUS,CGOTO LOOPBSF GPIO,GP4BCF GPIO,GP5BSF SW,0 G

11、OTO LOOPEND然后编译生成目标文件 charger.hex。对充电器仿真时有一个难点,就是 Proteus元件库中没有可仿真的充电电池,它的电池元件加上充电电流后电压不会上升,为此可在电池上串一只可变电阻,这样改变可变电阻的大小就可以就可以改变充电回路两端的电压,用来模拟电池电压的变化。电路中所使用的元件见表3。表3名称 元件 种类(Category) 子种类(Sub-category)单片机 PIC16F675 Microprocessor ICs PIC12 Family电阻器 RES Resistors Generic可变电阻器 POT-LIN Resistors Variabl

12、e三极管 2N5415 Transistors Bipolar按钮开关 BUTTON Switches void DelayMs(char i) char j;for(;i!=0;i-)for(j=143;j!=0;j-);#pragma interrupt_handler INT_0:2void INT_0(void)if(k!=250)k=k+5;OCR1A=k; /设置 PWM参数DelayMs(100);#pragma interrupt_handler INT_1:3void INT_1(void)if(k!=5)k=k-5;OCR1A=k; /设置 PWM参数DelayMs(100

13、);void main(void)DDRD=0X00; PORTD=0xff; /设置 PD口为带上拉电阻的输入口DDRB=0xff; /设置 PB口为推挽1输出PORTB=0xff;SREG=0x80; /开全局中断GICR=0xc0; /开外部中断TCCR1A=0xc1; /8位 PWM,向上计数置位 OC1A,向下计数清零 OC1ATCCR1B=0x01; /时钟1分频,PWM 信号频率为1M/512=2KHzk=125;OCR1A=k; /设置 PWM参数while(1);编译生成目标文件 djts.hex。电路中所使用的元件见表4。表4名称 元件 种类(Category) 子种类(Sub-category)单片机 ATmega8 Microprocessor ICs AVR Family电阻器 RES Resistors Generic三极管 2N3054 Transistors Bipolar按钮开关 BUTTON Switches

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。