<nav id="gb9pn"></nav>

  1. <form id="gb9pn"><legend id="gb9pn"></legend></form>

    <form id="gb9pn"><legend id="gb9pn"><video id="gb9pn"></video></legend></form>
  2. 当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > DMX512协议及对接口电路的分析

    DMX512协议及对接口电路的分析 时间:2018-04-25      来源:未知

    1、DMX512协议简介

    DMX 是Digital MultipleX 的缩写,意为多路数字传输(具有512条信息的数字多路复用”)。DMX512控制协议是美国舞台灯光协会(usITT)于1990年发布的灯光控制器与灯具设备进行数据传输的工业标准,全称是USITTDMX512(1990);

    DMX512 在其物理层采用EIA-485差分信号,结合可变尺寸,基于分组的通信协议。它是单向的。DMX512不包含自动错误检查和纠正功能,因此不适用于危险应用,如烟火或舞台装置的移动。电磁干扰,静电放电,不正确的电缆端接,电缆过长或电缆质量都可能造成虚假触发,但是在连接控制器(如照明控制台)与调光器和特效设备等都有广泛应用。

    2、DMX512协议分析

    2.1、DMX512指令帧介绍:

    每一个DMX 控制字节叫做一个指令帧,称作一个控制通道,可以控制灯光设备的一个或几个功能。一个DMX 指令帧由1个开始位(S)、8个数据位(D0-D8)和2个结束位(E)共11位构成,采用单向异步串行传输,如图1所示。

    图1 DMX512 定时程序的帧结构(上图)和信息包结构(下图)

    图1 中虚线内控制指令中的S 为开始位,宽度为一个比特,是受控灯具准备接收并解码控制数据的开始标志;

    E为结束位,宽度为两个比特,表示一个指令帧的结束;

    D0~ D7为8 位控制数据,其电平组合从00000000一11111111 共有256个状态(对应十进制数的0~255),控制灯光的亮度时,可产生256个亮度等级,0000~ (0)对应灯光最暗,11111111(255)对应灯光最亮。

    DMX512指令的位宽(每比特宽度)是4 us,每一个指令帧11位,故指令帧宽度为44 us,传输速率为1/44us = 250 kbps。

    2.2、DMX512信息包

    一个完整的DMX512信息包(Packet)由一个MTBP位、一个Break 位、一个MAB位、一个SC 和512个数据帧构成。

    MTBP(Mark TimeBetween Packets)标志着一个完整的信息包发送完毕,是下一个信息包即将开始的“空闲位”,高电平有效。

    Break为中断位,对应一个信息包结束后的程序复位阶段,宽度不少于两个帧(22 比特)。程序复位结束后应发送控制数据,

    MAB位,由于每一个数据帧的第一位(即开始位)为低电平,所以必须用一个高电平脉冲间隔前后两个低电平脉冲,这个起间隔、分离作用的高电平脉冲即MAB(Mark After Break),此脉冲一到,意味着“新一轮”的控制又开始了。

    SC(Start Code)意为开始代码帧(图1中的第0帧),和此后到来的数据帧一样,也是由11 位构成,除最后的两个高电平的结束位之外,其他9位全部是低电平,通常将其叫做第0 帧或第0通道(Ch~nel No 0),可理解为一个不存在的通道(Non一~istent Channe1)。

    表1 DMX512 信息包定时表

    表1 是DMX512 信息包的定时表,表中NS意为自己设定,宽度没有严格限制,由程序设计者自行决定,比如MTBP的宽度可以介于0~1秒之间,其他建议采用典型值。

    调光控制台每发送一个信息包,可以对全部512个受控通道形成一次全面的控制。发送一个信息包的时间大约是23 ms,每秒钟将对所有512个受控通道完成44 次控制,即受控光路的刷新频率44 Hz,如果实际受控通道少于512个,那么刷新频率将相应提高。

    3、DMX512接口电路

    以下是使用RJ45连接器的接线及驱动电路 :

    (XLR-5和RJ45基本类似)

    表2 DMX512 设备使用RJ45连接器的接线表

    图2 DMX512 设备接口驱动电路

    4、C51开发的DMX512发送程序

    [cpp] view plain copy

    1. // 串口工作在方式3

    2. void send_dmx (void)

    3. {

    4. unsigned int count;

    5. EA = 0;

    6. TXD = 1; //break

    7. TXD = 0;

    8. Delay88us();

    9. TXD = 1;

    10. Delay8us();

    11. TB8 = 1; //MAB

    12. SBUF = 0x00;

    13. while (!TI);

    14. TI = 0;

    15. for (count=0 ; count

    16. TB8 = 1;

    17. SBUF = XBYTE[count];

    18. while(!TI);

    19. TI = 0;

    20. }

    21. TXD = 1;

    22. EA = 1;

    23. }

    5、C51开发的DMX512接收程序

    [cpp] view plain copy

    1. // 串口工作在方式3

    2. void uart(void) interrupt 4

    3. {

    4. static bit flag = 0;

    5. if(RI) {

    6. if(RB8 == 0) {

    7. if(SBUF == 0)

    8. flag = 1; //set flag when meet a break

    9. Recv.count = 0; //reset uart data counter

    10. }

    11. else if (flag == 1) {

    12. if(Recv.count == 0) //byte after reset

    13. if(SBUF != 0) //not a start code

    14. flag = 0; //error, reset flag

    15. if(Recv.count >= Recv.addr && Recv.count < Recv.addr + CTL_LEN) {

    16. Recv.dat.Byte[Recv.count - Recv.addr] = SBUF;

    17. }

    18. If (Recv.count < 512) Recv.count++;

    19. else flag = 0;

    20. }

    21. RI = 0;

    22. }

    23. }

    上一篇:MPPT工作流程及算法和硬件的选择

    下一篇:exynos4412处理器对行业影响

    热点文章推荐
    华清学员就业榜单
    高薪学员经验分享
    热点新闻推荐
    前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2021 北京华清远见科技发展有限公司 版权所有 ,京ICP备16055225号-5,京公海网安备11010802025203号

    回到顶部

    welcome购彩中心