基于Proteus的AVR单片机C语言程序设计与仿真
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 Proteus VSM虚拟系统模型

Proteus是一个嵌入软、硬件设计的仿真平台,它包括原理图输入系统Proteus ISIS、带扩展的ProSpice混合模型仿真器、动态器件库、高级图形分析模块和处理器虚拟系统仿真模型Proteus VSM。Proteus VSM提供了一系列可视化虚拟仪器及激励源,借助这些可进行虚拟仿真及图形分析。

1.激励源

激励源为虚拟仿真提供激励,并允许用户对其进行参数设置。在工具箱中单击信号源,在弹出的“Generator”窗口中将出现以下各种激励源供用户选择。

DC:直流信号发生器,即直流激励源。

SINE:幅值、频率和相位可控的正弦波发生器,即正弦激励源。

PULSE:幅值、周期和上升/下降沿时间可控的模拟脉冲发生器,即模拟脉冲激励源。

EXP:指数发生器,可产生与RC充电/放电电路相同的脉冲波,即指数激励源等。

SFFM:单频率调频波信号发生器,即单频率调频波激励源。

PWLIN:PWLIN信号发生器,可产生任意分段线性信号,即分段性激励源。

FILE:FILE信号发生器,它的数据来源于ASCII文件。它也即FILE信号激励源。

AUDIO:音频信号发生器,使用Windows WAV文件作为输入文件,结合音频分析图表,可以听到电路对音频信号处理后的声音。它也即音频信号激励源。

DSTATE:数字单稳态逻辑电平发生器,即数字单稳态逻辑电平激励源。

DEDGE:单边沿信号发生器,即单边沿信号激励源。

DPULSE:单周期数字脉冲发生器,即数字单边沿信号激励源。

DCLOCK:数字时钟信号发生器,即数字时钟信号激励源。

DPATTERN:数字序列信号发生器,即序列信号激励源。

在仿真时,若需用到激励源,可将其放置到原理图中并与相应电路连接起来。双击该激励源,可进行相关参数的设置。

2.Proteus VSM虚拟仪器的使用

在Proteus VSM中提供了许多虚拟仪器供用户使用。在工具箱中单击虚拟仪器,在弹出的“Instruments”窗口中将出现以下虚拟仪器供用户选择:OSCILLOSCOPE示波器、LOGIC ANALYSER逻辑分析仪、COUNTER TIMER计数/定时器、VIRTUAL TERMINAL虚拟终端、SPI DEBUGGER(SPI总线调试器)、I2C DEBUGGER(I2C总线调试器)、SIGNAL GENERATOR信号发生器、PATTERIN GENERATOR序列发生器、DC VOLTMETER直流电压表、DC AMMETER直流电流表、AC VOLTMETER交流电压表、AC AMMETER交流电流表。

1)OSCILLOSCOPE示波器的使用在Proteus7.1中提供了4通道虚拟示波器,以供用户使用。

(1)虚拟示波器的功能:在工具箱中单击虚拟仪器,在弹出的“Instruments”窗口中单击OSCILLOSCOPE,再在原理图编辑窗口中单击便可添加示波器。将示波器与被测点连接好,并按下运行按钮时,将弹出虚拟示波器界面,如图2-53所示。其特点为:

图2-53 虚拟示波器界面

①有四通道A、B、C、D,波形分别用黄色、蓝色、红色、绿色表示;

②有20~2mV/div的可调增益;

③扫描速度为200~0.5μs/div;

④可选择四个通道中的任一通道作为同步源;

⑤交流或直流输入。

(2)虚拟示波器的使用:虚拟示波器与真实示波器的使用方法类似,具体如下所示。

①按照电路的属性设置扫描速度,用户可看到所测量的信号波形。

②如果被测信号有交流分量,则在相应的信号输入通道选择AC交流工作方式。

③调整增益,以便在示波器中显示适当大小的波形。

④调节垂直位移滑轮,以便在示波器中显示适当位置的波形。

⑤拨动相应的通道定位选择按钮,再调节水平定位和垂直定位,以便观测波形。

⑥如果在大的直流电压波形中含有小的交流信号,则需要在连接的测试点和示波器之间加一个电容器。

(3)虚拟示波器的工作方式:虚拟示波器有以下3种工作方式。

①单踪工作方式,可以在A、B、C、D四个通道中选择任一通道作为显示。

②双踪工作方式,可以在A、B、C、D四个通道中选择任一通道作为触发信号源。

③叠加工作方式,A、B通道有效,选择A+B时,可将A、B两路输入相互叠加产生波形;C、D通道有效,选择C+D时,可将C、D两路输入相互叠加产生波形。

(4)虚拟示波器的触发:虚拟示波器具有自动触发功能,使得输入波形可以与时基同步。

①可以在A、B、C、D四个通道中选择任一通道作为触发器。

②触发旋钮的刻度表是360°循环可调,这样方便操作。

③每个输入通道可以选择DC直流、AC交流、接地三种方式,并可选择OFF将其关闭。

④设置触发方式为上升时,触发范围为上升的电压;设置触发方式为下降时,触发范围为下降的电压。如果超过一个时基的时间内没有触发发生,将会自动扫描。

2)LOGIC ANALYSER逻辑分析仪的使用逻辑分析仪用于将连续记录的输入数字信号保存到容量非常大的数据缓冲区中。这是一个采样的过程,因此,它具有可调的分辨率,用于定义可以记录的最短脉冲。逻辑分析仪也是一种类似于示波器的波形测试设备,它可以监测硬件电路工作时的逻辑电平(高或低)并加以存储,还可用图形的方式直观地表达出来,便于用户检测、分析电路设计(硬件设计和软件设计)中的错误。

(1)虚拟逻辑分析仪的功能:在工具箱中单击虚拟仪器,在弹出的“Instruments”窗口中单击LOGIC ANALYSER,再在原理图编辑窗口中单击便可添加逻辑分析仪。将逻辑分析仪与被测点连接好,并按下运行按钮时,将弹出虚拟逻辑分析仪界面,如图2-54所示。其主要特点为:

图2-54 虚拟逻辑分析仪界面

①有16个1位的通道和4个8位的总线通道;

②采样速度范围为每次采样间隔200μs到每次采样间隔0.5ns,相应的采集时间为5ms~2s;

③显示的缩放范围为每次分配1000次采样到每次分配1次采样。

(2)虚拟逻辑分析仪的使用:

①设置一个合适的采样间隔值,用于设定能够被记录的脉冲最小宽度,采样间隔越小,数据采集时间越短;

②设置触发条件,拨动开关选择下降沿或上升沿;

③由于采集缓冲区允许10000次采样,而显示仅有250像素的宽度,所以在采集缓冲区中需进行缩放观看,缩放观看的设置是旋转显示比例按钮。

3)COUNTER TIMER计数/定时器的使用虚拟计数/定时器可用于测量时间间隔、信号频率的脉冲数。

(1)虚拟计数/定时器的功能:在工具箱中单击虚拟仪器,在弹出的“Instruments”窗口中单击COUNTER TIMER,再在原理图编辑窗口中单击便可添加计数/定时器。将计数/定时器与被测点连接好,并按下运行按钮时,将弹出虚拟计数/定时器界面,如图2-55所示。其主要特点为:

图2-55 虚拟计数/定时器界面

①定时器模式(显示秒),单位为1μs;

②定时器模式(显示时、分、秒),单位为1ms;

③频率计模式,单位为1Hz;

④计数器模式,计数范围为0~99999999。

(2)虚拟计数/定时器的使用。

①定时器模式的使用:将计数/定时器放在原理图编辑窗口中时,它有3个引脚,即CE、RST和CLK。CE为时钟使能端,这个信号将会在时间显示之前得到控制,若不需要它,可将该引脚悬空。RST为复位引脚,它可将定时器复位清零;若不需要它,也可将该引脚悬空。RST引脚是边沿触发,不同于电平触发。如果需要保持定时器为零状态,可以将CE和RST引脚连接起来。

若定时器连接好后,将光标指向定时器并按下Ctrl+E键或右击鼠标选择“Edit Properties”可打开Edit Component对话框,如图2-56所示。在此对话框中根据需要设置工作模式(秒或时、分、秒模式)、计数使能极性(LOW或HIGH)和复位信号边沿极性(上升沿或下降沿)。这些设置好后,再单击按钮进行仿真。

图2-56 虚拟定时器的编辑对话框

②频率计模式的使用:将计数/定时器放在原理图编辑窗口中时,可根据需要先将时钟引脚CLK与被测量的信号连接起来(在频率计模式下CE和RST引脚无效),再在图2-56中将工作模式选择为频率计模式,然后按下按钮进行仿真。

频率计实际上是通过仿真时间中的每一秒来测出上升沿的次数的,因此要求输入信号稳定并且在完整的1s内有效。同时,如果仿真不是在实时速率下进行(如计算机CPU运行程序较多)的,那么频率计会延长读数产生的时间。

由于计数/定时器为纯数字元器件,所以要想测量低电平模拟信号频率,需要在计数/定时器的CLK引脚之前放置一个ADC(模/数转换器)及其他逻辑开关,用来确定一个合适的阈值。因为在Proteus中模拟信号仿真速度仅为数字信号仿真速度的1/1000,所以计数/定时器不适合测量高于10kHz的模拟振荡电路频率,在这种情况下,用户可以使用虚拟振荡器来测量信号。

③计数器模式的使用:将计数/定时器放在原理图编辑窗口中时,可先根据需要将CE使能端、RST复位端与被测量的信号连接起来或悬空,再在图2-56中设置工作模式(秒或时、分、秒模式)、计数使能极性(LOW或HIGH)和复位信号边沿极性(上升沿或下降沿)。这些设置好后,单击按钮进行仿真。

4)VIRTUAL TERMINAL虚拟终端的使用虚拟终端允许用户通过计算机的键盘并经由RS232V异步发送数据到仿真微处理系统。虚拟终端在嵌入系统中有特殊的用途,可以用它显示正在开发的软件所产生的信息。

(1)虚拟终端的功能:在工具箱中单击虚拟仪器,在弹出的“Instruments”窗口中单击Virtual Terminal,再在原理图编辑窗口中单击便可添加虚拟终端。将虚拟终端与相应引脚连接好,并按下运行按钮时,将弹出虚拟终端界面,如图2-57所示。其主要特点为:

图2-57 虚拟终端界面

①全双工,可同时接收和发送ASCII码数据;

②简单两线串行数据接口,RXD用于接收数据,TXD用于接收数据;

③简单的双线硬件握手方式,RTS用于准备发送,CTS用于清除发送;

④波特率范围为300~57600bps;

⑤ 7或8个数据位;

⑥包含奇校验、偶校验和无校验;

⑦具有0、1或2位停止位;

⑧除硬件握手外,系统还提供了XON/XOFF软件握手方式;

⑨可对RX/TX和RTS/CTS引脚输出极性不变或极性反向的信号。

(2)虚拟终端的使用:将虚拟终端放在原理图编辑窗口中时,有4个引脚,即RXD、TXD、RTS和CTS。其中RXD为数据接收引脚;TXD为数据发送引脚;RTS为请求发送信号;CTS为清除传送引脚,是对RTS的响应信号。应将RXD和TXD引脚连接到系统的发送和接收线上;如果目标系统用硬件握手逻辑,应把RTS和CTS引脚连接到合适的溢出控制线上。

若虚拟终端连接好后,将光标指向虚拟终端并按下Ctrl+E键或右击鼠标选择“Edit Properties”打开Edit Component对话框,如图2-58所示。在此对话框中根据需要设置传输波特率、数据长度(7位或8位)、奇偶校验(EVEN为偶校验,ODD为奇校验)、极性和溢出控制等。这些设置好后,单击按钮进行仿真。

图2-58 虚拟终端的编辑对话框

仿真时,若虚拟终端接收到数据后,会立即在终端显示该数据;当数据传输到系统时,将光标置于虚拟终端窗口,用户通过计算机键盘可以输入字符或数字。

5)SPI DEBUGGER(SPI总线调试器)的使用 SPI(Serial Peripheral Interface)总线是Motorola公司最先推出的一种串行总线技术,它是在芯片之间通过串行数据线(MISO、MOSI)和串行时钟线(SCLK)实现同步串行数据传输的技术。SPI提供访问一个4线、全双工串行总线的能力,支持在同一总线上将多个从器件连接到一个主器件上,可以工作在主方式或从方式下。

SPI总线调试器用来监测SPI接口,它允许用户监控SPI接口的双项信息,观察通过SPI总线发送数据的情况。

(1)SPI总线调试器:在工具箱中单击虚拟仪器,在弹出的“Instruments”窗口中单击SPI DEBUGGER,再在原理图编辑窗口中单击便可添加SPI总线调试器。将SPI总线调试器与相应引脚连接好,并按下运行按钮时,将弹出SPI总线调试器界面,如图2-59所示。

图2-59 SPI总线调试器界面

将SPI总线调试器放在原理图编辑窗口中时,有4个引脚,即SCK、DIN、DOUT和SS。其中SCK为时钟引脚,用于连接SPI总线的时钟线;DIN为数据输入引脚,用于接收数据;DOUT为数据输出引脚,用于发送数据;SS为从设备选择引脚,用于激活期望的调试元器件。左键单击SPI总线调试器,按下“Ctrl+E”键,会弹出如图2-60所示的对话框。

图2-60 SPI总线调试器的编辑对话框

SPI主/从选择:指定为主设备(Monitor)还是从设备(Slave)。

SCK空闲状态:指定SCK为高电平或低电平时空闲。

采样边沿:指定DIN引脚采样的边沿,或当SCK从空闲到激活,或从活跃到空闲时进行采样。

字长:指定每一个传输数据的位数,可以选择的位数为1~16。

(2)SPI总线调试器的使用:SPI总线调试器传输数据的操作步骤如下所示。

①将SPI总线调试器放在原理图编辑窗口中,将SCK和DIN的引脚与相关设备引脚连接起来。

②单击SPI总线调试器,按下“Ctrl+E”键进行相关设置,如字长、位顺序、取样边沿的设置等。

③设置好后,单击按钮,弹出如图2-59所示界面,在队列容器中输入需要传输的数据。

④当输入需要传输的数据后,既可直接传输数据,也可按下“Add”按钮,将数据存放到预义定队列中。

⑤单击按钮,在图2-59的对列缓冲区中初始化传输项。

⑥再次单击按钮时,若序列输入为空,也可选择预定义序列,单击“Queue”按钮,将预定义队列中的内容复制到队列缓冲区中。

⑦再一次单击按钮时,序列被传输。

6)I2C DEBUGGER(I2C总线调试器)的使用I2C(Inter-Integrated Circuit)总线是由Philips公司推出的一种两线式串行总线,用于连接微控制器及其外围设备,是实现同步双向串行数据传输的技术。I2C总线于20世纪80年代推出,是一种具有两线(串行数据线和串行时钟线)的标准总线;该串行总线的推出为单片机应用系统的设计带来了极大的方便,有利于系统设计的标准和模块化,减少了各电路板之间的大量连线,从而提高了可靠性,降低了成本,使系统的扩展更加方便灵活。

I2C总线调试器用来监测SPI接口,它允许用户监控I2C接口的双项信息,观察通过I2C总线发送数据的情况。

(1)I2C总线调试器:在工具箱中单击虚拟仪器,在弹出的“Instruments”窗口中单击I2C DEBUGGER,再在原理图编辑窗口中单击便可添加I2C总线调试器。将I2C总线调试器与相应引脚连接好,并按下运行按钮时,将弹出I2C总线调试器界面,如图2-61所示。

图2-61 I2C总线调试器界面

将I2C总线调试器放在原理图编辑窗口中时,有3个引脚,即SCL、SDA和TRIG。其中SCL为输入引脚,用于连接I2C总线的时钟线;SDA为双向数据传输线;TRIG为触发信号线。左键单击I2C总线调试器,按下“Ctrl+E”键,会弹出如图2-62所示的对话框。

图2-62 I2C总线调试器的编辑对话框

字节地址1:使用该终端对从设备进行仿真时,该属性用于指定从设备的第一地址字节。主机使用最低有效位作为系统进行读/写标志位,而在寻址时,这一位被忽略。如果该位没有被设置为空或默认值时,该终端不能作为从设备。

字节地址2:使用该终端对从设备进行仿真。当希望使用10位地址时,本属性用于指定从设备地址和第二个地址字节。如果该属性未设置,就会采用7位寻址。

为空时停止:设置当输出缓冲器为空,或一个字节要求被发送时是否暂停仿真。

Advanced Properties:允许用户指定预先存放输出序列的文本文件的名称。如果属性设置为空,则序列作为元器件属性的一部分进行保存。

除以上属性之外,I2C总线接收数据时会采用一项特殊的序列语句。该语句显示在输入数据显示窗口中,即I2C总线调试器窗口的左上角。显示的序列字符如下所示。

S:Start Sequence,启动序列。

Sr:Restart Sequence,重新启动序列。

P:Stop Sequence,停止序列。

N:Negative Acknowledge Received,接收未确认。

A:Acknowledge Received,接收确认。

(2)I2C总线调试器的使用:I2C总线调试器传输数据的操作步骤如下所示。

①将I2C总线调试器放在原理图编辑窗口中,将SCK和SDA的引脚与相关设备引脚连接起来。

②单击I2C总线调试器,按下“Ctrl+E”键进行相关设置,如字节地址的设置等。

③设置好后,单击按钮,弹出如图2-61所示界面,在队列容器中输入需要传输的数据。

④当输入需要传输的数据后,既可直接传输数据,也可按下“Add”按钮,将数据存放到预定义队列中。

⑤单击按钮,在图2-61的队列缓冲区中初始化传输项。

⑥再次单击按钮时,若序列输入为空,也可选择预定义序列,单击“Queue”按钮,将预定义队列中的内容复制到队列缓冲区中。

⑦再一次单击按钮时,序列被传输。

7)Signal Generator信号发生器的使用虚拟信号发生器模拟一个简单的音频发生器,可以产生正弦波、三角波、方波、锯齿波的信号。它具有调频和调幅输入功能,其中调频分为8个波段,频率范围为0~12MHz;调幅分为4个波段,幅值范围为0~12V。

在工具箱中单击虚拟仪器,在弹出的“Instruments”窗口中单击Signal Generator,再在原理图编辑窗口中单击便可添加信号发生器。将信号发生器与相应引脚连接好,并按下运行按钮时,将弹出信号发生器界面,如图2-63所示。

图2-63 信号发生器界面

波形选择开关用来选择正弦波、三角波、方波或锯齿波;极性选择开关用来选择输出信号是单极性还是双极性;输出范围调节开关可选择1mV挡、10mV挡、0.1V挡和1V挡。在相应挡位的范围内还可以通过输出幅度调节旋钮调节输出信号幅度。FM调制频率调节旋钮用来调节输出信号的调频调制方式的调制系数。调制输入的电压加上FM调制频率调节值,再乘以频率调节旋钮对应的值即为幅度的瞬时输出频率。例如,FM调制频率调节值为2,频率调节旋钮值为1kHz,则3V调频信号的输出频率为5kHz×[(2+3)×1]。

8)Patterin Generator序列发生器的使用虚拟序列发生器是一种8路可编程发生器,它可以按事先设定的速度将预先储存的路数据一步一步循环输出,利用它可产生数字系统所需的各种复杂测试信号。

(1)序列发生器的引脚及设置:在工具箱中单击虚拟仪器,在弹出的“Instruments”窗口中单击Patterin Generator,再在原理图编辑窗口中单击便可添加虚拟序列发生器,如图2-64所示。

图2-64 虚拟序列发生器

CLKIN:时钟输入引脚,用于输入外部时钟信号。系统提供了2种外部时钟模式,即负沿脉冲(External Pos Edge)和正沿脉冲(External Neg Edge)。

CLKOUT:时钟输出引脚。当序列发生器使用的是内部时钟时,用户可以配置这一引脚,用于镜像内部时钟脉冲。系统提供的内部时钟(Internal)是一个负沿脉冲,可在仿真之前单击序列发生器,按下“Ctrl+E”键,在弹出的如图2-65所示的对话框中进行设置,也可先在仿真时暂停,然后通过时钟模式键指定。

图2-65 序列发生器的编辑对话框

HOLD:保持引脚。若给该引脚输入高电平,则序列发生器暂停,直至该引脚输入高电平被撤销为止。对于内部时钟或内部触发,时钟将从暂停点重新开始。

TRIG:触发引脚,用于将外部触发脉冲反馈到序列发生器中。系统提供了5种触发模式,即内部触发(Internal)、外部异步正脉冲触发(Async External Pos Edge)、外部同步正脉冲触发(Sync External Pos Edge)、外部异步负脉冲触发(Async External Neg Edge)和外部同步负脉冲触发(Sync External Neg Edge)。

内部触发模式是指按照指定的间隔触发;外部异步正脉冲触发模式,其触发器由触发引脚的正边沿跳变信号触发,当触发发生时,触发器立即动作,在下一个时钟边沿发生由低到高转换;外部同步正脉冲触发模式,其触发器在触发引脚由正边沿转换指定,触发被锁定,与下一个时钟的下降沿同步动作;外部异步负脉冲触发模式,其触发器在触发引脚由负边沿转换指定,当触发发生时,触发器立即动作,且序列的第一位在输出引脚输出;外部同步负脉冲触发,其触发器由触发引脚的负边沿转换信号触发,触发发生后,锁定触发,并与下一个时钟的下降沿同步动作。

OE:输出使能引脚,若该引脚为高电平则使能输出;如果该引脚未置为高电平,虽然序列发生器依然按特定序列运行,但不能驱动序列发生器在该引脚输出序列信号。

CASCADE:级联引脚。若序列的第一位被置为高电平,则级联引脚被置为高电平,而且在下一位信号(一个时钟周期后)到来之前始终为高,即当开始仿真后,第一个时钟周期内该引脚置为高电平。

B[0..7]:8位数据总线输出引脚。

Q0~Q7:8根单个输出引脚。

序列发生器的输出配置提供了4种模式:Default,默认;Output to Both Pins and Bus,引脚和总线均输出;Output to Pins Only,仅在引脚输出;Output to Bus Only,仅在总线输出。

模式发生器脚本为纯文本文件,每个字节用逗点分隔开来。每个字节代表栅格上的一栏,字节可以用二进制、十进制或十六进制表示,默认情况下为十六进制。

(2)序列发生器的使用:序列发生器的使用步骤如下所示。

①在工具箱中单击虚拟仪器,在弹出的“Instruments”窗口中单击Patterin Generator,再在原理图编辑窗口中单击便可添加虚拟序列发生器。根据需要将虚拟序列发生器相关引脚与电路连接起来。

②单击序列发生器,按下“Ctrl+E”键,在弹出的如图2-65所示的对话框中根据系统要求配置触发选项和时钟选项。

③在模式发生器脚本文件中加载期望的序列文件。

④退出图2-65的对话框,单击按钮,弹出如图2-66所示界面,进行仿真。

图2-66 序列发生器界面

9)电压表与电流表的使用 Proteus ISIS中提供了DC VOLTMETER直流电压表、DC AMMETER直流电流表、AC VOLTMETER交流电压表、AC AMMETER交流电流表。这些虚拟的交直流电压表和电流表可直接连接到电路中进行电压或电流的测量。

电压表与电流表的使用步骤如下所示。

(1)在工具箱中单击虚拟仪器,在弹出的“Instruments”窗口中单击DC VOLTMETER、DC AMMETER、AC VOLTMETER或AC AMMETER,再在原理图编辑窗口中单击添加电压表或电流到编辑窗口中,如图2-67所示。可根据需要将电压表或电流表与被测电路连接起来。

图2-67 虚拟交、直流电压表与电流表

(2)单击电压表或电流表,按下“Ctrl+E”键,弹出编辑对话框(如图2-68所示的对话框为直流电压表的编辑对话框),根据测量要求设置相应选项。

图2-68 直流电压表的编辑对话框

选择不同的电压表或电流表,其编辑对话框也有所不同。直流电流表的对话框与直流电压表相比没有设置内阻这一项;交流电压表的对话框中比直流电压表的对话框中多了时间常数(Time Constant)这一项;同样,交流电流表的对话框中比直流电流表的对话框中也多了时间常数(Time Constant)这一项。电压表的显示范围有伏特(Volts)、毫伏(Millivolts)和微伏(Microvolts);电流表的显示范围有安培(Amps)、毫安(Milliamps)和微安(Microamps)。

(3)退出编辑对话框,单击按钮,即可进行电压或电流的测量了。