IMG_20210602_152421.jpg (1.92 MB, 下載次數: 33)
下載附件
2021-6-2 15:27 上傳
單片機源程序如下:
- #include "NEW_8051.H"
- #define uint unsigned int
- #define uchar unsigned char
- uchar code num[10][5]={
- {0x83,0x75,0x6d,0x5d,0x83},
- {0xff,0xbd,0x01,0xfd,0xff},
- {0xbd,0x79,0x75,0x6d,0x9d},
- {0x7b,0x7d,0x5d,0x2d,0x73},
- {0xe7,0xd7,0xb7,0x01,0xf7},
- {0x1b,0x5d,0x5d,0x5d,0x63},
- {0xc3,0xad,0x6d,0x6d,0x03},
- {0x30,0x70,0x71,0x60,0x10},
- {0x93,0x6d,0x6d,0x6d,0x93},
- {0x90,0x6d,0x6d,0x6b,0x87}};
- //0~9字表
-
- uchar code maohao[]=
- {0xff,0x93,0x93,0xff,0xff};/*":",0*/
- uchar code duanxian[]=
- {0xef,0xef,0xef,0xef,0xef};/*"-",0*/
- uchar n,second,minute,hour;//定義時分秒
- void delay(uint t)
- {
- register uint bt;
- for(;t;t--)
- for(bt=0;bt<25;bt++)
- ;
- } //延時函數
- void init()
- {
- hour=11;
- minute=12;
- second=0;
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- }//初始化函數,開啟定時器
- void display()
- {
- char m;
- if(n==20) //延時1s
- {
- n=0;
- second++;
- if(second==60) //秒到60
- {
- second=0;
- minute++;
- if(minute==60) //分到60
- {
- minute=0;
- hour++;
- if(hour==24)
- hour=0; //時到24
- }
- }
- }//進位操作
- for(m=4;m>=0;m--)
- {P0=num[second%10][m];delay(2);}
- P0=0xff;
- delay(4);
- //顯示秒個位
- for(m=4;m>=0;m--)
- {P0=num[second/10][m];delay(2);}
- //顯示秒十位
- for(m=4;m>=0;m--)
- {P0=maohao[m];delay(2);}
- //顯示":"
- for(m=4;m>=0;m--)
- {P0=num[minute%10][m];delay(2);}
- P0=0xff;
- delay(4);
- //顯示分個位
- for(m=4;m>=0;m--)
- {P0=num[minute/10][m];delay(2);}
- //顯示分十位
- for(m=4;m>=0;m--)
- {P0=maohao[m];delay(2);}
- //顯示":"
- for(m=4;m>=0;m--)
- {P0=num[hour%10][m];delay(2);}
- P0=0xff;
- delay(4);
- //顯示時個位
- for(m=4;m>=0;m--)
- {P0=num[hour/10][m];delay(2);}
- //顯示時十位
- P0=0xff;
- delay(10);
- //延時,保證一個周期
- }//顯示函數
- void main()
- {
- init();
- while(1)
- display();
- }//一直顯示,等待中斷
- void T_0() interrupt 1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- n++;
- }//定時器0中斷程序
復制代碼
|