- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机实验报告(闹钟)
单片机实验(闹钟部分修改版)
注:第一个是利用延时程序做的定时,循环太多定时不够精确;这一个用的是出栈和入栈的算法进行的定时,可以增加定时的精度。
程序目的说明:这是一个闹钟程序,当按下K1的时候,开始计时(说明:为了方便观察,我以10s中作为基本定时进行演示,如果需要其他定时可以通过修改部分程序得到),时间达到后,7段显示器和LED灯同时闪烁,若序号归零,则按下K2计时则停止。然后再按下K1计时又从新开始,以此类推。
电路图:
程序段:
效果展示:
点开始键,程序开始运行,但是K1开关还没有打开,所以计时还没有开始。
按下K1键,计时开始。
10s到达的时候,LED灯和计时屏幕一起闪烁(这里的LED灯也可以换成蜂鸣器)
再按下K2开关,LED灯和屏幕都不再闪烁。
再按下K1,再按K2,再按K1,又开始新一轮的计时。
实验总结:
我用了两种方法做闹钟程序,第一种是直接用延时做,但是做出来之后,当计时时间不断增加的时候,误差就变得越来越大,我觉得这个应该是由于循环次数太多,需要不断的加入计数初值造成的。而且由于延时没有时间上的加减,类似于一个总体的定时,所以我觉得应该是不能加显示器显示的,所以我觉得延时这种方法总体来说还不够科学,但是程序编辑起来非常简单,而且好懂,如果用于短时间的计时还是可以采用的。
第二种方法是在网上看的堆栈方法计时,然后经过自己改良后得到的,这种方法的计时相对于第一种延时的方法我觉得误差小了很多,由于它的时间是一次次加上去的,所以再经过二进制码和BCD码得转换,可以由七段显示器显示出来。这样计时和显示可以达到同步,更加方便明了。
实验中得问题:
但是还有一个没有解决的问题是,我希望的是K1控制开启闹,K2控制结束闹钟,但是K2控制结束闹钟,但是K2按下后LED和7段码显示器不会再闪烁了,但是计时还是在继续进行·只是没有显示出来,我不知道该怎么修改才可以让计时也完全停止下来····
因为P0口内部没有上拉电阻,不能输出高电平,所以要接上拉电阻。排阻就是好多电阻连载一起,他们有一个公共端
LED6位七段码显示灯,从左到往右两位一组,分别显示HOUR, MINUTE,SECOND.
LED灯,计时到达的时候LED灯闪烁,计时t停止时LED灯熄灭。
K1开关和P1.1口相连,K2和P2.2口相连,分别用于控制计时的开启和关闭
晶振电路,帮助减小计时过程中产生的误差。
程序说明:1.直接将开关定义为各个接口,可以方便之后程序中利用各个开光的状态进行跳转。
2.利用了计数/定时器0作为外部中断,当中断产生,自动跳入计时状态;
5.此段定义的是BCD码得时间,为了可以在七段显示器上面显示
4.此段定义的是需要计时(亮灯)的时间,我设定的10s亮灯,所以s为0ah,其他的均为00h
6.主程序中要调用闹钟程序timebear检测设定时间是否到达和显示时间的子程序display1.
3.此段定义的是而二进制的时间存储单元。
10.这个是用于判断K2开关是否按下:当K2开关按下的时候,跳入y1程序段,使7段显示器所显示的时间归零,并且使LED灯熄灭。
11.display为时间显示子程序,主要用于实现将二进制的时间转化为BCD码显示的时间,方便在七段显示器上显示。本质就是利用程序末尾列出的转换表进行转换
七段码转换表
9.time 为计算时间的子程序,用的是出栈入站的方式,基本定时是按为5ms,然后循环.
从second开始定时,超过60m就归零,minute加1,没有超过60s,就继续向上加;minute,hour都是这样的原理,需要注意的是,因为要出栈入栈,所以需要吧累加器和psw中的值入栈保护。
7.timebear程序段用于检测闹铃设定的时间是否达到,依次从second(s),minute(m),hour(h)检测,出现不匹配的就不再向下执行,若时间匹配就跳转至timecome。
8.timecome程序段主要控制P3.7口,时间达到的时候,使LED灯和7短码显示器点亮并闪烁,如果要不要灯和七段码显示器闪烁则删除:
mov r7,#250
t2:mov r6,#124
t3:djnz r6,t3
djnz r7,t2
setb p3.7
这一段程序即可,这一段相当于机器周期,是灯的闪亮延时,就出现了闪烁的状态。
您可能关注的文档
最近下载
- 【作风建设论述摘编】2025关于加强党的作风建设论述摘编(七)PPT.pptx VIP
- 水平四足球大单元教案.docx VIP
- 义和团运动和八国联军侵华课件-2025-2026学年统编版(2024)历史八年级上册.pptx VIP
- 手术讲解模板:双侧牵张成骨下颌骨前移术.ppt
- 羊的胚胎移植(15分钟).ppt VIP
- 【作风建设论述摘编】2025关于加强党的作风建设论述摘编(三)PPT.ppt VIP
- 中西医学的本质特点及其模式.ppt
- 甲午中日战争与列强瓜分中国狂潮课件++2025-2026学年统编版八年级历史上册.pptx VIP
- SY75C 9三一履带液压挖掘机.pdf VIP
- 工作面采煤设计方案.doc VIP
文档评论(0)