购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5 应用系统仿真与总结

在Proteus中绘制图如 1.15 所示电路,其中所涉及的典型器件参见表 1.14。

表 1.14 呼吸灯应用系统电路涉及的典型器件列表

1.Proteus中的ATmega128 模型

Proteus中的ATmega128 位于Microprocessor ICs库的AVR Family子分类库中,该分类库提供了大量的各种AVR单片机器件,如图 1.23 所示。

在ATmega128 上双击,可以弹出图 1.24 所示的属性设置对话框,其中涉及的主要参数说明如下所示。

(1)Program File:编程文件。在仿真中ATmega128 所调用的可执行源文件。

(2)CKOPT:外部晶体选择控制。当选择programmed时可以使用高于 8MHz的外部晶体,否则只能使用 8MHz及 8MHz以下的外部晶体,内部RC振荡源不受该影响。通常来说,如果使用内部的振荡源,该位使用默认值即可。

图 1.23 Proteus中的ATmega128

图 1.24 ATmega128 属性设置对话框

(3)BOOTRST:决定ATmega128 复位之后时第一条执行指令的地址。默认状态为“Unprogrammed”,表示启动时从 0x0000 开始执行,否则启动时从Boot Loader区的起始地址处开始执行程序。

(4)WDTON:看门狗设置位,决定是否使用看门狗。“programmed”为使用看门狗,否则为不使用看门狗。

(5)CKSEL Fuses:熔丝设置位。决定ATmega128 使用的时钟源,本书的实例通常会使用Int RC 8MHz(内部 8MHz RC时钟源)。

(6)Boot Loader Size:Boot Loader区的大小。通常来说,使用默认值即可。

(7)SUT Fuse;启动时间长度选择。通常来说,使用默认值即可。

(8)Advanced Properties:高级选项设置。包括时钟频率、初始化E 2 PROM和反编译 3 个选项。通常来说,都使用默认值即可。

2.使用Proteus和ICCAVR的联合调试

Proteus作为一个硬件仿真环境,它支持与ICCAVR开发环境进行联合调试,流程说明如下:

(1)新建一个Proteus ISIS电路图文件,添加对应的电路。

(2)在ICCAVR中新建一个的工程文件,输入对应的代码,并且编译生成对应的.hex文件和.cof文件。

(3)双击Proteus电路中的ATmega128,弹出如图 1.24 所示属性设置对话框,在Program File中选择上一步中生成的.cof文件,并且参考图 1.24 设置好ATmega128 的其他属性。

(4)点击运行。

仿真的运行控制包括“Start/Restart Debugging”(启动仿真)、“Pause Amiation”(暂停仿真)、“Stop Amiation”(停止仿真),同时也可以使用快捷工具栏中的相应按键控制仿真,如图 1.25 所示。这四个按钮功能分别是:启动仿真、单步运行、暂停仿真、停止仿真。

图 1.25 快捷工具栏中的仿真运行控制按钮

选择Debug菜单下的Simulation Log选项,会弹出如图 1.26 所示的记录窗体,其中记录了仿真中的一些相关信息,如果在仿真中出现错误或警告,也会在其中体现。用户也可以通过单击仿真运行控制快捷工具栏的右侧“Messages”按钮来调出该记录窗体。

图 1.26 仿真的记录窗体

单击暂停按钮,打开Debug菜单,可以看到如图 1.27 所示的ATmega128 单片机内部资源观测窗口,其详细说明如下所示。

图 1.27 Atmega128 单片机内部资源观测窗口

注意: 在设置ATmega128 属性时,选择的执行文件必须为.cof格式,否则将不会出现AVR Source Code窗口和AVR Variables窗口。

(1)AVR Source Code:ATmega128 的源代码窗口,如图 1.28 所示,在其中可以进行相应的调试操作,如单步、断点等。

(2)AVR Variables:ATmega128 的代码变量窗口,用于跟踪调试,以及观察相应变量的数据,如图 1.29 所示。

(3)AVR CPU Registers:ATmega128 的内部寄存器观察窗口,用于显示仿真过程中ATmega128 的内部寄存器数据状态,如图 1.30 所示。

图 1.28 AVR Source Code窗口

图 1.29 AVR Variables窗口

图 1.30 AVR CPU Registers窗口

(4)AVR Data Memory:ATmega128 的内部数据存储器观察窗口,用于显示仿真过程中ATmega128 内部数据存储器数据状态,如图 1.31 所示。

图 1.31 AVR Data Memory窗口

(5)AVR EPROM Memory:ATmega128 的内部E 2 PROM寄存器的观察窗口,用于显示ATmega128 内部E 2 PROM的数据状态,如图 1.32 所示。

图 1.32 AVR E 2 PROM Memory窗口

(6)AVR Program Memory:ATmega128 的程序存储器观察窗口,可以看到当前用户代码对应的机器码存放状态,如图 1.33 所示。

图 1.33 AVR Program Memory窗口

(7)AVR I/O Registers:ATmega128 的I/O寄存器观察窗口,用于显示当前ATmega128 的I/O状态,如图 1.34 所示。

图 1.34 AVR I/O Registers窗口

3.Proteus中的虚拟示波器

虚拟示波器(OSCILLOSCOPE)是用来观察当前电路中某个点的波形变化的仪器,是Proteus仿真中最常用的虚拟仪器。

在Proteus中单击工具箱中的“Virtual Instrument Mode”按钮,此时当前窗口会出现包括虚拟示波器的所有虚拟仪器的列表,在该列表中选择虚拟示波器后,在电路图中单击则可放置虚拟示波器,如图 1.35 所示。

在仿真运行状态,单击Debug菜单下的Digital OSCILLOSCOPE选项,可以打开虚拟示波器的窗体,该窗体可以分为波形输出区域、触发(Trigger)设置区域、水平(Horizontal)设置区域、通道(Channel A~Channel D)设置区域,如图 1.36 所示。

图 1.35 虚拟仪器列表

图 1.36 虚拟示波器的窗体

波形输出区域用于显示待输出的波形,可以显示单通道到最多 4 个通道的输出波形。

触发设置区域的相关按键、波轮、开关等用于设置所有通道信号的触发方式,包括水平参考线位置设置(Level)、触发信号交/直流设置(AC、DC)、触发方式设置、光标设置、触发源设置。

(1)水平参考线位置设置(Level):用于设置当前水平参考线的位置。通过拖动波轮可以使得其在-210~210 之间移动,同时波形输出区域的水平参考线将上下移动。

(2)触发信号交/直流设置:用于设置待监视信号是交流信号还是直流信号,有“AC”和“DC”两个开关选项,

(3)触发方式设置:当设置为“Auto”时,随着输入信号的刷新,虚拟示波器的输出波形会自动跟随刷新;当设置为“One-Shot”时,则只捕捉一帧波形,然后保持。

(4)光标(Cursors)设置:当该按钮被按下时,会在虚拟示波器的波形输出区域跟随鼠标状态放置一些参考线,显示对应点的电压、时间信息等,并且可以拖动。

(5)触发源设置:将虚拟示波器的触发源分别设置为通道A~通道D,在完成设置之后水平参考线会出现在当前选择通道上。

水平设置区域的相关按键、波轮、开关等用于设置所有通道信号输出的水平显示参数,包括参考源(Source)设置,位置设置(Position)和显示时间刻度设置。

(1)参考源设置:用于设置在显示区域中显示的波形的相对参考位置,包括水平、A、B、C、D五个不同选项,通常来说选择水平 即可。

(2)位置设置:用于控制显示的波形左右移动。

(3)显示时间刻度设置:用于调整波形输出区域一个刻度所代表的时间长度,取值范围为0.5μs~200ms,下方的大箭头用于整刻度调整,上面的小刻度用于小刻度调整。

通道设置区域用于设置各个通道的相关参数,分为通道A~通道D,它们是完全相同的,包括位置设置(Position)、触发设置、特殊功能开关、电压刻度设置。

(1)位置设置:用于设置该通道在波形输出显示区域的位置,该波轮与水平参考线位置设置波轮的使用方法类似,通过调节该波轮可以使对应的输出信号(A~D)在显示输出区域中移动。

(2)触发设置:单独设置该通道的触发信号,包括“交流(AC)”、“直流(DC)”、“地(GND)”、“关闭(OFF)”。

(3)特殊功能开关:包括Invert(翻转)和重叠,前者将对应的波形翻转,后者将对应的波形重叠,只有通道A和通道C具有该开关,分别对应“A+B”和“C+D”。

注意: 在使用“A+B”或者“C+D”功能时,对应的通道B或通道D的波形不会输出。

(4)电压刻度设置:与显示时间刻度设置类似,该波轮用于调整波形输出区域一个刻度所代表的电压宽度,取值范围为 2mV(毫伏)~20V,同样是大、小箭头配合使用。

4.呼吸灯应用实例的仿真

在如图 1.37 所示的电路中增加两个电压探针和一个虚拟示波器,单击运行,可以看到发光二极管以“呼吸”效果点亮和熄灭,同时在电压探针上可以看到对应的电压变化。

图 1.37 呼吸灯的Proteus仿真

调节示波器,可以看到ATmega128 单片机PA7 引脚输出的波形如图 1.38 所示,这是一个高电平宽度连续变化的波形。

图 1.38 呼吸灯系统的PWM驱动波形

可以使用基于图表的仿真方式得到系统RCL电路的响应曲线,如图 1.39 所示,从中可以看发光二极管上电流的变化情况,与呼吸灯效果正好吻合。

图 1.39 呼吸灯的RCL电路响应曲线

总结: 在实际应用中,可以通过两种方式来调整呼吸灯的效果变化,第一种方式是修改ATmega128 单片机输出的PWM驱动波形;第二种方式是修改RCL电路中电阻、电容、电感的大小。通常来说,第一种方式更加方便一些,所以其应用更加广泛。具体到本实例中,只需要修改应用代码中MAX和MIN这两个宏定义对应的数值即可。 oRo9B2gykxNbh9SRa2mmoLRBJGbgMNshoot3GruWTBrp1ZTlG8m68uVPP1bCV/CC

点击中间区域
呼出菜单
上一章
目录
下一章
×