您当前的位置:五五电子网电子知识电子制作照明-彩灯电路用AT89C205l单片机实现七彩动感发光字功能 正文
用AT89C205l单片机实现七彩动感发光字功能

用AT89C205l单片机实现七彩动感发光字功能

点击数:7677 次   录入时间:03-04 11:39:27   整理:http://www.55dianzi.com   照明-彩灯电路

      三基色混色原理

  按照三基色混色原理加数字灰度控制技术,原理上可演变出几乎超越大自然存在的任意色彩。本设计采用三基色LED二级灰度控制(明和暗)方案,通过对红、绿、蓝三种基色亮暗变化的控制得到七种不同颜色,达到七彩变换的效果。

  三基色混色规律如右图所示。

  硬件设计

    1.主控电路电路

    如下图所示,采用89C2051单片机外接X5045监控芯片构成主控电路,同时增加74LS245提高控制信号的驱动能力。这种简化的硬件结构,提高了系统的可靠性和稳定性。

  X5045是一种集上电掉电复位、看门狗定时器、电源电压监控和串行4Kbit EEPROM四种功能于一体的多功能可编程监控芯片,可防止电源通断瞬时及电源电压波动时造成的系统故障。在程序运行出现故障时,如果看门狗在设定的超时周期内未接到单片机发出的清零信号,就会在RST脚给出一复位脉冲来复位单片机,强迫程序重新运行,避免“死机”现象的发生,保证单片机程序的可靠运行。

  立体动感字由若干个发光点组成,需要独立控制每个点的亮暗变化,在字数较多或字体较大时需要控制的点数较多,信号的连接线较长,所以选择串行方式来传送数据。

  2.74HC595引脚及工作原理

      74HC595具有一个8位串入并出的移位寄存器和一个8BIT输出锁存结构,而且移位寄存器和输出锁存器的控制是各自独立的,在移位的过程中,输出端的数据可以保持不变。因此,采用74HC595作为串行数据传送芯片,可以解决在串行输入信号驱动电路中数据准备和数据显示之间的矛盾问题,使数据准备和数据显示可以同时进行,在显示过程中没有闪烁感。

  74HC595引脚如左图所示。

  SER:串行数据输入端;SRCLK:移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将SER的下一个数据移入最低位,RCLK:输出锁存器的输入信号,其上升沿将移位寄存器的数据送入输出锁存器,SRCLR:移位寄存器的清零输入端,当其为低电平时移位寄存器的输出全部为0;E:输出三态门的开放信号,只要当其为低电平时移位寄存器的输出才开放,否则成高阻态;Q0~Q7.8位并行输出端;SQ7:级联输出端,多片74HC595级连应用时接下一个74HC595的SER端。

  74HC595的工作原理:SER端输入的串行显示数据,在移位寄存器的移位时钟脉冲SRCLK的上升沿发生移位,并将SER的下一个数据移入最低位,移位后的各位信号出现在各移.位寄存器的输出端,也就是输出锁存器的输入端。将输出三态门的开放信号E接地使移位寄存器的输出开放。

  在输出锁存器的输入信号RCLK的上升沿将移位寄存器的数据送入输出锁存器,将串行显示数据显示出来。在多片74HC595级连应用时,第一片74HC595的SER端连接单片机输出端,其SQ7端连接下一片的SER端,各片均采用同样的方法进行级连。同时将各片相应的SRCLK、RCLK、SRCIR端分别并联,作为统一的串行数据移位信号、串行数据清除信号和输出锁存器打入信号。这样的结构,使得各片串行移位能把显示数据一次输入到相应的移位寄存器输出端。移位结束后,控制器将各显示数据一起打入相应的输出锁存器。由于SRCLK和RCLK两个信号是互相独立的,所以能做到串行输入移位与输出锁存互不干扰,使数据准备和数据显示可以同时进行。

  3.驱动电路

      经74HC595信号变换后虽具有一定的驱动能力,可直接驱动LED发光。

  但由于电源电压在大电流传输时往往存在较大的压降,因此一般采用12V或12V以上电源给LED灯供电,这就要求我们对上述信号作进一步的处理。

  本文采用12V电源作为LED灯的工作电源,同时选用ULN2803作串联LED的驱动芯片。电路如图所示。

  ULN2803具有8个输入控制端、8个高电压大电流达林顿晶体管输出端、一个接地端和一个偏置电压输入端COM。高电压电源通过多个同色LED接在输出端,同时,通过偏置电阻与COM端相连。由于ULN2803输入端与标准TTL电平接口兼容,当输入端控制信号为低电平时,输出端与偏置电压相当,电压差小,LED不发光。当输入端控制信号为高电平时,输出端电压下降,电压差大,LED就发光。

  ULN2803每个输出端口驱动电压最高可达50V,电流500mA,完全满足驱动LED发光的需要。

  4.LED发光单元

      立体动感字一般由若干个发光点组成(如右图所示),要实现颜色的七彩变化,则每个发光点至少含有红、绿、蓝三色LED各一个。基于12V电源方面的实际情况,将三个发光点的同色LED串联起来作为一个发光单元(包括三个发光点),共用一组控制信号三色LED均通过限流电阻与12V电源连接。

  5.工作电源

      一方面要为主控模块单片机系统提供较小电流的5V电源,保证控制系统的正常运行。另一方面又要为LED发光单元提供12v大电流工作电源,因此,应选用含有5V和12V两种输出电压的开关电源。12V电源所需电流由连接的LED数目M决定,可由公式1.5×M×0.02/3(即M×0.01)算出LED发光单元使用的12V工作电源在大电流传输时存在着较大的压降,严重影响了LED发光点的亮度和色度。因此12V工作电源接线时应采用分段多点接入方式,即将12V电源线路分成几段,每段都用粗导线接到开关电源12V输出端,减少12V电压在线路上产生较大的压降,避免带来各LED发光点亮度和色度的不均匀。



www.55dianzi.com

  为了方便实现花样的显示,将三个数据位为一组控制数据,对应控制一个LED发光单元的亮和灭。各颜色与控制数据的对应关系见附表。

显示颜色 灭 红 绿 蓝 红绿 红蓝 绿蓝 红绿蓝 控制数据 00H 04H 02H 0lH 06H 05H 03H 07H

  在显示一组颜色数据时,通过串行移位把颜色数据移人相应的移位寄存器输出端。移位3次后,控制器发出输出锁存器输出信号,各显示数据输出到相应的输出锁存器,此时就在LED上体现出来相应的颜色效果。

  实现一个LED发光单元控制过程的子程序如下:

  ;write595_3Bit-----三位颜色数据移位子程序

  ;入口:a——颜色数据

    write595_3Bit:     mov r5,:#003h     write595_3Bit_loop:     rrc a     mov sdata,c     setb scik     nop        cir scik     djnz r5,write595 3Bit_loop     ret

www.55dianzi.com

  将颜色数据和显示时间(速度)相组合就可方便地实现七彩跳变、渐变、追逐等花样效果,变化方式可达百种以上。例如将单种颜色顺序从左到右或从右到左依次点亮或熄灭、从两边到中间或从中间到两边依次点亮或熄灭,或将两种或两种以上颜色作为一个变化单位也可获得多种变化效果。

  除此以外,也可以依据人眼视觉的特殊性,将以上变化方式结合快慢变化又可以获得多种多样的显示效果。

  编程时将各种花样效果的颜色数据和显示时间保存在数据存储区,控制时读取颜色和时间数据后输出到相应的输出锁存器,在LED发光单元上就可体现出丰富多彩的变化效果。实现较为简单的七彩跳变效果的程序流程图如图所示。

  下文给出以“灯”字为例实现较为简单变化效果的程序。该字有75个发光点共225颗LED,划分为25个发光单元。

  以下为灭LED后用七色逐个发光单元延时点亮LED,表现为“书写”效果

   Start:

    mov r2,#25;控制25个发光单元   mov r0,#OOh ;从灭LED开始   Led_on_Step:   mov a,r0;送颜色数据   acall write595—3bit;颜色数据移三位     djnz r2,Led_on_Step     clr rcIk     Setb rclk;上升沿时颜色在LED上显示     acall delay_1s;延时1s再  点亮下一个发光单元   Inc r0;更换颜色   CJne r0,#08,Led_on_Step; 是否已显示七种颜色     ;以下为实现七色轮流闪烁显示     mov r2,#25     Led_on_Flash:     mov a,#00h;灭LED     acall write595_3bit     djnz r2,Led_on,Flash     clr rclk     Setb rcik     acall delay_ls;LED关闭1s     mov r2,#25     mov r0,#O1h;从蓝色开始     Led_on_Flash1:     mov a,r0        acall write595_3bit     djnz r2,Led_on_Flashl     cir rclk     Setb rclk     acall delay_is; LED壳1s     Inc r0;更换颜色     Cjne r0,#08,Led_on_Step;是否已显示七种颜色     ;以下为用两种颜色显示“灯”字     mov r2,#12;“火”用红色显示(含12个发光单元)     Color_Red:     mov a,#01h     acall write595_3bit     djnz r2,Colorl     mov r2,.#13;“丁”用蓝色显示(含13个发光单元)   Color_Blue:   mov a,#06h   acall write595_3bit   djnz r2,Color2   cir rclk   Setb rclk   acall delay_10s;延时10s   Sjmp Start


本文关键字:单片机  发光字  照明-彩灯电路电子制作 - 照明-彩灯电路