今天主要介紹一下數碼管,實際上在學完發光二極管的基礎上,數碼管一點都不難理解,因為這二者本來就是一脈相通的。首先,我們看一下實物圖,基本人人都很熟悉:
本文引用地址:http://cqxgywz.com/article/201611/322435.htm
它的內部結構就是由8個發光二極管組成的,只是要區分共陽極與共陰極,這個跟之前的二極管原理一樣。當然,在排列時要注意順序,一般都是a到h。

那么什么是動態顯示與靜態顯示呢?看一下官方的解答。所謂靜態顯示,就是每一個數碼管的段碼都要獨占具有鎖存功能的輸出口,CPU把要顯示的字碼送到輸出口上,就可以使數碼管顯示對應的字符, 直到下一次送出另外一個字碼之前,顯示的內容一直不會消失;動態掃描是把所有顯示器的8個段碼中的A-dp的各個相同段連接在一起,接到一個公共的輸出口上,而數碼管的位端分別接在另外的輸出口上,通過這兩個輸出口的兩組信號相互作用來產生顯示效果。即讓各位數碼管按照一定順序輪流顯示,只要掃描頻率足夠高,由于人眼的“ 視覺暫留”現象,就能連續穩定的顯示。
接下來,寫幾個程序讓它亮一下:
1、一個數碼管亮
#include
sbitduan=P2^2;
sbitwei=P2^3;
voidmain()
{
wei=1;
P0=0x00;
wei=0xbf;(此條語句結果為第7位數碼管亮,顯示4)
duan=1;
P0=0x66;
duan=1;
while(1);
}
2、多個數碼管靜態顯示
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitduan=P2^2;
sbitwei=P2^3;
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
voiddelay(uintz);
voidmain()
{wei=1;
P0=0xea;
wei=0;
while(1)
{uintnum;
for(num=0;num<16;num )
{
duan=1;
P0=table[num];
duan=0;
delay(1000);
}
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
以上就是對數碼管靜態顯示的簡單分析,動態的稍后介紹,在數碼管這塊,主要解決一點,就是位鎖存與段鎖存,把這個理解了,剩下的就是簡單地c語言編程了,其實真的不難!
評論