基于单片机控制的多路定时闹钟 - 图文

发布时间 : 星期四 文章基于单片机控制的多路定时闹钟 - 图文更新完毕开始阅读

{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相连的发光二极管亮,示意时间到。仿真与实物效果良好。

联系合同范文客服:xxxxx#qq.com(#替换为@)