dula=1; //显示小时的十位数
P0=table[h2]; dula=0;
P0=0XFF; //P0初始化 wela=1;
P0=0XFE; //打开第一位数码管 delay(1);
dula=1; //显示小时的个位数
P0=table[h1]+0x80; //0x80显示小数点 dula=0;
P0=0XFF; //P0初始化
wela=1; P0=0XFd; //打开第二位数码管 delay(1);
dula=1; //显示分钟的十位数 P0=table[m2]; dula=0; P0=0XFF; wela=1; P0=0XFb; delay(1);
dula=1; //显示分钟的个位数 P0=table[m1]+0x80; dula=0; P0=0XFF; wela=1; P0=0XF7; delay(1);
dula=1;
//显示秒的十位数 P0=table[s2]; dula=0; P0=0XFf; wela=1; P0=0Xef; delay(1);
dula=1; //显示秒的个位数 P0=table[s1]; dula=0; P0=0XFF; wela=1; P0=0Xdf; delay(1); }
void keyscan() //键盘扫描程序// {
if(key1==0) {
delay(10); if(key1==0) {
//TR0=0; temp1++;
if(temp1==4) //temp1用于记小时,分钟,秒的数码管 {
temp1=0; TR0=1; }
while(!key1)
switch(temp2) //temp2用于记日历,闹钟,时钟三种模式 {
case 0:display(hour1,min1,sec1);break; case 1:display(year1,mon1,day1);break; case 2:display(hour2,min2,sec2);break; } }
}
if(key2==0) {
delay(10); if(key2==0) {
if(temp2==0) { TR0=0;
switch(temp1) {
case 1:sec1++;if(sec1==60)sec1=0;break; case 2:min1++;if(min1==60)min1=0;break; case 3:hour1++;if(hour1==24)hour1=0;break; }
while(!key2)
display(hour1,min1,sec1); }
if(temp2==1) { TR0=1;
switch(temp1) {
case 1:day1++;if(day1==31)day1=1;break; case 2:mon1++;if(mon1==13)mon1=1;break; case 3:year1++;if(year1==100)year1=0;break; }
while(!key2)
display(year1,mon1,day1); } }
if(temp2==2) { TR0=1;
switch(temp1) {
case 1:sec2++;if(sec2==60)sec2=0;break; case 2:min2++;if(min2==60)min2=0;break; case 3:hour2++;if(hour2==24)hour2=0;break; }
while(!key2)
display(hour2,min2,sec2); }
}
if(key3==0) {
delay(10); if(key3==0) {
if(temp2==0) { TR0=0;
switch(temp1) {
case 1:if(sec1==0)sec1=60;sec1--;break; case 2:if(min1==0)min1=60;min1--;break; case 3:if(hour1==0)hour1=24;hour1--;break; }
while(!key3)
display(hour1,min1,sec1); }
if(temp2==1) { TR0=1;
switch(temp1) {
case 1:if(day1==1)day1=31;day1--;break; case 2:if(mon1==1)mon1=13;mon1--;break; case 3:if(year1==0)year1=100;year1--;break; }
while(!key3)
display(year1,mon1,day1); }
if(temp2==2) { TR0=1;
switch(temp1) {
case 1:if(sec2==0)sec2=60;sec2--;break; case 2:if(min2==0)min2=60;min2--;break; case 3:if(hour2==0)hour2=24;hour2--;break; }
while(!key3)
display(hour2,min2,sec2); } } }
if(key4==0) {
delay(10); if(key4==0) {
temp1=0; temp2++; if(temp2==3) temp2=0; while(!key4) switch(temp2) {
case 0:display(hour1,min1,sec1);break; case 1:display(year1,mon1,day1);break; case 2:display(hour2,min2,sec2);break; } } }
switch(temp2) {
case 0:display(hour1,min1,sec1);break; case 1:display(year1,mon1,day1);break; case 2:display(hour2,min2,sec2);break; } }
void alarm() //蜂鸣器,流水灯程序// {
uint i; if((hour1==hour2&&min1==min2&&(sec1>=sec2&&sec1 bear=~bear; P1=~P1; switch(temp2) { case 0:display(hour1,min1,sec1);break; case 1:display(year1,mon1,day1);break; case 2:display(hour2,min2,sec2);break; } delay(30);
单片机课程作息时间控制设计报告



