单片机课设_彩的控制.docVIP

  1. 1、本文档共20页,可阅读全部内容。
  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文档。上传文档
查看更多
目录 设计内容及要求 设计思路及总体方案分析 3. 硬件电路的设计 4. 程序设计及流程图 5. 实验中出现的问题及解决方案 6. 实验结果及功能演示 7. 心得体会 8. 参考文献 附录A 源程序清单 附录B 实验电路图 一·设计内容及要求 用8盏LED小灯,实现多种彩灯灯光效果(不含全部点亮,全部熄灭)要求实现以下几种情况 可以通过按钮在几种灯光效果间切换; 可以通过按钮暂停彩灯效果,使小灯全亮,再次按下相同按钮后继续之前的效果; 增加自动和手动模式之间的切换; 使用定时中断延时。 二·设计思路及总体方案 首先由于AT89C51单片机的系统包含:电源端(Vcc,GND)内部已连接好;时钟信号,通过晶振,电容与单片机的XTAL1和XTAL2相连,与单片机内部结构共同组成时钟信号源,晶振的频率决定了该系统的频率,该系统选择晶振频率12MHz;复位电路,只要一摁下复位键,就会回到程序的起始地址重新开始执行程序。所以首先将这些电路连接好,使单片机可以正常工作起来。 然后分析我们的题目要求,要求实现开关、自动手动选择、暂停,以及手动中不同方式的选择,所以,我们采用几个拨码开光与单片机的P0口连接来做彩灯的控制电路,通过检测开关接口电平的高低来判断开关是否闭合,从而控制彩灯的启停与不同模式间的切换。此外还必须有LED显示电路,我们采用P1口作为输出,连接八个小灯进行控制。硬件连接模块如下图: 在此基础上,我们进行软件设计。在主程序中通过检测P0口开关的状态,根据开关的状态进入到不同的工作模式,如果是自动的话,自动在三种彩灯效果(自上至下、自下至上、闪烁)之间循环点亮;如果是手动的话,再通过开关状态跳转到不同的效果子函数中去。在硬件设计中,当给小灯对应接口输出低电平,小灯可以通电呗点亮,所以改变输出给P1口的控制字,即可点亮相应的小灯。具体实现方法参见程序分析。 三·硬件电路的设计 1、时钟信号 其中晶振12MHz,电容选22PF,如图连接后接到单片机的18,19引脚,与内部结构共同组成时钟信号源。 复位: 当按钮闭合时,RST引脚接高电平,从而使单片机复位。 3、按键控制电路: P1口作为输入,低电平有效,其中sw1控制启停,sw2按下时彩灯由上向下循环流,sw3按下时彩灯由下向上循环流,sw4为暂停按钮,sw5按下时彩灯闪烁。 具体电路原理图见附录B 四·程序分析及流程图 主程序 在主程序中首先初始化,使八个彩灯全部熄灭。然后通过检测P0口开关的状态,根据总开关的状态来启动或者停止电路,根据自动手动开关进入到不同的工作模式,如果是自动的话,自动在三种彩灯效果(自上至下、自下至上、闪烁)之间循环点亮;如果是手动的话,再通过开关状态跳转到不同的效果子函数中去。 向左循环子函数 在硬件接线中,当给彩灯输出低电平时,彩灯可以通电点亮,所以通过输出不同的控制字给P1接口,来实现不同的彩灯方式。此函数可以实现彩灯从左到右一个一个逐次点亮,完毕后再次从左向右依次点亮。被点亮的小灯接口为0其余为1,所以此方式可以看做是将一个固定的低电平0依次循环,即可实现循环点亮的效果。所以,首先将累加器置FF,及八个数位为1,进位位清零,然后进行带进位位的左环移,每环移一次之后输出给P1口,0所对应的位小灯即被点亮,进行八次之后返回主程序。 向右循环子函数 此函数实现八盏小灯自左向右依次点亮,具体实现方法同向左循环相同,只是环移部分为带进位位的右环移。具体流程图: 暂停子函数 当在左移或者右移函数中检测到暂停开关闭合时跳转到该函数,此函数可以实现八盏小灯全部点亮,直到暂停开关打开,返回原来的函数中继续向下执行。将小灯全部点亮及每个P1接口为低电平,所以将00H直接输出,然后再次检测暂停开关,如果仍然为低电平即仍然闭合,则继续输出00H给P1,否则即跳转回原地址继续向下执行。程序流程图如下: 延时子函数 每条汇编语言的执行时间都非常短,在每个彩灯点亮之后须经由一段时间的延时,然后再点亮下一个小灯,我们利用定时中断来实现延时100ms。首先将定时计数器T0初始化,通过进行五次20ms的定时可以实现100ms延时,之后再返回调用处。程序流程图如下: 五·实验中出现的问题及解决方案 此次实验过程中,由于事先参考部分89C51单片机的连接电路,并通过讨论商定,在硬件连接过程中没有出现问题。不过由于该门知识涉及面太广,又有些艰涩难懂,所以在程序设计和调试过程中不免出现了一些问题 六·实验结果及功能演示 sw1为总的开关,它断开时其他开关均无效,当sw1闭合后开始进入自动点亮模式,即依次从上到下点亮,从下到上点亮,再闪烁两次,然后循环以上三种模式。Sw5为闪烁工作开关,闭合后八个LED的1、3、

文档评论(0)

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

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

1亿VIP精品文档

相关文档