導航:首頁 > 操作系統 > 單片機直接控制數碼管

單片機直接控制數碼管

發布時間:2022-05-31 16:59:34

『壹』 51單片機能直接驅動數碼管嗎

不可以的,給你分析分析:點亮一個發光diode,需要驅動電流至少5-10mA.而C51單片機的I/O口輸出的電流在1mA左右。要想有提供大電流就需要在I/O口和diode之間加入一個電源,而一個加入一個電源之後,電流實在有點大,diode可受不了。那就只好在電源上在串一個電阻,電阻值的大小如何選,憑樓主的智慧應該可以算出來的。給個提示,一般上拉電阻值K級以上。

『貳』 如何用單片機控制數碼管

單片機控制數碼管分兩種。
1、靜態數碼管,控制比較簡單,只送段碼就可以了。比如:P1=0xc0,共陽極的話,將顯示0
2、動態數碼管,控制就比較復雜一些,需要先送位選碼,再送段碼,而且要不斷的重復執行這個過程,利用視覺暫留原理,達到顯示的效果。

『叄』 51單片機怎樣用鍵盤控制數碼管顯示

51單片機怎樣用鍵盤控制數碼管顯示的方法。

如下參考:

1.首先,編寫代碼並點亮數碼管。

『肆』 怎麼控制單片機的數碼管

看你幾位的數碼管,數碼管有7段和八段,例如,四位數碼管就是有四個7段或者8段數碼管,四個引腳分別控制四個位,7個或者八個引腳控制端。還有就是看是共陽還是共陰,需要用哪種驅動。通過單片機的輸出高低電平來控制。其實還是挺簡單的

『伍』 單片機控制數碼管時為什麼要用到鎖存器,難道不可以直接控制嗎

只要單片機的驅動電流足夠時當然可以
直接控制
數碼管
,但這樣佔用很多單片機埠所以般不這樣做,用
鎖存器
既能節約單片機站口,又能增加驅動電流,所以一般用鎖存器驅動數碼管。

『陸』 如何用單片機控制12V的數碼管

mokama
-
高級經理
七級
的方案算是很好的,不過兩個電阻可以免掉,直接NPN的集電極接在PNP的基極,然後控制PNP的基極,NPN的C接數碼管,這樣對晶元比較安全。這種思路下,我也完成了一個設計。和你的類似。

『柒』 單片機驅動數碼管電路的問題

很亂,也沒分55
電流:靜態時,推薦使用10-15mA;動態時,16/1動態掃描時,平均電流為4-5mA,峰值電流50-60mA。

你最好明白一下共陽還是共陰的數碼管為好。

數碼管按段數分為七段數碼管和八段數碼管,八段數碼管比七段數碼管多一個發光二極體單元(多一個小數點顯示);按能顯示多少個「8」可分為1位、2位、4位等等數碼管;按發光二極體單元連接方式分為共陽極數碼管和共陰極數碼管。共陽數碼管是指將所有發光二極體的陽極接到一起形成公共陽極(COM)的數碼管。共陽數碼管在應用時應將公共極COM接到+5V,當某一欄位發光二極體的陰極為低電平時,相應欄位就點亮。當某一欄位的陰極為高電平時,相應欄位就不亮。。共陰數碼管是指將所有發光二極體的陰極接到一起形成公共陰極(COM)的數碼管。共陰數碼管在應用時應將公共極COM接到地線GND上,當某一欄位發光二極體的陽極為高電平時,相應欄位就點亮。當某一欄位的陽極為低電平時,相應欄位就不亮。

『捌』 單片機能直接驅動數碼管嗎為何要多加驅動芯

一般單片機能輸出10ma左右的電流就可以直接驅動數碼管,但數碼管多時,用靜態驅動會佔用較多IO埠,如4個數碼管要佔32個管腳,並且雖單片機單個管腳驅動電流可達20ma,但整個晶元的電流有限,所以靜態驅動只用於有一至二個數碼管的場合
用動態驅動的話可以節省IO管腳,這時可以在位選端加驅動,它流過的電流比較大,是一個數碼管各段電流的總和,但段信號可以由單片機直接輸出而不加驅動
如果外設比較多,管腳不夠用,還是要加驅動,但主要是用鎖存器的鎖存功能,以便一個埠可以接許多外設而不相互影響
如常見的51單片機開發板,接了三個鎖存器之後,數碼管段信號,位信號以及LED流水燈都有可以共用一個數據埠P0

『玖』 用單片機控制數碼管工作

#include<reg52.h>
unsigned char const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//七段碼表
unsigned char zifu[]={2,0,1,2};//要顯示的數字
主程序:
void main(void)
{
char i;
for(i=0;i<4;i++)
{
P0=~table[zifu[i]];//七段碼表是共陰數碼管,改為共陽要取反
delay_ms(500);
}
while(1);
}
延時子程序:
void delay_ms(unsigned int t)
{
unsigned int i;
unsigned int j;
for(i=0;i<t;i++)
for(j=0;j<116;j++);
}

『拾』 單片機開關控制LED數碼管的編碼

一,什麼是數碼管

數碼管,其實就是由多個led組合在一起的組合顯示塊;有共陰極的,也有共陽極的。使用的數碼管不同,裡麵包含的led個數也會有相關的差異。我們通常使用的數碼管,裡面有8個led燈,大家可以參照生活中的數碼管器件就一目瞭然了,你會發現,數碼管顯示的每一個數字或字母,都是一段一段組合拼接起來的,並不是像寫的那樣圓滑。其中,組合的每一個段,就是一個led燈。

二,點亮一個數碼管

2.1.在點亮數碼管之前,你還必須弄清楚,改數碼管的接是共陰極還是共陽極的接法;其次,還得弄清楚是那幾個(或一個) IO口是IO口 的斷選位(也就是控制顯示哪一個數碼管,通常由IO口控制一個解碼器來實現,因為這樣更節約IO口資源)。

2.2.弄清楚斷選位之後,還得知道,是哪些IO口控制我們的數碼管上的led;

比如:

P0.0 控制數碼管上的led.0;(注意:數碼管上對應的led位,可以參照原理圖上的或查閱相關資料獲得,這里僅僅舉列)

P0.1-->led.1 P0.2-->led2 ......

2.3.想要點亮數碼管很容易,只要開啟對應的數碼管斷選位,再設置數碼管上led的值為點亮(有的數碼管是共陰極接法,有的是共陽極接法,根據具體的設計,給出相關的高或低電平即可)就OK了。但是,我們要在數碼管上顯示我們想要的數字增么辦呢?這個時候,就是考研創造力的時候了,有的數碼管的資料會直接給出它的真值表,但有的卻不一定找得到。在這個時候,我們就得根據我們想要顯示的數字,點亮並熄滅對應數碼管上的led來實現。(推薦:你可以自己先實驗,找出0-9,或其他想要顯示的字元所對應的IO口的值,來保存起來,這樣你就可以重復利用啦!)

三,點亮多個數碼管

3.1 我們想要點亮多個數碼管,首先可以根據2.1,弄清楚你的數碼管的斷選位,然後周期性的改變斷選位的值,以此動態逐個顯示你的數碼管。

3.2 在顯示多個數碼管時,建議周期大於100hz,這樣人眼難以識別起關和開的瞬間,我們看起來就像時很多個數碼管同時點亮了一樣。

四,動態顯示數碼管

4.1 ,在動態顯示數碼管的值時,建議先根據2.2和2.3,把對應的數碼管顯示參數照準,並保存下來,這樣你用起來也方便。

4.2, 動態顯示數碼管,我們可以在規定的時間周期,改變數碼管對應led的開關個數來實現,比如說:

0 在數碼管中顯示的值為0xc0 1是0xf9

那麼我們就可以在規定的時間里,切換該值,從而達到動態效果。

4.3 我們應該注意的時,掃描數碼管(即顯示多個數碼管)應該與設置數碼管的值(數碼管中led的狀態更新)區分開,掃描周期我們可以放短一點,而改變它的值的周期我們可以一秒或者是2秒改變一次。

4.4 消除余暉,大家實驗後,可能會發現,你顯示的值有的時候並不是想要的,它會跳動或者是亮滅不清晰,這個我們就叫做余暉效應。

產生余暉效應的原因是因為你在選則下一個數碼管的時候,還保留了上一個數碼管的顯示值,所以我們消除余暉,只需要在改變數碼管顯示值的時候,先關閉所有數碼管的顯示,在值跟新完成後我們再打開顯示。這里你不用擔心關閉和開啟會有閃爍,更新值的時間會很短,肉眼時幾乎察覺不到滴。

5,示列代碼

/*

晶元:stc89c52

器件:38解碼器等

編譯環境:UV4,C語言

*/

#include

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

unsigned char code LedChar[] = {undefined

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e

};//數碼管顯示值真值表緩存數組

unsigned char LedBuff[6] = {undefined

0xff,0xff,0xff,0xff,0xff,0xff

};//數碼管顯示值緩存數組

void main()

{undefined

unsigned char i =0;

unsigned int cnt = 0;

unsigned long sec = 0;

ENLED = 0;

ADDR3 = 1;

TMOD = 0x01;

TH0 = 0xfc;

TL0 = 0x67;

TR0 = 1;

while(1)

{undefined

if(TF0==1)

{undefined

TF0 = 0;

TH0 = 0xfc;

TL0 = 0x67;

cnt++;

if(cnt>=1000)

{undefined

cnt = 0;

sec++;

LedBuff[0] = LedChar[sec%10];

LedBuff[1] = LedChar[sec/10%10];

LedBuff[2] = LedChar[sec/100%10];

LedBuff[3] = LedChar[sec/1000%10];

LedBuff[4] = LedChar[sec/10000%10];

LedBuff[5] = LedChar[sec/100000%10];

}

switch(i)

{undefined

case 0:ENLED = 1;ADDR2=0;ADDR1=0;ADDR0=0;i++;P0=LedBuff[0];ENLED = 0;break;

case 1:ENLED = 1;ADDR2=0;ADDR1=0;ADDR0=1;i++;P0=LedBuff[1];ENLED = 0;break;

case 2:ENLED = 1;ADDR2=0;ADDR1=1;ADDR0=0;i++;P0=LedBuff[2];ENLED = 0;break;

case 3:ENLED = 1;ADDR2=0;ADDR1=1;ADDR0=1;i++;P0=LedBuff[3];ENLED = 0;break;

case 4:ENLED = 1;ADDR2=1;ADDR1=0;ADDR0=0;i++;P0=LedBuff[4];ENLED = 0;break;

case 5:ENLED = 1;ADDR2=1;ADDR1=0;ADDR0=1;i=0;P0=LedBuff[5];ENLED = 0;break;

default:break;

}

}

}

}

以上代碼,僅供參考,您需要根據自己原理圖的設計來實現。

閱讀全文

與單片機直接控制數碼管相關的資料

熱點內容
不能修改的pdf 瀏覽:736
同城公眾源碼 瀏覽:474
一個伺服器2個埠怎麼映射 瀏覽:282
java字元串ascii碼 瀏覽:61
台灣雲伺服器怎麼租伺服器 瀏覽:461
旅遊手機網站源碼 瀏覽:315
android關聯表 瀏覽:929
安卓導航無聲音怎麼維修 瀏覽:322
app怎麼裝視頻 瀏覽:423
安卓系統下的軟體怎麼移到桌面 瀏覽:80
windows拷貝到linux 瀏覽:755
mdr軟體解壓和別人不一樣 瀏覽:888
單片機串列通信有什麼好處 瀏覽:324
游戲開發程序員書籍 瀏覽:848
pdf中圖片修改 瀏覽:275
匯編編譯後 瀏覽:480
php和java整合 瀏覽:835
js中執行php代碼 瀏覽:447
國產單片機廠商 瀏覽:62
蘋果手機怎麼設置不更新app軟體 瀏覽:289