51單片機-數(shù)碼管
共陰極是指所有發(fā)光二極管陰極連接在一起,這個共陰極可以用來做片選。
如圖,這里有8個發(fā)光二極管,到底哪個亮需要進行片選。
段選:8段數(shù)碼管每一段的控制段叫段選
位選:就是進行哪個8段數(shù)碼管亮的選擇
TX-1C使用兩片鎖存器74HC573實現(xiàn)位選和段選
這里的D0"7是連在單片機的I/O口上,當為高電平時,Q與D中的數(shù)據(jù)一致,遇到負跳變沿時Q中的
數(shù)據(jù)保持住,D中的數(shù)據(jù)即使變化也不會影響Q。
MCUVersion2使用的是74HC245和38譯碼器74HC138
74HC245有一個緩沖和驅動的作用,這樣可以使led顯示的更加穩(wěn)定,
數(shù)碼管顯示分動態(tài)顯示和靜態(tài)顯示,每個數(shù)碼管的狀態(tài)都是被不斷更新的,利用的人的視覺暫留,
使看上去數(shù)值保持在一個固定的位置上,人的視覺是有延續(xù)性的,當一個東西不斷變化時,變化
的時間小于人眼的視覺暫留時間的話,人的眼睛會以為這個東西是連續(xù)的。靜態(tài)顯示是一幅畫面
放在那看上去是不動的而它確實是不動的。動態(tài)掃描顯示即輪流向各位數(shù)碼管送出字型碼和相應
位選,利用發(fā)光管的余暉和視覺暫留作用,使人的感覺好像各位數(shù)碼管同時都在顯示。
靜態(tài)顯示:
數(shù)碼管從左向右依次點亮:
#include <reg52.h>
void delay(){
int i,j;
for(i = 0; i < 0xff; i++)
for(j = 0; j < 0xff; j++)
;
}
unsigned int code duan[]={
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07};
unsigned int code wei[]={
0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff};
void main(){
while(1){
int i;
P2 = 0x39;
for(i = 0; i < 8; i++){
P2 = duan[ i];
P1 = wei[ i];
delay();
}
}
}
想讓哪個數(shù)碼管亮多少就亮多少:
評論