李丶四:
LED可以衍生到數(shù)碼管,我暫時(shí)使用的是4個(gè)共陰的數(shù)碼管,分別接到38譯碼器的Y0,Y1,Y2,Y3口,首先令一個(gè)數(shù)碼管靜態(tài)顯示,我們?cè)跀?shù)碼管看到的1,2,3,4.....9,0,是利用數(shù)碼管的相對(duì)應(yīng)LED組合而成,因?yàn)槭枪碴帲援?dāng)我們P0口給“1”的時(shí)候,LED亮。看以下程序,我想實(shí)現(xiàn)的功能是秒數(shù)計(jì)數(shù):#include#defineucharunsignedchar#defineuint unsignedintucharLedChar[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//數(shù)碼管輸出0,1,2,3,4,5,6,7,8,9sbitADDR0=P1^0;sbitADDR1=P1^1;sbitADDR2=P1^2;sbitADDR3=P1^3;sbitADDR4=P1^4; voidmain(){ ucharcnt=0; //秒數(shù)指針 uintT=0; //定時(shí)器溢出次數(shù) P0=0x00; //初始化不顯示 ADDR0=1; ADDR1=1; ADDR2=0; //因?yàn)閿?shù)碼管陰極是138的Y4口,所以Y3口必須為0,所以A0,A1,A2分別為1.1.0 ADDR3=1; ADDR4=0; //138使能端,E1,E2低電平有效,E3高電平有效。 TMOD=0x01; //定時(shí)器選擇工作模式1 TH0=0xFC; TL0=0x18; //賦予初值 TR0=1; //開(kāi)定時(shí)器0 while(1) { if(TF0==1) { TF0=0; T++; TH0=0xFC; TL0=0x18; //重新賦值 } if(T>=1000) { T=0; P0=LedChar[cnt]; cnt++; if(cnt>=10) { cnt=0; } } }}