write_com(0x80+0x40); for(i=0;i<11;i++) write_data(riqi[i]); while(!key3); break; //设置结束,此时LCD第二行无数据显示,只有第一行有时间显示 } } } }
void keyscan() //键盘扫描 { if(key1==0) { delay(10); if(key1==0) { while(!key1); //key1键松开后执行下一行程序 time(); //调用time()函数,即时间设置 } } else if(key2==0) { cnt1++; delay(10); if(cnt1==1) { while(!key2) { ahourge1=ahour1; ahourshi1=ahour1/10; write_com(0x80+0x40+7); write_data(table1[ahourge1]); delay(5); write_com(0x80+0x40+6); delay(2); write_data(table1[ahourshi1]); aminge1=amin1; aminshi1=amin1/10; write_com(0x80+0x40+10);
21
write_data(table1[aminge1]); delay(5); write_com(0x80+0x40+9); delay(2); write_data(table1[aminshi1]); write_com(0x80+0x40+8); write_data(':'); write_com(0x80+0x40); for(i=0;i<6;++i) write_data(Alarm_1[i]); } write_com(0x80+0x40); for(i=0;i<11;i++) write_data(riqi[i]); 时间,闹钟设置时间不显示 } if(cnt1==2) { while(!key2) { ahourge2=ahour2; ahourshi2=ahour2/10; write_com(0x80+0x40+7); write_data(table1[ahourge2]); delay(5); write_com(0x80+0x40+6); delay(2); write_data(table1[ahourshi2]); aminge1=amin1; aminshi1=amin1/10; write_com(0x80+0x40+10); write_data(table1[aminge2]); delay(5); write_com(0x80+0x40+9); delay(2); write_data(table1[aminshi2]); write_com(0x80+0x40+8); write_data(':'); write_com(0x80+0x40); for(i=0;i<6;++i) write_data(Alarm_2[i]); } write_com(0x80+0x40);
//显示闹钟设置的时间 //key2松开后,LCD只有第一行显示 //显示闹钟设置的时间 22
for(i=0;i<11;i++) write_data(riqi[i]); //key2松开后,LCD只有第一行显示时间,闹钟设置时间不显示 } if(cnt1==3) { while(!key2) { ahourge3=ahour3; ahourshi3=ahour3/10; write_com(0x80+0x40+7); write_data(table1[ahourge3]); delay(5); write_com(0x80+0x40+6); delay(2); write_data(table1[ahourshi3]); aminge1=amin1; aminshi1=amin1/10; write_com(0x80+0x40+10); write_data(table1[aminge3]); delay(5); write_com(0x80+0x40+9); delay(2); write_data(table1[aminshi3]); write_com(0x80+0x40+8); write_data(':'); write_com(0x80+0x40); for(i=0;i<6;++i) write_data(Alarm_3[i]); } write_com(0x80+0x40); for(i=0;i<11;i++) write_data(riqi[i]); 时间,闹钟设置时间不显示 } if(cnt1==4) { while(!key2) { ahourge4=ahour4; ahourshi4=ahour4/10;
//显示闹钟设置的时间 //key2松开后,LCD只有第一行显示23
write_com(0x80+0x40+7); write_data(table1[ahourge4]); delay(5); write_com(0x80+0x40+6); delay(2); write_data(table1[ahourshi4]); aminge1=amin1; aminshi1=amin1/10; write_com(0x80+0x40+10); write_data(table1[aminge4]); delay(5); write_com(0x80+0x40+9); delay(2); write_data(table1[aminshi4]); write_com(0x80+0x40+8); write_data(':'); write_com(0x80+0x40); for(i=0;i<6;++i) write_data(Alarm_4[i]); //显示闹钟设置的时间 } write_com(0x80+0x40); for(i=0;i<11;i++) write_data(riqi[i]); //key2松开后,LCD只有第一行显示时间,闹钟设置时间不显示 }
if(cnt1>4) cnt1=0; }
else if(key3==0) { loop: cnt++; delay(10); if(cnt==1) { while(!key3); //表示闹钟时间设置退出 ahourge1=ahour1; ahourshi1=ahour1/10; write_com(0x80+0x40+7); write_data(table1[ahourge1]); delay(5); write_com(0x80+0x40+6); delay(2);
24
write_data(table1[ahourshi1]); aminge1=amin1; aminshi1=amin1/10; write_com(0x80+0x40+10); write_data(table1[aminge1]); delay(5); write_com(0x80+0x40+9); delay(2); write_data(table1[aminshi1]); write_com(0x80+0x40+8); write_data(':'); write_com(0x80+0x40); for(i=0;i<6;++i) write_data(Alarm_1[i]); while(P3==0xff); if(key1==0||key2==0||key3==0) { delay(10); if(key1==0||key2==0||key3==0) {display1(); } } else if(key4==0) goto loop; } if(cnt==2) { while(!key3); //表示闹钟时间设置退出 ahourge2=ahour2; ahourshi2=ahour2/10; write_com(0x80+0x40+7); write_data(table1[ahourge2]); delay(5); write_com(0x80+0x40+6); delay(2); write_data(table1[ahourshi2]); aminge2=amin2; aminshi2=amin2/10; write_com(0x80+0x40+10); write_data(table1[aminge2]); delay(5); write_com(0x80+0x40+9); delay(2); write_data(table1[aminshi2]); write_com(0x80+0x40+8);
25