基于STC12C2052单片机的DMX512解码器

(整期优先)网络出版时间:2018-07-17
/ 2

基于STC12C2052单片机的DMX512解码器

吴跃飞

安徽广播电视台制作中心安徽合肥230071【摘要】随着科技的发展,近年单片机的应用也深入到社会生活的各个领域,舞台灯光的控制方式也从模拟控制走向了数字化控制,在结合了美国舞台灯光协会(USITT)制定的灯光设备DMX512控制协议实现了对灯具控制的数字化,灯光设备在接收到控制台发送来的数据信号后要对数据进行接收、解码完成相应的功能操作。这里主要介绍基于STC12C2052单片机实现的DMX512解码器。主要功能有本机地址码设置与实现、数据信号的接收和解码、PWM驱动信号的生成等功能。

【关键词】STC12C2052;DMX512通讯协议;DMX512解码

随着科技的发展,近年单片机的应用也深入到社会生活的各个领域,舞台灯光的控制方式也因为电子技术的发展从模拟控制走向了数字化控制。舞台灯光控制方式普遍采用的是DMX512协议它是美国剧场技术协会(UnitedStatesInstituteforTheaterTechnology,USITT)制定的数字多路复用协议。从推出这个协议标准以来已经得到了世界范围内的生产商和使用者的认可,国内众多的灯光生产厂家也纷纷采用该技术协议生产灯光设备。

DMX512信号电气标准采用的是EIA-485电气标准,波特率为250kbps,DMX512协议规定数据以数据包的形式通过异步通讯的方式进行传输。每个数据包由512个数据帧组成,每帧数据包括1位低电平起始位、8位数据位和2位高电平停止位。为了使解码器能够分辨出DMX512数据包,每一个数据包以一个不短于88us的低电平信号Break为起始信号,接收器接收到Break信号就准备接收随后的数据帧;在Break信号之后是不短于8us的高电平MAB(MarkafterBreak)信号;之后就是数据帧。在DMX512协议中,MAB之后的第一帧数据被称为SC(Startcode),即起始字节,在协议中规定其为零,但在实际应用中可以由生产厂家自己确定其具体的值,以传递特殊消息。SC标明其后面的数据是8位控制信号数据帧。一个数据包发送完成后,可以发送MTBP(MarkTimeBetweenPackets)。MTBP标志着一个完整的信息包发送完毕,是下一个信息包即将开始的“空闲位”,数据包之间可以有时间间隔,也可以没有。DMX512协议规定BREAK信号、MAB信号的最短时间,并规定BREAK信号、MAB信号、数据帧之间及数据包之间的时间间隔的最大值不得超过1s,否则当作出错处理,但是DMX512协议并未对出错处理做任何规定。用户可以根据自己的需要进行错误处理。

基于STC12C2052的DMX512解码器主要分为:键盘输入、数码管显示、数据通讯、PWM信号的生成、功率驱动等部分组成。(见图1)

键盘输入部分采用四键盘的外部中断查询的方式,主要是用于解码器的地址码设置,功能选择和设置工作。在解码器正常工作时不需要键盘参与,因此不采用扫描式的键盘,避免消耗CPU的资源。(见图2)

图1

图2四位数码管显示采用数码管专用驱动芯片,这样可以避免单片机扫描数码管显示造成的负担,同时还可以通过驱动芯片提供的功能对数码管进行操作,例如:关断数码管显示、数码管显示闪烁等不同方式来提示当前解码器的状态,如通讯信号正常、通讯信号中断等状态。(见图3)

图3

数据通讯部分采用MAX485与单片机的串口相连接组成单片机的通讯部分。并作了相应的防干扰设计。PWM信号使用STC12C2052提供的四路PWM信号输出,不需要另外增加部件。

如果需要驱动功率设备则需要设计功率放大部分,通过PWM信号控制功率驱动部分实现对大功率器件的驱动。可以通过功率驱动部分驱动步进电机、可控硅调光、大功率LED、大功率继电器等设备。根据需要驱动的大功率设备,所需的功率驱动电路也有所不同。用户可以根据自己的需要设计合适的驱动电路。(见图4)

图4

解码器的程序设计关键在于检测DMX512的Break信号,在检测到Break信号后,紧接着后面就是DMX512的数据包,解码器接收每帧数据并进行计数,直到数值的大小与单片机设置的地址大小相等,解码器才会将连续的四帧数据接收下来放在内存中,同时把数据送到PWM发生器,PWM的发生器就会按照数值生成相应的PWM信号控制灯光的亮度。主程序开始执行,先初始化IO口和各个寄存器。并读取保存在解码器中的本机地址送到数码管显示解码器地址,打开串口中断、定时器中断和外部中断,并开始检测通讯端口的电平变化等待DMX512信号中的Break,一旦检测到Break信号程序即开启计时器计时,当电平再次发生变化时计时器中断并比较计时与Break信号的时长,如果相等程序就认为DMX512通讯已经开始。假如时间不正确程序会重新返回继续等待真正的Break信号的到来。在主程序运行阶段如果有外部中断请求,那么主程序会暂停运行而跳转到外部中断去执行外部中断的请求,如键盘操作请求等。执行完外部中断请求之后,返回主程序继续运行。

基于STC12C252的DMX512解码器,使用器件少、造价成本低、性能稳定。这种设计方案已经广泛应用于LED聚光灯、LED帕灯的控制系统中。通过简单的扩展还可以实现声控和主从控制等功能。

参考文献:

[1]DMX512/1990DIGITALDATATRANSMISSIONSTANDARDFORDIMMERSANDCONTROLLERS.