宋昕一,萬宏飛
(上海理工大學,上海,200093)
隨著社會的不斷進步與發(fā)展,不同類型與性能的數(shù)碼管相繼發(fā)明出現(xiàn)。數(shù)碼管可以顯示數(shù)字與相應信息,其亮度高、控制簡單、性能穩(wěn)定、呈現(xiàn)速度即時等諸多優(yōu)點,使得數(shù)碼管在電子設計應用中得到廣泛應用。本文運用Proteus仿真軟件,利用匯編語言進行編碼,將程序寫入并編譯仿真實現(xiàn)數(shù)碼管的動態(tài)顯示與設計。
Proteus是一款高性能的EDA工具軟件,配置有完善的電子設計開發(fā)環(huán)境,器件庫齊全,功能形象??蛇M行原理圖設計、搭建、仿真,PCB設計等多功能操作。支持C51、ARM、DSP諸多處理器。在軟件中進行虛擬仿真,力求實證現(xiàn)實;在Proteus軟件中可直接在原理圖搭建完成后,進行編譯輸出得到結果,進行實時電路分析與實物仿真。Proteus軟件大大縮短了設計時間,降低器件損耗的開發(fā)成本,途徑靈活,仿真結果準確,在實際開發(fā)與教學中得到廣泛應用。
利用單片機U1 P3.0口進行脈沖的輸出,通過定時器模式選擇與初值的設定,完成定時器定時功能的實現(xiàn)。運用定時器進行端口定時控制,實現(xiàn)每1ms高低電平變換。就可以實現(xiàn)一個占空比為50%的矩形脈沖輸出。
圖1 定時器T0(T1)結構圖
利用單片機U1 P3.0口輸出的脈沖連接到單片機U2的中斷INT0口P3.2,通過脈沖的高低電平變換觸發(fā)中斷0,進行脈沖個數(shù)的計數(shù),再通過數(shù)碼管顯示出數(shù)字信息。中斷INT0口P3.2連接有示波器可觀察脈沖波形的高低變化。
此設計中主要使用兩片AT89C51單片機,利用中斷實現(xiàn)對8個集成共陽級LED燈數(shù)碼管的動態(tài)顯示與計數(shù)。
如圖2所示,通過按下U1機的中斷INT0口P3.2連接的按鍵開始進行脈沖的產(chǎn)生與計數(shù),單片機U1產(chǎn)生脈沖并
圖2 電路設計圖
定時器T0/T1的結構如圖1所示,其中振蕩器經(jīng)12分頻后作為定時器的時鐘脈沖,T1引腳為外部計數(shù)脈沖輸入端,通過開關進行選擇。反相器,或門,與門共同構成啟/??刂菩盘?。TH和TL為加1計數(shù)器,TF為中斷標志。每接收到一個脈沖,加1計數(shù)器自動加1,當計數(shù)器中的數(shù)被加為0時產(chǎn)生溢出標志,TF將被置1。計數(shù)器工作方式的選擇和功能的實現(xiàn)需要配置相應的寄存器TMOD和TCON。通過數(shù)碼管顯示脈沖產(chǎn)生數(shù);單片機U2接收脈沖同時也通過數(shù)碼管顯示脈沖接收數(shù)字。當按下按鍵時開始產(chǎn)生并傳送脈沖,通過一個VSM counter timer進行計數(shù)驗證的準確與否。按下按鍵后發(fā)現(xiàn)兩個多位數(shù)碼管同時顯示并跳轉同樣的數(shù)字,并且計數(shù)器也顯示。
圖3 修改后計數(shù)效果
如圖3所示,還可修改電路設計,使單片機U1顯示所有高低脈沖產(chǎn)生數(shù),調(diào)整單片機U2功能,使其顯示高脈沖的產(chǎn)生數(shù),即單片機U1對應數(shù)碼管的計數(shù)值為U2的2倍。
通過調(diào)整定時器的模式與初值設定,改變定時器定時功能,進行端口定時控制,即可修改脈沖高低電平變換的時間,從而能夠根據(jù)實際需求進行不同時間模式的計數(shù)。
最后通過示波器驗證觀察所產(chǎn)生的脈沖是否正確,通過調(diào)節(jié)示波器上的時間和幅度旋鈕可以觀察到矩形方波的產(chǎn)生。如圖4所示。
圖5 主程序流程圖
本文所設計的數(shù)碼管動態(tài)顯示及計數(shù)的流程圖如圖5、如圖6所示。
Start:
MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#3CH
SETB TR0
圖4 示波器脈沖波形
圖6 計數(shù)顯示流程圖
SETB ET
SETB EX0
SETB IT0
SETB EA
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
本文利用Proteus軟件設計并仿真了數(shù)碼管的動態(tài)顯示與計數(shù)。仿真表明,該設計可通過調(diào)節(jié)脈沖時間實現(xiàn)不同模式的時間計數(shù)顯示,且電路設計簡單,控制穩(wěn)定,可廣泛應用于電子設計的顯示電路中。