单片机电子闹钟程序亲自编写可用Word文档格式.docx
- 文档编号:20626198
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:15
- 大小:103.79KB
单片机电子闹钟程序亲自编写可用Word文档格式.docx
《单片机电子闹钟程序亲自编写可用Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机电子闹钟程序亲自编写可用Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
ucharshangwu3[]={10,20};
ucharshangwu4[]={11,50};
ucharxiawu1[]={13,30};
ucharxiawu2[]={15,00};
ucharxiawu3[]={15,15};
ucharxiawu4[]={16,45};
//按键定义
sbitmode=P1^7;
sbitsec_clr=P1^0;
sbitmin_set_add=P1^3;
sbitmin_set_sub=P1^4;
sbithour_set_add=P1^1;
sbithour_set_sub=P1^2;
sbitbb_set_add=P1^5;
sbitbb_set_sub=P1^6;
sbitspeaker=P2^6;
//延时函数
voiddelay(unsignedintt)
{
while(t--);
}
//时钟进位函数
voidclockjinwei()
clock[0]++;
if(clock[0]==20)
{
clock[1]++;
clock[0]=0;
if(clock[1]==60)
clock[2]++;
clock[1]=0;
if(clock[2]==60)
clock[3]++;
clock[2]=0;
if(clock[3]==24)
clock[3]=0;
}
//定时器0中断服务函数
voidtimer0(void)interrupt1using1
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
clockjinwei();
//时钟分位显示函数
voidfenwei()
weikong[0]=clock[3]/10;
weikong[1]=clock[3]%10;
weikong[2]=clock[2]/10;
weikong[3]=clock[2]%10;
weikong[4]=clock[1]/10;
weikong[5]=clock[1]%10;
//闹钟分位显示函数
voidnaofen()
weikong[0]=clock1[0]/10;
weikong[1]=clock1[0]%10;
weikong[2]=clock1[1]/10;
weikong[3]=clock1[1]%10;
weikong[4]=clock1[2]/10;
weikong[5]=clock1[2]%10;
//闹钟定时显示函数
voidnaozhongdisplay()
ucharz,s;
ucharx=0x01;
naofen();
for(z=0;
z<
6;
z++)
P2=0;
P0=table[weikong[z]];
P2=x;
x=_crol_(x,1);
for(s=0;
s<
255;
s++);
//时钟显示函数
voiddisplay()
uchari,j;
fenwei();
for(i=0;
i<
i++)
P0=table[weikong[i]];
for(j=0;
j<
j++);
//总显示函数
voidzhongxian()
if(mode==1)
delay(100);
display();
if(mode==0)
naozhongdisplay();
//按键处理程序
voidkey_set()
zhongxian();
P1=0xff;
if(min_set_add==0)
while(min_set_add==0)
clock1[1]++;
if(clock1[1]==60)
clock1[1]=0;
//
if(min_set_sub==0)
clock[2]--;
if(clock[2]==0)
clock[2]=59;
while(min_set_sub==0)
clock1[1]--;
if(clock1[1]==0)
clock1[1]=59;
if(hour_set_add==0)
while(hour_set_add==0)
clock1[0]++;
if(clock1[0]==24)
clock1[0]=0;
if(hour_set_sub==0)
clock[3]--;
if(clock[3]==0)
clock[3]=23;
while(hour_set_sub==0)
clock1[0]--;
if(clock1[0]==0)
clock1[0]=23;
if(sec_clr==0)
while(sec_clr==0)
//闹钟响铃函数
voidbb()
if(clock[1]<
=bbduration)
speaker=1;
delay(100);
speaker=0;
elsespeaker=0;
//打铃函数
voiddaling()
=lingtime)
//时间比较函数
voidbijiao()
if(clock[3]==shangwu1[0])
if(clock[2]==shangwu1[1])
daling();
if(clock[3]==shangwu2[0])
if(clock[2]==shangwu2[1])
if(clock[3]==shangwu3[0])
if(clock[2]==shangwu3[1])
if(clock[3]==shangwu4[0])
if(clock[2]==shangwu4[1])
if(clock[3]==xiawu1[0])
if(clock[2]==xiawu1[1])
if(clock[3]==xiawu2[0])
if(clock[2]==xiawu2[1])
if(clock[3]==xiawu3[0])
if(clock[2]==xiawu3[1])
if(clock[3]==xiawu4[0])
if(clock[2]==xiawu4[1])
//闹钟比较
voidnaobijiao()
if(clock[3]==clock1[0])
if(clock[2]==clock1[1]||clock[2]==clock1[1]+1||clock[2]==clock1[1]+2)
bb();
//响铃时长显示函数
voidbbtimeshow()
P3=bbtime[bbduration];
if(bbduration>
15)
bbduration=0;
//响铃按键处理函数
voidbbtime_set()
bbtimeshow();
if(bb_set_add==0)
bbduration++;
while(bb_set_add==0)
if(bb_set_sub==0)
bbduration--;
while(bb_set_sub==0)
//主程序
voidmain()
EA=1;
ET0=1;
TR0=1;
while
(1)
key_set();
bijiao();
bbtime_set();
naobijiao();
电路图:
分四部分显示:
如果在学习这个程序过程中有什么问题,询问。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子 闹钟 程序 亲自 编写 可用
![提示](https://static.bdocx.com/images/bang_tan.gif)