基于C51的流水灯设计.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于C51的流水灯设计

学号 0808210124 《基于单板机的应用系统》 课程设计报告 题目: 基于C51的流水灯设计 专 业: 计算机科学与技术 班 级: 计算机科学与技术XX班 姓 名: XXX XX 指导教师: XX 成 绩: 计算机与信息工程系 2012年4月15日 基于C51的流水灯设计 设计内容 设计用途 流水灯就是一组灯,然后在控制系统的控制下按照设定的顺序和时间来发亮和熄灭,有这样就能形成一定的视觉效果, 很多街上的店面和招牌上面就安了流水灯,看上去更美观。特别是晚上,大楼上来回滚动的彩灯管就是一种流水灯,还有马路两边的树上像彩色流星雨落下的灯管这也是一种流水灯。所以,城市夜景中,变幻多姿的霓虹灯历来是一道亮丽的风景。流水灯不是只有单一的效果,它可以可以做出很多很好看意想不到的效果,利用单片机的自动控制功能,设计出相应不同的电路,可以实现彩灯不同模式的流水效果。 设计内容 本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。可以做出从左向右,从右向左,从中间向两边,从两边向中间等等美轮美奂的效果。本设计涉及到了STC89C52单片机,这一切都是基于该单片机开发的。本设计主要设计的是从左到右依次点亮的流水灯设计,要实现这种发光效果,要将几个发光二极管依次点亮、熄灭,发光二极管便会一亮一灭地成为流水灯了。是最实用也是比较简洁的方法。 原理及分析 如图1所示即为流水灯设计的硬件原理图 硬件原理: 图1 流水灯硬件原理图 从图1中可以看出,如果要让接在P10口的LED1亮起来,那么只要把P10口的电平变为低电平就可以了;相反,如果要接在P10口的LED1熄灭,就要把P10口的电平变为高电平;同理,接在P11~P17口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。实际开发板的流水灯布局如图2 所示。 图2实际开发板的流水灯布局 设计过程和程序代码 总设计框图: 总设计框图如图3所示 图3 LED显示 单片机I/O的应用最典型的是通过I/O口与LED构成显示电路。利用单只LED组合排列成“1字型,图中共用八个LED,从右到左依次显示采用动态显示。 数码管显示 单片机I/O的应用最典型的是通过I/O口与7段LED数码管构成显示电路。7段LED数码管,则在一定形状的绝缘材料上,利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-5的数字。采用动态显示。 按键控制 按键处理设置为:如没有按键,则LED不走动。当按下K2按键时,进入显示状态,按K3健进入停止状态,LED停止走动,K1是复位键。 复位电路 按键电平复位,分压复位。 程序控制流程图 程序控制流程图如图10所示 程序代码 单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。 “流水灯”的流向方式有很多种,有从左向右流,有右向左流,也有两边向内流、内部向外流......好多方法都可以实现这些功能,可是某些编程方法比较繁琐,我设计的这种方法是最实用也是比较简洁的方法,此方法实现的是发光二极管从左到右依次点亮。 实现上述功能的程序代码如下: 源代码: #includereg52.h //52单片机头文件,一般不要改动,里面包含特殊功能寄存器的定义 #define uchar unsigned char //将unsigned char定义为uchar,简化输写。提高编程速度 #define uint unsigned int //将unsigned char定义为uint,简化输写。提高编程速度 uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //定义八个灯的工作状态。 /*延时子程序*/ void delay(uint time) { while(--time); //当time的值为非0时,执行空语句。当time为0时,跳出while语句。 } /*主程序*/ void main() { uchar i; //定义一个无符号字符变量。 whi

文档评论(0)

wyjy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档