|
無標(biāo)題.jpg (139.54 KB, 下載次數(shù): 35)
下載附件
2021-11-29 06:56 上傳
- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit K1=P3^0;
- uchar code tab[]={ //標(biāo)準(zhǔn)字庫
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
- //black - H J K L N o P U t G Q r M y
- 0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e};
- uchar displayData[4];//顯示數(shù)據(jù)緩存
- uchar Cnt2ms;
- uchar KeySec;
- uint num;
- bit flag1,flag2;
- void Timer0Init() //2毫秒@12.000MHz
- {
- TMOD= 0x01; //設(shè)置定時(shí)器模式
- TL0 = 0x30; //設(shè)置定時(shí)初始值
- TH0 = 0xF8; //設(shè)置定時(shí)初始值
- TR0 = 1; //定時(shí)器0開始計(jì)時(shí)
- EA = 1;
- ET0 = 1;
- }
- //按鍵掃描
- void keyscan()
- {
- static unsigned int time=0;
- static bit sign=0;
- if(!K1)
- {
- if(++time>=100 && sign==0)
- {
- sign=1;
- if(num<1000 && flag1==0)
- {
- flag1=1;
- flag2=1;
- }
- else if(num<1000 && flag1==1)
- {
- flag1=0;
- flag2=1;
- }
- else if(num>=1000 && flag1==0)
- {
- flag1=0;
- flag2=0;
- num=0;
- }
- }
- }
- else
- {
- time=0;
- sign=0;
- }
- }
- void display()//顯示
- {
- static uchar i=0;
- if(flag2)
- {
- displayData[0] = tab[num/1000%10];
- displayData[1] = tab[num/100%10];
- displayData[2] = tab[num/10%10];
- displayData[3] = tab[num%10];
- }
- else
- {
- displayData[0] = 0x00;
- displayData[1] = 0x5C;//'O'
- displayData[2] = 0x71;//'F'
- displayData[3] = 0x71;//'F'
- }
- P0=0x00;//消隱
- P2&=0xF0;
- P2|=~(0x01<<i);
- P0=displayData[i];
- i=++i%4;
- }
- void main()//主函數(shù)
- {
- Timer0Init();//初始化定時(shí)器
- while(1)
- {
- keyscan();
- }
- }
- void Timer0Interrupt(void) interrupt 1
- {
- TL0 = 0x30;
- TH0 = 0xF8;
- if(flag1)
- {
- if(++Cnt2ms>=50)
- {
- Cnt2ms=0;
- num++;
- if(++num>=1000)
- {
- flag1=0;
- }
- }
- }
- display();//數(shù)碼管顯示
- }
復(fù)制代碼
|
|