单片机课程设计--彩灯控制器的设计761.pdf
单片机课程设计-彩灯控制器的设计 单片机课程设计报告 题 目:彩灯控制器的设计 专 业:电气工程及其自动化 班 级:电气 081 学 号:3080421034 学生姓名:廖诗宇 指导老师:王水鱼 2010 年秋季学期 起止时间:2011 年 1 月 10 日至 2011 年 1 月 14 日 平时(10%)任务完成(30%)答辩(30%)课设报告(30%)总评成绩 彩灯控制器设计 一 系统功能及要求分析 1)用 8 盏 LED 灯实现至四种以上的彩灯灯光效果。2)通过输入按钮实现彩灯灯光效果的切换。3)通过输入按钮实现暂停彩灯效果。在暂停期间小灯全亮。4)使用定时器实现 通过 89C51 芯片控制 LED。使其显示出四种彩灯效果:自动先从上到下再从下到上。自动分为从上到下和从上到下。闪烁,先亮一.三.五.七,再亮二.四.六.八。交替亮.,暂停时,小灯全亮。二 方案设计及其说明 以 AT-89C51 单片机作为主要控制器,与按键.显示器等硬件相结合.利用软件实现对LED 彩灯进行控制.该系统特点有极小,硬件少,电路结构简单及容易操作等优点。我们在实验中采用了一种基于 AT-89C51单片机的彩灯控制方案。本方案以 AT-89C51单片机作为控制核心,与显示.驱动等模块组 成主要控制模块,在主控模块上没有五个按键和 8 位 LED 显示器,根据用户需要可以编写若干种亮灯模式。利用其内部定时器 TD 实现一个基本时间的定时中断,根据各种亮灯时间的不同需要,在不同的时刻输出灯亮或者灯灭的控制信号,然后驱动各种颜色的灯亮或者灯灭,整个系统龚做由软件控制运行,根据需要,用户可以在 LED 彩灯工作时通过主控模块上的按键来设定亮灯的时间和亮灯闪动的频率。同时通过按键,可以实现工作模式切换的功能。三 原理线路设计 1.)原理线路(见打印图)2)工作原理说明 通电后,接通开关 1,系统经过初始化,会直接自动进入自动模式,即 LED 彩灯会自动顺序亮灯,而在自动模式下,用户根据自己需要选择其他手动模式,并且可以改变每种模式下的时间和频率的参数,本实验设定的默认延迟 200MS,当开关 2 接通后会进入手动模式,手动模式下,有两种工作模式,当开关 3 断开 断开时,LED 灯会按照从上往下的顺序亮灯,最下方的灯亮后又会回到最上方的灯亮,当开关 3 接通时,LED 灯则会按照从下到上的顺序亮灯。当开关 4 接通时,系统会进入暂停状态,此时所有的灯都会亮.断开开关 4,系统又会回到暂停前的状态继续亮灯。当开关 5 闭合时。系统会竟如闪烁状态,即 1,3,5,7 和 2,4,6,8 轮流点亮。因此在 LED 彩灯上电工作后,用户可以根据实际情况来通过开关选择适合的模式来完成功能。主要控制模块设计器件有 89C51-LED 显示器,5 个开关,通过软件程序设计,使单片机和 P0 口作为 LED 驱动信号输出口及移位时钟 CLOCK 信号,P1 口作为按键输入口。3)特点分析 在系统开机后默认进入自动工作状态,LED 彩灯控制器按照程序设定好的亮灯模式进行,从模块一顺序往下走,一直到最后一个模块为一个亮灯周期,然后再回到模块一循环工作,整个工作周期看作一个大周期,其中每一个花样工作模式时间为 200MS,对于没一个工作模式编写一个独立工作的子程序,若灯亮则对应 显示位“1“,熄灯则不显示,对系统工作状态起到了很好的监控作业。LED 彩灯系统包括 2 大部分,即 LED 彩灯控制器(89C51 主控模块),主要是用来控制按键功能,LED 彩灯管(管内 LED 板膜块),主要是受控制的模块。四 程序设计 1)程序结构及流程图(见打印页)结构:1.当开关 1 接通时,P1.4 由高电平进入低电平时,主程序就跳到自动的子函数执行,这样就实现了闪亮。2.当开关 2 接通时,P1.5 由高电平进入低电平时,主程序自动跳到手动自上到下的子函数。3.当开关 3 接通时,P1.6 由高电平进入低电平时,主程序就跳到手动由下到上的子函数上。4.当开关 4 接通时,P1.7 由高电平进入低电平时,主程序就跳到暂停状态,此时灯全亮。5.当按键 5 接通时,P1.3 由高电平进入低电平时,主程序就跳到闪烁的状态。2)程序算法分析 系统中的软件可以分为主程序和中断服务子程序,整个系统软件由主程序,各个模块子程序,终端服务子程序,除了中断会定时进行以外,程序其他的时间都在进行查询和 LED显示延时,在每次定时终断服务子程序里,需要对各个时间寄存器和模式进行加减。为主程序查询作准备,同时查询是否已到时间,并进行相应的子程序处理。主程序除了调用各种模式的子程序和延时子程序外。还一直保持查询是否有功能键按下。3)关键程序段说明 ORG 00H START:MOV A,#0FFH CLR C MOV R1,#8 SB1:MOV P0,#OOFH JB P1.4,SB1 JNB P1.3,FLASH SB2:JB P1.5,AUTO JB P1.6.LEFT JMP RIGHT 该模块是主控模块。主要用来调用模块的处理数据,根据各功能模块对应的程序决定。5)源程序(见附页)五.调试结果及分析 首先通过仿真软件来调试让系统工作最稳定的各个硬件参数,然后在 KEIL 下进行编译导入PROTECUS 进行调试。1 实验刚开始程序试时,有一个错误,显示错误是 RIGHT 没有被定义,检查程序之后发现子程序中的 RIGHT 上面的重复导致程序出错,再将子程序中的RIGHT改为RIGHT2之后重新导入程序,运行,程序无错误。2.在运行程序之后,发现彩灯无法进行模式之间的转换在中断中执行彩灯模式的死循环模式,再后来中断响应台哦出循环执行下一个模式,这样不断的通过中断进入死循环,不停的中断套中断,观察程序发现一个中断不能不停的嵌套一个中断,员的讨论及对老师的咨询时候我们对程序进行了修改,再次运行程序时,可以实现各种模式之间的转换,问题得到解决。4 在程序基本完成之后我们找老师初步验收,老师发现我们的功能太简单,不够实用,于是我们加入了闪烁功能,可以打到更好的视觉效果,当进入闪烁模式的时候,一.三.五.七和二.四.六.八灯交替以达到闪烁功能。程序添加如下 MOV P0,#55H;MOV PO,#AAH 六运行结果及分析 结果:当开关一即总开关闭合时,系统进入默认的自动模式,彩灯按照从上往下的顺序点亮,当闭合开关 2 则会进入手动模式,进入上到下点亮的循环模式,此时如果再闭合开关 3,则是进入手动模式的从下往上点亮的循环模式,再闭合开关 4,则会进入暂停模式,此刻所有的灯全亮,当再断开开关 4,则退出暂停模式,回到暂停之前的模式继续工作,最后检测开关 5 时候闭合,当开关 5 闭合的时候。会进入闪烁模式,一.三.五.七和二.四.六.八灯交替点亮。结论:本实验是根据 AT89C51 单片机的彩灯控制,实现对 LED 彩灯的控制,实现了多种彩灯灯光效果,即自动和手动模式下的 LED 彩灯从下到上和从上到下的流动,还有小灯的闪烁和暂停时的全亮状态,可以通过按键实现彩灯工作模式的转换,也可以通过按键进入暂停模式,每种状态的工作时间由定时器决定,可以确定每种工作模式的工作时间,实验结果与实验要求基本相符合还有一定的创新功能,所以实验基本成功。七设计体会 课程设计刚开始,拿着选定的题目不知如何入手。毕竟课程设计不同于实验课,电路图都要自己设计。静下心来,仔细分析题目,再加上指导老师的说明与提示,心中才有了谱。将整个系统根据不同的功能化分成模块,再分别进行设计,逐个攻破,最后再将其整合即可。本次课程实习我虽然用了一个星期的时间就全部做完,但整个过程我都认真的完成了,而且从中收获很多。可以总结为以下的几点:单片机作为我们的主要专业课之一,虽然在大三开学初我对这门课并没有什么兴趣,觉得那些程序枯燥乏味,但在这次课程设计后我发现自己在一点一滴的努力中对单片机的兴趣也在逐渐增加。这次单片机课程设计我们历时一个星期,我们班里算是倒数几组完成的吧,但经过这个星期的实践和体验下来,我们又怎么会去在乎那个先后问题呢,因为对我来说学到的不仅是那些知识,更多的是团队和合作。现在想来,也许学校安排的课程设计有着它更深层的意义吧,它不仅仅让我们综合那些理论知识来运用到设计和创新,还让我们知道了一个团队凝聚在一起时所能发挥出的巨大潜能!一星期前我们 4 人还在为到底选哪个思路产生分歧,最后在老师的耐心分析和指导下完成了思路的选定,但是随之而来的问题比我们想想的要困难的多。作为一个团队,分工就显得尤为重要,在我们的讨论下我得到了连接硬件电路的任务,不过没想到这项看起来不需要多少技术的工作却是非常需要耐心和精力,最后在我们组员的帮助下也算是很好的完成了这项任务,在其他组员纷纷完成了初步的工作后,我们自信满满的来到了实验室准备调试,但第一次就给了我们致命的打击,设计的功能不能全部实现出来,彩灯无法完成模式之间的转换,我们就拿着程序反复分析和修改,然后我们就针对这部分程序进行了深入思索,并在老师和其他同学的帮助下完成了程序的修改.此时我忽然发现我们几个在开始时的分歧已全然化解,留给我们的是互相信任和帮助!当然在这我们也要谢谢帮助过我们的人,其中要感谢老师的鼓励和耐心的指导,这给了我们很大的动力,最后我还要谢的就是一直在我身边的四个组员,只有大家的共同努力和互相信任我们才能完成这次的课程设计!在一星期后的今天我已明白课程设计对我来说的意义,它不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力,更重要的是同学间的团结,虽然我们这次花去的时间比别人多,但我相信我们得 到的也会更多!最后这次课程设计,使我受益颇多。了解到课程实习设计是开端,连接是关键,测试是必须。既巩固了课堂上学到的理论知识,又掌握了常用集成电路芯片的使用。在此基础上学习了数字系统设计的基本思想和方法,学会了科学地分析实际问题,通过查资料、分析资料及请教老师和同学等多种途径,独立解决问题。同时,也培养了我认真严谨的态度。八参考文献 1.MCS51 原理及其应用 2.单片机原理及应用实验指导 九.打印图 1.流程图 (1)主程序:开始初始化八个LED检测开关P1.4检测开关P1.6检测开关P1.5检测开关P1.3向左循环点亮向右循环点亮自动循环点亮=11=11=1闪烁点亮=111(2)闪烁子程序:开始将55H输出给P0口调用延时函数将AAH输出给P0口调用延时函数检测开关P1.3状态返回=0=1(3)由上到下循环闪烁子程序:开始AFFH清零CR1=8A内容代进位位向左环移一次A输出给P0口调用延时判断P1.7开关调用暂停子程序 R1-1判断R1返回1=10=0R2=7(4)由下到上循环闪烁子程序:开始AFFH清零CR1=8A内容代进位位向右环移一次A输出给P0口调用延时判断P1.7开关调用暂停子程序 R1-1判断R1返回10=0R2=7=1(5)定时中断延时子程序:开始T0工作在方式1启动T0R0=10装入初值溢出标志=1TF0=0R0-1=0停止计时返回否是否(6)暂停子程序:开始00H 输出给P0 接口检测开关P1.7返回 硬件连接图