




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计说明书 课程名称: 单片机原理及应用 设计题目: 基于单片机的LED流水灯控制 院 系: 信息技术学院 专 业: 计算机科学与技术 2013年1月10日 基于单片机的LED流水灯控制摘 要 基于单片机的LED流水灯的应用十分广泛,由单片机作为的核心控制器,通过按键实现控制功能和数据输入是非常普遍的。通常在所需按键数量不多时,系统常采用独立式按键。这种按键的电路配置灵活,软件结构简单。由于实际应用中,不同系统对按键的要求不同,因此,对按键程序的设计要考虑全面,以便更好地完成按键所设定的功能,简述了该系统中一些重要芯片的基本工作原理,着重论述了硬件线路各个模块的设计思想。进而熟练掌握相关专
2、业基础知识的综合应用,提高学生的实际动手和设计能力。 本系统是基于AT89C51系列单片机为核心的LED流水灯设计,实现8个LED灯变化方向和速度的可调。 关键词:单片机 独立式按键 LED 目 录第一章 绪论11. 设计背景11.1设计目的11.2可行性分析及相关现状11.3意义2第二章 系统设计32系统设计32.1整体设计32.2模块设计4第三章 系统实现73.1整体仿真电路图73.2各部分模块原理73.2.1单片机最小系统73.2.2外围电路8第四章 核心代码11第五章 调试14第六章 总结与致谢156.1总结156.2致谢15第七章 附录167.附录167.1源代码16第1章 绪论1.
3、 设计背景1.1设计目的 通过本次课题设计,应用单片机原理及应用等所学相关知识及查阅资料完成简易LED流水灯系统设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。1.2可行性分析及相关现状 随着人们生活水平的提高,基于单片机的LED流水灯的应用越来越广泛,其中独立式键盘的扩展电路,该模块主要应用于仪器仪表、工业控制器、条形显示器、控制面板等实时性要求不太高的设备。所以利用软件编程尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,减小因元器件精度不够引起的误差,还可以改进和提高如选用更精密的元器件等,在此次设计中我们将用到集成电路。集成电路是信息产业和高新技术的
4、核心,是推动国民经济和社会信息化的关键技术。集成电路的产业规模和技术水平已成为国家综合国力的一个重要标志。 我国集成电路产业已经经过30多年的发展现已形成了近百家的产业规模,其中具备一定设计规模的单位有20多家,其中北京华大、大唐、深圳华威和无锡矽科四家设计公司的销售额超过了1亿元。多家外国著名公司也纷纷在中国建立起集成电路设计公司。中国发展集成电路的主要目标为:达到大规模生产150mm和0.8微米的技术水平;200mm和0.5微米的制造技术的产业化;提高集成电路的设计能力以满足市场需求;跟踪0.30.4微米和先进封装技术的研发;开发200mm的硅片制造技术并在国内开始生产等。未来10年是我国
5、微电子产业发展的关键时期。重点要推进超大规模集成电路和新技术的产业化。综观中国集成电路的设计概况,可以看到从20世纪80年代末开始,经过90年代初的创业期,现正进入它的发展期,21世纪将是中国设计业的成熟期。1.3意义 今天,当我们进入21世纪的时候,自动化科学技术不仅面临着挑战、也遇到了前所未有的发展机遇,而与此同时,在世界范围内掀起了高等科学工程教育的改革浪潮。这两方面的因素必将深刻地影响大学自动化专业的发展。 本次课程设计就是为了加强学生动手能力,加强学生对电子电路技术的掌握,了解控制工程行业对当今社会的影响。同时培养学生实践能力,并通过实践来不断的发现问题和解决问题的途径和方法,从而提
6、高实践能力。第2章 系统设计2系统设计2.1整体设计本方案主要有硬件部分和程序部分构成。硬件部分主要由单片机最小系统和输入输出设备构成。 首先搭建单片机最小系统,包括电源电路,手动复位电路,时钟电路。时钟电路才用内部时钟方式,手动复位电路采用按键电平复位方式。再根据要求在P2口串接8个发光二极管作为输出设备,分别通过限流电阻接电源,在P3口串接2个独立按键,作为输入设备。通过独立按键控制LED灯的闪烁和移动及速率变化。同时在P1口连接一个数码管显示电路,用于自动计时,实现自动改变流水灯的样式。 程序部分设定T0为定时工作方式,T0每隔一定的时间扫描独立按键,当检测到某个键按下时,在主函数中执行
7、相应的程序。程序框图如图1所示:开始设置定时器工作方式开中断启动定时器判断count1的值,强制转换灯的闪烁样式判断count2的值确定速率数码管计时10s之后,自动改变样式图12.2模块设计各部分模块图如下:单片机时钟电路及自动复位电路:外围输入电路:外围输出二极管显示电路:外围输出数码管显示电路:第3章 系统实现3.1整体仿真电路图如图2所示:图23.2各部分模块原理各模块原理介绍如下:3.2.1单片机最小系统首先搭建单片机最小系统,包括电源电路,手动复位电路,时钟电路。时钟电路才用内部时钟方式,手动复位电路采用按键电平复位方式。时钟电路用于产生AT89C51单片机工作时所必需的时钟信号。
8、AT89C51单片机的内部电路在时钟信号的控制下,严格地按时序执行指令进行工作。复位是单片机的初始化操作,除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态,通过复位按键可使单片机重新启动。如图3所示:图33.2.2外围电路外围电路主要有输入设备和输出设备。输入设备主要由2个独立按键构成,如图4所示。输出设备由8个二极管构成,如图5所示,及七段数码管显示电路,如图6所示。其中s1键控制8个二极管的花样显示,s2控制8个二极管点亮的速率。数码管用于计时10s,10s之后自动转换二极管显示样式,如果10s之内有s1按键按下,则强制执行s1按键的内容。其中二极管的保护电阻的
9、取值范围为220-880欧姆之间。 图4 图5s1键按一下,二极管从上往下单向点亮,哪个送入的是0,就点亮哪个灯,然后依次使0右移,实现依次点亮;按两下,二极管双向移动点亮;按三下,二极管4个交替闪烁;按四下,二极管8个交替闪烁;按五下,8个二极管依次点亮,依次熄灭;从而实现二极管的花样显示;s2键按下,通过延时程序,可以改变二极管点亮的速率。 图6数码管显示电路,通过往p1.0p1.6写入0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90会显示数字09,自动计时10s;如果10s之内没有按键按下,则10s之后,二极管自动改变显
10、示样式,如果10s之内有按键按下,则强制执行按键内容。第四章 核心代码本设计主要的模块就是输出设备中的8个二极管及七段数码管显示电路,分别如上图的5、6所示。其中控制8个二极管花样点亮的程序如下,重点以花样1为说明:if(count1=1) /花样1: 灯单向向下移模块子程序 if(count2=1) rate=rate1; /如果s2键按一下,执行速率1 if(count2=2) rate=rate2; /如果s2键按两下,执行速率2 P2=0xfe; /给p2端口送入初值,这时D1点亮delay(rate); temp=P2; for(i=0;i<8;i+) /通过延时及循环,依次点
11、亮D2D8 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; 七段数码管显示电路的程序如下:unsigned char code table210=0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90; /定义数码管0-9数字显示的表 void display(unsigned char j)P1= table2j/
12、10; /通过片选使两位数码管分别显示数字,但是延时时间小,可以实现两位数码管同时显示 S3 = 1; delay(10); S3 = 0;P1= table2j%10; S4 = 1; delay(10); S4 = 0; 中断服务程序如下:void timer0() interrupt 1 TH0=(65536-50000)/256; /T0重新装初值 TL0=(65536-50000)%256; count+; display(table2index); if(table2index=0 && count=1) /如果数码管显示数字0时改变流水灯的样式 count1+;
13、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); /如果
14、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键被按下
15、,也只是执行原本写入的速率,并不会根据s2键的按下改变速率。第六章 总结与致谢6.1总结 经过一段时间的努力,我们小组顺利的完成了这次单片机课程设计。这是一个磨练意志的过程。从课题的选择开始,硬件和软件系统的设计、到最后的设计成功,这其中经历了很多困难。 但是更重要的是在这个过程中我得到了很大的锻炼。 通过AT89C51单片机等一些器件的设计让我学习和掌握了单片机技术的基础知识和技术要点,也使以前学的很多知识都得到了运用。通过本次课程设计,我不仅学到了关于单片机技术方面的许多专业知识, 同时也让我感觉到很多方面的知识的重要性。 其实如何有效和快速的找到资料也是课程设计给我的启发。 与他人交流思
16、想是取得成功的关键,在交流中不仅强化了自己原有的知识体系,也扩展了自己的思维。课程设计是一个通过思考、 发问、自己解惑并动手、提高的过程。我会在以后的学习中不断学习,积累经验, 完善自己。 通过这次课程设计使我懂得了理论与实际相结合是很重要的。只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。6.2致谢在这里我感谢那些曾给我授过课的每一位老师,是你们教会我专业知识。 特别感谢教我们单片机原理及应用的某某老师,是他给我们详细讲解了单片机的结构、工作原理,以及各个引脚功能,还有程序的编写方法等。这些都是我们这次课程设计的基
17、础,没有某老师的讲解,我们要想完成这次课程设计,是不可能的。我还要感谢我们小组的成员,通过大家的齐心协力,我们克服了重重阻力终于成功的完成了此次任务。非常感谢!第七章 附录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:速
18、度变量rate1:速度变量rate2:速度变量#include<reg51.h>#include<intrins.h>sbit S1=P34; sbit S2=P35;sbit S3=P36;sbit S4=P37;unsigned char code table19=0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00; /流水灯样式控制unsigned char code table210=0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90; /数码管-9数字 un
19、signed char temp,i,table2index=0;unsigned char count1=0,count2=0,count=0; unsigned char rate=100 ,rate1=100,rate2=500; /*/Begin-延迟 void delay(unsigned char z) unsigned int x,y; for(x=z;x>0;x-) for(y=100;y>0;y-);/End-延迟/*/Begin-数码管数字显示void display(unsigned char j) P1= table2j/10; S3 = 1; delay(
20、10); S3 = 0; P1= table2j%10; S4 = 1; delay(10); S4 = 0; /End-数码管数字显示/*void main() P1=0xff; TMOD=0x01; /设置定时器T0为工作方式 TH0=(65536-50000)/256; /定时器赋初值 TL0=(65536-50000)%256; EA=1; /开总中断 ET0=1; /开启定时器T0中断 TR0=1; /启动定时器T0 while(1)/*/Begin-流水灯样式控制/Begin-花样 if(count1=1) /花样:灯单向向下移模块子程序 if(count2=1) rate=rat
21、e1; 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=rat
22、e2; 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(co
23、unt1=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个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电动汽车的商业化运营模式与分析试题及答案
- 家居市场2025年线上线下融合模式创新模式下的家居行业产业创新研究报告
- 电池生产厂家考题试题及答案
- 家具行业设计的企业社会责任与实践探讨试题及答案
- 职业防护测试题及答案
- 建筑施工安全管理信息化在施工现场安全教育与培训中的应用报告
- 西北农林科技大学《计算力学》2023-2024学年第二学期期末试卷
- 全球流媒体市场2025年竞争格局及内容创新模式深度报告
- 电脑采购面试题及答案
- 幼儿园音乐试题及答案
- 乡土中国的性别差异
- 2024年甘肃兰州事业单位招聘考试真题答案解析
- 2025年广东省广州市越秀区委政法委员会招聘辅助人员4人历年高频重点提升(共500题)附带答案详解
- MOOC 颈肩腰腿痛中医防治-暨南大学 中国大学慕课答案
- 学校体育学(第三版)ppt全套教学课件
- 住建部《建筑业10项新技术(2017版)》解读培训课件
- 基于深度学习的问题链讲座课件(44张PPT)
- 水文学习题和答案解析
- 西安交通大学赵进全模拟电子技术基础第8-9章
- 画法几何与阴影透视复习题(DOC)
- 单片机端口扩展的方法
评论
0/150
提交评论