新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 用PROTEUS对单片机进行仿真的方法与实例

用PROTEUS对单片机进行仿真的方法与实例

作者: 时间:2016-11-25 来源:网络 收藏

5.编辑元件的属性
右击选元件后再左击即可编辑元件的属性,也可以右击后在快捷菜单中选择命令Edit Prorerties。如R1的属性窗口如图6。



在对AT89C51的属性进行编辑时要加入仿真文件,在Program File中单击出现文件浏览对话框,找出LED.hex文件,单击确定完成添加文件,单击OK退出。
6.连线
在要连线的一个点左击,移动鼠标到到另一个点再左击即可画好一条连线,按 放置导线连接结点,画好连线的仿真电路图见图7。



AT89C51的VSS、VDD不需要连线,默认VSS=0V、VDD=+5V、GND=0V。
7.仿真
单击仿真进程控制按钮中的开始仿真,我们可看到发光二极管分别按两个方向依次点亮。输出端的小方点红色代表高点平,蓝色代表低电平,灰色代表不确定电平。
在仿真时单片机的晶振电路和复位电路可以省略不画,时钟频率可以在AT89C51的属性中设置,默认值为12MHz。
对于设计好的文件可以保存以便下次调用。
二、单片机仿真实例
上面通过一个简单的例子介绍了Proteus ISIS的基本使用方法,下面再通过笔者设计的几个实例进一步介绍Proteus ISIS的使用方法和技巧,同时也能够使大家看到几个单片机应用的实例。
1.电感测试仪
电感测试仪以电感加上电压后电流增加的规律作为测量依据,因为电感加上电压后电流增加的速度与电感量相关,通过测量电流达到某一预定值所花的时间就能测量出电感的电感量。单片机使用AT89C2051,测量电路如图8所示,A为



AT89C2051内部构造的电压比较器,利用电压比较器测量电感中电流的变化,合上开关后电源电压E+ 加在电感LX和电阻R的串联回路上,这时回路中电流IL由零开始逐渐增加,在电阻R两端电压从0升到0.632E+的过程中,P3.6口输出为0,当电阻R两端电压一旦超过0.632E+后,P3.6口输出电平即变为1。以P3.6口的输出状态为依据,用AT89C2051内部的定时器T0对时间进行计数,再将计数结果显示出来即得出测量结果。量程可分为多档,采用两位半数码管显示,单位为mH。我们只要仿真其中的一档即可,这里取×10档进行仿真,即读数乘以10为实际电感量。
电感测试仪的源程序如下:
#include
unsigned char j,m,n,t,DispBuf[3];
unsigned int L;
unsigned char code
BitTab[3]={0xdf,0xef,0xf7};//位驱动码
unsigned char code
DispTab[11]={0x41,0xcf,0x52,0x46,0xcc,0x64,0x60,0x4f,0x40,0x44,0xff};//字形码
sbit P1_2=P1^2;
sbit P3_6=P3^6;
void Delay1ms(unsigned int count) //延时程序
{
for(n=0;n for(m=0;m<250;m++);
}
void main() //主程序
{ TMOD=0x01;//定时器T0方式1
while(1) //无限循环
{
t=BitTab[j];//取位值
P1=P1|0x38;//P1.3-P1.5送1
P1=P1&t; //P1.3-P1.5输出取出的位值
t=DispBuf[j];//取出待显示的数
t=DispTab[t];//取字形码
P3=t; //字型码由P3输出显示
Delay1ms(5);
j++; //j作为数码管的计数器,取值0-2,显示程序通过它确认显示哪个数码管
if(j==3)
j=0;
TH0=0;
TL0=0;
P1_2=0;//测试开始
TR0=1; //开定时器T0
for(;P3_6==0;);//判断电阻上的电压上升到参考电压否
TR0=0;//电压达到参考电压,关定时器T0
P1_2=1;
L=TL0|(TH0<<8);//取定时器T0中的数值
L=L-3;
if(L>=200)
{
DispBuf[2]=10;
DispBuf[1]=10;
DispBuf[0]=1; //超量程,百位数显示1,个位、十位不显示(灭)
}
else //不超量程,取各位数值
{
DispBuf[2]=L;//取个位数
L=L/10;
DispBuf[1]=L;//取十位数
DispBuf[0]=L/10;//取百位数
}
}
}
用Keil uVision将上述程序编译生成目标文件DGZS.hex。
电路中所使用的元件见表2。
表2

名称元件种类(Category)子种类(Sub-category)
单片机AT89C2051Microprocessor ICs8051 Family
电阻器RESResistorsGeneric
可变电阻器POT-LINResistorsVariable
三极管2N2905TransistorsBipolar
电感器IND-AIRInductorsGeneric
4位共阴数码管7SEG-MPX4-CAOptoelectronics7-Segment Displays

绘制好的仿真电路图如图9。图中添加示波器时,先左键选择模型选择工具



栏中的 图标,再选择OSCILLOSCOPE,并在原理图编辑窗口中左击,这样示波器就被放置到原理图中了。
由于AT89C2051的P1.0和P1.1是复用端口,除了作I/O口外,还有一个功能是作为电压比较器的输入端,P1.0为同相输入端,P1.1为反相输入端,这里作电压比较器的输入端使用,因此在设置AT89C2051的属性时要将其设置电压比较器的输入端,即Ehable Comparator选择Yes,如图10。



被测电感器的电感量定为1H。单击开始仿真,可变电阻RP1是用来校准测量值的,按动RP1的+或-按钮,调节RP1使数码管显示100。仿真结果见图10。电阻R2为换挡电阻,改变它的值即可改变挡位。
2. 充电器
这是用PIC12F675单片机做的充电器,能对两节镍镉或镍氢电池充电,充电器采用电压监测的方法判断充电是否结束,充电结束后能自动停止充电。
图11是电路图,图中PIC12F675的7脚作模拟信号输入端AN0使用。单片



机使用内部时钟振荡器,引脚3作充电控制电压输出端GP4使用。S为复位开关,复位开关主要在重新放上电池后使用。


关键词: PROTEUS单片机仿

评论


技术专区

关闭