单片机 【数码管显示】

  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 }
version1.0

 

posted @ 2019-05-04 19:54  Crown-V  阅读(116)  评论(0)    收藏  举报