




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序清单*/项目名称: 数字电子钟/项目设计者: /项目设计时间: 2011年12月23日/项目功能:电子钟上电或按键复位后能自动显示系统提示符“P.”, 并不断闪烁进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。电子钟能显示年月日时分秒、秒表,任意时间闹铃,整点闹铃/*/* crystal=12Mhz */#include#define uchar unsigned char#define 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,hao=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=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(unsigned 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; 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=12Mhz/*/void delay(unsigned int z) unsigned int x,y,a; for(x=z;x0;x-) for(y=142;y0;y-) for(a=2;a0;a-); /*/函数名: 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)&(hour=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=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)/*/ 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; P2=0x0fd; P0=tablesecshi; delay(1); P2=0xff; P2=0x0fb; if(co=1)P0=0xbf; /整点报时关闭 else P0=0x3f; /整点报时开启 delay(1);P2=0xff; P2=0x0f7; P0=tableminge; delay(1); P2=0xff; P2=0x0ef; P0=tableminshi; delay(1); P2=0xff; P2=0x0df; if(stopnao=1)P0=0xbf; /闹铃关闭 else P0=0x3f; /闹铃开启 delay(1); P2=0xff; P2=0x0bf; P0=tablehourge; delay(1); P2=0xff; P2=0x7f; P0=tablehourshi; delay(1); P2=0xff; if(i=1)&(j=1) /显示秒表 haoge=hao%10; haoshi=hao/10; miaoge=miao%10; miaoshi=miao/10; fenge=fen%10; fenshi=fen/10; shige=shi%10; shishi=shi/10; P2=0xfe; P0=tablehaoge; delay(1); P2=0xff; P2=0x0fd; P0=tablehaoshi; delay(1);P2=0xff; P2=0x0fb; P0=tablemiaoge-0x80;/显示.隔毫秒和秒 delay(1);P2=0xff; P2=0x0f7; P0=tablemiaoshi; delay(1); P2=0xff; P2=0x0ef; P0=tablefenge-0x80;/ 显示.隔秒和分 delay(1); P2=0xff; P2=0x0df; P0=tablefenshi; delay(1); P2=0xff; P2=0x0bf; P0=tableshige-0x80; / 显示.隔时和分 delay(1); P2=0xff; P2=0x7f; P0=tableshishi; delay(1); P2=0xff; if(i=1)&(dx=1)&(j=0) /显示年月日 dayge=day%10; dayshi=day/10; mouge=mou%10; moushi=mou/10; yearge=year%10; yearshi=(year/10)%10; yearbai=(year/100)%10; yearqian=year/1000; P2=0xfe; P0=tabledayge; delay(1); P2=0xff; P2=0x0fd; P0=tabledayshi; delay(1);P2=0xff; P2=0x0fb; P0=tablemouge-0x80; /显示.隔日和月 delay(1);P2=0xff; P2=0x0f7; P0=tablemoushi; delay(1); P2=0xff; P2=0x0ef; P0=tableyearge-0x80; /显示.隔年和月 delay(2); P2=0xff; P2=0x0df; P0=tableyearshi; delay(1); P2=0xff; P2=0x0bf; P0=tableyearbai; delay(1); P2=0xff; P2=0x7f; P0=tableyearqian; delay(1); P2=0xff; if(i=0) /复位后显示P.并不断闪烁 P0=0x0c; P2=0x7f; delay(10); P2=0XFF; delay(60); /*/函数名: void keyscan()/功能:键扫描并实现键功能 /说明: 调制时间、年月日、设置闹铃、秒表开启关闭/*/void keyscan()/*K1*/ if(kaig=0) delay(10); if(kaig=0) dodisplay( );while(!kaig); TR0=!TR0; flag=!flag;i=1;/*开启一次才为1*/ /*K2*/ if(ksec=0) display(); if(ksec=0) do display();while(!ksec); if(flag=0)&(dx=0)/调整秒 sec+; if(sec=60)/ sec=0; display(); if(flag=0)&(dx=1)/调整日 day+; if(mou=1)|(mou=3)|(mou=5)|(mou=7)|(mou=8)|(mou=10)|(mou=12) if(day=32) day=1; /越过该月天数日期的日为1 goto www; if(mou=4)|(mou=6)|(mou=9)|(mou=11) if(day=31) day=1; /越过该月天数日期的日为1goto www; if(year%4=0)&(year%100)!=0)|(year%400=0)&(mou=2)if(day=30) day=1; /越过该月天数日期的日为1goto www;if(mou=2) if(day=29) day=1; www:display(); if(flag=1)&(i=1) ET1=!ET1; /秒表开关 j=1; /*K3*/ if(kmin=0)/ display(); if(kmin=0) do display();while(!kmin); if(flag=0)&(dx=0)/调整分 min+; if(min=60) min=0; display(); if(dx=1)&(flag=0)/调整月 mou+; if(mou=13) mou=1;if(year%4=0)&(year%100)!=0)|(year%400=0)&(mou=2)/闰年 if(day=30) day=1; if(mou=2)&(year%4!=0)if(day=29) day=1;if(mou=4)|(mou=6)|(mou=9)|(mou=11) if(day=31) day=1; if(flag=1)&(j=1) j=0; hao=0; miao=0; fen=0; shi=0; /*K4* */ if(khour=0)/ display(); if(khour=0) do display();while(!khour); if(flag=0)&(dx=0)/调整时 hour+; if(hour=24) hour=0; display(); if(dx=1)&(flag=0)/调整年 year+; if(year%4=0)&(year%100)!=0)|(year%400=0)&(m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘之《幼儿教师招聘》模拟题库讲解附答案详解
- 2025年教师招聘之《小学教师招聘》考前冲刺模拟题库及1套完整答案详解
- 保健食品可持续发展模式创新创业项目商业计划书
- 教师招聘之《幼儿教师招聘》考试黑钻押题附参考答案详解【培优a卷】
- 演出经纪人之《演出经纪实务》题库检测题型及答案详解(全优)
- 2025年教师招聘之《小学教师招聘》通关练习题库包附参考答案详解【综合题】
- 教师招聘之《小学教师招聘》高分题库附参考答案详解(研优卷)
- 教师招聘之《小学教师招聘》押题模拟完整答案详解
- 2025年教师招聘之《幼儿教师招聘》押题练习试卷及参考答案详解【突破训练】
- 2025年四川天府新区党工委管委会工作机构所属事业单位选调10人笔试高频难、易错点备考题库及参考答案
- 收银技能理论考试题及答案
- 1.1 常见的植物(教学课件)科学青岛版二年级上册(新教材)
- 2025污水处理综合考试题及答案
- 2025年学习二十届全会精神知识竞赛题库及答案
- 2025福建漳州闽投华阳发电有限公司招聘52人备考试题及答案解析
- 初一启新程扬帆再出发-2025-2026学年上学期七年级(初一)开学第一课主题班会课件
- 寿险调查培训课件下载
- 中国法制史试题题库(附答案)
- Z20名校联盟(浙江省名校新高考研究联盟)2026届高三第一次联考 语文试卷(含答案详解)
- 2025年农机驾驶证考试题及答案
- 2025年人教部编版小学三年级语文上册全册单元测试题及答案(全套)
评论
0/150
提交评论