数码管动态显示Proteus 仿真失败分析

2016-06-17 20:23陈月娟
电脑知识与技术 2016年11期
关键词:数码管仿真

陈月娟

摘要:Proteus因其强大的功能,在电路仿真领域中得到了广泛的应用,然而在实际仿真调试时,如不注意仿真模型的特点,往往会导致仿真失败。该文就单片机控制数码管动态显示过程,分析了仿真过程中出现的问题,并提出了相应解决方法。

关键词:Proteus;仿真;数码管;动态显示

中图分类号:TP391.9 文献标识码:A 文章编号:1009-3044(2016)11-0197-02

Abstract:Proteus because of its strong function, has been widely used in the field of circuit simulation, however, in the actual simulation debugging, such as not pay attention to characteristics of the simulation model, the simulation can often lead to failure. Based on single-chip microcomputer controlled Seven-Segment LED dynamic display, analyzed problems in the simulation process, and the corresponding solutions are put forward.

Key words: Proteu;simulatio; Seven-Segment LE; dynamic display

1 引言

用于显示数字及字符的七段LED数码管因其价格低廉、亮度较高得到了广泛的应用。数码管的显示方式分为静态显示及动态显示两种,因动态显示占用资源较少,控制灵活而得到广泛应用。根据动态显示原理,所有位的段码线相应段并接在一起,由一个8位I/O口控制,形成段码线的多路复用,各位的公共端分别由相应的I/O线控制,或称位控,形成各位的分时选通。利用人的视觉残留,得到各位数字连续显示效果。然而,在采用Proteus进行LED数码管动态显示仿真时,常会出现一些问题,虽然实际电路运行正常,但Proteus仿真却得不到正确结果。本文就应用Proteus7.4中出现的仿真中遇到的问题进行分析与探讨,提出解决办法。

2 LED数码管动态显示仿真

2.1 动态显示仿真模型

采用8位共阳极数码管,要求数码管结果显示“12345678”,因不影响仿真,模型中略去了复位及晶振电路,RP1为排阻,如图1所示。

2.2 数码管动态显示程序

在Keil uVision中建立工程,相应LED数码管动态显示汇编语言程序如表1所示。

3 仿真失败原因分析与解决方法

3.1 仿真电路模型研究

仔细观察仿真结果,发现仿真时,P0引脚上代表逻辑电平的红绿颜色不断发生交替变化,说明字形编码(段码)输出基本没有问题,P1引脚上逻辑电平也呈红绿色交替变化,说明位控信号也是正常的,但各驱动PNP三极管集电极引脚上电平始终是红色,这是不正确的。根据LED数码管动态显示工作原理,驱动三极管集电极引脚上电平也应该是红绿交替变化。

为找出仿真出错原因,试着将仿真原理图位控部分改为如图2所示电路,即各位控信号经反相器74LS04驱动后,接至LED数码公共端。仿真结果显示,代表各LED数码管位控信号逻辑电平颜色出现了红蓝色交替变化,虽然还存在所显数字出现缺笔划现象,但说明段码显示及位控信号都是本正常的,应该是图1仿真模型有问题。

3.2 修改仿真电路模型解决位控信号问题

分析图1模型,当P1引脚信号P1.X为高电平时,对共阳极数码管呈现高阻状态,为此对图1电路进行修改,在8个三极管集电极加排阻10K,如图3所示。

从仿真结果看,P1口引脚上数码管位控信号逻辑电平是变化了,但驱动三极管集电极引脚上电平始终是蓝色,当然各LED数码管也不显示。这是由于排阻RP2属性设置引起的,将RP2属性“Model Type”改为“ANALOG”后,驱动三极管集电极引脚上电平交替变化正常,但显示出来的各位数字出现不同程度的缺笔划现象。

3.3 修改源程序解决缺笔划问题

根据动态显示原理,为仔细观察数码管逐位显示过程,加长延时时间,由原延时子程序延时约1ms(晶振频率12MHZ),延时约50 ms,故将指令“DL0:MOV R3,#03H”,改为“DL0:MOV R3,#0FFH”,从仿真结果来看,各数码管依次显示相应数字,结果完全正确,并未出现缺笔划现象。但为何延时时间短了就会出现显示的数字缺笔划现象呢?

缺笔划现象应该是LED数码管仿真模型因时序配合问题导致显示来不及作出反应所致,即前一位数字的显示会对后一位造成影响。为克服这一现象,可在显示完一位数字后关闭显示。为此在原程序“LCALL DELAY”后增加关显示指令“MOV P1,#0FFH”,并恢复“DL0:MOV R3,#03H”,这样仿真结果完全正确。

4 结语

将图1的实物模型及表一的相应程序写入单片机开发板进行验证,发现结果是完全正确的。因此尽管Proteus软件仿真已得到了广泛使用,但仍要注意仿真模型的具体特点,完善仿真模型,否则会导致仿真失败。

此外,仿真时观察引脚上逻辑电平变化十分重要,如果看不到代表高低电平的红蓝色方块,可通过软件的“系统”菜单下的“设置动画选项……”,勾选“在引脚上显示逻辑状态”来实现。

参考文献:

[1]侯玉宝,陈忠平,李成群.基于Proteus的51系列单片机设计与仿真[M].电子工业出版社,2008.

[2] 林立,张俊亮.单片机原理及应用——基于Proteus和Keil C(第2版) [M].电子工业出版社,2013.

[3]石长华.51系列单片机项目实践[M].机械工业出版社,2010.

猜你喜欢
数码管仿真
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
基于Qt的数码管数字编码系统的设计与实现
一种帮助幼儿车内脱险应急装置的仿真分析
白光数码管低温环境下光通量补偿方法研究