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

  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文档。上传文档
查看更多
家用多功能定时器设计与制作

《单片机技术》课程设计报告 项目名称: 2.2 系统硬件单元电路设计 2.2.1 时钟电路设计 该电路为时钟电路,主要功能为:与单片机内部振荡器构成振荡电路,为单片机工作提供时序。晶体是12MHz,电容选用33pf,时钟周期为1/12us,机器周期为1/12*12=1us 2.2.2 复位电路设计 电阻为10k,电容为0.1uf, 由于电容的阻抗对直流而言比较大,当复位开关未按下时,通过电容和电阻分压使得RESET端为低电平,当按下复位键时,通过两个电阻分压在RESET为高电平,从而实现复位 电阻的作用不是限制电流的大小,而是控制复位时间.电容充电时间与R C的值成正比. 主程序在初始化参数后进入while循环,不断调用子程序进行刷新缓冲区,刷新显示LED,定时时间检测,按键处理等操作。 定时器0中断计时子程序流程图: 定时器1中断计时子程序流程图 定时器1中断主要用于刷新缓冲区按键扫描记录 重装定时器初值后,判断扫描显示位NUM 送相应数码管低电平点亮,同时检测P2^1与P2^2是否出现低电平, 若有则结合当前数码管低电平列线唯一确定一个按键,并将赋予它的键值记录下来 最后NUM++,结束返回主程序。 刷新缓冲区子程序流程图: 根据当前状态STATE判断应刷新哪个缓冲区,例如: Case 1:刷新时分显示缓冲区 Case 2:刷新定时时间显示缓冲区 Case 3:刷新年月日显示缓冲区 这样做的好处是: 条理清晰,一目了然。 不用刷新没有变化的缓冲区,如定时时间单元在非定时状态下。 提高程序效率,为单片机省电。 LED显示子程序: 根据当前状态选择LED显示方式,例如: Case 1:LED1半秒取反,其他不变。 Case 2:LED2常亮,其他不变。 Case 3:LED3常亮,其他不变。 数码管显示子程序: 根据当前状态选择数码管显示方式,例如: Case 1:显示时分缓冲区的值。 Case 2: 显示定时时间缓冲区的值。 Case 3: 显示年月日缓冲区的值。 按键处理子程序: 根据当前状态选择按键处理方式,例如: Case 1: 时分状态下按键处理。 Case 2: 定时状态下按键处理。 Case 3: 年月日状态下按键处理。 定时检测子程序: 定时检测,定时开始时间到后,启动相应定时报警状态;定时结束时间到后,关闭相应定时报警状态. 3.2 系统程序设计 3.2.1 系统主程序 /******************************************************************/ /* 主程序 */ /******************************************************************/ void main(void) { P1=0x00; STATE=12; EA=1; TMOD |=0x01;//定时器0计时50ms in 12M crystal TH0=0x3C; //初值 TL0=0xB0; ET0=1; TR0=1; TMOD |=0x10; //定时器1用于动态扫描 TH1=0xFa; //初值 TL1=0xF0; ET1=1; TR1=1; while(1) { RefreshTab(); LED_Display(); SetTime_test(); if(!Line1||!Line2){Delay(300);Key_Process();} } } 3.2.2 定时中断子程序 /******************************************************************/ /* 定时器0中断用于计时 */ /******************************************************************/ void Timer0(void) interrupt 1 { TH0=0x3C; //重新赋值50ms溢出 TL0=0xB0; count++; if(count==10STATE!=13) LED1=~LED1; if (count==20) { count=0; second++; //秒加1 if(second==60) { second=0; mi

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档