秒表时钟单片机.pptxVIP

  1. 1、本文档共25页,可阅读全部内容。
  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文档。上传文档
查看更多
基于AT89S51单片机的秒表设计;AT89S51单片机简介;随着电子技术的发展,电子技术在各个领域的运用也越来越广泛,人对它的认识也逐步加深。秒表计时器常常用于体育竞赛及各种其他要求有较精确时间的各领域中。其中启/停开关的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关计时终止。而复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时应立即终止,并对计时器清零。本设计就是利用所学到的电子元器件将脉冲源用数码管显示出来,以制成简易的秒表。秒表是由单片机的P0口和P2口分别控制两个数码管使数码管工作,循环显示从00—59。同时用一个开关控制数码管的启动与停止,另外加上一个复位电路使其能正常复位,通常还使用石英晶体振荡器电路构成整个秒表的结构电路。 ;方案设计;1.2 秒表计时器的原理图 利用单片机作为主控电路,选用四位共阳极的数码管作为显示电路以及位控制和控制开关来组成硬件电路。其基本原理图 ;在硬件电路中,利用AT89S51单片机的定时器作精确的定时,利用数码管对其进行显示;控制按钮利用外部中断0使其实现启动、外部中断1使其实现暂停的功能,设置中断为边沿触发方式,P0口输出段码数据,P2.0~P2.1连上译码器作为位选;计时器采用T0中断实现,定时溢出中断周期为20ms,当溢出中断后向CPU发出溢出中断请求,每发出5次中断请求就对20ms位(即最后一位)加一。 ? ;硬件的选择以及设计;;显示电路选择以及设计 ;显示电路如图;系统总体电路的设计 ;系统总体电路图;系统总体电路PCB图;软件设计 ;中断程序设计 ;(1)外部中断0服务程序 外部中断0服务程序结合外部P1.0键实现数字秒表的启动功能。启动定时器T0,TR0=1 ;(2)外部中断1服务程序 外部中断1服务程序结合外部P1.0键实现数字秒表的停止功能。;(3) 定时器T0中断服务程序 当T0溢出后,向CPU发出中断请求信号。CPU跳转到定时中断程序执行,具体流程图如图T0中断 ;系统调试 ;程序清单: ;void DisplaySecond(unsigned char k) { P2=0xfd; //P2.1引脚输出低电平 P0=Tab[k/10]; //显示十位 delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); P2=0xf7; //P2.0引脚输出低电平 P0=Tab[k%10]; //显示个位 delay(); delay(); ;delay(); delay(); delay(); delay(); delay(); delay(); P2=0xff; //关闭所有数码管 P0=0xff; //显示个位 delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); } void main(void) //主函数 ; TMOD=0x01; //使用定时器T0 TH0=(65536-46083)/256; //将定时器计时时间设定为46083×1.085微秒 //=50000微秒=50毫秒 TL0=(65536-46083)%256; EA=1; //开启总中断 ET0=1; //定时器T0中断允许 TR0=1; //启动定时器T0开始运行 int_time=0; //中断次数初始化 second=0; //秒初始化 while(1) { DisplaySecond(second); //调用秒的显示子程序 } } //******************************************************** //函数功能:定时器T0的中断服务程序 //******************************************************* ;void interserve(void ) interrupt 1 using 1 { TR0=0; //关闭定时器T0 int_time ++; //每来一次中断,中断次数int_time自加1 if(int_time==

文档评论(0)

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

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

1亿VIP精品文档

相关文档