当前位置:文档之家› 基于89c51单片机控制的LED音乐彩灯控制器的设计说明

基于89c51单片机控制的LED音乐彩灯控制器的设计说明

基于89c51单片机控制的LED音乐彩灯控制器的设计随着人们对房屋的装饰需要彩灯,在许多城市可以看到彩色霓虹灯。

LED彩灯由于其丰富的灯光色彩,便宜的造价以及简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建础物已经成为一种时尚。

但目前市场上各种各样的LED彩灯控制器大多数用全硬件电路实现,电路结构复杂、电路复杂、功率损耗大等缺点。

此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性……本方案提出一种基于8951 单片机的彩灯控制方案,实现对LED 彩灯的控制。

本方案以8951单片机作为主控核心,在主控模块上设有3个按键和8个LED显示灯,根据需要可以编写若干种亮灯模式,利用其部定时器TO实现一个基本单位时间为1ms的定时中断,根据各种亮灯时间的不同需要,在不同时刻输出灯亮或灯灭的控制信号,然后驱动各种颜色的灯亮或灭。

与普通LED彩灯相比,具有体积小、价格低、功耗低等优点。

2 系统功能LED彩灯用软件控制硬件的方式来控制彩灯闪烁,即彩灯控制器和管LED模块。

彩灯采用8951提供+ 5V电压工作,经过电源变换,输出直流工作电压,一方面为管LED模块提供+ 5V工作电源,另一方面为主控模块单片机系统彩灯控制器提供5V工作电源。

整个系统工作由软件程序控制运行,根据需要用户可以在LED彩灯工作时通过主控模块上的按键来设定亮灯时间和灯光闪动频率。

上电后系统经过初始化,查询是否有功能切换键按下:有,则进入设定模式状态;无,则进入默认工作状态。

在设定模式状态下,可以根据个人爱好及不同场合的需要来指定调用哪种模式,并且可以改变每种模式的时间T1、频率F1参数,在工作状态下,LED彩灯控制器按照程序设定好的若干亮灯花样模式程序顺序调用往下走,开始工作,依次8个等亮完为一个亮灯周期,然后再回主循环继续工作,同样如果想进入其它设定模式状态,只需按下功能切换键即可。

整个3 种亮灯模式时间可以看作一个大周期T, 对于每一个模式编写一个独立工作子程序,其中设定了从左到右点亮LED,从右到左点亮LED,还有自己定义的LED点亮方式。

因此在LED彩灯上电工作后,可以方便地通过主控模块上的显示器指定LED彩灯当前工作模块,工作时间Ti ,频率Fi 等实时参数。

若实际应用需要根据不同场合和时间来改变彩灯闪亮效果,可以通过主控模块上的按键来设定LED不同的闪烁频率Fi和亮灯时间Ti ,以便符合实际需要。

此外如果对某一种模式感兴趣需要仔细观看该种亮灯模式, 可以让程序循环。

硬件设计LED彩灯系统包括,即LED彩灯控制器(8951主控模块),LED彩灯在8951外部接一个震荡时钟频率。

用8951的控制器,具有按键、显示等功能,并利用8951的P0 口的8个输出端上面焊有8个LED彩灯,使用彩灯在软件的控制下工作。

主控模块电路设计主控模块电路如图1所示。

主控模块主要设计器件有89C51, 8个LED显示器,3个开关按键,1个稳压器(5V电压),1个外部晶振振荡器信号输出驱动,4个电阻。

通过软件设计,使单片机P0 口作为三色LED驱动信号输出口及移位时钟CLOCK!号,8951的P0为LED 的输出口。

软件设计LED彩灯控制器最大特点在于所有亮灯模式均由软件控制完成。

系统中软件可以分为主程序和中断服务子程序。

上电后在按键控制灯的闪烁方式, 通过软件来控制循环, 以一个单位实际1ms的TO定时为中断服务子程序。

在这个1ms的TO定时基础上,可以根据需要来确定各种模式工作时间Ti,以及确定在各种亮灯点亮和熄灭各种状态LED灯等。

整个系统软件由程序、各种模式子程序、1ms中断服务子程序、调用循环程序组成。

利用TO定时器作为定时基本单位,根据模式需要计算好各控制信号的发生时刻,根据移位触发的翻转时刻步调一致,使LED彩灯按照设计的模式工作。

除了TO定时中断之外,程序的大部分时间是在处理按键的查询和LED显示的延时。

3个按键分别为:K1按键,从左到右点亮LED, K2按键,从右到左点亮LED,用户自己定义方式点亮LEDb 在每次的TO定时中断服务子程序里,需要对各种时间寄存器和模式寄存器进行加1或者清0,为主程序查询作准备,同时查询是否已中断1ms,若1ms到了,则对按键一次,是否有按下并进行相应子程序处理。

主程序除了调用各种子模式子程序,调用LED 显示子程序和延时子程序之外,还一直保持查询是否有功能切键按下以及是否有模式改变按键按下, 一旦有功能切换键和模式改变键按下, 就会进入相应的按键处理。

程序流程如图2 所示亮灯模式, 只要控制好各色灯触发和熄灭时刻就可以组合础各种亮灯效果。

2.1 原理框图扬声器功率放大电路LM386电源电路彩灯驱动显示电路复位电路时钟电路2.2 电路原理图2.3 工作原理根据设计要求可以把电路组成部分分为音乐控制部分,整个系统有 3 个或以上的控制开关。

控制彩灯闪烁快慢的时钟信号CLK-IN,音乐控制按钮,清零端CLRDEN等。

利用单片机89C51 产生乐曲音符,再把音谱翻译成计算机音乐语言,由单片机进行信息处理, 再经过信号放大, 由喇叭放出乐曲。

由于音符和节拍都由计算机产生, 所以发言音符和节拍准确。

单片机奏乐的原理:通过控制定时器的定时时间来产生不同频率的方波,驱动喇叭发出不同音阶的声音,再来源延迟常数, 作为数据表格存放在存储器中。

由程序查表得到定时常数和延迟常数, 分别用以控制定时器产生方波的频率和发出该频率方波的持续时间。

当延迟时间到时, 再查下一个的定时常数和延迟常数,依次下去,就可以自动演奏乐曲。

工作程序流程图如下:开始T0初始化,A清零,开中断,中断计数20H单元,清零查首地址送DPTR查表取常数是结束符00H?延时100msN是休止符FFH?YY恢复初始条件A清零延时1s 后再循环N 音阶常数送6 取节拍常数送R7 启动T0 计数P2.0 取反按R6 延时节拍时间是否到?N停止TO计数,中断计数,20H单元清零,DPTR加1 Y 2.4 音乐彩灯控制程序代码音乐播放源程序:(采用定时器ORG OOOHLJMP STARTORG OOOBHAJMP CONTORG O1OOHSTATR:MOV SP,#5OHMOV THO,#ODBHMOV TLO, #OFFHMOV TMOD,#O1HMOV IE,#82HMUSICO:MOV DPTR,#DATMOV 2OH,#OOH ;MUSIC1: CLR AMOVC A,A+DPTR ;JZ ENDO ;CJNE A,#OFFH,MUSIC5 ;LJMP MUSIC3 ;MUSIC5: NOPMOV R6,A ;INC DPTR ;DPTR+1MOV A,#O MOVCA,A+DPTR ;MOV R7,ASETB TRO ; MUSIC2;NOPCPL P1.O ;MOV A,R6MOV R3,A ;LCALL DEL2OMOV A,R7 ;CJNE A,2OH,MUSIC ;TO,定时器方式1)表首地址送DPTR中断计数单元清零查表取音阶常数是结束符?是休止符?产生100MS停顿音阶常数送R6取节拍常数送R7启动定时器TO输出电平取反音阶常数送R3节拍常数送A节拍时间到否?MOV 20H,#00H INC DPTR LJMP MUSIC1 MUSIC3: NOPCLT TR0LJMP MUSIC1MUSIC6:MOV R3,#250LCALL DEL20 DJNZ R2,MUSIC6 LJMP MUSIC0 DEL: MOV R4,#05H DEL4: NOPDJNZ R4,DEL4 DJNZ R3,DEL RETCONT: INC 20H ; 计数单元容加 1MOV TH0,#0DBH ; 重新送100MS 定时初值MOV TL0,#0FFH RETIDAT: DB 18H,30H,1CH,10H,20H,40H,1CH,10H; < 八月桂花遍地开 >的谱表DB 18H,10H,20H,10H,1CH,10H,18H,40H DB 1CH,20H,20H,20H,1CH,20H,18H,20H DB 20H,80H,0FFH,20H,30H,1CH,10H,18H DB 20H,15H,20H,1CH,20H,20H,20H,26H DB 40H,20H,20H,2BH,20H,26H,20H,20H DB 20H,30H,80H,0FFH,20H,20H,1CH,10H DB 18H,10H,20H,20H,26H,20H,2BH,20H DB 30H,20H,2BH,40H,20H,20H,1CH,10H DB 18H,10H,20H,20H,26H,20H,2BH,20H DB 30H,20H,2BH,40H,20H,30H,1CH,10H DB 18H,20H,15H,20H,1CH,20H,20H,20H DB 26H,40H,20H,20H,2BH,20H,26H,20H DB 20H,20H,30H,80H,20H,30H,1CH,10H DB 20H,10H,1CH,10H,20H,20H,26H,20H DB 2BH,20H,30H,20H,2BH,40H,20H,15H DB 1FH,05H,20H,10H,1CH,10H,20H,20H DB 26H,20H,2BH,20H,30H,20H,2BH,40H DB 20H,30H,1CH,10H,18H,20H,15H,20H DB 1CH,20H,20H,20H,26H,40H,20H,20H DB 2BH,20H,26H,20H,20H,20H,30H,30H DB 20H,30H,1CH,10H,18H,40H,1CH,20H DB 20H,20H,26H,40H,13H,60H,18H,20HMOV R2,#14H MUSIC4:NOP;R2 =20MOV R3,#250 LCALL DEL20 ;R3=250DJNZ R2,MUSIC4 INC DPTR为取下一个音阶常数准备 END0: MOV R2,#200 歌曲结束,延时 1 秒后继续为下一个音阶常数做准备休止 100MSDB 15H,40H,13H,40H,18H,80H,00H END 时钟控制部分源程序:ORG 00HJMP STARTORG 0BHJMP TIM0START:MOV 28H,#00MOV 2AH,#12HMOV 2BH,#00MOV 2CH,#00MOV TMOD,#00000001BHMOV TH0,#> (65536-4000)MOV TL0,#< (65536-4000)MOV IE,#10000010BHMOV R4,#250SETB TR0LOOP: JB P0.0,N2CALL DELAYMOV A, 2CHADD A,#01HDA AMOV 2CH,ACJNE A,#60H,N1MOV 2CH,#00HN1: JNB P0.0,$CALL DELAYN2: JB P0.1,N4CALL DELAYMOV A,2BHADD A,#01HDA AMOV 2BH,ACJNE A,#60H,N3MOV 2BH,#00HN3: JNB P0.1,$CALL DELAYN4: JB P0.2,LOOPCALL DELAYMOV A,2AHADD A,#01HDA AMOV 2AH,ACJNE A,#24H,N5MOV 2AH,#00N5: JNB P0.2, $CALL DELAYJMP LOOPTIM0: MOV TH0,#> (65536-4000)MOV TL0,#< (65536-4000)PUSH APUSH PSWDJNZ R4,X2MOV R4,#250CALL CLOCKCALL DISPX2: CALL SCANPOP PSWPOP ARETISCAN: MOV R0,#28HINC R0CJNE R0,#6,X3MOV R0,#0X3 : MOV A,R0ADD A,#20HMOV R1, AMOV A,R0SWAP AORL A,R1MOV P1,ARETCLOCK: MOV A,2CHADD A,#1DA AMOV 2CH,ACJNE A,#60H,X4MOV 2CH,#00MOV A,2BHADD A,#1DA AMOV 2BH, ACJNE A,#60H,X4MOV 2BH,#00MOV A, 2AHADD A,#1DA AMOV 2AH,ACJNE A,#24H,X4 MOV 2AH,#00X4: RETDISP: MOV R1,#20HMOV A,2CHMOV B,#10HDIV ABMOV R1,BINC R1MOV R1,AINC R1MOV A,2BHMOV B,#10HDIV ABMOV R1,BINC R1MOV R1,AINC R1MOV A,2AHMOV B,#10HDIV ABMOV R1,BINC R1MOV R1,ARETDELAY: MOV R6,#10D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RET END2.5 硬件系统设计单片机选择AT89C51,由于AT89C51是一个低电压,高性能CMOS位单片机,含4k bytes 的可反复擦拭的制度程序存储器(PERO)M 和128bytes 的随机存储数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片置通用8位中央处理器和Flash存储单元,置功能强大的微型计算机AT89C51提供了高性价比的解决方案。

相关主题