51单片机c语言电子钟已加入调时闹铃整点报时功能Word格式文档下载.docx
- 文档编号:22835631
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:11
- 大小:129.01KB
51单片机c语言电子钟已加入调时闹铃整点报时功能Word格式文档下载.docx
《51单片机c语言电子钟已加入调时闹铃整点报时功能Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《51单片机c语言电子钟已加入调时闹铃整点报时功能Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
ucharseconde=0;
//秒
ucharminite=0;
//分
ucharhour=12;
//时
ucharmstcnt=0;
//定时器计数,定时50ms,mstcnt满20,秒加1
ucharshi=0;
//闹铃功能
ucharfen=0;
ucharbjcs;
//报警次数
sbitP1_0=P1^0;
//second调整定义
sbitP1_1=P1^1;
//minite调整定义
sbitP1_2=P1^2;
//hour调整定义
sbitP1_5=P1^5;
//整点报时
sbitP1_3=P1^3;
//闹铃功能,调整时间
sbitP1_6=P1^6;
//调整时
sbitP1_7=P1^7;
//调整分
sbitP1_4=P1^4;
//关闭闹铃
/*函数声明*/
voiddelay(uintk);
//延时子程序
voidtime_pro();
//时间处理子程序
voiddisplay();
//显示子程序
voidkeyscan();
//键盘扫描子程序
/*延时子程序*/
voiddelay(uintk)
{
ucharj;
while((k--)!
=0)
{
for(j=0;
j<
125;
j++)
{;
}
}
}
/*时间处理子程序*/
voidtime_pro(void)
if(seconde==60)
seconde=0;
minite++;
if(minite==60)
minite=0;
hour++;
if(hour==24)
hour=0;
/*显示子程序*/
voiddisplay(void)
if(P1_3==1)
P2=0XFE;
P0=dispcode[seconde%10];
//秒个位
delay
(1);
P2=0XFD;
P0=dispcode[seconde/10];
//秒十位
P2=0XFB;
P0=dispcode[10];
//间隔符-
P2=0XF7;
P0=dispcode[minite%10];
//分个位
P2=0XEF;
P0=dispcode[minite/10];
//分十位
P2=0XDF;
P2=0XBF;
P0=dispcode[hour%10];
//时个位
P2=0X7F;
P0=dispcode[hour/10];
//时十位
/*键盘扫描子程序*/
voidkeyscan(void)
if(P1_0==0)//秒位的调整
delay(30);
if(P1_0==0)
seconde++;
delay(250);
if(P1_1==0)//分位的调整
if(P1_1==0)
if(P1_2==0)//时位的调整
if(P1_2==0)
/*整点报警*/
voidzhengdian(void)
if((seconde==0)&
(minite==0))//整点报时
P1_5=0;
delay(1000);
P1_5=1;
/*定时闹钟*/
voiddingshi(void)
if(P1_3==0)
//按住P1_3BU不松,显示闹铃设置界面,分别按P1_6、P1_7设置闹铃时间。
P0=dispcode[0];
P0=dispcode[fen%10];
P0=dispcode[fen/10];
P0=dispcode[shi%10];
P0=dispcode[shi/10];
if(P1_6==0)//设定时
if(P1_6==0)
shi++;
if(shi==24)
shi=0;
if(P1_7==0)//设定分
if(P1_7==0)
fen++;
if(fen==60)
fen=0;
if((hour==shi)&
(minite==fen)&
(seconde==0))//闹铃时间到,报警十次。
for(bjcs=0;
bjcs<
10;
bjcs++)
delay(500);
/*主函数*/
voidmain(void)
P1=0XFF;
TMOD=0x11;
//time0为定时器,方式1
TH0=0x3c;
//预置计数初值,50ms
TL0=0xb0;
EA=1;
//总中断开
ET0=1;
//允许定时器0中断
TR0=1;
//开启定时器0
while
(1)
{
keyscan();
//按键扫描
dingshi();
//定时闹钟
zhengdian();
display();
//显示时间
voidtimer0(void)interrupt1
//定时器0方式1,50ms中断一次
//手动加载计数脉冲次数
TMOD=0x11;
mstcnt++;
//用于计算时间,每隔50ms加1
if(mstcnt==20)//mstcnt满20即为一秒
//秒+1
time_pro();
//时间处理
mstcnt=0;
//对计数单元的清零,重新开始计数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 语言 电子钟 加入 闹铃 整点 报时 功能