摘要家人和其他人带来美的享受。本系统采用单片机AT89C51为中心器件来设计彩灯控制器,并用发光二极管作为被控制部件来显示。系统实用性强、操作简单、扩展性强。彩灯控制器在我门日常生活中有重要的运用,如广告牌的设计和节日彩灯的设计都能运用到它的原理。关键词:AT89C51;节日彩灯控制器;发光二极管目录摘要………………………………………………………..1设计任务……………………………………………………11.1功能及技术指标要求…………………………………..11.2设计内容………………………………………………..11.3设计思路及关键技术…………………………………….12彩灯灯的设计程序框图…………………………………….23彩灯程序的主程序………………………………………….34系统硬件电路的设计……………………………………….124.1时钟源........................................124.2周期控制.....................................124.3方向控制电路…………………………………………….134.4执行电路…………………………………………………134.5电路仿真………………………………………145原理图………………………………………………….146检测与调试…………………………………………….156.1硬件调试……………………………………………156.2软件调试……………………………………………157总结与体会……………………………………………..168参考文献………………………………………………..169致谢……………………………………………………..161.设计任务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后全灭红绿灯全亮灯移动间隔为1S3.节日彩灯设计的主程序程序如下: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号LEDSETBP1.2;SETBP1.6;点亮2和6号LEDLCALLLLL1;延时1秒钟CLRP1.2;CLRP1.6;灭2和6号LEDSETBP1.3;SETBP1.7;亮3和7号LEDLCALLLLL1;延时1秒钟CLRP1.3;CLRP1.7;灭3和7号LEDSETBP1.4;SETBP1.8;点亮4和8号LEDLCALLLLL1;延时1秒钟CLRP1.4;CLRP1.8;灭4和8号LEDSETBP1.4;SETBP1.8;再次点亮4和8号LED(开始状态2)LCALLLLL1;延时1SCLRP1.4;CLRP1.8;灭4和8号LEDSETBP1.3;SETBP1.7;点亮3和7号LEDLCALLLLL1;延时1SCLRP1.3;CLRP1.7;灭3和7号LEDSETBP1.2;SETBP1.6;亮2和6号LEDLCALLLLL1;延时1SCLRP1.2;CLRP1.6;灭2和6号LEDSTA:SETBP1.1;STA:SETBP1.5;点亮1和5号LEDLCALLLLL1;延时1秒钟CLRP1.1;CLRP1.5;灭1和5号LEDSETBP1.4;SETBP1.5;点亮4和5号LED(开始状态3)LCALLLLL1;延时1SCLRP1.4;CLRP1.5;灭4和5号LEDSETBP1.3;SETBP1.6;点亮3和6号LEDLCALLLLL1;延时1SCLRP1.3;CLRP1.6;灭3和6号LEDSETBP1.2;SETBP1.7;亮2和7号LEDLCALLLLL1;延时1SCLRP1.2;CLRP1.7;灭2和7号LEDSETBP1.1;SETBP1.8;点亮1和8号LEDLCALLLLL1;延时1SCLRP1.1;CLRP1.8;灭1和8号LEDSETBP1.1;SETBP1.8;再次点亮1和8号LED(开始状态4)LCALLLLL1;延时1SCLRP1.1;CLRP1.8;灭1和8号LEDSETBP1.2;SETBP1.7;亮2和7号LEDLCALLLLL1;延时1SCLRP1.2;CLRP1.7;灭2和7号LEDSETBP1.3;SETBP1.6;点亮3和6号LEDLCALLLLL1;延时1SCLRP1.3;CLRP1.6;灭3和6号LEDSETBP1.4;SETBP1.5;点亮4和5号LEDLCALLLLL1;延时1SCLRP1.4;CLRP1.5;灭4和5号LEDSETBP1.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号LEDSETBP1.2;SETBP1.6;点亮2和6号LEDLCALLLLL1;延时1秒钟CLRP1.2;CLRP1.6;灭2和6号LEDSETBP1.3;SETBP1.7;亮3和7号LEDLCALLLLL1;延时1秒钟CLRP1.3;CLRP1.7;灭3和7号LEDSETBP1.4;SETBP1.8;点亮4和8号LEDLCALLLLL1;延时1秒钟CLRP1.4;CLRP1.8;灭4和8号LEDSETBP1.4;SETBP1.8;再次点亮4和8号LED(开始状态7)LCALLLLL1;延时1SCLRP1.4;CLRP1.8;灭4和8号LEDSETBP1.3;SETBP1.7;点亮3和7号LEDLCALLLLL1;延时1SCLRP1.3;CLRP1.7;灭3和7号LEDSETBP1.2;SETBP1.6;亮2和6号LEDLCALLLLL1;延时1SCLRP1.2;CLRP1.6;灭2和6号LEDSTA:SETBP1.1;STA:SETBP1.5;点亮1和5号LEDLCALLLLL1;延时1秒钟CLRP1.1;CLRP1.5;灭1和5号LEDSETBP1.4;SETBP1.5;点亮4和5号LED(开始状态8)LCALLLLL1;延时1SCLRP1.4;CLRP1.5;灭4和5号LEDSETBP1.3;SETBP1.6;点亮3和6号LEDLCALLLLL1;延时1SCLRP1.3;CLRP1.6;灭3和6号LEDSETBP1.2;SETBP1.7;亮2和7号LEDLCALLLLL1;延时1SCLRP1.2;CLRP1.7;灭2和7号LEDSETBP1.1;SETBP1.8;点亮1和8号LEDLCALLLLL1;延时1SCLRP1.1;CLRP1.8;灭1和8号LEDSETBP1.1;SETBP1.8;再次点亮1和8号LED(开始状态9)LCALLLLL1;延时1SCLRP1.1;CLRP1.8;灭1和8号LEDSETBP1.2;SETBP1.7;亮2和7号LEDLCALLLLL1;延时1SCLRP1.2;CLRP1.7;灭2和7号LEDSETBP1.3;SETBP1.6;点亮3和6号LEDLCALLLLL1;延时1SCLRP1.3;CLRP1.6;灭3和6号LEDSETBP1.4;SETBP1.5;点亮4和5号LEDLCALLLLL1;延时1SCLRP1.4;CLRP1.5;灭4和5号LEDSETBP1.1..1.8点亮所有绿灯(开始状态10)CLRP1.1..1.8灭所有绿灯SETBP1.1..1.8点亮所有红灯、绿灯(开始状态11)LCALLLLL1;延时1SCLRP1.1..1.8灭所有红灯和绿灯SJMPSTA;转入状态1ORG00HSJMPMAINORG40HMAIN:MOVSP,#05FHMOVP1,#0FFH;按键输入,从P1.0-P1.8分别代表状态1-8,低电平有效MOVP0,#0FFH;LED输出,p1.1-p1.8分别是LED1-LED8高电平为LED点亮,低电平为LED息灭LOOP:LCALLDOSJMPLOOPDO:JBP1.0,LP1MOVB,P1LCALLDO1LP1:JBP1.1,LP2MOVB,P1LCALLDO2LP2:JBP1.2,LP3MOVB,P1LCALLDO3LP3:JBP1.3,LP4MOVB,P1LCALLDO4LP4:MOVP0,#0FFH;无按键不等任何事RETDO1:MOVP0,#0FFH;状态1CLRP0.0LCALLDELAYLCALLDELAYMOVP0,#0FFHCLRP0.1LCALLDELAYLCALLDELAYMOVP0,#0FFHCLRP0.2LCALLDELAYLCALLDELAYMOVP0,#0FFHCLRP0.3LCALLDELAYLCALLDELAYMOVP0,#0FFHCLRP0.4LCALLDELAYLCALLDELAYMOVP0,#0FFHCLRP0.5LCALLDELAYLCALLDELAYRETDO2:MOVP0,#0FFH;状态2CLRP0.0LCALLDELAYMOVP0,#0FFHCLRP0.2LCALLDELAYMOVP0,#0FFHCLRP0.4LCALLDELAYRETDO3:MOVP0,#0FFH;状态3CLRP0.1LCALLDELAYMOVP0,#0FFHCLRP0.3LCALLDELAYMOVP0,#0FFHCLRP0.5LCALLDE