⑴ 如何利用單片機讓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--);
}
(1)單片機多位數碼管顯示的電路圖擴展閱讀
led數碼管是由多個發光二極體封裝在一起組成「8」字型的器件,引線已在內部連接完成,只需引出它們的各個筆劃,公共電極。led數碼管常用段數一般為7段有的另加一個小數點,還有一種是類似於3位「+1」型。
位數有半位,1,2,3,4,5,6,8,10位等等,led數碼管根據LED的接法不同分為共陰和共陽兩類,了解LED的這些特性,對編程是很重要的,因為不同類型的數碼管,除了它們的硬體電路有差異外,編程方法也是不同的。
⑵ 數碼管顯示電路原理圖
所謂的八段就是指數碼管里有八個小LED發光二極體,通過控制不同的LED的亮滅來顯示出不同的字形。數碼管又分為共陰極和共陽極兩種類型,其實共陰極就是將八個LED的陰極連在一起,讓其接地,這樣給任何一個LED的另一端高電平,它便能點亮。而共陽極就是將八個LED的陽極連在一起。其原理圖如下。
其中引腳圖的兩個COM端連在一起,是公共端,共陰數碼管要將其接地,共陽數碼管將其接正5伏電源。一個八段數碼管稱為一位,多個數碼管並列在一起可構成多位數碼管,它們的段選線(即a.b.c.d.e.fg.dp)連在一起,而各自的公共端稱為位選線。顯示時,都從段選線送入字元編碼,而選中哪個位選線,那個數碼管便會被點亮。數碼管的8段,對應一個位元組的8位, a對應最低位, dp對應最高位。所以如果想讓數碼管顯示數字0,那麼共陰數碼管的字元編碼為00111111 , 即Ox3f;共陽數碼管的字元編碼為11000000,即Oxco。可以看出兩個編碼的各位正好相反。如下圖。
由上面的圖可以得到共陽極和共陰極的數碼管的編碼
共陽極:位選為高電平(即1)選中數碼管,各段選為低電平(即0接地時)選中各數碼段,由0到f的編碼為:
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
共陰極:
位選為低電平(即0)選中數碼管,各段選為高電平(即1接+5V時)選中各數碼段,
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
數碼管靜態顯示
當多位數碼管應用於某一系統時,它們的「位選」是可獨立控制的,而「段選」是連接在一起的,我們可以通過位選信號控制哪幾個數碼管亮,而在同一時刻,位選選通的所有數碼管上顯示的數字始終都是一樣的,因為它們的段選是連接在一起的,所以送入所有數碼管的段選信號都是相同的,那麼它們顯示的數字必定一樣,數碼管的這種顯示方法叫做靜態顯示。
讓一個數碼管循環顯示0-9
下面是程序,從DSY_CODE數組中依次的將編碼數據送到P0口就可以了,是不是很簡單。
⑶ 如何利用單片機讓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位或3位數碼管顯示,用單片機如何實現
4位或3位數碼管顯示,用單片機如何實現?這是單片機最基本的最典型的應用了,不論模擬還是實物,都離不開數碼管顯示呀,別說3,4位,再多也沒問題,太簡單太容易了。
下圖是4位數碼管顯示電路。
⑸ 51單片機、一個18b20測溫,數碼管顯示的電路圖
51單片機連接多個數碼管,不使用鎖存器等附加元件,需要進行掃描來顯示。八個數據口,每個數碼管再佔用一個使能位選。給你一張圖片看看。圖上的三極體是增加驅動能力的,用普通數碼管時可以不加。
18b20是單線的,就是說加個兩條電源線,和一條單條數據線(自己選51單片機的一個引腳就可以了)。連接非常簡單,但對時序要求非常嚴格哦,建議你參考幾份程序,手邊在對照18b20的器件手冊來看。
⑹ AT89C51單片機怎麼用匯編語言讓數碼管顯示學號最好有電路圖
數碼管連接電路如圖1所示,P0口輸出碼型,P2口輸出位選。鎖存器74HC573起驅動作用,提供驅動電流供數碼管發光。解碼器74HC138將位選地址轉換成位選信號,例如當前是第5個數碼管顯示,那麼P2口輸出位選地址05H,解碼器輸入CBA=110,輸出位選信號Y7-Y0=11101111,其中Y5=0,第5個數碼管選通並顯示,其它數碼管不顯示。實驗時將J6的左邊兩個引腳針(1和2)用跳冒連接,鎖存器11腳接VCC,關閉鎖存功能。
數碼管顯示方式為動態掃描方式,當P0口送第一個數0的碼型到鎖存器時,P2送位選地址01H,即Y0=0,只有第一個數碼管亮,顯示0,其他數碼管不顯示。當P0口送第二個數1的碼型到鎖存器時,P2送位選地址02H,即Y1=0,只有第二個數碼管亮,顯示1,其他數碼管不顯示。即每次只有一個數碼管點亮,8個數碼管是輪流被點亮的,輪流點亮的間隔時間很短(一般用延時程序延時幾個毫秒),由於視覺的暫留現象,看到的卻好象全都點亮著,這就是動態掃描。
數碼管顯示數字的碼型由數碼管的數據腳a~dp決定,圖2為數碼管的筆段分布圖,由於是共陰極的,所以當a~dp為高電平時相應的筆段會亮,電路中P1.0~P1.7分別接數碼管的a.b.c.d.e.f.g.dp,得到0~9這10個數字的碼型如表1所示。
圖2數碼管的筆段分布圖
引腳 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1P0.0數字碼型
筆段 dp g f e d c ba
0 0 1 1 1 1 11 03FH
0 0 0 0 0 1 10 106H
0 1 0 1 1 0 11 25BH
0 1 0 0 1 1 11 34FH
0 1 1 0 0 1 10 466H
0 1 1 0 1 1 01 56DH
0 1 1 1 1 1 01 67DH
0 0 0 0 0 1 11 707H
0 1 1 1 1 1 11 87FH
0 1 1 0 1 1 11 96FH
1 0 0 0 0 0 00 小數點80H
只要把上面的相關數,改成學好就可以了。
⑺ 圖是89C52單片機控制共陰極四位數碼管顯示時間,這電路是怎麼工作的具體寫一下信號的傳輸。
你的圖不是很清楚,根據你圖上的功能來看,器件應該是:
單片機(51系列) -> 8路緩沖器(74HC245) -> 數碼管(四位)
1、由於單片機IO口的驅動能力有限,在單片機和數碼管中間增加了緩沖器
這樣可以有效的保護單片機,提高了驅動能力。
2、接法:四位數碼管有四個選擇端,保證統一時間只A-G欄位,只對一個數碼管有效。
3、點亮數碼管,通過選取不同的選擇端,選擇好某一位數碼管,通過A-G欄位點亮。