1. 單片機兩位數碼管顯示數字
#include<reg51.h>
#define uchar unsigned char;
uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到f
uchar number,dat=29;
void t0isr() interrupt 1
case 0:P2=0x02;P0=distab[dat/10];
break;
case 1:P2=0x01;P0=distab[dat%10];
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}
分類
數碼管也稱LED數碼管,不同行業人士對數碼管的稱呼不一樣,其實都是同樣的產品。按發光二極體單元連接方式可分為共陽極數碼管和共陰極數碼管。共陽數碼管是指將所有發光二極體的陽極接到一起形成公共陽極(COM)的數碼管,共陽數碼管在應用時應將公共極COM接到+5V,當某一欄位發光二極體的陰極為低電平時,相應欄位就點亮,當某一欄位的陰極為高電平時,相應欄位就不亮。
以上內容參考:網路-數碼管
2. 51單片機怎樣用鍵盤控制數碼管顯示
51單片機怎樣用鍵盤控制數碼管顯示的方法。
如下參考:
1.首先,編寫代碼並點亮數碼管。
3. 使用單片機實現四位八段的數碼管顯示,顯示出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是數據
建議你把單片機和你數碼管的電路圖發出來,你說如何實現我不知道你是怎麼接的數碼管