系统性能测试与功能说明
走时:默认走时状态,按24小时制分别小时“时时-分分-秒秒”,时间会按实际时间以秒为最小单位变化。
走时调整:按K1、K2和K3可以调整时分秒,第一次按下K1选择调整小时数,按下K2,小时数加1,按下K3,小时数减1。第二次按下K1选则调整分钟数,按下K2,分钟数加1,按下K3,分钟数减1。第三次按下K1选择调整秒数,按下K2,秒数加1,按下K3,秒数减1。第四次按下K1选择退出调试。
预览:
单片机源程序如下:
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit _led=P2^7;
- sbit key1=P2^0;
- sbit key2=P2^1;
- sbit key3=P2^2;
- uchar num=0,temp=0,count=0;
- uchar aa;
- uchar hour,min,sec;
- uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- void delay(uint z);
- void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f,uchar aa);
- void read_key();
- void led();
- void time_change();
- void main() //主函数
- {
- P2=0xff;
- hour=12;
- min=0;
- sec=0;
- TMOD=0x11;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- TH1=(65536-50000)/256;
- TL1=(65536-50000)%256;
- EA=1;
- ET0=1;
- ET1=1;
- TR0=1;
- TR1=1;
- aa=0xff;
- while(1)
- {
- time_change();
- display(table[hour/10],table[hour%10],table[min/10],table[min%10],table[sec/10],table[sec%10],0xff);
- }
- }
- void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f,uchar aa) //显示函数
- {
- if(num==1){P1=0x01&aa;P0=a;delay(2);}else{P1=0x01;P0=a;delay(2);} //hour
- if(num==1){P1=0x02&aa;P0=b;delay(2);}else{P1=0x02;P0=b;delay(2);} //hour
- if(num==2){P1=0x04&aa;P0=c;delay(2);}else{P1=0x04;P0=c;delay(2);} //min
- if(num==2){P1=0x08&aa;P0=d;delay(2);}else{P1=0x08;P0=d;delay(2);} //min
- if(num==3){P1=0x10&aa;P0=e;delay(2);}else{P1=0x10;P0=e;delay(2);} //sec
- if(num==3){P1=0x20&aa;P0=f;delay(2);}else{P1=0x20;P0=f;delay(2);} //sec
- }
- void timer0() interrupt 1 //定时器0中断函数
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- temp++;
- }
- void timer1() interrupt 3 //定时器1中断函数
- {
- TH1=(65536-50000)/256;
- TL1=(65536-50000)%256;
- count++;
- if(count>=20)
- count=0;
- }
- void delay(uint z) //延时函数
- {
- uint j,k;
- for(j=z;j>0;j--)
- for(k=120;k>0;k--);
- }
- void read_key() //读按键函数
- {
- if(key1==0)
- {
- _led=0;
- delay(100);
- if(key1==0)
- {
- delay(100);
- _led=1;
- num++;
- if(num>3)
- {
- num=0;
- }
- while(1)
- {
- if(key1==0)
- {
- _led=0;
- delay(10);
- if(key1==0)
- {
- num++;
- if(num>3)
- {
- num=0;
- break;
- }
- }
- while(!key1);
- delay(10);
- while(!key1);
- _led=1;
- }
- if(key2==0)
- {
- _led=0;
- delay(80);
- if(key2==0)
- {
- if(num==1){hour++;if(hour==24)hour=0;}
- if(num==2){min++;if(min==60)min=0;}
- if(num==3){sec++;if(sec==60)sec=0;}
- }
- while(!key1);
- delay(10);
- while(!key1);
- _led=1;
- }
- if(key3==0)
- {
- _led=0;
- delay(80);
- if(key3==0)
- {
- if(num==1)
- {
- hour--;
- if(hour==0)
- {
- hour=23;
- }
- }
- if(num==2)
- {
- min--;
- if(min==0)
- {
- min=59;
- }
- }
- if(num==3)
- {
- sec--;
- if(sec==59)
- {
- sec=59;
- }
- }
- while(!key1);
- delay(10);
- while(!key1);
- _led=1;
- }
- if(count<=15)
- display(table[hour/10],table[hour%10],table[min/10],table[min%10],table[sec/10],table[sec%10],0xff);
- if(count>15)
- display(table[hour/10],table[hour%10],table[min/10],table[min%10],table[sec/10],table[sec%10],0x00);
- }
- }
- while(!key1);
- delay(10);
- while(!key1);
- _led=1;
- }
- }
- }
- void time_change() //时间调整函数
- {
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
资料.7z
(127.21 KB, 下载次数: 66)
|