導航:首頁 > 操作系統 > 單片機數碼管動態顯示效果圖

單片機數碼管動態顯示效果圖

發布時間:2025-01-23 19:13:44

1. 四位數碼管動態顯示

數碼管動態刷新的原理基於控制單片機埠以輪流點亮不同的段碼,實現如同電影般的畫面效果。具體流程如下:

圖示流程中,N代表數碼管數量。控制策略需確保每個延時至少1ms,且總循環時間不超過20ms,以避免人眼分辨不清的動態效果。每個循環從一位數碼管切換到下一位,同時打開位碼並關閉前一位,實現連續顯示。

在代碼層面,實現8位數碼管同時點亮包括以下幾個關鍵步驟:

首先,引入動態顯示代碼,覆蓋靜態顯示邏輯,並創建用於顯示不同數據的數組。例如,使用`u8 Show_Tab[8]`數組來選擇每個位的顯示內容,根據具體需求調整數組值。

通過修改顯示函數,確保正確處理閃爍現象,特別是當顯示數據無規律時,需調整代碼以適應不同輸入。為了顯示目標時間,可以使用計時變數跟蹤時間變化,並根據時間更新數碼管顯示內容。

針對計數器應用,實現計時功能,顯示剩餘時間與當前計時,並在按鍵按下時開始或停止計數。確保計時邏輯和顯示邏輯緊密集成,以保證計數過程的准確性。

為了簡化顯示邏輯,將重復刷新操作封裝成函數,例如`SEG_Fre(void)`,便於在程序中多次調用以實現連續刷新。

最後,提供課後練習,要求學生設計簡易時鍾功能,包括顯示時間、自動更新以及鬧鍾提示等,以此加深對動態顯示原理及其實現的理解。

2. 如何利用單片機讓4位數碼管顯示

程序如下(用的是STC89C52晶元):

#include<reg52.h>//52系列單片機頭文件

#defineucharunsignedchar

#defineuintunsignedint

uintx,y;

ucharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};//共陰極數碼管編碼

voiddisplay(uchar,uchar,uchar,uchar);//聲明子函數

voiddelay(int);//聲明子函數

voidmain()

{

while(1)

{

display(1,2,3,4);//主程序始終調用數碼管顯示子程序

}

}

voiddisplay(uchara,ucharb,ucharc,uchard)

{

P2=0xef;

P0=table[a];//給第一個數碼管送"a"

delay(1);//延時1ms

P2=0xdf;

P0=table[b];//給第二個數碼管送"b"

delay(1);//延時1ms

P2=0xbf;

P0=table[c];//給第三個數碼管送"c"

delay(1);//延時1ms

P2=0x7f;

P0=table[d];//給第三個數碼管送"d"

delay(1);//延時1ms

}

voiddelay(uintz)//延時子函數

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

(2)單片機數碼管動態顯示效果圖擴展閱讀

led數碼管是由多個發光二極體封裝在一起組成「8」字型的器件,引線已在內部連接完成,只需引出它們的各個筆劃,公共電極。led數碼管常用段數一般為7段有的另加一個小數點,還有一種是類似於3位「+1」型。

位數有半位,1,2,3,4,5,6,8,10位等等,led數碼管根據LED的接法不同分為共陰和共陽兩類,了解LED的這些特性,對編程是很重要的,因為不同類型的數碼管,除了它們的硬體電路有差異外,編程方法也是不同的。

3. 如何利用單片機讓4位數碼管顯示

利用動態掃描讓四位數碼管穩定的顯示1234。

3.2子情境目標:

(1)掌握單片機控制四位數碼管的動態掃描技術,包括程序設計和電

路設計,本任務的效果是讓四位數碼管穩定的顯示1234。

(2)用PROTEUS進行電路設計和實時模擬

3.3知識點鏈接

(1)數碼管動態掃描(動態掃描的定義以及與靜態顯示的區別)

動態顯示的特點是將所有位數碼管的段選線s一位數碼管有效。選亮數碼管採用動態掃描顯示。所謂動態掃描顯示即輪流向各位數碼管送出字形碼和相應的位選,利用發光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數碼管同時都在顯示。

(2)匯流排的應用

元器件與匯流排的連線

P0口的接線採用匯流排方式,詳細如圖5-17所示。

① 選擇匯流排按鈕

② 繪制匯流排:與普通電線的繪制方法一樣,選擇合適的起點、終點單擊。

如果終點在空白處,左鍵雙擊結束連線。

畫匯流排的時候為了和一般的導線區分,我們一般喜歡畫斜線來表示分支線。此時我們需要自己決定走線路徑,只需在想要拐點處單擊滑鼠左鍵即可。在畫斜線時,需要關閉線路自動路徑功能才好繪制。

Proteus的線路自動路徑功能簡稱WAR,當選中兩個連接點後,WAR將選擇一個合適的路徑連線。WAR可通過使用標准工具欄里的「WAR」命令按鈕來關閉或打開,也可以在菜單欄的「Tools」下找到這個圖標。

③ 給與匯流排連接的導線貼標簽PARTLABELS

與P0口相連的線標簽名依次為P00—P06,本電路中的P0口的上拉電阻通過匯流排與P0口相連,數碼管也是通過匯流排與P0口相連,這些都需要標注,以表明正確的電氣連接。單擊繪圖工具欄中的導線標簽按鈕,使之處於選中狀態。將滑鼠置於圖形編輯窗口的欲標標簽的導線上,跟著滑鼠的指針就會出現一個「×」號,表明找到了可以標注的導線,單擊滑鼠左鍵,彈出編輯導線標簽窗口,如圖5-16所示。

在「string」欄中,輸入標簽名稱(如p00),單擊「OK」按鈕,結束對該導線的標簽標定。同理,可以標注其它導線的標簽,如圖5-16所示。

注意,在標定導線標簽的過程中,相互接通的導線必須標注相同的標簽名。

圖5-16編輯導線標簽窗口

3.4任務步驟

3.4.1步驟一:PROTEUS電路設計,單片機控制四位共陰極數碼管動態掃描顯示的原理圖如圖5-17所示。

圖5-17四位共陰極數碼管動態掃描顯示的原理圖

1、選取元器件

①單片機:AT89C52

②帶公共端的排阻:RESPACK-8

③四位共陰極數碼管:7SEG-MPX4-CC

2、放置元器件、放置電源和地、連線、元器件屬性設置

數碼管動態掃描顯示的原理圖如圖5-17所示,整個電路設計操作都在ISIS平台中進行。

(1)帶公共端的排阻(RESPACK-8)如圖5-18所示,在本電路中作為P0的

上拉電阻,在如圖5-19所示ComponentValue一欄中可更改阻值,例如本例中將阻值更改為200歐姆。

圖5-18排阻圖5-19排阻屬性框

至此,我們便完成了整個電路圖的繪制。

3.4.2步驟二:源程序設計與目標代碼文件生成

(1)程序流程圖

圖5-20數碼管動態掃描的流程圖

(2)源程序設計

#include<reg52.h>//52系列單片機頭文件

#defineucharunsignedchar

#defineuintunsignedint

uintx,y;

ucharcodetable[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};//共陰極數碼管編碼

voiddisplay(uchar,uchar,uchar,uchar);//聲明子函數

voiddelay(int);//聲明子函數

voidmain()

{

while(1)

{

display(1,2,3,4);//主程序始終調用數碼管顯示子程序

}

}

voiddisplay(uchara,ucharb,ucharc,uchard)

{

P2=0xef;

P0=table[a];//給第一個數碼管送"a"

delay(1);//延時1ms

P2=0xdf;

P0=table[b];//給第二個數碼管送"b"

delay(1);//延時1ms

P2=0xbf;

P0=table[c];//給第三個數碼管送"c"

delay(1);//延時1ms

P2=0x7f;

P0=table[d];//給第三個數碼管送"d"

delay(1);//延時1ms

}

voiddelay(uintz)//延時子函數

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

4. 單片機 匯編 LED數碼管動態顯示

所謂的動態顯示就是:led燈按設定的循序不停的一個一個(一個數用一塊八段管)數的輸出顯示,由於led燈的閃爍速度很快,而人的眼睛最多隻能識別0.2秒間隙以上的變化。那麼在人看來,不停閃爍的led管就像是靜態顯示一樣散或搏。

圖中,段控制和位控制分時復用P0口,選用兩個鎖存器573來分開段控制和位控制數據。

段控制:數碼管顯示的字形

位控制:哪個沖祥數碼管顯示(或者說控制字形送往哪個數碼管)

注意:段控制是與所有數碼管連接在一起的。(如果將位控制全開的話,數碼管就變成了靜態顯示了,並團鏈且顯示的數字也是一樣的)。位控制是獨立一個一個連接的。

5. keil51單片機數碼管滾的顯示

一,LED數碼管顯示的原理
數碼管的發光原理實際是七段LED燈(不包括小數點)或者八段LED燈被點亮的結果。八段依次是 a,b,c,d,e,f,g,dp(表示點)。LED數碼管是常見的顯示器件,在很多場合都可以看到,比如,鬧鍾沖胡的顯示,家電的顯示功能,車站等等。我們看到的數碼管為「8」字形,數碼管又分為共陰極和共陽極兩種。

1.共陰極:就是將八段數碼管的陰極(負極)接地在一起,需要高電平點亮。如下圖所示



2.共陽極:就是將八段數碼管的陽極(正極)接(+5v)在一起,需要低電平點亮。如下圖所示


3.數碼管的具體顯示

①共陰數碼管的點亮

為使數碼管的不同段顯示不同的字元,需要點亮和熄滅不同段的LED燈,才可以實現。對於共陰極數碼管來說,只需要給高電平LED燈就會被點亮,對應的斷碼就會亮起。給低電平相應的斷碼就會熄滅。

以顯示「0」為例 只需要給「dp」和「g」給低電平熄滅就可以了

斷碼的順序為:dp g f e d c b a



「0」斷碼用16進製表示為:3FH

其他字元的斷碼以此類推:如下表所示


②共陽數碼管的點亮

為使數碼管的不同段顯示不同的字元,需要點亮和熄滅不同段的LED燈,才可以實現。對於共陽極數碼管來說,只需要給低電平LED燈就會被點亮,對應的斷碼就會亮起。給高電平相應的斷碼就會熄滅。

以顯示「0」為例 只需要給「dp」和「g」給高電平熄滅就可以了

斷碼的順序為:dp g f e d c b a

1 1 0 0 0 0 0 0



「0」斷碼用16進製表示為:C0H

其他字元的斷碼以此類推:如下表所示


二.動態數碼管的顯示(共陰)
思路: 建立顯存、斷碼、位碼表格,將軟體延時部分設計成子函數的結構,在主函數中利用查表的方法來獲得相應的位碼和段碼,這種思路經常用於顯示變化的字元。
顯示的狀態(左移動態顯示,類似於常見的廣告牌)

3.原理圖(protues模擬圖)


4.設計方法
在多個數碼管的顯示中點亮數碼管需要 位碼和段碼共同作核搏用才能點亮

位碼(低電平有效):表示要點亮的數碼管的位置。

斷碼(上面講過了):就是要點亮哪一段數碼管

舉例說明:


如果要在上面的六個數碼管中點亮第一個數碼管,且讓它顯示「1」,首先確定它的位置是第六個。用八個二進製表示,最低位從0開始,最高位為7 那麼它的位碼為:11111110 (低電平有效)

斷碼為0x06

其他的以此類推

先要數碼管動態顯示要建一個數組。下圖為斷碼


源代碼:
#include#include#define uchar unsigned char#define uint unsigned intsbit an=P2^6; sbit wei=P2^7; uchar code tab[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f, 0x6f,0x77,0x7c,0x39,0x5e,0x79,0x00,0x40}; //共陰極數碼管段碼表uchar idata dis_buf[6]={17,17,17,17,17,17}; //顯示緩沖區數據(十進制)void delayms(uint i) //延時1ms函數{ uint j; for(;i>0;i--) for(j=120;j>0;j--) {;}}void main() //主函數{ uchar k,m,n,bitcode,segcode; while(1) { for(n=0;n<17;n++) { dis_buf[0]=dis_buf[1]; //數據移動 dis_buf[1]=dis_buf[2]; dis_buf[2]=dis_buf[3]; dis_buf[3]=dis_buf[4]; dis_buf[4]=dis_buf[5]; dis_buf[5]=n; for(m=0;m<100;m++) //100次掃描,大約600ms { bitcode=0xfe; //起始位碼 for(k=0;k<6;k++) { P0=0xff; //消影 wei=1; wei=0; segcode=dis_buf[k]; //取數據 P0=tab[segcode]; //送段碼散氏攔 an=1; an=0; P0=bitcode; //送位碼 wei=1; wei=0; delayms(1); bitcode=_crol_(bitcode,1); //更新位碼,准備顯示下一位 } } } }}

6. c51單片機 怎樣實現靜態數碼管動態顯示的數字等於點亮LED燈的個數

c51單片機,靜態數碼管顯示數字等於點亮LED燈的個數,這個很容易實野檔鄭現的。在P3口接8個LED燈,且負極接P3口,亮1個燈時,蠢滲P3=0xFE,再依次向左移位一次,從低位向左增加一個0,則亮燈數加一,同時,用一個變數計頌頌數,並送數碼管顯示就行了,一位共陽數碼管接在P0口。模擬圖如下。

閱讀全文

與單片機數碼管動態顯示效果圖相關的資料

熱點內容
表格中的文件夾怎樣設置 瀏覽:476
em78單片機 瀏覽:960
splitjava空格 瀏覽:248
電腦怎麼谷歌伺服器地址 瀏覽:515
nx自定義工具啟動宏命令 瀏覽:101
程序員怎麼解決無法訪問互聯網 瀏覽:303
java訪問本地文件 瀏覽:747
瓦斯琪伺服器怎麼用 瀏覽:22
安卓主題用什麼app 瀏覽:747
修改伺服器pci地址空間 瀏覽:321
程序員將來去哪裡 瀏覽:966
虛幻5創建c無法編譯 瀏覽:189
javaweb項目設計 瀏覽:407
國家反詐app緊急聯系人怎麼填 瀏覽:191
單片機旋轉led 瀏覽:340
杜洋單片機官網 瀏覽:467
法國加密貨幣稅務 瀏覽:28
stringslinux 瀏覽:944
gis伺服器里文件如何處理 瀏覽:829
sec加密數字資產 瀏覽:930