- #include <reg52.h>
- unsigned char Seg_CC_Data[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- unsigned char Seg_CC_Position[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
- void DelayTime10ms(unsigned int DelayValue);
- void Seg_Display_Second(unsigned char DisData,unsigned char Seg_Number);
- void Seg_Display_Minute(unsigned char DisData,unsigned char Seg_Number);
- void Seg_Display_Hour(unsigned char DisData,unsigned char Seg_Number);
- unsigned char Count=0;
- unsigned char Second=45;
- unsigned char Minute=58;
- unsigned char Hour=10;
- void main()
- {
- TMOD=0x01;
- EA=1;
- ET0=1;
-
- PT0=1;
-
- TH0=(65536-50000)/256; //??×°??êy3??μ
- TL0=(65536-50000)%256; //??×°??êy3??μ
-
- TR0=1;
-
- for(;;)
- {
- Seg_Display_Second(Second,2);
- Seg_Display_Minute(Minute,2);
- Seg_Display_Hour(Hour,2);
- }
- }
- void DelayTime10ms(unsigned int DelayValue){
- unsigned int a,b;
- for(a =0 ;a < DelayValue; a++)
- for(b =0 ;b < 1828; b++);
- }
- void Seg_Display_Second(unsigned char DisData,unsigned char Seg_Number)
- {
- unsigned char i=0;
- for(i=0;i<Seg_Number;i++)
- {
- P2=Seg_CC_Position[i];
- P0=Seg_CC_Data[DisData%10];
- DisData=DisData/10;
- DelayTime10ms(1);
- }
- }
- void Seg_Display_Minute(unsigned char DisData,unsigned char Seg_Number)
- {
- unsigned char i=0;
-
- for(i=2;i<Seg_Number+2;i++)
- {
- P2=Seg_CC_Position[i];
- P0=Seg_CC_Data[DisData%10];
- DisData=DisData/10;
- DelayTime10ms(1);
- }
- }
- void Seg_Display_Hour(unsigned char DisData,unsigned char Seg_Number)
- {
- unsigned char i=0;
- for(i=4;i<Seg_Number+4;i++)
- {
- P2=Seg_CC_Position[i];
- P0=Seg_CC_Data[DisData%10];
- DisData=DisData/10;
- DelayTime10ms(1);
- }
- }
- void Irq_Timer_0() interrupt 1 //?D??·t??3ìDò
- {
- TH0=(65536-50000)/256; //??×°??êy3??μ
- TL0=(65536-50000)%256; //??×°??êy3??μ
- if(Count++==20)
- {
- Count=0;
-
- if(++Second==60)
- {
- Second=0;
- if(++Minute==60)
- {
- Minute=0;
- if(++Hour==24)
- {Hour=0;}
-
- }
- }
- }
- }
复制代码
|