『壹』 如何用一個單片機驅動四個四位數碼管同時顯示四組不同數據
方法一:兩個HD7279,正好可以驅動16個數碼管,電路簡單,不佔單片機資源
方法二:74HC154解碼掃描,或者兩個P口掃描,需要16個三極體驅動或者兩片ULN2003之類的,比較佔用單片機資源
『貳』 如何利用單片機讓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)單片機驅動4位數碼管擴展閱讀
led數碼管是由多個發光二極體封裝在一起組成「8」字型的器件,引線已在內部連接完成,只需引出它們的各個筆劃,公共電極。led數碼管常用段數一般為7段有的另加一個小數點,還有一種是類似於3位「+1」型。
位數有半位,1,2,3,4,5,6,8,10位等等,led數碼管根據LED的接法不同分為共陰和共陽兩類,了解LED的這些特性,對編程是很重要的,因為不同類型的數碼管,除了它們的硬體電路有差異外,編程方法也是不同的。
『叄』 四位數碼管連接如何連接單片機
1、最開始,先打開keil。
『肆』 單片機做四位數碼管靜態顯示實驗時要不要鎖存器呀,最好發一張電路圖解釋一下鎖存器作用,不太懂鎖存器
用鎖存器主要是方便IO口復用
四位數碼管靜態顯示實驗時要不要鎖存器,是根據你的硬體決定的,如果你的4個數碼管各佔一個完整的埠,就不用鎖存器,但需要佔用32個IO口,一般單片機的IO引腳被用完了
如果你用4個鎖存器,它們就可以共用1個8位IO口,另外用4個引腳控制哪個鎖存器打開
總之,靜態顯示浪費硬體資源,四位數碼管要麼占單片機32個IO口,要麼需4個鎖存器,因此單片機系統中多用動態顯示方式
鎖存器就是能將輸入數據鎖存的器件,如74LS273,有8 個輸入端(D0-D7)和8個輸出端(Q0-Q7),另有一個控制端LA,當LA為高電平時,輸出端和輸入端的數據是相同的,輸入端數據變化,輸出端也跟著變化,當LA出現低電平(下降沿)時,輸出數據就鎖死了,無論輸入端數據怎麼變化,輸出端保持原數據
驅動4位數碼管時,這4個數碼管可以共用單片機的一個埠,如P0,4個鎖存器的D0-D7都接單片機的P0.0至P0,7,Q0-Q7分別接4個數碼管的8個陽極(稱為段,共陰極),P0口先輸出數據給第一個數碼管的鎖存器,經鎖存後,再用P0口給第二個數碼管送數據,不影響第一個數碼管的狀態,再鎖存後,P0口繼續給第三個第四個數碼管送數據,這就是IO口的分時復用
『伍』 單片機如何用有限的I/O口來驅動4位數碼管以及四個按鍵(I/O口只剩11個)
可以選用按鍵、顯示介面晶元BC7281或者ZLG7290,SPI介面或者I2C介面,最多隻佔用4個口線。軟體模擬SPI或I2C的時序。
如果不允許選用介面晶元,可以用7個段選+4個位選。選用共陽極數碼管,在位選的口線上通過按鍵、限流電阻接電源地。分時完成數碼管顯示和按鍵識別。
『陸』 4位共陽極led數碼管動態顯示驅動原理
要是數碼管顯示數字,有兩個條件:1.是要在VT端加合適的電源(一般每顆LED還需串上合適的電阻,起限流作用);2.要使(a,b,c,d,e,f,g,dp)端接低電平或「0」電平。這樣才能顯示的
能夠點亮數碼管後,就可以通過單片機控制數碼管顯示數字或字母。為了控制方便,我們將數碼管的a~dp引腳依次連接單片機的P10-P17引腳
『柒』 單片機如何同時控制四位數碼管顯示不同數字。
你的圖不是很清楚,根據你圖上的功能來看,器件應該是:
單片機(51系列) -> 8路緩沖器(74HC245) -> 數碼管(四位)
1、由於單片機IO口的驅動能力有限,在單片機和數碼管中間增加了緩沖器
這樣可以有效的保護單片機,提高了驅動能力。
2、接法:四位數碼管有四個選擇端,保證統一時間只A-G欄位,只對一個數碼管有效。
3、點亮數碼管,通過選取不同的選擇端,選擇好某一位數碼管,通過A-G欄位點亮。這個10K的上拉電阻,就針對單片機的,
因為單片機的P0口,內部是不帶上拉電阻的,
10K,既能保證單片機有可靠的高電平輸出,又能保證有一定的驅動
『捌』 單片機最小系統沒有鎖存器,如何控制四位數碼管,如何位選
用數碼管動態顯示,然後就是把這四位數碼管共陰或者共陽,為增加單片機的驅動能力,添四個三極體!控制這四個三極體,實現位選
『玖』 單片機驅動四位數碼管需要138解碼器嗎
不需要,直接接單片機管腳就可以了,單片機I/0口足夠點亮數碼管,用138解碼器是可以省管腳,項目一般都會用解碼器,自己拿來玩玩可用可不用
『拾』 使用單片機實現四位八段的數碼管顯示,顯示出852.6如何實現,請寫出實現流程
有兩種方式,一種是動態掃描,假設你數碼管有COM1,COM2,COM3,COM4,然後有8個段,常見的是7個控制數碼管段還有一個小數點一共8個段
那麼這里就描述單片機一次掃描4位的過程,首先,如果你的數碼管是共陽,那麼顯示第一位就將COM1引腳拉到高電平,然後8個引腳接到單片機IO口上,你說你要顯示852.6,那麼第一位是8,7個段全亮,所以7個IO全部拉低電平就行,隨後延遲差不多1ms左右
接下來就是顯示第二個數碼管,和之前一樣,COM2拉高,然後你要顯示5的話有兩個段是不亮的,所以哪兩個腳你不想讓他亮,你直接把對應的IO拉高就行,你要讓剩下哪5個段亮直接拉高電平即可,隨後再延時1ms左右
接下來兩位和上面一樣,對應位的COM口拉高電平,對應的欄位IO你要讓哪個段亮就把哪個拉低電平,哪個段不想亮就拉高電平,最後延時1ms就行
最後程序外面套個while(1)就可以實現無限循環了
還有一種方式就是用74HC595和4個數碼管連接起來,74HC595是一個串列鎖存寄存器,只需要4個74HC595和4個數碼管就行,最少只佔用單片機2個IO
這里就說明一下74HC595的控制方式
首先74HC595應該有個EN口,拉低,然後時鍾拉高,循環8次,再把時鍾信號拉低,用一個AND運算,如你要傳輸一個0XAA,那麼就是
void InputData(0XAA)
{
for(int i=0;i<8;i++)
{
if(dat&0x01==1)
{
digitalWrite(SCK,LOW);
digitalWrite(DAT,HIGH);
delayMicroseconds(10);
}
else
{
digitalWrite(SCK,LOW);
digitalWrite(DAT,LOW);
delayMicroseconds(10);
}
dat=dat>>1;
digitalWrite(SCK,HIGH);
}
}
這里我是直接復制我以前寫的一個arino驅動74HC595的程序,SCK是時鍾,DAT是數據
建議你把單片機和你數碼管的電路圖發出來,你說如何實現我不知道你是怎麼接的數碼管