51单片机c语言电子钟已加入调时闹铃整点报时功能Word格式文档下载.docx

上传人:b****7 文档编号:22835631 上传时间:2023-02-05 格式:DOCX 页数:11 大小:129.01KB
下载 相关 举报
51单片机c语言电子钟已加入调时闹铃整点报时功能Word格式文档下载.docx_第1页
第1页 / 共11页
51单片机c语言电子钟已加入调时闹铃整点报时功能Word格式文档下载.docx_第2页
第2页 / 共11页
51单片机c语言电子钟已加入调时闹铃整点报时功能Word格式文档下载.docx_第3页
第3页 / 共11页
51单片机c语言电子钟已加入调时闹铃整点报时功能Word格式文档下载.docx_第4页
第4页 / 共11页
51单片机c语言电子钟已加入调时闹铃整点报时功能Word格式文档下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

51单片机c语言电子钟已加入调时闹铃整点报时功能Word格式文档下载.docx

《51单片机c语言电子钟已加入调时闹铃整点报时功能Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《51单片机c语言电子钟已加入调时闹铃整点报时功能Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。

51单片机c语言电子钟已加入调时闹铃整点报时功能Word格式文档下载.docx

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;

//对计数单元的清零,重新开始计数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1