基于 51 單片機(jī)的 LED 數(shù)碼管動態(tài)顯示 LED 數(shù)碼管動態(tài)顯示就是一位一位地輪流點(diǎn)亮各位數(shù)碼管,對于每一位 LED 數(shù)碼管來說,每隔一段 時間點(diǎn)亮一次,利用人眼的“視覺暫留"效應(yīng),采用循環(huán)掃描的方式,分時輪流選通各數(shù)碼管的公共 端,使數(shù)碼管輪流導(dǎo)通顯示。當(dāng)掃描速度達(dá)到一定程度時led數(shù)碼管顯示,人眼就分辨不出來了。盡管實(shí)際上各位 數(shù)碼管并非同時點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),認(rèn)為各數(shù) 碼管是同時發(fā)光的。若數(shù)碼管的位數(shù)不大于 8 位時,只需兩個 8 位 I/O 口。 1 硬件設(shè)計 利用 51 單片機(jī)的 P0 口輸出段碼,P2 口輸出位碼,其電路原理圖如下所示。在桌面上雙擊圖標(biāo),打開 ISIS 7 Professional 窗口(本人使用的是 v7.4 SP3 中文版)。單擊菜單命令 “文件”→“新建設(shè)計”,選擇 DEFAULT 模板led數(shù)碼管顯示,保存文件名為“DT.DSN”。在器件選擇按鈕中單擊“P”按鈕,或執(zhí)行菜單命令“庫”→“拾取元件/符號”,添加如下表所示的元件。51 單片機(jī) AT89C51 一片 晶體 CRYSTAL 12MHz 一只瓷片電容 CAP 22pF 二只 電解電容 CAP-ELEC 10uF 一只電阻 RES 10K??電阻 RES 4.7K 四只雙列電阻網(wǎng)絡(luò) Rx8 300R(Ω) 一只 四位七段數(shù)碼管 7SEG-MPX4-CA 一只三極管 PNP四只若用 Proteus 軟件進(jìn)行仿真,則上圖中的晶振和復(fù)位電路以及 U1 的 31 腳,都可以不畫,它們都是 默認(rèn)的。
在 ISIS 原理圖編輯窗口中放置元件,再單擊工具箱中元件終端圖標(biāo),在對象選擇器中單擊 POWER 和 GROUND 放置電源和地。放置好元件后,布好線。左鍵雙擊各元件,設(shè)置相應(yīng)元件參數(shù),完成 電路圖的設(shè)計。2 軟件設(shè)計LED 數(shù)碼管動態(tài)顯示是一位一位地輪流點(diǎn)亮各位數(shù)碼管的,因此要考慮每一位點(diǎn)亮的保持時間和間 隔時間。保持時間太短,則發(fā)光太弱而人眼無法看清;時間太長,則間隔時間也將太長(假設(shè) N 位, 則間隔時間=保持時間 X(N-1)),使人眼看到的數(shù)字閃爍。在程序中要合理的選擇合適的保持時間 和間隔時間。而循環(huán)次數(shù)則正比于顯示的變化速度。LED 數(shù)碼管動態(tài)顯示的流程如下所示。LED 數(shù)碼管動態(tài)顯示的詳細(xì) C51 程序如下。 /***************************************** *通過 P0 及 P2 口控制四只數(shù)碼管 ,12M 晶振*****************************************/ #include "reg51.h"#define uchar unsigned char #define uint unsigned int uchar code ddata[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xc0,0xf9,0xa4 }; //0,1,2,3,4....F,0,1,2,3 的段碼/****延時函數(shù)*******************************/ void delayms(uint t) { uint i,j;for(i=0;i
文章由啟和科技編輯
上一篇:led顯示屏市場分析 大畫面LED顯示屏行業(yè)未來的發(fā)展趨勢分析