一种可驱动多组RGB灯的MCU及其驱动方法与流程

文档序号:26751912发布日期:2021-09-25 02:45阅读:659来源:国知局
一种可驱动多组RGB灯的MCU及其驱动方法与流程
一种可驱动多组rgb灯的mcu及其驱动方法
技术领域
1.本发明涉及单片机领域,尤其涉及一种可驱动多组rgb灯的mcu及其驱动方法。


背景技术:

2.绚丽多彩的灯效不仅带给用户视觉享受,同时会让产品看起来更酷炫、有科技感,所以现在很多电子产品厂家将此作为一个卖点来提升产品档次。多组rgb灯组合被常用来实现灯效,通过对每一个rgb灯中红、绿、蓝三光的调节达到各种色彩明暗的灯光。
3.早期通过软件代码驱动多组rgb灯,但这种方式对软件执行时间要求很高,不但要动态改变驱动引脚的pwm占空比,而且要求一个rgb的3端同步驱动,占用cpu资源大,定时间隔也无法保证,导致显示易闪烁且效果差。所以现有常规方式都是由硬件电路实现rgb的扫描驱动功能,但该方法不够灵活,扫描时间固定,需要定义包含全部所有行周期的较大ram区域来存储扫描数据,通过硬件dma自动调取数据对应驱动一轮完整的rgb灯,占用空间大、成本高、灵活性差。


技术实现要素:

4.发明目的:为了解决现有技术中,通过硬件方法实现rgb扫描驱动不够灵活,扫描时间固定,存储空间大的问题,本发明提供一种在mcu上驱动多组rgb灯的方法。
5.本发明另一目的是提供一种可驱动多组rgb灯的mcu。
6.技术方案:一种在mcu上驱动多组rgb灯的方法,包括以下步骤:步骤一、定义消隐定时器,所述消隐定时器用于对消隐周期定时;步骤二、初始化所有行引脚与列引脚,开启扫描,开启所有pwm模块工作;步骤三、硬件开启所有列引脚输出,pwm模块同步输出三组pwm波驱动列引脚,进入显示驱动周期;步骤四、待三组pwm波周期结束时,触发中断,软件执行中断事件,硬件关闭所有列引脚输出,消隐定时器开始定时,进入消隐周期;所述中断事件为:选择另一个gpio口作为下一个行引脚;执行软件加载指令,将下一行对应的列引脚的pwm波数据传入pwm模块中,中断返回;步骤五、消隐定时器控制消隐周期结束,开启所有pwm模块工作,返回步骤三。
7.进一步地,步骤四中,执行软件加载指令的具体方法为:软件加载指令仅包含将源缓冲区中的pwm波数据读取至内部寄存器;同时pwm模块对数据传输进行监测,当在消隐期间监测到有pwm波数据传输时,自动将pwm波数据送入pwm硬件锁存器中,且源缓冲区指针自动增量。
8.进一步地,步骤四中,所述pwm波数据包括控制亮度、红色、绿色、蓝色四组pwm数据,pwm模块用于分别将控制亮度的pwm数据与控制红色、绿色、蓝色的pwm数据逻辑与计算,形成r、g、b三组pwm波并输出。
9.进一步地,步骤四中,还包括按键扫描检测,检测行引脚、列引脚上连接的按键是
否被按下。
10.一种可驱动多组rgb灯的mcu,包括:至少两个行引脚及行引脚驱动电路;三组且每组至少4个pwm模块、三组且每组至少4个列引脚及三组且每组至少4个列引脚驱动电路,pwm模块与列引脚驱动电路连接;pwm模块用于在显示驱动周期输出pwm波驱动列引脚,在pwm波周期结束时触发中断,并开启消隐定时器定时;消隐定时器,用于消隐周期的定时,并在消隐周期结束时开启所有pwm模块工作;处理器,用于在中断触发时执行中断事件,所述中断事件为:选择另一个gpio口作为下一个行引脚;执行软件加载指令,将下一行对应的列引脚的pwm波数据传入pwm模块中。
11.进一步地,pwm模块包括硬件锁存器,硬件锁存器用于存储pwm波数据。
12.进一步地,步骤四中,所述pwm波数据包括控制亮度、红色、绿色、蓝色四组pwm数据,pwm模块用于分别将控制亮度的pwm数据与控制红色、绿色、蓝色的pwm数据叠加,形成r、g、b三组pwm波并输出。
13.进一步地,设mcu共有gpio口n个,n个gpio口均可作为行引脚。
14.一种mcu驱动多组rgb灯的装置,包括上述mcu及至少八个rgb灯,各rgb灯呈矩阵连接,rgb灯包括公共端、r端、g端及b端,各rgb灯的公共端与mcu的行引脚连接,各rgb灯的r端、g端及b端分别与三组列引脚连接。
15.本发明提供了一种可驱动多组rgb灯的mcu及其驱动方法,相比较现有技术,具有以下有益效果:(1)扫描更加灵活。可以随时更改需扫描的行引脚,mcu的所有gpio口均可选,可随时对扫描行进行增减、跳过、选择、改变顺序等操作,操作简单便捷。充分利用行引脚切换的消隐时间段,既避免了前后两组显示互相干扰的同时,又将消隐时间用于加载数据、扫描按键等,设置中断触发,用软件加载下一时刻列引脚驱动信号的pwm波数据,用硬件同步开启所有列引脚上的pwm模块工作,解决rgb灯各引脚的同步驱动问题,在完全不影响驱动效果的基础上,实现更加灵活地配置驱动数据到每一轮扫描中。
16.(2)灵活设置显示周期和消隐周期,可随时改变。在完全不影响驱动效果的基础上,实现更加灵活地配置驱动时间到每一轮扫描中。
17.(3)数据来源更加灵活。pwm波数据可来源于rom或ram,也可随时进行更改。
18.(4)缓冲区小。因为硬件锁存器每次仅需要加载一行灯效的列引脚数据,在这一行的行引脚有效期间,改变下一行的列引脚数据,并在行引脚切换时再加载下一行灯效的列引脚数据;且数据直接进入pwm模块,外部无需ram用于dma,所以对存储区域的大小要求极低,对硬件资源要求更低,成本更低。
19.(5)实现在mcu上对多组rgb灯进行扫描驱动,优化了数据加载机制,采用软硬结合的方案,执行软件加载指令,由硬件自动保存数据和地址增量,达到纯硬件dma的速度且保持了源数据的灵活性。
附图说明
20.图1为本发明硬件部分的流程图;图2为本发明软件部分的流程图;
图3为实施例中矩阵式rgb灯的连接情况;图4为驱动芯片的内部结构示意图;图5为一轮完整的扫描周期各引脚输出信号示意图。
具体实施方式
21.下面结合附图和具体实施例对本发明做进一步解释说明。
22.实施例一:驱动128个共阳rgb灯实现彩色变换效果。
23.如图3,每个rgb灯有4个引脚,一个公共共阳引脚a端,3个色彩控制引脚分别是r端、g端、b端。将128个rgb灯所有引脚标记为a0

a127、r0

r127、g0

g127、b0

b127。如图2所示128个rgb灯呈矩阵式连接排布,总共需要mcu提供16个行引脚(com引脚)com0

com15和24个列引脚(seg引脚)seg0

seg23。由于是共阳灯,在comx端还需增加pmos管。另外,还可以根据应用场景的需要,在mcu的行引脚和列引脚上连接按键,在驱动rgb灯显示的同时,还可以进行按键的扫描检测。
24.如图4,mcu内部包括:16个行引脚及行引脚驱动电路;三组且每组八个pwm模块、列引脚及列引脚驱动电路,pwm模块与列引脚驱动电路连接,pwm模块用于在显示驱动周期输出pwm波驱动列引脚,在pwm波周期结束时触发中断,并开启消隐定时器定时;消隐定时器,用于消隐周期的定时,并在消隐周期结束时开启所有pwm模块工作,保证各rgb灯的三色引脚同步驱动;处理器,用于在中断触发时执行中断事件,所述中断事件为:选择另一个gpio口作为下一个行引脚;执行软件加载指令,将下一行对应的列引脚的pwm波数据传入pwm模块中。
25.如图1和图2所示,在mcu上驱动多组rgb灯的方法包括以下步骤:步骤一、定义消隐定时器,所述消隐定时器用于消隐周期的定时;步骤二、软件初始化所有行引脚和列引脚,设置pwm数据宽度8位,即支持256*256*256色;亮度数据位宽度8位;开启所有pwm模块工作,打开rgb扫描功能;步骤三、硬件开启所有列引脚输出,pwm模块同步输出三组pwm波驱动列引脚(同步指r、g、b三组pwm波并行输出),进入显示驱动周期;步骤四、待三组pwm波周期结束时,触发中断,软件执行中断事件,硬件关闭所有列引脚输出,消隐定时器开始定时,进入消隐周期;这里三组pwm波周期指的是一个行对应的r/g/b三组pwm波周期,其周期可以是一个pwm波,也可以是多个的pwm波的重复。如图2,所述中断事件为:选择另一个gpio口作为下一个有效行引脚到寄存器中;执行软件加载指令,通过特定软件加载指令将32字节pwm数据送入硬件锁存器中,32个数据包8组4字节数据,分别代表控制亮度、红色、绿色、蓝色的pwm值,驱动红色列引脚的pwm波由控制亮度的pwm数据与控制红色的pwm数据逻辑与而成,驱动绿色列引脚的pwm波由控制亮度的pwm数据与控制绿色的pwm数据逻辑与而成,驱动蓝色列引脚的pwm波由控制亮度的pwm数据与控制蓝色的pwm数据逻辑与而成。若mcu行引脚和列引脚上还连接有按键,还包括对按键进行扫描检测,识别是否有按键按下;以上操作完成后,中断返回;为了进一步加快pwm波数据的加载速度,软件加载指令除了采用将源缓冲区的pwm波数据读取至内部寄存器中,再将内部寄存器中的数据写入pwm模块的硬件锁存器以外,还
可以设定一种特定的软件加载指令,软件加载指令仅包含将源缓冲区的pwm波数据读取至内部寄存器;同时,pwm模块对数据传输进行监测,当在消隐期间监测到有pwm波数据传输时,自动将pwm波数据送入pwm硬件锁存器中,且源缓冲区指针自动增量,源缓冲区可以是ram或rom,指针增量的值根据不同来源的数据特征进行设置。相比较既包含读指令,又包含写指令的方式,这样可以进一步精简软件指令,加快加载数据的速度,在消隐时间内尽快完成pwm波数据加载;步骤五、消隐定时器控制消隐周期结束,开启所有pwm模块工作,返回步骤三,进入下一轮显示驱动周期,按照步骤四中加载的pwm波数据输出驱动信号。
26.如图5所示扫描过程的comx和segx输出波形,单行扫描显示时间是682.67us,用于消隐并加载数据的时间是21.33us,完成一轮128个rgb显示时间需要11.264ms。由于大部分时间是用来做扫描显示的,软件代码可利用每行的显示时间做下一行灯效的数据运算,提前准备好数据内容,并在消隐时间里直接加载数据。想要实现彩色变换效果,就要设置不同的rgb的配比,不同的配比显示出的色彩不同。
27.实施例二:驱动128个共阳rgb灯实现输出白光并进行亮度渐变。
28.实施例二的装置与实施例一相同,仅在驱动方法上有所差别。
29.由于输出的是白光,所以对于一个rgb灯而言,r、g、b引脚的pwm值需要保持一致,首次行中断加载值为128,亮度值进行递增,亮度数值大于200后,每次步进1递增,亮度值在100

200之间,每次步进2,亮度值在30

100间步进3,小余30步进5,以此获取更明显的亮度渐变效果。
30.还可以根据其他需要设置rgb灯矩阵的显示效果,根据需要随时改变扫描的行引脚,任一选择组合行引脚,mcu剩余的gpio口均可用作行引脚进行扫描,控制十分灵活方便。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1