宋昕一,万宏飞

(上海理工大学,上海,200093)

0 引言

随着社会的不断进步与发展,不同类型与性能的数码管相继发明出现。数码管可以显示数字与相应信息,其亮度高、控制简单、性能稳定、呈现速度即时等诸多优点,使得数码管在电子设计应用中得到广泛应用。本文运用Proteus仿真软件,利用汇编语言进行编码,将程序写入并编译仿真实现数码管的动态显示与设计。

1 Proteus简介

Proteus是一款高性能的EDA工具软件,配置有完善的电子设计开发环境,器件库齐全,功能形象。可进行原理图设计、搭建、仿真,PCB设计等多功能操作。支持C51、ARM、DSP诸多处理器。在软件中进行虚拟仿真,力求实证现实;在Proteus软件中可直接在原理图搭建完成后,进行编译输出得到结果,进行实时电路分析与实物仿真。Proteus软件大大缩短了设计时间,降低器件损耗的开发成本,途径灵活,仿真结果准确,在实际开发与教学中得到广泛应用。

2 数码管动态显示与计数工作原理

■2.1 定时器结构与原理

■2.2 脉冲产生

利用单片机U1 P3.0口进行脉冲的输出,通过定时器模式选择与初值的设定,完成定时器定时功能的实现。运用定时器进行端口定时控制,实现每1ms高低电平变换。就可以实现一个占空比为50%的矩形脉冲输出。

图1 定时器T0(T1)结构图

■2.3 脉冲计数

利用单片机U1 P3.0口输出的脉冲连接到单片机U2的中断INT0口P3.2,通过脉冲的高低电平变换触发中断0,进行脉冲个数的计数,再通过数码管显示出数字信息。中断INT0口P3.2连接有示波器可观察脉冲波形的高低变化。

3 数码管动态显示与计数电路设计

此设计中主要使用两片AT89C51单片机,利用中断实现对8个集成共阳级LED灯数码管的动态显示与计数。

如图2所示,通过按下U1机的中断INT0口P3.2连接的按键开始进行脉冲的产生与计数,单片机U1产生脉冲并

图2 电路设计图

定时器T0/T1的结构如图1所示,其中振荡器经12分频后作为定时器的时钟脉冲,T1引脚为外部计数脉冲输入端,通过开关进行选择。反相器,或门,与门共同构成启/停控制信号。TH和TL为加1计数器,TF为中断标志。每接收到一个脉冲,加1计数器自动加1,当计数器中的数被加为0时产生溢出标志,TF将被置1。计数器工作方式的选择和功能的实现需要配置相应的寄存器TMOD和TCON。通过数码管显示脉冲产生数;单片机U2接收脉冲同时也通过数码管显示脉冲接收数字。当按下按键时开始产生并传送脉冲,通过一个VSM counter timer进行计数验证的准确与否。按下按键后发现两个多位数码管同时显示并跳转同样的数字,并且计数器也显示。

图3 修改后计数效果

如图3所示,还可修改电路设计,使单片机U1显示所有高低脉冲产生数,调整单片机U2功能,使其显示高脉冲的产生数,即单片机U1对应数码管的计数值为U2的2倍。

通过调整定时器的模式与初值设定,改变定时器定时功能,进行端口定时控制,即可修改脉冲高低电平变换的时间,从而能够根据实际需求进行不同时间模式的计数。

最后通过示波器验证观察所产生的脉冲是否正确,通过调节示波器上的时间和幅度旋钮可以观察到矩形方波的产生。如图4所示。

图5 主程序流程图

4 设计流程图

本文所设计的数码管动态显示及计数的流程图如图5、如图6所示。

5 部分程序介绍

■5.1 定时器中断初始化

Start:

MOV TMOD,#01H

MOV TL0,#0B0H

MOV TH0,#3CH

SETB TR0

图4 示波器脉冲波形

图6 计数显示流程图

SETB ET

SETB EX0

SETB IT0

SETB EA

■5.2 计数显示

CHECK_NUMBER:

CHECK_NUM0:

CJNE A,#00H,CHECK_NUM1

MOV A,#0C0H

AJMP PASS_CHECK_NUMBER

CHECK_NUM1:

CJNE A,#01H,CHECK_NUM2

MOV A,#0F9H

AJMP PASS_CHECK_NUMBER

CHECK_NUM2:

CJNE A,#02H,CHECK_NUM3

MOV A,#0A4H

AJMP PASS_CHECK_NUMBER

CHECK_NUM3:

CJNE A,#03H,CHECK_NUM4

MOV A,#0B0H

AJMP PASS_CHECK_NUMBER

CHECK_NUM4:

CJNE A,#04H,CHECK_NUM5

MOV A,#99H

AJMP PASS_CHECK_NUMBER

CHECK_NUM5:

CJNE A,#05H,CHECK_NUM6

MOV A,#92H

AJMP PASS_CHECK_NUMBER

CHECK_NUM6:

CJNE A,#06H,CHECK_NUM7

MOV A,#82H

AJMP PASS_CHECK_NUMBER

CHECK_NUM7:

CJNE A,#07H,CHECK_NUM8

MOV A,#0F8H

AJMP PASS_CHECK_NUMBER

CHECK_NUM8:

CJNE A,#08H,CHECK_NUM9

MOV A,#80H

AJMP PASS_CHECK_NUMBER

CHECK_NUM9:

CJNE A,#09H,PASS_CHECK_NUMBER

MOV A,#90H

PASS_CHECK_NUMBER:

RET

6 结语

本文利用Proteus软件设计并仿真了数码管的动态显示与计数。仿真表明,该设计可通过调节脉冲时间实现不同模式的时间计数显示,且电路设计简单,控制稳定,可广泛应用于电子设计的显示电路中。