响应式网站介绍,做网站后台教程视频,沈阳专业网站制作设计,网站建设 苏州1、DMX512协议简介 DMX 是Digital MultipleX 的缩写#xff0c;意为多路数字传输(具有512条信息的数字多路复用”)。DMX512控制协议是美国舞台灯光协会(usITT)于1990年发布的灯光控制器与灯具设备进行数据传输的工业标准#xff0c;全称是USITTDMX512(1990); DMX512 在其物理… 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个状态(对应十进制数的0255)控制灯光的亮度时可产生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的宽度可以介于01秒之间其他建议采用典型值。 调光控制台每发送一个信息包可以对全部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 (count0 ; 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. } 嵌入式物联网需要学的东西真的非常多千万不要学错了路线和内容导致工资要不上去 无偿分享大家一个资料包差不多150多G。里面学习内容、面经、项目都比较新也比较全某鱼上买估计至少要好几十。点击找小助理领取