{xiake(); flag4=1; }
if(K5num==4) {dengkong(); flag4=1; }
clock(); } }
void time0() interrupt 1//定时器0中断服务程序
{TH0=(65536-50000)/256;//定时器重新装入数值
TL0=(65536-50000)%6; aa++;//中断次数累加
if(aa==20)//20次50毫秒为1秒 {aa=0;
miao++; led=~led; if(miao==60) {miao=0; fen++;
flag2=1;//闹钟响起时按下K4键闹钟关闭,此处应重置该变量,使下一次闹钟时间来到时,闹钟仍然可以响起
if(fen==60) {fen=0; shi++;
if(shi==24) { shi=0; ri++;
if(ri==32) { ri=1; yue++; if(yue==13) {yue=1; nian++; if(flag1==1)
{write_nian(3,nian); write_com(0x80+0x40+11); write_date(':');
write_com(0x80+0x40+14); write_date(' ');
write_com(0x80+0x40+15); write_date(' ');
软件流程图如下:
} } if(flag1==1) { write_yue(8,yue); write_com(0x80+0x40+11); write_date(':');
write_com(0x80+0x40+14); write_date(' ');
write_com(0x80+0x40+15); write_date(' '); } }
if(flag1==1)
{write_ri(11,ri); write_com(0x80+0x40+11); write_date(':');
write_com(0x80+0x40+14); write_date(' ');
write_com(0x80+0x40+15); write_date(' '); } }
if(flag1==1)
{write_sfm(9,shi);
write_com(0x80+0x40+11); write_date(':');
write_com(0x80+0x40+14); write_date(' ');
write_com(0x80+0x40+15); write_date(' '); } }
if(flag1==1)
{write_sfm(12,fen);
write_com(0x80+0x40+11); write_date(':');
write_com(0x80+0x40+14); write_date(' ');
write_com(0x80+0x40+15); write_date(' ');
}//分钟发生变化则立即吸入屏幕显示
} } }
图8 设置系统时间流程图
图9 设置任意闹钟流程图
图10 闹钟开关处理流程图
四、课程设计成果 1.时间设置检测
通过K1~K5按键操控,改变系统时间与闹钟设定时间,经测试,所有按键均能实现实验设计中的内容。
2.电路连接电源之后的初始显示屏
上半屏幕显示年-月-日,下半屏幕显示时间选项。软件中设置的初始系统时间为8:00;闹钟1为8:01;闹钟2为8:02;闹钟3为8:03;闹钟4为8:04.
图11 液晶显示初始值
3.闹钟1到时的电路变化
当闹钟1到时,蜂鸣器以较高频率响起,发出“滴滴滴”的声音。仿真效果较好,但实物的蜂鸣器声音不够响亮,尝试改变限流电阻但无明显成效,测量引脚跳变之后的电压值为1.8V,可知蜂鸣器声音小的原因可能是电压不够。
图12 闹钟1到时仿真示意图 4.闹钟2到时的电路变化
闹钟2到时,与P2.6相连的发光二极管亮,示意时间到。仿真与实物效果良好。
相关推荐: