- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《跑马灯课程设计
摘要:本设计使用89C51芯片,利用P0的8个端口连接8个发光二极管,通过P0.0到P0.7的值控制“跑马灯”的亮灭,以达到显示效果。设计的中断程序要对多个按键动作进行响应,灯光变换的花样有4种,用4个按键k0,k1,k2,k3切换。按下k1键,程序作左向流水灯; 按下k2按键程序作右向流水灯; 按下k3键为亮点向中间移动; 按下k4键为执行亮点向两边移动。
浏览了网上的各种作品及代码,通过各种实现代码的比较,和各种优化,总结出本程序,以较优秀的代码实现各种可控的“跑马”功能。
引言:本设计用4个开关按键控制8个发光二极管,组成为一排跑马灯进行各种样式的亮灯形式,在中断程序中处理多个按键动作的响应,以控制一排跑马灯的工作。
1设计概述
本程序设计意在展示跑马灯的色彩样式及“跑马”变换效果,如果将跑马灯做大,会有很高的观赏价值。
我查阅书籍资料,浏览网上的各种作品及代码,通过各种实现代码的比较,和各种优化,总结出本程序,以较优秀的代码实现各种可控的“跑马”功能。
本设计的中断程序要对多个按键动作进行响应,灯光变换的花样有4种,用4个按键k1,k2,k3,k4切换。进入程序后,程序作双向流水灯;按下k1键,程序作左向流水灯; 按下k2按键程序作右向流水灯; 按下k3键为亮点向中间移动; 按下k4键为执行亮点向两边移动。
2硬件电路设计及描述
本设计使用89C51芯片,利用P0的8个端口连接8个发光二极管,通过P0.0到P0.7的值控制“跑马灯”的亮灭,以达到显示效果,连接图如图1所示。
图1:硬件电路连接图1 利用P1.0到P1.3这4个端口作为4个控制开关的输入,控制开关连接INT0中断,按键触发中断响应以停止“跑马灯”当前的执行样式,进而改变跑马灯的显示样式。
图2:硬件电路连接图2
综上所述,总体的电路连接如图3:
图3:总体硬件电路连接图
3软件设计流程及描述
主程序的设计思路为,开始时执行左右流水灯,在中断服务程序中,首先读取按键状态,然后延时10ms,再次读取按键状态。把两次获得的按键状态比较,如果不同,就表示是抖动,退出中断;否则,就去判断是哪个按键按下。如果是k1,就执行左跑马灯;如果是k2,就执行右跑马灯;如果是k3,就执行亮点向中间移动;如果是k4,就执行亮点向两边移动。主程序的流程如图4。
主程序流程图
图4:主程序流程图 (程序开始时)
org 0003h
ljmp ext1
设置中断。因为0中断的中断地址为0003h,所以在0003h地址设置一个跳转,即当执行到0003h时程序跳转到ext1标签进行执行,ext1标签内的代码程序则通常称为中断服务程序,用以完成中断服务。
(在左右流水灯的程序中)
mov a, #0feh
给a赋值0feh,而后又将a输出给p0,亮灯,0feh转化为2进制书就即让第一个灯亮,其余的灯灭。
lcall del100ms
rl a
延迟100ms后,rl a是让a按位左移,再次执行输出p0时的效果就是只第二个灯亮。
此处变换a的方法比较简便,可以与自设样式1和样式2相比较:
(自设样式1中)
mov p0, #07eh
lcall del100ms
…………
这种方式是把每一步骤的变换都写出来,赋值给p0输出,这种方式适用于变换方式不固定的跑马灯。
(延迟10ms的标签del10ms中)
djnz r4, $
$符号代表当前行的代码,也就是说,当前代码要执行r4次,而这个延迟程序一共需要执行这条语句248X20次,通过计算即为10ms。
设计采用置标志位的方法,即在主程序中设定一个标志位,不断的对这个标志进行查询:如果是标志为状态1,就执行双向跑马灯;如果是状态2,就执行左向跑马灯;如果是状态3,就执行右向跑马灯,依次类推。而在中断服务程序中,只需要进行如下工作:去抖动,键识别,改变标志位。
这里我们用寄存器r0的内容作为标志,当它里面的内容是0ffh时,执行左右跑马灯程序;为01h时,执行左跑马灯;02h时执行右跑马灯;03h时执行样式1的“跑马”;04h时执行样式2的“跑马”。
中断服务程序
返回主程序
图5:中断程序流程图 在中断服务程序中,应该尽量的使得任务简化,不要让中断服务程序作过多复杂的任务,而要尽量把这些复杂的任务放到主程序中间去完成。中断流程如图5。
去抖功能:读入键值,存入30h地址,然后延迟10ms后,也就是一个很短的时间之后,再次读入一个键值,两次键值相比较,如果一样则不是因为外部原因抖动产生按键,如果不一样则说明
您可能关注的文档
最近下载
- 县纪委监委关于开展纪检监察工作规范化法治化正规化建设年行动的工作汇报.docx VIP
- 辽宁农业职业技术学院2024年单招复习题库(中职毕业生)-畜禽智能化养殖、宠物养护与训导、宠物医疗技术、水族科学与技术 (判断题80道).docx
- 危重患者压疮的预防与护理完整版.pptx VIP
- 高一语文《哦-香雪》教学课件-课件.ppt VIP
- 4.5小数的近似数(拔高作业)2024-2025学年四年级下册数学 人教版.docx VIP
- 厂房智能化系统设计方案.docx VIP
- 20220308工程建设公司SAP PS整体解决方案.pptx VIP
- 4.5小数的近似数(中等作业)2024-2025学年四年级下册数学 人教版.docx VIP
- 浅谈现代初等教育改革的趋势和意义.doc
- 七年级历史下册期中测试卷(含答案).pdf VIP
文档评论(0)