单片机实现电子钟万年历秒表闹铃(10页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《单片机实现电子钟万年历秒表闹铃(10页).doc》由会员分享,可在线阅读,更多相关《单片机实现电子钟万年历秒表闹铃(10页).doc(10页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、-单片机实现电子钟万年历秒表闹铃-第 10 页程序清单/项目名称: 数字电子钟/项目设计者: /项目设计时间: 2011年12月23日/项目功能:电子钟上电或按键复位后能自动显示系统提示符“P.”, 并不断闪烁进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。电子钟能显示年月日时分秒、秒表,任意时间闹铃,整点闹铃/* crystal=12Mhz */#include#define uchar unsigned char#de
2、fine uint unsigned int sbit kaig=P10; /*启动/调制键*/ sbit ksec=P11; /*调整秒/日/秒表开关*/ sbit kmin=P12; /*调整分/月/显示秒表*/ sbit khour=P13; /*调整时/年的低两位*/ sbit date=P14; /*显示日期开关*/sbit bai=P15; /*调整年高二位/整点闹钟开关*/ sbit save=P16; /*保存设置的闹铃时间*/sbit offl=P17; /*闹铃开关*/sbit loud=P31; /*扬声器*/uint num=0,sec=0,min=0,hour=0,h
3、ao=0,miao=0,fen=0,shi=0;/ 计时 秒 分 时毫秒 秒 分 时uint day=1,mou=1,year=2000,dx=0,co=0,stopnao=0,shour=0,smin=2;/ 日 月 年 显示 整点/闹铃开关 时 分uchar secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0;/时间 秒个位 秒十位 分个位 分十位 时个位 时十位 uchar i=0, flag=0, j=0, yearqian=0, yearbai=0;/ 上电标志 电子钟启停标志 秒表启动标志 年千位 年百位uchar moushi
4、=0,mouge=0,dayge=0,dayshi=0,yearshi=0,yearge=0;/ 月十位 月个位 日个位 日十位 年十位 年个位uchar haoshi=0,haoge=0,miaoshi=0,miaoge=0,fenge=0,fenshi=0,shige=0,shishi=0;/秒表 毫秒十位 个位 秒十位 秒个位 分个位 分十位 时个位 时十位 Unsigned char code table10=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/* *0*1*2*3*4*5*6*7*8*9*/void delay(uns
5、igned int z); /延时1ms函数 void time0(); / 定时器0中断方式工作 void time1(); / 定时器1中断方式工作 void display(); /显示子程序 void keyscan(); /键扫描键功能子程序/函数名: main()/功能: 主函数 /调用函数:display(),keyscan() main() TMOD=0x11; P3=0X0FF; IP=0X02; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-10000)/256; TL1=(65536-10000)%256
6、; EA=1; /*开启中断总开关*/ ET0=1; /*开启定时器0中断*/ i=0; /*控制显示,开关是否开启过*/ TR0=0; /*关闭定时器*/ ET1=0; TR1=1; while(1) keyscan(); display();/函数名: void delay(uint z)/功能: 延时时间为1ms/输入参数:z,1ms计数/说明: 总共延时时间为1ms乘以z,crystal=12Mhzvoid delay(unsigned int z) unsigned int x,y,a; for(x=z;x0;x-) for(y=142;y0;y-) for(a=2;a0;a-);
7、/函数名: void time0()/功能: 定时50ms/说明:用于电子钟时间void time0() interrupt 1 using 2 num+; /中断次数 TH0=(65536-50000)/256; TL0=(65536-50000)%256; if(num=20) /*1s才变化显示*/ num=0; sec+; if(sec=60)/分 sec=0; min+; if(min=60)&(!co) loud=0; if(min!=60) loud=1;if(min=smin)&(hour=shour)&(!stopnao) loud=0;if(min=(smin+1)&(ho
8、ur=shour) loud=1; if(min=60)/ /时 min=0; hour+; if(hour=24) hour=0; min=0; sec=0;day+;/日 if(mou=1)|(mou=3)|(mou=5)|(mou=7)|(mou=8)|(mou=10)|(mou=12) if(day=32) day=1;mou+;goto ww; if(mou=4)|(mou=6)|(mou=9)|(mou=11) if(day=31) day=1;mou+;goto ww; if(year%4=0)&(year%100)!=0)|(year%400=0)&(mou=2) if(day
9、=30) day=1;mou+;goto ww; if(mou=2)if(day=29) day=1;mou+;ww:if(mou=13) mou=1;year+;/年 if(year=10000) year=0;/函数名: void time1()/功能: 定时10ms/说明: 用于秒表计时 void time1() interrupt 3 using 3 hao+; TH1=(65536-10000)/256; TL1=(65536-10000)%256; if(hao=100)/*/ hao=0; miao+; if(miao=60)/*/ miao=0; fen+; if(fen=60
10、)/*/ fen=0; shi+; if(shi=24)/*/ shi=0;/函数名: display()/功能: 八位LED数码显示/说明: 显示时间/显示年月日/显示秒表,显示时间LED3点表示整点闹铃已打开,显示时间LED6点表示定时闹铃已打开void display() if(i=1)&(j=0)&(dx=0)/显示时间 secge=sec%10; secshi=sec/10; minge=min%10; minshi=min/10; hourge=hour%10; hourshi=hour/10; P2=0xfe; P0=tablesecge; delay(1); P2=0xff;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实现 电子钟 万年历 秒表 闹铃 10
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内