基于单片机的LED流水灯控制_第1页
基于单片机的LED流水灯控制_第2页
基于单片机的LED流水灯控制_第3页
基于单片机的LED流水灯控制_第4页
基于单片机的LED流水灯控制_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

课程设计说明书课程名称:单片机原理及应用设计题目:基于单片机的LED流水灯控制院系:信息技术学院专业:计算机科学与技术2023年1月10日基于单片机的LED流水灯控制摘要基于单片机的LED流水灯的应用十分广泛,由单片机作为的核心控制器,通过按键实现控制功能和数据输入是非常普遍的。通常在所需按键数量不多时,系统常采用独立式按键。这种按键的电路配置灵活,软件结构简单。由于实际应用中,不同系统对按键的要求不同,因此,对按键程序的设计要考虑全面,以便更好地完成按键所设定的功能,简述了该系统中一些重要芯片的根本工作原理,着重论述了硬件线路各个模块的设计思想。进而熟练掌握相关专业根底知识的综合应用,提高学生的实际动手和设计能力。本系统是基于AT89C51系列单片机为核心的LED流水灯设计,实现8个LED灯变化方向和速度的可调。关键词:单片机独立式按键LED目录TOC\o"1-3"\h\u15004第一章绪论1206841.设计背景168221.1设计目的1170321.2可行性分析及相关现状1313641.3意义217369第二章系统设计3213592系统设计3255012.1整体设计3125902.2模块设计423902第三章系统实现7114173.1整体仿真电路图7195123.2各局部模块原理7274813.2.1单片机最小系统7251323.2.2外围电路822142第四章核心代码1111989第五章调试141758第六章总结与致谢1563476.1总结1575176.2致谢151864第七章附录16119227.附录16260547.1源代码16绪论设计背景1.1设计目的通过本次课题设计,应用《单片机原理及应用》等所学相关知识及查阅资料完成简易LED流水灯系统设计,以到达理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。1.2可行性分析及相关现状随着人们生活水平的提高,基于单片机的LED流水灯的应用越来越广泛,其中独立式键盘的扩展电路,该模块主要应用于仪器仪表、工业控制器、条形显示器、控制面板等实时性要求不太高的设备。所以利用软件编程尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,减小因元器件精度不够引起的误差,还可以改良和提高如选用更精密的元器件等,在此次设计中我们将用到集成电路。集成电路是信息产业和高新技术的核心,是推动国民经济和社会信息化的关键技术。集成电路的产业规模和技术水平已成为国家综合国力的一个重要标志。我国集成电路产业已经经过30多年的开展现已形成了近百家的产业规模,其中具备一定设计规模的单位有20多家,其中北京华大、大唐、深圳华威和无锡矽科四家设计公司的销售额超过了1亿元。多家外国著名公司也纷纷在中国建立起集成电路设计公司。中国开展集成电路的主要目标为:到达大规模生产150mm和0.8微米的技术水平;200mm和0.5微米的制造技术的产业化;提高集成电路的设计能力以满足市场需求;跟踪0.3-0.4微米和先进封装技术的研发;开发200mm的硅片制造技术并在国内开始生产等。未来10年是我国微电子产业开展的关键时期。重点要推进超大规模集成电路和新技术的产业化。综观中国集成电路的设计概况,可以看到从20世纪80年代末开始,经过90年代初的创业期,现正进入它的开展期,21世纪将是中国设计业的成熟期。1.3意义今天,当我们进入21世纪的时候,自动化科学技术不仅面临着挑战、也遇到了前所未有的开展机遇,而与此同时,在世界范围内掀起了高等科学工程教育的改革浪潮。这两方面的因素必将深刻地影响大学自动化专业的开展。本次课程设计就是为了加强学生动手能力,加强学生对电子电路技术的掌握,了解控制工程行业对当今社会的影响。同时培养学生实践能力,并通过实践来不断的发现问题和解决问题的途径和方法,从而提高实践能力。系统设计2系统设计2.1整体设计本方案主要有硬件局部和程序局部构成。硬件局部主要由单片机最小系统和输入输出设备构成。首先搭建单片机最小系统,包括电源电路,手动复位电路,时钟电路。时钟电路才用内部时钟方式,手动复位电路采用按键电平复位方式。再根据要求在P2口串接8个发光二极管作为输出设备,分别通过限流电阻接电源,在P3口串接2个独立按键,作为输入设备。通过独立按键控制LED灯的闪烁和移动及速率变化。同时在P1口连接一个数码管显示电路,用于自动计时,实现自动改变流水灯的样式。程序局部设定T0为定时工作方式,T0每隔一定的时间扫描独立按键,当检测到某个键按下时,在主函数中执行相应的程序。程序框图如图1所示:开始开始设置定时器工作方式开中断启动定时器判断count1的值,强制转换灯的闪烁样式判断count2的值确定速率数码管计时10s之后,自动改变样式图12.2模块设计各局部模块图如下:单片机时钟电路及自动复位电路:外围输入电路:外围输出二极管显示电路:外围输出数码管显示电路:系统实现3.1整体仿真电路图如图2所示:图23.2各局部模块原理各模块原理介绍如下:3.2.1单片机最小系统首先搭建单片机最小系统,包括电源电路,手动复位电路,时钟电路。时钟电路才用内部时钟方式,手动复位电路采用按键电平复位方式。时钟电路用于产生AT89C51单片机工作时所必需的时钟信号。AT89C51单片机的内部电路在时钟信号的控制下,严格地按时序执行指令进行工作。复位是单片机的初始化操作,除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态,通过复位按键可使单片机重新启动。如图3所示:图33.2.2外围电路外围电路主要有输入设备和输出设备。输入设备主要由2个独立按键构成,如图4所示。输出设备由8个二极管构成,如图5所示,及七段数码管显示电路,如图6所示。其中s1键控制8个二极管的把戏显示,s2控制8个二极管点亮的速率。数码管用于计时10s,10s之后自动转换二极管显示样式,如果10s之内有s1按键按下,那么强制执行s1按键的内容。其中二极管的保护电阻的取值范围为220-880欧姆之间。图4图5s1键按一下,二极管从上往下单向点亮,哪个送入的是0,就点亮哪个灯,然后依次使0右移,实现依次点亮;按两下,二极管双向移动点亮;按三下,二极管4个交替闪烁;按四下,二极管8个交替闪烁;按五下,8个二极管依次点亮,依次熄灭;从而实现二极管的把戏显示;s2键按下,通过延时程序,可以改变二极管点亮的速率。图6数码管显示电路,通过往p1.0~p1.6写入0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90会显示数字0~9,自动计时10s;如果10s之内没有按键按下,那么10s之后,二极管自动改变显示样式,如果10s之内有按键按下,那么强制执行按键内容。第四章核心代码本设计主要的模块就是输出设备中的8个二极管及七段数码管显示电路,分别如上图的5、6所示。其中控制8个二极管把戏点亮的程序如下,重点以把戏1为说明:if(count1==1)//把戏1:灯单向向下移模块子程序{if(count2==1) {rate=rate1;}//如果s2键按一下,执行速率1if(count2==2) {rate=rate2;}//如果s2键按两下,执行速率2P2=0xfe;//给p2端口送入初值,这时D1点亮 delay(rate);temp=P2;for(i=0;i<8;i++)//通过延时及循环,依次点亮D2~D8 {if(count1==1){temp=_crol_(temp,1); P2=temp; if(count2==1)//并随时判断是否有s2键按下 {rate=rate1;}if(count2==2) {rate=rate2;} delay(rate); if(i==7)i=0;} }}七段数码管显示电路的程序如下:unsignedcharcodetable2[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//定义数码管0-9数字显示的表voiddisplay(unsignedcharj){P1=table2[j/10];//通过片选使两位数码管分别显示数字,但是延时时间小,可以实现两位数码管同时显示S3=1;delay(10);S3=0; P1=table2[j%10];S4=1;delay(10);S4=0;}中断效劳程序如下:voidtimer0()interrupt1{TH0=(65536-50000)/256;//T0重新装初值TL0=(65536-50000)%256;count++;display(table2index);if(table2index==0&&count==1)//如果数码管显示数字0时改变流水灯的样式count1++;if(count1==6)count1=1;//如果五个把戏显示完了之后,再按下按键S1或数码管计数到10时,再重新从把戏1显示if(count==20)//累加计数器的次数,如果到20次的话数码管数字通过查表自动加1显示{count=0;table2index=table2index+1;if(table2index==11)table2index=0;}if(S1==0)//检测是否是S1按下{delay(5);//软件延时消抖 if(S1==0)//再次检测S1是否确实按下 {table2index=0;count1++;//如果s1确实按下,那么执行s1内容 while(!S1);//如果s1没有按下,继续执行原来的把戏显示if(count1==6)count1=1;}}if(S2==0)//检测是否是S2按下{delay(5);//软件延时消抖if(S2==0)//再次检测S2是否确实按下{count2++; while(!S2);//如果s2没有按下,那么继续执行原来的速率if(count2==3)count2=1;}}}第五章调试仿真的过程中出现的主要问题是,按s2键二极管点亮速率不会改变,本来只要写入延时程序,就应该会改变速率,但是仿真之后,速率并不会改变。后来经过各方面的查资料及研究后才知道,必须在调用延时程序前判断s2键是否被按下,并且按下的次数。否那么的话,就算s2键被按下,也只是执行原本写入的速率,并不会根据s2键的按下改变速率。第六章总结与致谢6.1总结经过一段时间的努力,我们小组顺利的完成了这次单片机课程设计。这是一个磨练意志的过程。从课题的选择开始,硬件和软件系统的设计、到最后的设计成功,这其中经历了很多困难。但是更重要的是在这个过程中我得到了很大的锻炼。通过AT89C51单片机等一些器件的设计让我学习和掌握了单片机技术的根底知识和技术要点,也使以前学的很多知识都得到了运用。通过本次课程设计,我不仅学到了关于单片机技术方面的许多专业知识,同时也让我感觉到很多方面的知识的重要性。其实如何有效和快速的找到资料也是课程设计给我的启发。与他人交流思想是取得成功的关键,在交流中不仅强化了自己原有的知识体系,也扩展了自己的思维。课程设计是一个通过思考、发问、自己解惑并动手、提高的过程。我会在以后的学习中不断学习,积累经验,完善自己。通过这次课程设计使我懂得了理论与实际相结合是很重要的。只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。6.2致谢在这里我感谢那些曾给我授过课的每一位老师,是你们教会我专业知识。特别感谢教我们单片机原理及应用的某某老师,是他给我们详细讲解了单片机的结构、工作原理,以及各个引脚功能,还有程序的编写方法等。这些都是我们这次课程设计的根底,没有某老师的讲解,我们要想完成这次课程设计,是不可能的。我还要感谢我们小组的成员,通过大家的齐心协力,我们克服了重重阻力终于成功的完成了此次任务。非常感谢!第七章附录7.附录7.1源代码//目的:实现基于单片机的LED流水灯控制//语言:C;//变量:S1:P3.4口S2:P3.5口S3:P3.6口S4:P3.7口table1[]:流水灯样式控制table2[]:数码管-9数字//变量:temp:临时变量i:临时变量table2index:存储table2的下标//变量:count:累加计数器次数count1:累加单击第一个按键次数count2:累加单击第二个按键次数//变量:rate:速度变量rate1:速度变量rate2:速度变量#include<reg51.h>#include<intrins.h>sbitS1=P3^4;sbitS2=P3^5;sbitS3=P3^6;sbitS4=P3^7;unsignedcharcodetable1[9]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//流水灯样式控制unsignedcharcodetable2[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管-9数字unsignedchartemp,i,table2index=0;unsignedcharcount1=0,count2=0,count=0;unsignedcharrate=100,rate1=100,rate2=500;//*********************************************************************************//Begin延迟voiddelay(unsignedcharz){unsignedintx,y;for(x=z;x>0;x--)for(y=100;y>0;y--);}//End延迟//*********************************************************************************//Begin数码管数字显示voiddisplay(unsignedcharj){P1=table2[j/10];S3=1;delay(10);S3=0;P1=table2[j%10];S4=1;delay(10);S4=0;}//End数码管数字显示//*********************************************************************************voidmain(){P1=0xff;TMOD=0x01;//设置定时器T0为工作方式TH0=(65536-50000)/256;//定时器赋初值TL0=(65536-50000)%256;EA=1;//开总中断ET0=1;//开启定时器T0中断TR0=1;//启动定时器T0while(1){//***************************************************************************************//Begin流水灯样式控制//Begin把戏if(count1==1)//把戏:灯单向向下移模块子程序{if(count2==1) { rate=rate1; }if(count2==2) { rate=rate2; }P2=0xfe; delay(rate);temp=P2;for(i=0;i<8;i++) {if(count1==1){ temp=_crol_(temp,1); P2=temp;if(count2==1) { rate=rate1; }if(count2==2) { rate=rate2; } delay(rate);if(i==7)i=0; } }}//End把戏//*************************************************************************************//Begin把戏if(count1==2)//把戏:灯双向移模块子程序{P2=0x7f;if(count2==1) { rate=rate1; }if(count2==2) { rate=rate2; }delay(rate);temp=P2;for(i=0;i<7;i++){if(count1==2){ temp=_cror_(temp,1); P2=temp;if(count2==1) { rate=rate1; }if(count2==2) { rate=rate2; } delay(rate);}}for(i=0;i<7;i++) {if(count1==2) { temp=_crol_(temp,1); P2=temp;if(count2==1) rate=rate1;if(count2==2) rate=rate2; delay(rate); } }}//End把戏//*************************************************************************************//Begin把戏if(count1==3)//把戏:个交替闪烁模块子程序 { P2=0xf0;if(count2==1) rate=rate1;if(count2==2) rate=rate2; delay(rate); P2=0x0f;if(count2==1) rate=rate1;if(count2==2) rate=rate2; delay(rate); }if(count1==4)//把戏:八个灯交替闪烁模块子程序{P2=0xff;if(count2==1) rate=rate1;if(count2==2) rate=rate2;delay(rate);if(count1==4) { P2=~P2;if(count2==1) rate=rate1;if(count2==2) rate=rate2; delay(rate);}}if(count1==5)//把戏:八个灯依次全亮,依次灭模块子程序{for(i=0;i<9;i++)//8个灯依次从上往下全亮 {if(count1==5) { P2=table1[i];if(count2==1) rate=rate1;if(count2==2) rate=rate2; delay(rate); } } for(i=8;i>0;i--)////8个灯依次从下往上全灭 {if(count1==5) { P2=table1[i];if(count2==1)

温馨提示

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

评论

0/150

提交评论