根据C51的流水灯设计课程教学设计.doc

收藏

编号:2614229    类型:共享资源    大小:296.51KB    格式:DOC    上传时间:2020-04-24
8
金币
关 键 词:
根据 依据 c51 流水 设计 课程 教学
资源描述:
.- 学号 2013-2014学年 第二学期 《基于单板机的应用系统》 课程设计报告 题目: 基于C51的流水灯设计 专业: 计算机科学与技术 班级: 10(2)班 姓名: 指导教师: 冯 康 成绩: 计算机与信息工程系 年 月 日 基于C51的流水灯设计 1 设计内容 1.1 设计用途 当今的社会是一个新技术层出不穷的时代,科技迅速发展,在电子领域的发展更是迅速,同时也在影响着我们的生活。单片机控制一直是电子领域中比较重要的一个方向,而流水灯就是单片机控制在日常生活中常见的一种应用。随着人民生活水平的提高,流水灯在现实生活中所起的作用越来越重要。例如:在人流拥挤繁忙的交通路段,闪烁着的流水交通灯,提醒着我们要遵纪交通规则,在霓虹闪烁的繁华大街上,闪烁的流水灯无不吸引过路人的眼球,甚至在一些大型商场大厦的自动门上都装有自动流水灯,告诉人们的时间和日期。 1.2 设计内容 流水灯就是一组灯,在控制系统的控制下按照程序设定的顺序和时间来发亮和熄灭,有这样就能形成一定的视觉效果。本流水灯设计实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电子原器件构成的电路和控制单片机的程序组成的流水灯控制系统。通过编写程序可以做出从左向右,从右向左,从中间向两边,从两边向中间等等美轮美奂的效果。本设计涉及到了STC89C52单片机,所有的设计都是基于该单片机开发的。本设计主要设计的是从左到右依次点亮的流水灯设计,要实现这种发光效果,要将几个发光二极管依次点亮、熄灭,发光二极管便会一亮一灭地成为流水灯了。是最实用也是比较简洁的方法。 2 原理及分析 如图1所示即为流水灯设计的硬件原理图 硬件原理: 图1 流水灯硬件原理图 从图1中可以看出,发光二极管LED的所有阳极连在一起,属于共阳极的连接方法,此时LED低电平有效,即如果要让接在P10口的LED1亮起来,那么只要把P10口的电平变为低电平就可以了;相反,如果要接在P10口的LED1熄灭,就要把P10口的电平变为高电平;同理,接在P11~P17口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制发光二极管亮灭的时候应该适当延时一段时间,否则我们就看不到“流水”效果了。实际开发板的流水灯布局如图2 所示。 图2实际开发板的流水灯布局 3 设计过程和程序代码 3.1 总设计框图: 总设计框图如图3所示 STC89C52 单片机 电源驱动 按键控制 流水灯显示 时钟电路 复位电路 图3 3.2 LED流水效果设计 单片机I/O的应用最典型的是通过I/O口与LED构成显示电路。利用单只LED组合排列成“1字型,图中共用八个LED,从上到下依次显示采用动态显示。 3.3 按键控制 按键处理设置为:初始状态,当按键K2没有按下时,标志位为1,8个LED灯按从上到下的顺序依次亮灭;当K2按下时,标志位取反,8个LED首先按照从上到下的顺序依次亮灭,然后按照从下到上再从上到下的顺序来回亮灭。当K2再次被按下时,标志位再次取反,回到初始状态,如此循环, K1是复位键。 3.4 复位电路 按键电平复位,分压复位。 3.5 程序控制流程图 程序控制流程图如图10所 LED灯从上至下亮灭, 再从下至上循环亮灭 否 flag=0 是 主程序运行 LED灯一直从上到下亮灭 开始 流水灯显示 K2被按下 flag=~flag,消抖 是 否 图10 3.6 程序代码 单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到流水灯循环点亮的现象,我们还需要告诉单片机怎么来进行工作,即编写程序控制单片机相应管脚电平的高低变化,来实现发光二极管的一亮一灭。软件编程是单片机应用系统中的一个重要的组成部分,是单片机学习的重点和难点。 “流水灯”的流向方式有很多种,有从"上向下流",有"下向上流",也有"两边向内流"、"内部向外流"......好多方法都可以实现这些功能,可是某些编程方法比较繁琐,本次课程设计的这种方法是比较常用,比较实用,也是比较简洁的方法,此方法实现的是发光二极管从上到下依次点亮,然后由按键控制流水灯有没有循环效果。控制8个发光二极管时,可以对P1口直接赋值,8个LED用2位16进制就可以表示其状态,例如让第一个灯亮,其他灯灭,用二进制表示为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=P3^0; //按键k2,连接在P3.0上 uchar led; uint i,j; /*延时子程序*/ void delayms(uint time){ while(time--) { for(j=0;j<110;j++); //大约为1ms,但不是很精确 } } /*主程序*/ void main() { char flag=1; //用于标志按键,按键每按下一次取反 while(1) //死循环,程序永远在循环里面运行。 { if(k2==0) { flag=~flag; delayms(200); //消除抖动,尽量避免一次按键当成几次按键 } if(flag==0) { led=0xfe; for(i=0;i<8;i++) { P1=led ; led=_crol_(led,1); //将led循环左移1位 delayms(500); //延时一会才能看到流水效果,大约500ms } } if(flag==1) { led=0xfe; for(i=0;i<8;i++) { P1=led; led=_crol_(led,1); //循环左移 delayms(500); } for(i=0;i<8;i++) { P1=led; led=_cror_(led,1); //循环右移 delayms(500); } } } } 编译及下载过程 接下来,我们将上述程序编译,并用相应软件将.hex文件烧写到单片机芯片中,在使用软件烧写.hex文件时注意单片机的选型及其他一些问题,烧写后的单片机电路板上可以看到LED的"流水"效果,但源程序看起来更加简洁,直观。其实STC89C52单片机有的指令常用,有的指令不常用,只要遵守语法规则,可以用这些指令“组合”成我们想象到的很多程序。当然,有时一条指令可以替代很多条指令,这样会使程序简洁,程序代码减少,在编写较大程序时可以让单片机的存储器放得下你需要的代码,这也是单片机高手所追求的“程序简洁高效”。 4 设计结果与分析 4.1 设计结果 打开安装好的Uvison 4.0软件,关闭之前打开的所有工程,重新新建一个工程,并选择Atmel公司的AT89C52芯片,保存在相应位置,然后新建一个.C文件,并将.C文件添加进刚才新建的工程。再将上述C语言代码输入该文件,单击“编译”按钮,过程中出现一些小错误,经过我仔细检查进行反复调试,最终将程序编译成功。软件编写成功之后,输出.hex文件。 然后将单片机用连在电脑上,利用单片机专门的烧写程序通过串口将.hex文件正确烧写进单片机打开单片机电源即可看到流水灯效果。 4.2 设计结果分析 该设计可以能看到单一方向的流水灯和循环流水灯的效果,可是也有待改进之处,例如 :延时的精确性方面,可以考虑用定时器对延时的精确性进行改进,而且流水灯是单一的颜色和亮度,需要在发光二极管颜色的种类以及颜色的明暗的设置上再做改进。 本程序实现的功能比较简单,其实我们可以在此基础上扩展更复杂的流水灯控制。比如再增加一排流水灯,同时显示不同的流水花样,控制流水灯显示数字或图案,以及可以通过流水灯做摇摇棒等等。 用STC89C52单片机设计的该流水灯具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心即单片机。单片机的最明显的优势,就是便于植入到各种仪器,设备中。 通过这次单片机课程设计,我不仅加深了对单片机理论知识的理解,而且能将单片机理论知识很好地应用到实践中去,使理论与实际相结合,使我的理论知识得到了巩固,在查资料翻阅资料的过程中也丰富了我的知识阅历。与此同时,也学会了之前没怎么接触的硬件焊接工作,对构成单片机最小系统的一些元器件也有了进一步的认识。 在这次课程设计中我看到了自己眼高手低的缺点,对一些基础知识掌握得还不是很好,而且以前所学的知识遗忘了很多,体会到了那种书到用时方恨少的感觉!鉴于此,以后我要不断充电,不断提升自己,经常回顾所学的知识,养成良好的学习习惯,争取让自己变得更强! 5 参考文献 [1] 张义和《例说51单片机(C语言版)》人民邮电出版社 [2]杨欣,王玉凤,刘湘黔《 51单片机应用从零开始》清华大学社 [3] 李建忠《单片机原理及应用》 西安电子科技大学 [4]鲍祖尚,刘凯,谭永宏《单片机原理与开发技术》国防科技大学出版社,2011年 [5]陈海宴等 《51单片机原理及应用》北京航空航天大学出版社,2010.
展开阅读全文
提示  淘文阁 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:根据C51的流水灯设计课程教学设计.doc
链接地址:https://www.taowenge.com/p-2614229.html
关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

收起
展开