1. 程式人生 > >51微控制器_數碼管

51微控制器_數碼管

 1 /**************************************************************************************                                                                                
 2 *                      動態數碼管顯示實驗                                                  *                        
 3 實現現象:下載程式後數碼管從右至左顯示0-7。                                                                                
4 注意事項:如果不想讓點陣模組顯示,可以將74HC595模組上的JP595短接片拔掉。 5 ***************************************************************************************/ 6
7 #include "reg52.h" //此檔案中定義了微控制器的一些特殊功能暫存器 8 typedef unsigned int u16; //對資料型別進行宣告定義 9 typedef unsigned char
u8; 10 sbit LSA=P2^2; 11 sbit LSB=P2^3; 12 sbit LSC=P2^4; 13 14 u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 15 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值 16 17 /******************************************************************************* 18 * 函 數 名 : delay 19 * 函式功能 : 延時函式,i=1時,大約延時10us 20 *******************************************************************************/ 21 void delay(u16 i) 22 { 23 while(i--); 24 } 25 26 /******************************************************************************* 27 * 函 數 名 : DigDisplay 28 * 函式功能 : 數碼管動態掃描函式,迴圈掃描8個數碼管顯示 29 *******************************************************************************/ 30 void DigDisplay() 31 { 32 u8 i; 33 for(i=0;i<8;i++) 34 { 35 switch(i) //位選,選擇點亮的數碼管, 36 { 37 case(0): 38 LSA=0;LSB=0;LSC=0; break;//顯示第0位 39 case(1): 40 LSA=1;LSB=0;LSC=0; break;//顯示第1位 41 case(2): 42 LSA=0;LSB=1;LSC=0; break;//顯示第2位 43 case(3): 44 LSA=1;LSB=1;LSC=0; break;//顯示第3位 45 case(4): 46 LSA=0;LSB=0;LSC=1; break;//顯示第4位 47 case(5): 48 LSA=1;LSB=0;LSC=1; break;//顯示第5位 49 case(6): 50 LSA=0;LSB=1;LSC=1; break;//顯示第6位 51 case(7): 52 LSA=1;LSB=1;LSC=1; break;//顯示第7位 53 } 54 P0=smgduan[i];//傳送段碼 55 delay(100); //間隔一段時間掃描 56 P0=0x00;//消隱 57 } 58 } 59 60 /******************************************************************************* 61 * 函 數 名 : main 62 * 函式功能 : 主函式 63 * 輸 入 : 無 64 * 輸 出 : 無 65 *******************************************************************************/ 66 void main() 67 { 68 while(1) 69 { 70 DigDisplay(); //數碼管顯示函式 71 } 72 }