单片机闹钟程序.doc
《单片机闹钟程序.doc》由会员分享,可在线阅读,更多相关《单片机闹钟程序.doc(12页珍藏版)》请在咨信网上搜索。
/*这里的按键是左起第4个位修改时间和闹钟的先是选择修改时间 在是修改闹钟 第五个按键进位按一下加一次,左起第三个是选择是时钟和秒表之间的转换。如果选择 的是秒表在再按左起第二个是开始计时 第四个是暂停。*/ #include<reg51.h> #define uchar unsigned char sbit key1 = P3^6; sbit key2 = P3^7; sbit key3 = P1^4; sbit key4 = P1^5; sbit bell = P2^7; uchar code table[] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar number[10][4]; uchar aa,num = 0,tt; uchar qie = 1,bai = 9,shi =5,ge =5,i,j,yi,er,san,si,mszhuan,one,two,three,four,mm,t3,t2,t1,k1,k2,k3,k4; void display(uchar qie,uchar bai,uchar shi,uchar ge); void delay(uchar k); void jingwei(); void intter2(); void intter3(); void display1(uchar qie); void display2(uchar bai); void display3(uchar shi); void display4(uchar ge); void displays1(uchar qie,uchar bai,uchar shi,uchar ge); void displays2(uchar qie,uchar bai,uchar shi,uchar ge); void displays3(uchar qie,uchar bai,uchar shi,uchar ge); void displays4(uchar qie,uchar bai,uchar shi,uchar ge); void bells(uchar qie,uchar bai,uchar shi,uchar ge,uchar yi,uchar er,uchar san,uchar si,uchar mszhuan,uchar tt); void mzhuan(); void miaobiao(); void main() { //unchar aa; TMOD = 0x01; EA = 1; TR0 = 1; ET0 = 1; // ET1 = 1; aa=0; TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; // TH1 = (65536-50000)/256; // TL1 = (65536-50000)%256; while(1) { miaobiao(); mzhuan(); jingwei(); bells(qie,bai,shi,ge, yi,er,san,si,mszhuan,tt); if(mszhuan==0) //当选择时钟的时候才能做修改时钟 和闹钟 { intter2(); intter3(); switch(tt) { case 0: display(qie,bai,shi,ge); break; case 1: displays1(qie,bai,shi,ge); break; case 2: displays2(qie,bai,shi,ge); break; case 3: displays3(qie,bai,shi,ge); break; case 4: displays4(qie,bai,shi,ge); break; case 5: displays1(yi,er,san,si); break; case 6: displays2(yi,er,san,si); break; case 7: displays3(yi,er,san,si); break; case 8: displays4(yi,er,san,si); break; } } else if(mszhuan==1) //下面的是秒表 { if(t1==0) display(four,three,two,one); if(key3==0) { delay(10); if(key3==0) { t3++; if(t3==2) t3 = 0; } while(!key3); } if(key1==0) { delay(10); if(key1==0) { t2++; if(t2==6) t2 = 0; } while(!key1); } if(key2==0) { delay(10); if(key2==0) { t1++; if(t1==3) t1 = 0; } while(!key1); } if(t3==1) { four = 0; three = 0; two = 0; one = 0; t3 = 0; t1 = 0; t2 = 0; } if(t1==1) { k1 = four; k2 = three; k3 = two; k4 = one; t1 = 2; } if(t1==2) { display(k1,k2,k3,k4); four = k1; three = k2; two = k3; one = k4; } /* switch(t2) { case 1: { number[t2-1][0] = four; number[t2-1][1] = three; number[t2-1][2] = two; number[t2-1][3] = one; } break; case 2: { number[t2-1][0] = four; number[t2-1][1] = three; number[t2-1][2] = two; number[t2-1][3] = one; } break; case 3: { number[t2-1][0] = four; number[t2-1][1] = three; number[t2-1][2] = two; number[t2-1][3] = one; } break; case 4: { number[t2-1][0] = four; number[t2-1][1] = three; number[t2-1][2] = two; number[t2-1][3] = one; } break; case 5: { number[t2-1][0] = four; number[t2-1][1] = three; number[t2-1][2] = two; number[t2-1][3] = one; } break; } if(t1<t2) { switch(t1) { case 1: display(number[0][0],number[0][1],number[0][2],number[0][3]); break; case 2: display(number[1][0],number[1][1],number[1][2],number[1][3]); break; case 3: display(number[2][0],number[2][1],number[2][2],number[2][3]); break; case 4: display(number[3][0],number[3][1],number[3][2],number[3][3]); break; case 5: display(number[4][0],number[4][1],number[4][2],number[4][3]); break; } } else t1 = 0;*/ } } } void inter1() interrupt 1 { TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; aa++; mm++; } /*void inter3() interrupt 3 { TH1 = (65536-50000)/256; TL1 = (65536-50000)%256; bb++; } */ void delay(uchar k) { for(j=0;j<100;j++) for(i=k;i>0;i--); } void display(uchar qie,uchar bai,uchar shi,uchar ge) //显示函数 { P1 = 0xf7; P0 = table[qie]; delay(1); P1 = 0xfd; P0 = table[bai]; delay(1); P1 = 0xfb; P0 = table[shi]; delay(1); P1 = 0xfe; P0 = table[ge]; delay(1); } void jingwei() //中断里面中断一次为50ms所以中断二十次为一秒钟 { if(aa==20) { aa = 0; ge++; if(ge==10) { ge = 0; shi++; if(shi==6) { shi = 0; bai++; if(bai==10&&qie!=2) { bai = 0; qie++; } if(bai==4&&qie==2) { qie = 0; bai = 0; } } } } } void intter2() //当按键左起第四个 按下 tt加一次 { if(key1==0) { delay(10); if(key1==0) { tt++; if(tt==9) tt = 0; } while(!key1); } } void intter3() //按键左起第五个 按下 当tt不同值时选择修改的值不同所以用switch来选择 1表示修改时钟的最高位依次 到5表示选择了闹钟的修改 { if(key2==0) { delay(10); if(key2==0) { switch(tt) { case 1: { qie++; if(qie==3) qie=0; } break; case 2: { bai++; if(bai==10) bai=0; } break; case 3: { shi++; if(shi==7) shi=0; } break; case 4: { ge++; if(ge==10) ge=0; } break; case 5: { yi++; if(yi==3) yi=0; } break; case 6: { er++; if(er==10) er=0; } break; case 7: { san++; if(san==6) san=0; } break; case 8: { si++; if(si==10) si=0; } break; } } while(!key2); } } void displays1(uchar qie,uchar bai,uchar shi,uchar ge) //因为在修改的事要显示出修改哪个 所以用了下面的函数 { P1 = 0xf7; //以为数码管第一个延迟时间长所以第一个比后面三个要亮一点 P0 = table[qie]; //下面的函数同理 delay(20); P1 = 0xfd; P0 = table[bai]; delay(1); P1 = 0xfb; P0 = table[shi]; delay(1); P1 = 0xfe; P0 = table[ge]; delay(1); } void displays2(uchar qie,uchar bai,uchar shi,uchar ge) { P1 = 0xf7; P0 = table[qie]; delay(1); P1 = 0xfd; P0 = table[bai]; delay(20); P1 = 0xfb; P0 = table[shi]; delay(1); P1 = 0xfe; P0 = table[ge]; delay(1); } void displays3(uchar qie,uchar bai,uchar shi,uchar ge) { P1 = 0xf7; P0 = table[qie]; delay(1); P1 = 0xfd; P0 = table[bai]; delay(1); P1 = 0xfb; P0 = table[shi]; delay(20); P1 = 0xfe; P0 = table[ge]; delay(1); } void displays4(uchar qie,uchar bai,uchar shi,uchar ge) { P1 = 0xf7; P0 = table[qie]; delay(1); P1 = 0xfd; P0 = table[bai]; delay(1); P1 = 0xfb; P0 = table[shi]; delay(1); P1 = 0xfe; P0 = table[ge]; delay(20); } void bells(uchar qie,uchar bai,uchar shi,uchar ge,uchar yi,uchar er,uchar san,uchar si,uchar mszhuan,uchar tt) { //闹钟函数我与了一个tt就是在时钟正常显示的时候才会响 当左起第二个 if(qie==yi&&bai==er&&shi==san&&mszhuan==0&&tt==0) { //按下闹钟停止 bell = 0; if(key3==0) { delay(10); if(key3==0) { bell = ~bell; } while(!key1); } } } void mzhuan() { if(key4==0) { delay(10); if(key4==0) { mszhuan++; if(mszhuan==2) mszhuan = 0; } while(!key4); } } void miaobiao() //这个秒表进位函数 与前面的jingwei()同理 { if(mm==20) { mm = 0; one++; if(one==10) { one = 0; two++; if(two==10) { two = 0; three++; if(three==10) { three = 0; four++; if(four==10) four = 0; } } } } }- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 闹钟 程序
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【xrp****65】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【xrp****65】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【xrp****65】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【xrp****65】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文