单片机家用多功能定时器设计与制作.docVIP

单片机家用多功能定时器设计与制作.doc

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

家用多功能定时器的设计 专业年:学 号: 学生姓名: 指导教师: 谢勇勤 报告完成日期 2014 年月人类最早使用的定时工具是沙或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。   1876年,英国外科医生索加取得一项定时装置的专利,用来控制煤气街灯的开关。它利用机械钟带动开关来控制煤气阀门。 定时器确实是一项了不起的发明,使相当多需要人控制时间的工作变得简单了许多家用电器都安装了定时器来控制开关或工作时间。 初始状态,并从初态开始工作。 该时钟电路是由晶体振荡器和两个微调电容组成的。在单片机芯片内部有一个高增益反相放大器,其输入端为引脚XTAL1,其输出端为引脚XTAL2。只需要在片外通过XTAL1和XTAL2引脚跨接晶体振荡器或在引脚与地之间加接微调电容,形成反馈电路,振荡器即可工作。由于该晶振使用的是12MHZ的晶体,因此它的时钟周期是0.167us,机器周期为1us。 2.2.3 按键电路设计 本课程设计要用数码管显示数字钟、定时时间。这就需要键盘来设定,键盘可以分为独立连接式和矩阵式。本实验用的是矩阵式。为了减少所以的I/O口,利用三——八译码器来实现12个键盘的连接。 对于这种矩阵式的键盘连接,扫描时依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。 实验中所用的数码管为共阴极数码管,当给其引脚加入高电平时,数码管中对应的那一段就亮。 2.3 系统硬件总电路 系统软件设计 3.1 系统软件流程图 主程序在执行时,通过单片机内部中断对程序不断的扫描判断、刷新显示,当有键按下时,将数字钟中的时间与定时时间相比较,然后根据比较程序显示状态,并且还要延时消除抖动,之后进行按键处理,从而显示不同的状态,如此周期循环。 3.2 系统程序设计 #includereg51.h #define uchar unsigned char #define uint unsigned int /******************定义管脚**********************/ sbit RELAY=P1^0; sbit LED1=P1^1; sbit LED2=P1^2; sbit LED3=P1^3; sbit LED4=P1^4; sbit LED5=P1^5; sbit LED6=P1^6; sbit LED7=P1^7; sbit Line1=P2^1; sbit Line2=P2^0; /******************定义缓冲区及初始化********************/ uchar data TimeTab[6]={0x06,0x5b,0x4f,0x66}; uchar data Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar data TimeTab1[4],TimeTab2[4]; /*****************定义参数及初始化********************/ char hour=12,minute=34,second=0,h=0,m=0,h1=0,m1=0;char second1; char flag=0,flag1=0,flag2=0; uchar Keyno=0; uchar num=0,count=0; uchar STATE=0; /************************************************ 延时子函数 *************************************************/ void Delay( uint x) //自定义延时约0.1ms { uint t; while(--x) for(t=0;t120;t++) ; } /******************************************************************/ /* 刷新缓冲区子程序 */ /******************************************************************/ void RefreshTab(void) { if(flag==0) {TimeTab[0]=Tab

文档评论(0)

整理王 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档