基于C51的流水灯设计课程设计_第1页
基于C51的流水灯设计课程设计_第2页
基于C51的流水灯设计课程设计_第3页
基于C51的流水灯设计课程设计_第4页
基于C51的流水灯设计课程设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学号2013-2014学年 第二学期基于单板机的应用系统课程设计报告题目:基于C51的流水灯设计专业:计算机科学与技术班级:10(2)班姓名:指导教师:冯 康成绩:计算机与信息工程系年 月 日基于C51的流水灯设计1 设计内容1.1 设计用途当今的社会是一个新技术层出不穷的时代,科技迅速发展,在电子领域的发展更是迅速,同时也在影响着我们的生活。单片机控制一直是电子领域中比较重要的一个方向,而流水灯就是单片机控制在日常生活中常见的一种应用。随着人民生活水平的提高,流水灯在现实生活中所起的作用越来越重要。例如:在人流拥挤繁忙的交通路段,闪烁着的流水交通灯,提醒着我们要遵纪交通规则,在霓虹闪烁的繁华

2、大街上,闪烁的流水灯无不吸引过路人的眼球,甚至在一些大型商场大厦的自动门上都装有自动流水灯,告诉人们的时间和日期。1.2 设计内容流水灯就是一组灯,在控制系统的控制下按照程序设定的顺序和时间来发亮和熄灭,有这样就能形成一定的视觉效果。本流水灯设计实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电子原器件构成的电路和控制单片机的程序组成的流水灯控制系统。通过编写程序可以做出从左向右,从右向左,从中间向两边,从两边向中间等等美轮美奂的效果。本设计涉及到了STC89C52单片机,所有的设计都是基于该单片机开发的。本设计主要设计的是从左到右依次点亮的流水灯设计

3、,要实现这种发光效果,要将几个发光二极管依次点亮、熄灭,发光二极管便会一亮一灭地成为流水灯了。是最实用也是比较简洁的方法。2 原理及分析如图1所示即为流水灯设计的硬件原理图硬件原理: 图1 流水灯硬件原理图从图1中可以看出,发光二极管LED的所有阳极连在一起,属于共阳极的连接方法,此时LED低电平有效,即如果要让接在P10口的LED1亮起来,那么只要把P10口的电平变为低电平就可以了;相反,如果要接在P10口的LED1熄灭,就要把P10口的电平变为高电平;同理,接在P11P17口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1LED8依次点亮、

4、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制发光二极管亮灭的时候应该适当延时一段时间,否则我们就看不到“流水”效果了。实际开发板的流水灯布局如图2 所示。图2实际开发板的流水灯布局3 设计过程和程序代码3.1 总设计框图:总设计框图如图3所示STC89C52单片机电源驱动按键控制流水灯显示时钟电路复位电路图33.2 LED流水效果设计单片机I/O的应用最典型的是通过I/O口与LED构成显示电路。利用单只LED组合排列成“1字型,图中共用八个LED,从上到下依次显示采用动态显示。3.3 按键控制按键处理设置为

5、:初始状态,当按键K2没有按下时,标志位为1,8个LED灯按从上到下的顺序依次亮灭;当K2按下时,标志位取反,8个LED首先按照从上到下的顺序依次亮灭,然后按照从下到上再从上到下的顺序来回亮灭。当K2再次被按下时,标志位再次取反,回到初始状态,如此循环, K1是复位键。3.4 复位电路 按键电平复位,分压复位。3.5 程序控制流程图程序控制流程图如图10所LED灯从上至下亮灭,再从下至上循环亮灭否flag=0是主程序运行LED灯一直从上到下亮灭开始流水灯显示K2被按下flag=flag,消抖是否图103.6 程序代码单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看

6、到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机相应管脚电平的高低变化,来实现发光二极管的一亮一灭。软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。“流水灯”的流向方式有很多种,有从上向下流,有下向上流,也有两边向内流、内部向外流.好多方法都可以实现这些功能,可是某些编程方法比较繁琐,本次课程设计的这种方法是比较常用,比较实用,也是比较简洁的方法,此方法实现的是发光二极管从上到下依次点亮,然后由按键控制流水灯有没有循环效果。控制8个发光二极管时,可以对P1口直接赋值,8个LED用2位16进制就可以表示其状态,例如让第一个灯亮,其他灯灭,

7、用二进制表示为1111 1110B,即16进制的0xfe。同理第二个灯亮则有1111 1101B,即0xfd,依此类推实现上述功能的程序代码如下:源代码:#include /52单片机头文件,一般不要改动,里面包含特殊功能寄存器的定义#include /为下面使用其内部函数循环左移和循环右移添加的头文件#define uchar unsigned char /将unsigned char定义为uchar,简化输写。提高编程速度 #define uint unsigned int /将unsigned char定义为uint,简化输写。提高编程速度sbit k2=P30; /按键k2,连接在P3

8、.0上uchar led;uint i,j;/*延时子程序*/void delayms(uint time)while(time-)for(j=0;j110;j+); /大约为1ms,但不是很精确/*主程序*/void main()char flag=1; /用于标志按键,按键每按下一次取反while(1)/死循环,程序永远在循环里面运行。if(k2=0)flag=flag;delayms(200); /消除抖动,尽量避免一次按键当成几次按键if(flag=0)led=0xfe;for(i=0;i8;i+)P1=led;led=_crol_(led,1); /将led循环左移1位delayms

9、(500); /延时一会才能看到流水效果,大约500ms if(flag=1)led=0xfe;for(i=0;i8;i+)P1=led;led=_crol_(led,1); /循环左移delayms(500); for(i=0;i8;i+)P1=led;led=_cror_(led,1); /循环右移delayms(500);编译及下载过程接下来,我们将上述程序编译,并用相应软件将.hex文件烧写到单片机芯片中,在使用软件烧写.hex文件时注意单片机的选型及其他一些问题,烧写后的单片机电路板上可以看到LED的流水效果,但源程序看起来更加简洁,直观。其实STC89C52单片机有的指令常用,有的

10、指令不常用,只要遵守语法规则,可以用这些指令“组合”成我们想象到的很多程序。当然,有时一条指令可以替代很多条指令,这样会使程序简洁,程序代码减少,在编写较大程序时可以让单片机的存储器放得下你需要的代码,这也是单片机高手所追求的“程序简洁高效”。4 设计结果与分析4.1 设计结果打开安装好的Uvison 4.0软件,关闭之前打开的所有工程,重新新建一个工程,并选择Atmel公司的AT89C52芯片,保存在相应位置,然后新建一个.C文件,并将.C文件添加进刚才新建的工程。再将上述C语言代码输入该文件,单击“编译”按钮,过程中出现一些小错误,经过我仔细检查进行反复调试,最终将程序编译成功。软件编写成

11、功之后,输出.hex文件。然后将单片机用连在电脑上,利用单片机专门的烧写程序通过串口将.hex文件正确烧写进单片机打开单片机电源即可看到流水灯效果。4.2 设计结果分析该设计可以能看到单一方向的流水灯和循环流水灯的效果,可是也有待改进之处,例如 :延时的精确性方面,可以考虑用定时器对延时的精确性进行改进,而且流水灯是单一的颜色和亮度,需要在发光二极管颜色的种类以及颜色的明暗的设置上再做改进。本程序实现的功能比较简单,其实我们可以在此基础上扩展更复杂的流水灯控制。比如再增加一排流水灯,同时显示不同的流水花样,控制流水灯显示数字或图案,以及可以通过流水灯做摇摇棒等等。用STC89C52单片机设计的

12、该流水灯具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心即单片机。单片机的最明显的优势,就是便于植入到各种仪器,设备中。通过这次单片机课程设计,我不仅加深了对单片机理论知识的理解,而且能将单片机理论知识很好地应用到实践中去,使理论与实际相结合,使我的理论知识得到了巩固,在查资料翻阅资料的过程中也丰富了我的知识阅历。与此同时,也学会了之前没怎么接触的硬件焊接工作,对构成单片机最小系统的一些元器件也有了进一步的认识。在这次课程设计中我看到了自己眼高手低的缺点,对一些基础知识掌握得还不是很好,而且以前所学的知识遗忘了很多,体会到了那种书到用时方恨少的感觉!鉴于此,以后我要不断充电,不断提升自己,经常回顾所学的知识,养成良好的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论