单片机控制秒表C语言程序,89C51单片机秒表的设计(全文完整版)

《89C51单片机秒表的设计.doc》由会员分享,可免费在线阅读全文,更多与《89C51单片机秒表的设计》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。

1、H,H;MOVR,H;MOVR,AH;MOVR,H;工作寄存器初始化CLRTR;计时器停止计时MOVTH,DH;MOVTL,FEH;定时器预置数AJMPREAD;DELAY:;延时ms子程序MOVR,D;D:MOVR,D;D:DJNZR,D;DJNZR,D;RET;子程序返回TAB:DBH,BH,FH,H,DH,DH,H,FH,FH,FH,H,DBH,CFH,EH,EDH,FDH,H,FFH,EFH,BFH;数码管段选码数表END;程序结束、程序仿真将以上程序清单导入先前做好的Proteus仿真电路,汇编之后,按键开始进行仿真。仿真结果如下:仿真结果描述:按“开始”键,秒表开始计时;按“暂停”键,秒表暂停计时;再按“开始”键,秒表继续计时;按“清零”键,秒表清零。、实物制作所需元件C单片机(型号STCCRC)IC座段共阴一位数码管(型号ArkSMK)K电阻F电容uF电容(耐压V)K排阻MHz晶振器七号电池盒V七号干电池(型号双鹿高性能碳性电池)按钮万能板,导线若干所需工具电烙铁,松香,焊锡丝,程序烧录器等。焊接按照仿真电路图,将元件焊接在万能板上,并用导线将它们联接起来,。焊接结果如下图:电路板正面电路板背面烧录程序并运行用编程器将编译好的secondwatchhex文件烧录进单片机,再将单片机插入焊接于电路板上的IC座中,接通电源,开始运行秒表。结果显示,秒表运行正常。按照我们的预期实现了计时、暂停和清零的功能。并且计时的准确度很高,计时范围内误差不超过秒。至此,我们的秒表设计和制作工作就全部完成了。、心得体会在此次课程设计中,我主要承担程序设计的工作。虽然秒表是一个非常简单的功能,但要在单片机中使用汇编语言来实现这个功能,仍然花了我不少。

2、低电平(可能被按下),则延时ms(调用延时子程序DELAY),延时完成后,若发现低电平消失,则说明该按键实际上未被按下,此时转回按键检测处继续检测;若发现仍然是低电平,则说明此键确实被按下了,此时就跳转至相应的程序标号处,执行相应的功能。()开始计时若确认“开始计时”键被按下,则跳转至程序标号“RUN”处,将定时器计时允许控制位TR置位,则定时器开始运行。此动作完成后,返回按键检测程序,等待操作者的下一次指令。()计时程序定时器计时至ms,溢出,引发中断,程序跳转至定时器中断服务程序入口BH处执行。程序跳转至中断服务程序TIME。由于秒表的最小计时单位是s,即ms,因此需加入软件计时,使定时器溢出次之后才改变数码管的显示状态。因此每来一次中断就将H中的数加,若H中的数没有到,则给定时器重新装入预置数,之后中断返回并继续等待中断;到了,才进入显示程序,改变数码管的显示状态,执行完毕之后中断返回并继续等待中断。()显示程序将数码管的段选码放在数表TAB中。每次ms计时完成后,将R中的值(初值为)送入A,然后自加。若R中的值没到,则使用累加器A查表,并将查得的数码管段选码送入毫秒位数码管。之后将H中的数置零,中断返回。若发现R中的数到了,则将R置零,并转入秒位进位子程序SECOND,向秒位进位,之后,继续照常向毫秒位送数。在秒位进位子程序SECOND中,由于要用到累加器A,因此先将其推入堆栈保护。将R中的值(初值为)送入A,然后自加。若R中的值没到,则使用累加器A查表,并将查得的数码开始继续运行AJMPREAD;PAUSE:;暂停键按下,跳转至此CLRTR;AJMPREAD;TIME:;定时器溢出,中断,跳转至此INCH;MOVA,H;CJNEA。

3、;AJMPSTOP;确认清零键被按下,秒表重置RUN:;计时键按下,跳转至此SETBTR;定时器体育竞赛及各种其他要求有较精确时间的各领域中。其中启停开关的使用方法与传统的机械计时器相同,即按一下启停开关,启动计时器开始计时,再按一下启停开关计时终止。而复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时应立即终止,并对计时器清零。本设计就是利用所学到的电子元器件将脉冲源用数码管显示出来,以制承诺简易的秒表。[关键词]机械计时器启停开关复位数码管显示简易、设计任务以单片机为核心,设计一个秒表,具有计时功能,按键有启动计时、数据清零、停止、时间显示。、设计题目秒表的设计、功能分析采用个LED数码管显示时间,计时范围设置为~秒,即精确到秒,用按键控制秒表的“开始”、“暂停”、“复位”,按“开始”按键,开始计时;按“暂停”按键,系统暂停计时;再按“开始”键,系统继续计时;数码管显示当前计时值;按“复位”按键,系统清零。、总体设计本实验利用单片机的定时器计数器定时和计数的原理,通过采用Proteus仿真软件来模拟实现。模拟ATC单片机、LED数码管以及控件来控制秒表的计数以及计时的开启、暂停、继续、与复位。其中有三个数码管来显示数据,两个数码管显示秒(两位),另一个数码管显示十分之一秒,十分之一秒的数码管计数从~,满十进一后显示秒得数码管的个位加一,并且十分之一秒显示清零重新从零计数。同理当个位满十进一后个位也清零重新计数,当计时超过范围(即超过秒)后,所有数码管全部清零重新计数。硬件设计C单片机MCS系列单片机是位单片机产品,C是其中的典型代表,基本模块包括以下几个部分:()CPU:C的CPU是位的,另外C内部有个位处理器()。

4、发现R中的数到了,则将R重置为,并转入十秒位进位子程序SECOND,向十秒位进位,之后,继续照常向秒位送数。完成后,弹出ACC和PSW,子程序返回。十秒位进位子程序与秒位进位子程序相似,只是没有向下一位进位的功能。()暂停计时若确认“暂停计时”键被按下,则跳转至程序标号“PAUSE”处,将定时器计时允许控制位TR置零,则定时器暂停运行。此动作完成后,返回按键检测程序,等待操作者的下一次指令。()秒表清零若确认“秒表清零”键被按下,则跳转至程序标号“STOP”处,将TR置零,关闭定时器运行。并且将数码管、工作寄存器、定时器预置数全部重置,使其处于秒表计时的初始状态。此动作完成后,返回按键检测程序,等待操作者的下一次指令。()延时程序用于按键延时防抖,延时ms。程序清单如下:ORGH;程序开始AJMPSTART;跳转到主程序STARTORGBH;定时器中断的地址入口AJMPTIME;定时器溢出,跳转到中断程序TIMESTART:;主程序MOVP,FFH;输入端口P全写MOVP,FH;MOVP,FH;MOVP,BFH;数码管初始化MOVH,H;MOVR,H;MOVR,AH;MOVR,H;工作寄存器初始化MOVTMOD,H;定时器工作于方式MOVTH,DH;MOVTL,FEH;定时器预置数(DFEH=D)SETBEA;开总中断允许SETBET;开定时器中断允许READ:;读键程序L:JBP,L;LCALLDELAY;按键延时防抖JBP,L;AJMPRUN;确认计时键被按下,开始继续计时L:JBP,L;LCALLDELAY;按键延时防抖JBP,L;AJMPPAUSE;确认暂停键被按下,暂停计时L:JBP,L;LCALLDELAY;按键延时防抖JBP,。

5、心思。首先是计时的问题,由于单片机计时器最大只能计时ms,因此要实现毫秒位的变化,我采用了软件计时的方法,单片机只需计时ms,然后用软件重复次,即可达到计时ms的目的。显示方面,为了使编程简单,我使用了静态显示。不过这使得占用IO口线过多,而且连线复杂繁琐,为实物的制作带来了不便。在以后的学习和应用中我会努力加深动态扫描显示的理解,争取熟练运用。根据书本知识,我们一开始只给P口加上了上拉电阻,但是实物做成后我们发现P和P口得输出显示非常暗,初步确定是驱动能力不足的问题后,我们给二者也加上了上拉电阻,结果使得显示正常了。由此我们了解到,实践才是检验真理的唯一标准,有时候书本上的知识需要经过实践的改进,才能运用到实际中。此次课程设计巩固了我的基础知识,提高了我的应用水平,锻炼了我的动手能力,使我受益匪浅。然而,在吸取经验的同时,我也吃了不少教训。在编程、仿真、焊接方面都走了不少弯路。但是,学则要有所收获,经过此次的锻炼,我在很多方面都已经有所提高,知识也掌握得更加扎实了。在今后的学习和实践中,我将继续努力钻研,提高自己,争取在学术和记忆上获得更大的进步。、参考文献《单片机原理及接口技术》,李朝青编著,北京航空航天大学出版社,年。《计算机接口技术试验指导书》,黄艳玲主编,重庆大学出版社。年月日以及H初始化,留待后面的计时程序备用;④将定时器置于工作方式,并为其装入计时预置数DFE(因为程序运行过程中占用的时间会导致一定误差,此为经实物测试之后的修正值),即将定时器定为每ms溢出;⑤开总中断允许和定时器中断允许。初始化完成后,即进入之后的按键扫描程序。()按键检测程序轮流检测开始计时(P)、暂停计时(P)、秒表清零(P)三个按键。若发现有一个按键出。

6、AH,TIME;H单元中的值到了吗?(计时到毫秒了吗,也就是说,该向毫秒位送数了吗?)MOVDPTR,TAB;H中的值到了,顺序执行MOVA,R;INCR;CJNER,AH,GET;R中的值到了吗?(该向秒位进位了吗?)MOVR,H;LCALLSECOND;到了,R清零,调用进位子程序SECOND,向秒位进位GET:;没到,跳过进位子程序MOVCA,@A+DPTR;MOVP,A;查表并向数码管毫秒位送数MOVH,H;重置H单元TIME:;MOVTH,DH;MOVTL,FEH;给定时器重新预置数RETI;中断返回SECOND:;秒位进位子程序PUSHACC;PUSHPSW;将ACC和PSW推入堆栈保护MOVA,R;INCR;CJNER,H,GET;R中的值到了吗,也就是说,该向十秒位进位了吗?MOVR,AH;LCALLSECOND;到了。R重置,调用进位子程序SECOND,向十秒位进位GET:;没到,跳过进位子程序MOVCA,@A+DPTR;MOVP,A;查表并向数码管秒位送数POPPSW;POPACC;PSW,ACC出栈RET;子程序返回SECOND:;十秒位进位子程序PUSHACC;PUSHPSW;将ACC和PSW推入堆栈保护MOVA,R;INCR;CJNER,AH,GET;R中的值到了吗,也就是说,该将此位归零了吗?MOVR,H;到了,R清零GET:;没到,跳过清零程序MOVCA,@A+DPTR;MOVP,A;查表并向数码管十秒位送数POPPSW;POPACC;PSW,ACC出栈RET;子程序返回STOP:;清零键按下,跳转至此MOVP,FFH;MOVP,FH;MOVP,FH;MOVP,BFH;数码管清零MOV管段选码送入秒位数码管。若。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值