数字钟程序设计答辩.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字钟程序设计答辩.ppt

班级 姓名 设计模块: 设计方案: 1、本设计采用AT89C52 单片机作为时钟控制芯片,利用单片机内部的定时、计数器T0实现时钟。 2、用显示器(数码管、液晶)来进行时钟的显示。 3、此外,还要实现对时间的调整功能,另外设四个独立的按键,当按下第一个按键时,使时钟停止,另外三个按键,则分别调整时、分、秒。再按下第一个按键时,时钟开始。 1、主程序: 1)调用显示函数和定时器/计数器初始化函数。 2)重复调用数码管显示模块和按键处理模块,当有按键按下时,则转入相应的功能程序。 main() //主函数 { MYT0_uint(); //调用中断函数 while(1) { display2(); //使数码管显示 if(k==0) //如果开关k按 下, 则定时关闭 TR0=0; if(k0==0) //如果开关k按下,弹起 后秒+1,调秒 { while(k0==0) { display2(); } if(k0==1) { miao=miao+1; if(miao==60) miao=0;}} 显示设计: 一、显示在数码管上 二、显示在液晶上 一、数码管显示 1) uchar code display_P0[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示段码0~9 uchar code display_P2[]={0x20,0x10,0x08,0x04,0x02,0x01}; //数码管显示位码 uchar freq[]={0x00,0x00,0x00,0x00,0x00,0x00}; //定义一个数组 uchar shi,fen,miao; //定义字符型 shi(时)fen(分)miao(秒) 一、数码管显示 2) display2(); //使数码管显示 二、液晶显示 1) uchar freq[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; uchar shi,fen,miao; //定义字符型 shi(时)fen(分)miao(秒) sbit rs=P3^0; //液晶数据数据命令锁存端(H数据,L命令) sbit rw=P3^1; //声明读写控制变量 sbit e=P3^2; 二、液晶显示 2) write_com(0x44|0x80); //写命令字,将数据指针定位到第一行第一字符处 for(a=0;a8;a++) write_dat(freq[a]); 三、定时器/计数器T0中断程序 T0用于计时,选中工作方式一,重复定时,定时时间设计为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms技术,计20次则对秒单元加一。秒单元加到60则对分单元加以,同时秒单元清0;分单元加到60则对时单元加一,同时分单元清0;时单元加到24则对时单元清0。 三、定时器/计数器T0中断程序 void MYT0_uint() //设置中断 { IP=0x01; IE=0x82; TMOD=0x01; TCON=0x10; TH0=0x3c; TL0=0xb0; } 四、按键调整模块 if(k==0) //如果开关k按下, 则定时关闭 TR0=0; if(k0==0) //如果开关k按下,弹起后秒+1,调秒 { while(k0==0) { display2();} if(k0==1) { miao=miao+1; if(miao==60) miao=0;} } if(k1==0) //如果开关k1按下,弹起后分+1,调分 { while(k1==0) { display2();} if(k1==1) { fen=fen+1; if(fen==60) fen=0; } } * 本作品采用知识共享署名-非商业性使用 2.5 中国大陆许可协议进行许可。 专业交流 模板超市 设计服务 NordriDesign中国专业PowerPoint媒体设计与开发 本作品的提供是以适用知识共享组织的公共许可( 简称“CCPL” 或 “许可”) 条款为前提的。本作品受著作权法以及其他相关法律的保护。对本作品的使用不得超越本许可授权的范围。 如您行使本许可授予的使用本作品的权利,就表明您

文档评论(0)

huaz15718 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档