单片机LED课程设计.docx
《单片机LED课程设计.docx》由会员分享,可在线阅读,更多相关《单片机LED课程设计.docx(21页珍藏版)》请在冰点文库上搜索。
单片机LED课程设计
摘要
家人和其他人带来美的享受。
本系统采用单片机AT89C51为中心器件来设计彩灯控制器,并用发光二极管作为被控制部件来显示。
系统实用性强、操作简单、扩展性强。
彩灯控制器在我门日常生活中有重要的运用,如广告牌的设计和节日彩灯的设计都能运用到它的原理。
关键词:
AT89C51;节日彩灯控制器;发光二极管
目录
摘要………………………………………………………..
1设计任务……………………………………………………1
1.1功能及技术指标要求…………………………………..1
1.2设计内容………………………………………………..1
1.3设计思路及关键技术…………………………………….1
2彩灯灯的设计程序框图…………………………………….2
3彩灯程序的主程序………………………………………….3
4系统硬件电路的设计……………………………………….12
4.1时钟源........................................12
4.2周期控制.....................................12
4.3方向控制电路…………………………………………….13
4.4执行电路…………………………………………………13
4.5电路仿真………………………………………14
5原理图………………………………………………….14
6检测与调试…………………………………………….15
6.1硬件调试……………………………………………15
6.2软件调试……………………………………………15
7总结与体会……………………………………………..16
8参考文献………………………………………………..16
9致谢……………………………………………………..16
1.设计任务
1.1功能及技术指标要求
设计节日彩灯的基本要求:
设计一个节日彩灯,要应用DVCC实验系统。
1.2、设计内容
按设计技术指标进行节日彩灯的硬件和软件设计。
1.3设计思路及关键技术
一个完整的节日彩灯相当于一个简单的单片机系统,该系统有彩灯设置电路、单片机、显示电路等构成。
单片机是集成的IC芯片,只需根据实际要求选型。
其他部分都需要根据应用要求和性能指标自行设计。
基于单片机的节日彩灯设计时要充分的认识以下几个问题:
1.3.1因为本实验是彩灯控制实验,所以要先了解所设计的彩灯变化规律,我们设计的为可以循环移动的彩灯控制电路,灯总数为16盏,一个红灯一个绿灯间隔的排在一起,其工作规律是先红灯1、5亮,其余灭,右移三次后全灭;4、8亮,其余灭,左移三次后全灭;4、5亮,其余灭,各向两边移三次后全灭;1、8亮,其余灭,各向中间移三次后全灭,灯移动间隔为1s,然后为全亮,1s后全灭。
然后换为绿灯1、5亮,其余灭,右移三次后全灭;4、8亮,其余灭,左移三次后全灭;4、5亮,其余灭,各向两边移三次后全灭;1、8亮,其余灭,各向中间移三次后全灭,灯移动间隔为1s,然后为全亮,1s后全灭,然后红绿灯全亮,1s后全灭,然后再红灯1、5亮….依次循环。
1.3.2双色灯是由8个红色发光二极管管芯和8个绿色发光二极管管芯封装在一起,红灯和绿灯各共用一个负端。
当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高点平时,绿灯亮,两端都加高点平时,红色和绿色灯全部亮。
2、节日彩灯的设计程序序构图
开始
红灯1、5亮,其余灭,右移三次后全灭
红灯4、8亮,其余灭,左移三次后全灭
红灯4、5亮,其余灭,各向两边移三次后全灭
红灯1、,8亮,其余灭,各向中间移三次后全灭
红灯全亮,1s后全灭
绿灯1、5亮,其余灭,右移三次后全灭
绿灯4、8亮,其余灭,左移三次后全灭
绿灯4、5亮,其余灭,各向两边移三次后全灭
绿灯1、,8亮,其余灭,各向中间移三次后全灭
绿灯全亮,1s后全灭
红绿灯全亮
灯移动间隔为1S
3.节日彩灯设计的主程序
程序如下:
LED一次为红灯LED1-LED8,一次为绿灯LED1-LED8
状态1:
红灯1、5亮,其余灭,右移三次后全灭
状态2:
红灯4、8亮,其余灭,左移三次后全灭
状态3:
红灯4、5亮,其余灭,各向两边移三次后全灭
状态4:
红灯1、,8亮,其余灭,各向中间移三次后全灭
状态5:
红灯全亮,1s后全灭
状态6:
绿灯1、5亮,其余灭,右移三次后全灭
状态7:
绿灯4、8亮,其余灭,左移三次后全灭
状态8:
绿灯4、5亮,其余灭,各向两边移三次后全灭
状态9:
绿灯1、,8亮,其余灭,各向中间移三次后全灭
状态10:
绿灯全亮,1s后全灭
状态11:
红绿灯全亮
设用P1.0作供电控制,P1.1--P1.8分别控制8只LED,“1”亮,“0”灭。
MOVP1,#0;置灯全暗
红色灯
JNBP1.0,$;P1.0=0时则等待通电
STA:
SETBP1.1;
STA:
SETBP1.5;点亮1和5号LED(开始状态1)
LCALLLLL1;延时1秒钟
CLRP1.1;
CLRP1.5;灭1和5号LED
SETBP1.2;
SETBP1.6;点亮2和6号LED
LCALLLLL1;延时1秒钟
CLRP1.2;
CLRP1.6;灭2和6号LED
SETBP1.3;
SETBP1.7;亮3和7号LED
LCALLLLL1;延时1秒钟
CLRP1.3;
CLRP1.7;灭3和7号LED
SETBP1.4;
SETBP1.8;点亮4和8号LED
LCALLLLL1;延时1秒钟
CLRP1.4;
CLRP1.8;灭4和8号LED
SETBP1.4;
SETBP1.8;再次点亮4和8号LED(开始状态2)
LCALLLLL1;延时1S
CLRP1.4;
CLRP1.8;灭4和8号LED
SETBP1.3;
SETBP1.7;点亮3和7号LED
LCALLLLL1;延时1S
CLRP1.3;
CLRP1.7;灭3和7号LED
SETBP1.2;
SETBP1.6;亮2和6号LED
LCALLLLL1;延时1S
CLRP1.2;
CLRP1.6;灭2和6号LED
STA:
SETBP1.1;
STA:
SETBP1.5;点亮1和5号LED
LCALLLLL1;延时1秒钟
CLRP1.1;
CLRP1.5;灭1和5号LED
SETBP1.4;
SETBP1.5;点亮4和5号LED(开始状态3)
LCALLLLL1;延时1S
CLRP1.4;
CLRP1.5;灭4和5号LED
SETBP1.3;
SETBP1.6;点亮3和6号LED
LCALLLLL1;延时1S
CLRP1.3;
CLRP1.6;灭3和6号LED
SETBP1.2;
SETBP1.7;亮2和7号LED
LCALLLLL1;延时1S
CLRP1.2;
CLRP1.7;灭2和7号LED
SETBP1.1;
SETBP1.8;点亮1和8号LED
LCALLLLL1;延时1S
CLRP1.1;
CLRP1.8;灭1和8号LED
SETBP1.1;
SETBP1.8;再次点亮1和8号LED(开始状态4)
LCALLLLL1;延时1S
CLRP1.1;
CLRP1.8;灭1和8号LED
SETBP1.2;
SETBP1.7;亮2和7号LED
LCALLLLL1;延时1S
CLRP1.2;
CLRP1.7;灭2和7号LED
SETBP1.3;
SETBP1.6;点亮3和6号LED
LCALLLLL1;延时1S
CLRP1.3;
CLRP1.6;灭3和6号LED
SETBP1.4;
SETBP1.5;点亮4和5号LED
LCALLLLL1;延时1S
CLRP1.4;
CLRP1.5;灭4和5号LED
SETBP1.1..1.8点亮所有红灯(开始状态5)
CLRP1.1..1.8灭所有灯
绿灯
STA:
SETBP1.1;
STA:
SETBP1.5;点亮1和5号LED(开始状态6)
LCALLLLL1;延时1秒钟
CLRP1.1;
CLRP1.5;灭1和5号LED
SETBP1.2;
SETBP1.6;点亮2和6号LED
LCALLLLL1;延时1秒钟
CLRP1.2;
CLRP1.6;灭2和6号LED
SETBP1.3;
SETBP1.7;亮3和7号LED
LCALLLLL1;延时1秒钟
CLRP1.3;
CLRP1.7;灭3和7号LED
SETBP1.4;
SETBP1.8;点亮4和8号LED
LCALLLLL1;延时1秒钟
CLRP1.4;
CLRP1.8;灭4和8号LED
SETBP1.4;
SETBP1.8;再次点亮4和8号LED(开始状态7)
LCALLLLL1;延时1S
CLRP1.4;
CLRP1.8;灭4和8号LED
SETBP1.3;
SETBP1.7;点亮3和7号LED
LCALLLLL1;延时1S
CLRP1.3;
CLRP1.7;灭3和7号LED
SETBP1.2;
SETBP1.6;亮2和6号LED
LCALLLLL1;延时1S
CLRP1.2;
CLRP1.6;灭2和6号LED
STA:
SETBP1.1;
STA:
SETBP1.5;点亮1和5号LED
LCALLLLL1;延时1秒钟
CLRP1.1;
CLRP1.5;灭1和5号LED
SETBP1.4;
SETBP1.5;点亮4和5号LED(开始状态8)
LCALLLLL1;延时1S
CLRP1.4;
CLRP1.5;灭4和5号LED
SETBP1.3;
SETBP1.6;点亮3和6号LED
LCALLLLL1;延时1S
CLRP1.3;
CLRP1.6;灭3和6号LED
SETBP1.2;
SETBP1.7;亮2和7号LED
LCALLLLL1;延时1S
CLRP1.2;
CLRP1.7;灭2和7号LED
SETBP1.1;
SETBP1.8;点亮1和8号LED
LCALLLLL1;延时1S
CLRP1.1;
CLRP1.8;灭1和8号LED
SETBP1.1;
SETBP1.8;再次点亮1和8号LED(开始状态9)
LCALLLLL1;延时1S
CLRP1.1;
CLRP1.8;灭1和8号LED
SETBP1.2;
SETBP1.7;亮2和7号LED
LCALLLLL1;延时1S
CLRP1.2;
CLRP1.7;灭2和7号LED
SETBP1.3;
SETBP1.6;点亮3和6号LED
LCALLLLL1;延时1S
CLRP1.3;
CLRP1.6;灭3和6号LED
SETBP1.4;
SETBP1.5;点亮4和5号LED
LCALLLLL1;延时1S
CLRP1.4;
CLRP1.5;灭4和5号LED
SETBP1.1..1.8点亮所有绿灯(开始状态10)
CLRP1.1..1.8灭所有绿灯
SETBP1.1..1.8点亮所有红灯、绿灯(开始状态11)
LCALLLLL1;延时1S
CLRP1.1..1.8灭所有红灯和绿灯
SJMPSTA;转入状态1
ORG00H
SJMPMAIN
ORG40H
MAIN:
MOVSP,#05FH
MOVP1,#0FFH;按键输入,从P1.0-P1.8分别代表状态1-8,低电平有效
MOVP0,#0FFH;LED输出,p1.1-p1.8分别是LED1-LED8高电平为LED点亮,低电平为LED息灭
LOOP:
LCALLDO
SJMPLOOP
DO:
JBP1.0,LP1
MOVB,P1
LCALLDO1
LP1:
JBP1.1,LP2
MOVB,P1
LCALLDO2
LP2:
JBP1.2,LP3
MOVB,P1
LCALLDO3
LP3:
JBP1.3,LP4
MOVB,P1
LCALLDO4
LP4:
MOVP0,#0FFH;无按键不等任何事
RET
DO1:
MOVP0,#0FFH;状态1
CLRP0.0
LCALLDELAY
LCALLDELAY
MOVP0,#0FFH
CLRP0.1
LCALLDELAY
LCALLDELAY
MOVP0,#0FFH
CLRP0.2
LCALLDELAY
LCALLDELAY
MOVP0,#0FFH
CLRP0.3
LCALLDELAY
LCALLDELAY
MOVP0,#0FFH
CLRP0.4
LCALLDELAY
LCALLDELAY
MOVP0,#0FFH
CLRP0.5
LCALLDELAY
LCALLDELAY
RET
DO2:
MOVP0,#0FFH;状态2
CLRP0.0
LCALLDELAY
MOVP0,#0FFH
CLRP0.2
LCALLDELAY
MOVP0,#0FFH
CLRP0.4
LCALLDELAY
RET
DO3:
MOVP0,#0FFH;状态3
CLRP0.1
LCALLDELAY
MOVP0,#0FFH
CLRP0.3
LCALLDELAY
MOVP0,#0FFH
CLRP0.5
LCALLDELAY
RET
DO4:
LCALLDO1;状态4
LCALLDO2
LCALLDO3
RET
DELAY:
MOVR5,#48;延时1S
L1:
MOVR6,#0FAH
L2:
MOVR7,#0FAH
L3:
MOVA,P1
CJNEA,B,L4
DJNZR7,L3
DJNZR6,L2
DJNZR5,L1
L4:
RET
END
4.系统硬件电路的设计
十六盏灯可分为二组、每组只有八个红灯和八个绿灯,红灯和绿灯的移动方向各有二种,即左移或右移、组与组之间只有一种亮灯模式为全亮。
单元电路设计
4.1时钟源
时钟源主要是由一个32kHz晶体振荡器产生,再由一个分频器4060进行分频即
可得到多种不同频率的时钟信号。
4.2周期控制
这里选用计数器74LS163和非门74LS04对所输入的时钟信号进行5分频,用于控制每一组的八盏灯依次点亮后再熄灭的一轮循环的周期
4.3方向控制电路
图所示的方向控制电路,单独对于每一组来说,移动的方向只有两种,即左移或右移。
因此,这里用一个D触发器74LS74将周期控制信号再一次分频,这样在每一个周期控制信号的周期里,方向控制输出不是0就是1,正好用于表示左移和右移。
4.4执行电路
这个模块比较简单,用发光二极管LED将移位寄存器的输出信号显示出来,可以感受到漂亮的彩灯流动的感觉。
这里需要注意的就是要给每一盏LED串一个限流电阻,因为移位寄存器的输出信号为TTL电平,这个电平超过了LED的正常的正向偏置的电压。
由于这里设计的是数字系统,用的都是TTL型的数字集成电路芯片,所以给这些器件供电的电压为单电源+5V即可,这个电源可以由实验室里的稳压源提供。
4.5电路仿真
将各单元电路原理图综合后输入到软件中,红灯和绿灯的闪亮情况一致,电路综合后并联设置一个开关,对其进行时序仿真和功能仿真。
时序仿真可反映每一路信号与时钟信号之间的关系即不同路信号之间的关系。
功能仿真可看出执行模块控制彩灯循环点亮的效果。
5.原理图
时钟源周期控制
执行
电源
时钟源:
周期性的方波信号,用于控制灯移动的快慢。
周期控制:
用于控制每组灯一轮移动的时间。
方向控制:
用于控制灯移动的方向
输出驱动:
接收上述各模块的控制信号,将其变成需要执行的输出信号。
执行:
将输出驱动的输出信号表现成循环点亮的形式。
电源:
给整个系统供电。
6.检测与调试
6.1硬件调试
是利用DVCC实验与开发系统、基本测试仪器(万用表、示波器等),检查用户系统硬件中存在的故障。
硬件调试可分为静态调试与动态调试两步进行。
静态调试是在用户系统未工作时的一种硬件检测。
第一步:
目测。
检查外部的各种元件或者是电路是否有断点。
第二步:
用万用表测试。
先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象。
第三步:
加电检测。
检查所有插座或是器件的电源端是否符合要求的值
第四步:
联机检查。
因为只有用单片机开发系统才能完成对用户系统的调试。
动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。
动态调试的方法是由近及远、由分到合。
由分到合是指首先按逻辑功能将用户系统硬件电路分为若干块,当调试电路时与该元件无关的器件全部从用户系统中去掉,这样可以将故障范围限定在某个局部的电路上。
当各块电路无故障后,将各电路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。
由分到合的调试即告完成。
由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及远的分层,然后分层调试。
调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。
6.2软件调试:
软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
7、总结与体会
实现了能根据实际需要的本系统是以单片机AT89C51芯片为核心部件,实现了能通过AT89C51芯片控制节日彩灯实现一些基本的功能。
刚开始时,自己通过各种途径,尽可能多的了解有关于彩灯灯这方面的知识,为后面的设计打下基础,后面的进展也很顺利,不过在仿真阶段,由于硬件电路设计的粗心,给自己带来了不小的麻烦,不过问题最终还是得到了解决。
通过这次课程设计,使我得到了一次用所学知识来实际解决问题的锻炼,也让自己感觉到大学所学的知识有一部分是很有实用价值的,同时我对单片机的基本知识以及常用的汇编设计程序得到了进一步的巩固。
8.参考文献
8.1.李朝青,《单片机原理及接口技术》第三版,北京航天航空大学出版社,2008
8.2张迎新,《单片机初级教程——单片机基础》,北京航空航天大学出版社,2006
9.致谢
在些次课程设计中,非常感谢谢老师的精心指导,由于他的悉心指导和关心,一直激励着我去努力做好本次课程设计,谢老师精湛的专业知识、耐心的工作态度和真诚的待人风格给我留下了非常深刻的印象,对我以后的工作和生活将产生很大的影响。
通过些次课程设计,我们获得了丰富的理论知识,极大的提高了实践能力,这将对我今后进一步学习计算机方面的知识有极大的帮助。
在此,真挚的向我的导师说声谢谢。
同时,我也在感谢跟我一起完成此次课程设计的同学,我们相互帮助,相互鼓劢,一起并肩作战。
他们在我的设计遇到困难的时候,在精神上和行动上都给予我很大的支持,鼓励我不要泄气,说服我勇敢的面对困难,帮助我解决了很多问题,让我的课程设计能够顺利完成。
.