信息工程学院课程设计
for(i=0;i<11;++i) write_data(Alarm_3[i]); display3(); } if(cnt==7) { while(!key3); //表示闹钟时间设置退出 ahourge4=ahour4; ahourshi4=ahour4/10; write_com(0x80+0x40+7); write_data(table1[ahourge4]); delay(5); write_com(0x80+0x40+6); delay(2); write_data(table1[ahourshi4]); aminge4=amin4; aminshi4=amin4/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); for(i=0;i<11;++i) write_data(Alarm_4[i]); display4(); } if(cnt>10) { cnt=0; } }
else if(key4==0) delay(5); if(key4==0) { while(!key4); a++; if(a%2==0) {
26
信息工程学院课程设计
for(b=0;b<6;b++) { sound=~sound; delay(200); } sound=1; } else if(a%2==1) { sound=0; delay(300); sound=1; delay(300); } sound=1; } }
void lcd_init() //LCD初始化 { lcden=0; lcdrw=0; write_com(0x38); //设置8位格式,2行,5×7 write_com(0x0c); //整体显示,关光标,不闪烁 write_com(0x06); //设定输入方式,增量不转移 write_com(0x01); //清除屏幕显示 delay(2); write_com(0x80); for(i=0;i<16;i++) { write_data(table2[i]); //写入显示时间数据 delay(1); } }
void judge() { if(sec==60) { min++; sec=0; } if(min==60)
27
信息工程学院课程设计
{ hour++; min=0; } if(hour==24) { ri++; hour=0; } if(ri==30) { yue++; ri=1; }
if(yue==12) { nian++; yue=1; } }
void init() //C51初始化函数 { key1=1;key2=1;key3=1;key4=1;sec=0;a=0;sound=1; TMOD=0x10; //定时计数器T1工作在方式1 TL1=0xB0; TH1=0x3C; //计数初值为15536 EA=1; ET1=1; TR1=1; }
void speak()//music { if(amin1==min&&ahour1==hour||amin2==min&&ahour2==hour||amin3==min||amin4==min) //显示时间与闹钟设置时间完全一样且闹钟\ { delay(5); sound=0; led=0; } delay(10); delay(10);
28
信息工程学院课程设计
delay(10); led=1; sound=1; }
void led1() interrupt 3 //LED1中断函数 { TL1=0xB0; TH1=0x3C; speak(); //num1++; num2++; if(num2==20) {sec++; num2=0; judge(); } }
void main() //主函数 { lcd_init(); //LCD初始化函数 init(); //51初始化函数 while(1) { keyscan(); //调用扫描函数 minge=min; minshi=min/10; write_com(0x80+9); write_data(table1[minge]); delay(5); write_com(0x80+8); write_data(table1[minshi]); hourge=hour; hourshi=hour/10; write_com(0x80+6); write_data(table1[hourge]); delay(5); write_com(0x80+5); write_data(table1[hourshi]);
29
信息工程学院课程设计
write_com(0x80+7); write_data(':'); delay(5);
secge=sec; //扩展秒表功能 secshi=sec/10;
write_com(0x80+15); write_data(table1[secge]); delay(5);
write_com(0x80+14); write_data(table1[secshi]); qi();
} }
30