- #include <stc15.h>
- #include <intrins.h>
- typedef unsigned char uchar;
- typedef unsigned int uint;
- sbit KEY2=P3^0;
- sbit KEY3=P3^1;
- sbit KEY4=P3^2;
- sbit KEY5=P3^3;
- void SEG_Display(SEG_Num);
- void Delay10ms();
- uchar code SegeTable[] = {
- 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e, 0xff
- };
- uchar disNum[4]={0,0,9,9};
- uchar disScan[4]={0xff,0xff,0xef,0xdf};
- uchar SEG_Num=03;
- void main()
- {
- uchar i=0;
- P2M0=0X00;P2M1=0X00;
- P4M0=0X00;P4M1=0X00;
- while(1)
- {
- SEG_Display(SEG_Num);
- if(KEY2==0)
- {
- Delay10ms();
- while(!KEY2);
- SEG_Num++;
- if(SEG_Num>99)
- {
- SEG_Num=0;
- }
- }
- if(KEY3==0)
- {
- Delay10ms();
- while(!KEY3);
- if(SEG_Num>0)
- {
- SEG_Num--;
- }
- else
- {
- SEG_Num=99;
- }
-
- }
-
- if(KEY4==0)
- {
- if(KEY4==0)
- {
- while(!KEY4);
- SEG_Num=0;
- }
-
- }
- }
- }
- void Delay10ms() //@11.0592MHz
- {
- unsigned char i, j;
- i = 108;
- j = 145;
- do
- {
- while (--j);
- } while (--i);
- }
- void SEG_Display(uint Num)
- {
- uchar i,qian,bai,shi,ge;
- qian=Num/1000;
- bai=(Num%1000)/100;
- shi=(Num%100)/10;
- ge=Num%10;
- disNum[0]=qian;
- disNum[1]=bai;
- disNum[2]=shi;
- disNum[3]=ge;
- if((disNum[0]==0)&&(disNum[1]!=0))
- {disNum[0]=16;}
- if((disNum[0]==0)&&(disNum[1]==0)&&(disNum[2]!=0))
- {disNum[0]=16;disNum[1]=16;}
- if((disNum[0]==0)&&(disNum[1]==0)&&(disNum[2]==0)&&(disNum[3]!=0))
- {disNum[0]=16;disNum[1]=16;disNum[2]=16;}
- for(i=0;i<4;i++)
- {
- P4|=0X36;
- P4&=disScan[i];
- P2=SegeTable[disNum[i]] ;
- Delay10ms();
- }
-
- }
复制代码
|