单片机 【数码管显示】
 
1 #include "reg51.h" 2 #include "seg_display.h" 3 #include "delay.h" 4 5 #define uint unsigned int 6 #define uchar unsigned char 7 sbit du = P2^6; 8 sbit we = P2^7; 9 10 uchar leddata[]={ 11 12 0x3F, //"0" 13 0x06, //"1" 14 0x5B, //"2" 15 0x4F, //"3" 16 0x66, //"4" 17 0x6D, //"5" 18 0x7D, //"6" 19 0x07, //"7" 20 0x7F, //"8" 21 0x6F, //"9" 22 0x77, //"A" 23 0x7C, //"B" 24 0x39, //"C" 25 0x5E, //"D" 26 0x79, //"E" 27 0x71, //"F" 28 0x76, //"H" 29 0x38, //"L" 30 0x37, //"n" 31 0x3E, //"u" 32 0x73, //"P" 33 0x5C, //"o" 34 0x40, //"-" 35 0x00, //熄灭 36 0x00 //自定义 37 38 }; 39 40 Display(uint i) 41 { 42 /* 43 匹配number的长度 44 在数码管上显示,其余不显示 45 */ 46 47 uchar shi,ge; 48 uchar length; 49 //计算传参的位数 50 length=2; 51 shi = i / 10;//求模 i除以10取商的整数部分 52 ge = i % 10;//求余 i除以10取余数部分 53 switch(length) //匹配长度 54 { 55 case 1: 56 break; 57 case 2: 58 59 60 P0 = 0xff; //清除断码 61 we = 1;//打开位选 62 P0 = 0xfe;//1111 1110 只选通第一位数码管 63 we = 0; //关闭位选 64 65 du = 1; //打开段选 66 P0 = leddata[shi]; 67 du = 0; //关闭段选 68 delay(5);//延时5毫秒 69 70 P0 = 0xff;//清除断码 71 we = 1; //打开位选 72 P0 = 0xfd;//1111 1101 只选通第二位数码管 73 we = 0; //关闭位选 74 75 du = 1;//打开段选 76 P0 = leddata[ge]; 77 du = 0; //关闭段选 78 delay(5);//延时5毫秒 79 break; 80 case 3: 81 break; 82 case 4: 83 break; 84 case 5: 85 break; 86 case 6: 87 break; 88 case 7: 89 break; 90 case 8: 91 break; 92 93 94 95 96 } 97 98 } 99 100 int main() 101 { 102 int number = 90; 103 while(1) 104 { 105 Display(number); 106 107 108 } 109 110 111 112 }
    M54

 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号