3dmx快捷键出现这样情况是不是有灯没关?

DMX512-192灯控台操控36颗灯头帕灯为什么只有三个通道灯亮? 为什么没有白光和闪光? 具体怎样编程?_百度知道
DMX512-192灯控台操控36颗灯头帕灯为什么只有三个通道灯亮? 为什么没有白光和闪光? 具体怎样编程?
最好能给个视频或者图文详细的解释
我有更好的答案
然后你把所有推杆都推上去,所有通道效果都出来了吧,如果没有,然后接上控台,在控台上选1号灯,你这么试,把你的灯的地址码调成A001哪里用编程,你是初学者吧
采纳率:27%
为您推荐:
其他类似问题
dmx512的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。135W 12VDC 恒压1-10v调光电源
销售热线:400-800-8171(免长途费)
上海欧切斯实业有限公司
上海市闵行区双柏路888号6号楼3-5楼
总部电话:021-6
传真号码:021-
> dmx控制器是如何实现对多个LED灯具的同时控制的
dmx控制器是如何实现对多个LED灯具的同时控制的
  对于LED灯具的灯光和效果控制,我们看到的都是控制设计后的缤纷效果,很少有人留意这些灯光都是通过什么控制的,其实,这些灯光和光源的闪烁变化和控制都来自于dmx控制器的功劳。那么,这种控制系统是如何实现对从一个到多个灯具和光源的同时控制的呢?在控制的时候,的工作方式或者原理又是什么呢?下面让我们请专家来解答一下这方面的知识。
  首先,要想了解dmx控制器的工作原理和工作方式,我们先来掌握一下什么是dmx控制器。这种控制系统其实就是被广泛的因公与大型的在室外进行装饰的灯饰工程和亮化工程中的一种控制系统,这种控制器一般都采取的是DMNX512类型的。相对来说,我国对于这方面的控制系统的生产和销售情况还是比较好的,国内的一些像欧切斯这样的优秀企业产品甚至能够在国外占有一席之地,而且,产品的质量和口碑一直被业内人士看好。这也是为什么这类企业多年来始终能够在同类型的企业中排在前列的主要原因。
  那么,dmx控制器的工作原理和工作方式又是什么呢?在工作时,是如果做到同时间控制多个LED灯具光源的呢?其实,这种系统的工作原理还不算是太复杂的。它的根本性质是一种同频率同类型的信号类的传输协议,如果具备同样的条件,就可以进行互通和信号的传输了。一般情况下,工作的程序是首先通过dmx控制器。然后是服务器接受相关的解码设备,然后是受控制的led类型的灯具护着是光源,最后是带有这种控制系统同频率的信号的接受灯具。在正常的工作程序启动后,这种控制系统通过以上程序的控制,就会出现我们看到的各种有规律但是又有多彩变化的各种视听效果了。
  另外,dmx控制器的控制器一般都是采用内置的接口的,这种接口在国内普遍都是采用的 3针的接口,而在国外,很多工程多采取的是5针的接口,在跟音频的线路进行连接的时候,需要保证每个舞台灯光效果,因此在进行工作的时候,这种控制系统 一般都采用分散安装的特点,连接电脑但是不需要拆换整机。
相关新闻:
欧切斯,LED调光电源及灯控系统方案商!
获取最新的和产品的相关信息
Please choose if you agree to the privacy policy
地 址:上海市闵行区双柏路888号6号楼3-5楼 销售热线:400-800-8171 (免长途费)&总部电话:021-6&传 真:021
邮 箱:Email :只需一步,快速开始
扫描二维码登录本站
后使用快捷导航没有帐号?
鎺ㄨ崘涓婚
查看: 5026|回复: 2
DMX-512协议
用智能手机或平板电脑扫描一下二维码,即可把帖子装进手机或平板电脑里继续观看哦,快快进行扫描体验吧!
DMX-512协议
* 需二维码识别软件支持,如:微信、QQ等:
DMX-512协议
(1)DMX-512协议简史&&20世纪80年代初,随着计算机技术的发展,数字调光技术逐步出现并逐步取代模拟调光技术,相继出现各种数字传送形式的通信协议,如D54、AVAB、CMX、PMX和EMX等。这些协议,虽然大多利用RS-232或RS-422标准的物理接口,但不同厂商之间还是存在一定的差异,不能通用。为了使各厂商生产的调光台和调光器能相互连接,USITT于1986年制定了专门用于控制台与调光器之间数据通信的标准DMX-512(1987)。协议很快就到世界各国灯光设备厂商的响应。1990年USITT又对DMX-512协议作了修改和补充,成为DMX-512/1990。DMX-512/1990协议的全称是《DMX-512/1990 Digital Data Transmission Standard For Dimmer And Controllers(调光器与控制台用数据传输标准)》,它就是目前正在执行的版本。 此后,著名的美国娱乐业服务与技术协会ESTA(Entertainment Services and Technology Association,)又加入了DMX-512协议的修订工作,日,ESTA发布了修订后的DMX-512标准草案,简称为DMX-512-A。新标准在保护、安全、兼容性等方面作了较多的修改,允许实现双向数据传输,新标准完全向下兼容,即按DMX-512-A标准生产的设备完全可在DMX-512/1990协议下工作。 (2)DMX-512的相关设备与工艺DMX是digital multiplex(数字多路复用)的英文缩写,512表示一对数据线上可同时传输512个通道的调光控制信号。 该标准对信号传输的相关电气特性、数据格式、数据协议、插接件和线缆等方面作了规定。DMX-512标准定义下,512路灯光控制号可以用一对信号线传输,另外还有一根额外的电线作为参考“信号地”。DMX的两根信号线分别叫“DMX—&和&DMX+&,两根DMX信号线和普通线绞合在一起,形成外部屏蔽,以减少感应干扰。目前常用的DMX信号插接件为5芯的XLP传声器插头和插座。DMX允许的有效传输距离为250m。条件是使用优质信号线。合格的DMX信号线要求导体截面积约0.34mm2,阻抗120Ω,带金属网状屏蔽层。建议选用两对绞线加屏蔽线的信号线,因为有些设备要双向传输信号或供电,剩下的一对绞线也可作备用之需,为防止电磁干扰,DMX线路应远离电力电缆,尤其是调光器的强电电缆不应与DMX信号电缆敷设在同一个线管或线槽中。DMX-512协议要求使用5芯插接件,一般只用其中3芯。绝大多数生产商都采用5芯插接件,只有Martin(马田)、HIGH-END(灯浪)等产品采用3芯插接件。3芯插接件的1引脚接地,2引脚为数据码线(黑色,一反相),3引脚不控制数据线(白色,+丰反相)。5芯插接件余下的2芯一般作不备用,也有的厂家用4芯和5芯来传输失效信息和反馈灯具目前的状态。插头/插座的外形和引脚定义如图
各种接收DMX信号的设备都有一DMX输入的IN端口和一个用于并接下一设备的THRO端口,并具有起始地址的设置装置,如二进制DIP开关、十进制旋转开关、带有显示的数字按钮及起始回路设置处理部分。设备的连接为菊花链形式。一个DMX-512输出端口可以控制512个控制通道,但由于传输器件的限制一般最多只能驱动32个接收设备,如超过32个设备需使用DMX信号放大器。如前所述,DMX信号的最大传输距离在使用标准线缆的情况下约为300m,超过此距离,应加入放大器。如线缆质量低下,传输距离会大大缩短。因此在实际应用中,为了保证系统能可靠地工作,除用质量较好的线缆外,传输距离为200m左右应加入信号放大器。由于DMX-512的传输速率高达250kbit/s,根据电子理论,为了消除电波在传输中的反射,达到可靠传输数据的目的,应在最后一个接收设备的THRO端接入一个阻抗约为120Ω、功率不小于0.25W(或收1/4W)的终端器。 在DMX信号发生、传输、分配处理、转换和实施控制的过程中,需有各种设备的配合,这些设备统称为DMX相关设备。下面介绍几种常用的DMX相关设备。①DMX发送器:一个DMX系统至少配置一个发送器和一个接收器。DMX发送器是产生DMX信号的设备,通常包含在调光台、电脑灯控制台、换色器控制里面。图6-51是英国ARTISTIC公司的DMX测试器,它主要功能是测试输入DMX信号的时序与标准DMX-512信号之间的偏差情况,同时它带有一个通道的DMX信号输出口,用作测试带DMX接口的灯具和调光器等,因此其结构里面也同时包括了一个典型的DMX发送器。 ②DMX接收器:任何一个可以被DMX信号有效控制的设备(如调光器、电脑灯、换色器等)都包含一个DMX接收器。为了让接收器准确接收到从DMX发送器发出的信息,需要选择DMX信号的起始地址。设备的地址选择一般包括三个旋转编码开关:一个开关选择个位,一个开关选择十位,第三个选择百位,如图6-52所示。有些厂家使用的开关选用二进制编码的十进制数(BCD)信息。BCD是一种用二进制形式来表达十进制数的方法,例如十进制数3就是BCD0011,十进制数11用BCD来表示就是0011。学计算机相关专业的都了解8421编码格式。可以很快口算出来。 近年来更多产品采用LED数码管/液晶界面和选择按钮操作来选择DMX信号的起始地址。大部分的接收器具有1个DMX接口,个别设备为了性能上的需要,具有2个或以上的DMX接口。最典型的双DMX接收器是双DMX输入调光器,可同时受两个DMX调光台控制,回路输出遵从“大者优先”原则,如图6-53所示。 ③DMX终端连接器:DMX终端连接器是一个吸收DMX反射信号的电阻器,反射信号可以抵消和破坏输入的DMX信号的强度,严重时会导致DMX网络不能正常运行。在两根数据线末端采用DMX终端连接器,则可以使用网络无限延长。在传输距离短、接收设备少的条件下,不接入DMX终端连接器有时也能正常工作。电阻器的阻抗一般选择在90~150Ω。最好使用120Ω的DMX终端连接器。DMX终端连接器应用在每根数据线的末端,可以是最后一个电脑上或者硅柜电缆的末端。 ④信号分配放大器:DMX调光网络使用信号分配放大器(DA)的目的是可以发送多路不同的DMX信号。在DMX信号连接中,当线路超过300m(放宽一些到500m)或接收设备超过32个时,需要有中继放大器来放大信号。各厂商不同功能的分配放大器一般都具备光电隔离和放大电路,各路信号完全分离,如果一路或者“一个区域”的DMX调光网络出现问题时,不会影响到其他设备的正常使用。例如:转发器(repeater)—又称为缓冲放大器,起隔离和提高DMX信号电平作用;分路放大器(splitter)——起放大和分路作用,可向不同方向发送多路的DMX信号,也称为分配放大器( distribution amplifiers或booster)的类似产品。 DMX信号分配放大器通常有一路DMX信号输入,四路、六路、或八路DMX独立输出,每个输出口配一个5芯音频阴座,如图6-55所示。有些放大器还有指示显示DMX信号是否存在,放大器的每路输出是否都正常。 ⑤DMX信号合并设备:DMX信号合并设备又称“二合一”设备。它可以将两个不同的DMX信号“合并”在一起形成一种合成的DMX信号。“二合一”设备的DMX信号输出遵守“大者优先”原则,在两个以上调光台需连接到DMX网络时,例如主调光台和一个备份调光台连接起来,形成一种合成信号控制调光器和其他DMX设备时,就需要用到“二合一”设备。“二合一”设备实际上是一台高速的单片计算机,能够高速处理两个512光路DMX数据组。“二合一”设备通常和信号分配放大器一起放在中央配线箱里面。一般的“二合一”设备只处理一组“二合一”信号,近期有些厂家为了适应日益扩大的演出规模,推出了2组、4组、6组和8组“二合一”设备。 ⑥DMX D/A转换设备:某些剧场或演播室,购买了新的DMX信号输出调光台的同时需要保留部分模拟调光器。这就需要将来自数字调光台的DMX信号转换为模拟控制信号,以匹配0~10V调光器的输入,组成所谓“半数字调光控制系统”。国内、外很多厂家都生产这种DMX-模拟量的D/A转换设备。可以将其做成标准机机架的产品,也可以做成插接件(转换板)的形式装到原有的模拟调光器内部。这类设备又被称为DMX解码器。
⑦协议转换器:在20世纪80年代和90年代早期,人们普遍应用DMX-512标准之前,国外很多生产厂家一直生产着带有各自协议的产品。这些产品也有部分应用到我国的演播室。有些用户想要保留这些设备,然而又希望这些旧的设备能够连接新的DMX设备。为了满足这些要求,国外的些厂家生产出各种协议转换器。协议转换器可以接收多个协议,并将它们转换成为DMX协议或者接收DMX然后转换为其他的协议。通常需要转换的协议有Colortran 公司的CMX、ADB公司的S20和Strand 公司的D54等协议。⑶DMX-512信号的数据格式DMX-512信号的数据格式如图6-56所示:以帧为单位,每帧数据由同步头和512B组成,按串行方式进行数据发送和接收,数据传输速率为250kbit/s。 DMX-512信号的同步头告诉接收设备:后面有512B的串行数据发送过来,请做好接收准备工作。对于调光控制系统(如舞台基础照明用的聚光灯、泛光灯),每一个字节的数据表示调光亮度值,用2位十六进制数表示(从00H~FFH),其中00H表示0%,FFH表示100%。第一个字节表示第一路亮度值,第二个字节表示第二路亮度值.....第512个字节表示第512路亮度值。对于电脑灯,这512个数据表示另外一种含义(如颜色、图案、速度、角度),电脑灯型号不同,其数据组合方式也不同。这是另外一个问题,将在电脑灯一章中讲述。下面对DMX-512信号数据格式作进一步说明。 DMX-512协议可以较好地区分真正的信号噪声。数字控制信号通过一个均衡的串行高速数据协议,以两个方向相反的电压值来传输:OV就等于逻辑“0”,而2.5~5V就等于逻辑“1”。当一个信号被发送到一根电缆时,就有一个相等的反向信号被发送到另外一根电缆上。接收设备可以区分两根电缆上电压的不同。就算两根电缆上都有噪声产生,也可以产生一个抵消效果,从而使双绞线电缆的干扰相等。因而DMX-512协议具备传输的高效性和接收的可靠性。DMX-512信号帧结构如图6-57所示。 DMX-512协议规定用250kbit/s传输速率传输回路控制信号,即发送图中各数字和符号含义如下:①符号SYNC代表同步头,在每个DMX信息包头部,用于对数据进行接收检测,其电平为低电平,宽度为0.08~10ms;②符号F为信息包分离位,其电平为高电平,宽度为≥4μs;③符号S为信息包的厂商信息;④符号D0~D7代表数据的第1~8位,其电平根据数据而定;⑤符合R无具体意义,电平可高可低;⑥符号E代表每个数据的停止位,其电平为高电平;⑦空闲位电平须用软件置高(电平)。 一个二进制码(1个bit)需4μs的时间。每路灯光信号数据用11个二进制码(11个bit)表示,前2位为起始码,后1位为停止位,中间8位为亮度数据,表示0~255的256级亮度。每路灯光信号数据也称为1帧,发送1帧DMX数据的时间为444μs。DMX采用连续发送的方式发送数据,最多可是发送512路灯光亮度信号数据,512路灯光亮度信号数据又称为一个信息包或数据包,如图6-58所示。
信息包的第1帧称为起始的数据,用于表示厂商或其他功能。第2帧是第1个回路有亮度数据,第3帧是第2个回路的亮度数据,依此类推,一直到最后发第512回路的亮度数据,因此共发513帧数据。传送全部512路信号信息包至少需要22.66ms,即每秒最多可发送44个信息包。第一个信息包发出之后,DMX-512协议规定线路必须发送最少连续两个完整的帧(最少884μs,一般为100~2004μs)低电平信号(又称同步信号)。因为DMX不发送地址码,够确认哪一个数据是一个新信息包的开始,从而可以按设定接收相应的帧数据。 ⑷数字信号的多路传输DMX-512通信协议规定编码脉冲的时间间隔为4μs,由8bit脉冲组成一个码组,代表256个信号电平。8bit组成一个字节(Byte)。每台调光器的控制信号由一个8bit码组构成一个数据通道。DMX-512信号最多可支持512个数据通道。调光台提供各路调光器的数字控制信号并按顺序从调光台的通道1到最高通道编号连续周而复始循环发送信号。为使接收装置(调光器)与发送信号同步,在一个由8bit组成的字节中,另外还有3bit加入到字节,它们一个作为开始位(低电平),另外两个作为停止位(高电平),发送这11bit组成的数据帖需花费的时间长度为4μs x 11=44μs。图6-59所示为一个数据帧的结构。 如果线路上连续发送各调光器的这些数据帧(即各数据帧之间没有空闲间隙时间),那么每秒可发送4μs间隔的数据帧250000bit。这就是DMX-512信号最高的数据传输速率,即250kbit/s。为确认接收通道1(称为基准通道),在1~512个数据帧全部发送结束后还需设置一个“中断”标记信号,中断标记信号结束后再开始一个1~512通道数据帧的发送。中断标记信号是一个88μs长度的连续低电平信号(这是两个完整数据帧的长度)。在中断结尾还有一个称为“中断后的标志”(mark-after-break/m.a.b)的8μs长度的高电平信号。跟随m.a.b后发送的是一个称为“开始码”(start-code)的44μs长度的字节,调光器把这个低电平字节数据作为零值。零值开始码后跟随的是第1个调光器的8bit数据。包括m.a.b在内的全部512个调光器的字节称为DMX-512信号的一个信息包,其结构如图6-60所示。
拜读了。谢谢。
三只眼闲人 发表于
拜读了。谢谢。
欢迎了解灯控各方面的技术问题
官方新浪微博
官方腾讯微博查看: 13211|回复: 40
我在此分享一份DMX512协议的发送程序,希望对做灯光控制的人有一定的帮助(我测试过了跟DMX512控制台发出的方波是一样一样的)
主题帖子精华
高级会员, 积分 609, 距离下一级还需 391 积分
在线时间236 小时
66ada3e4efb3fdc872cdd_881.gif (0 Bytes, 下载次数: 0)
22:54 上传
这是DMX512发送的数据帧格式
我是做灯光控制的,但是涉及到DMX512协议我就一窍不通,所以赶紧在网上找相关的资料来恶补一下,就在网上了解DMX512协议是只发或只接收,是单向的,但是要处理好起始标志否则你接收不到正确数据!
数据位是9位,1位停止位,无奇偶校验,无硬件流,波特率固定是250000;
以下是模拟DMX512发出的数据帧,接收程序在网上一搜就有~
有需要DMX512接收程序的跟我说下,我就会把它贴出来分享给大家!
走过路过千万不要错过,希望大家看到的能帮忙为这个贴留个言,把帖顶起来让更多像我一样初学者能少走一些弯路把项目做好!
(非常喜欢原子的开源精神,希望大家能把原子的论坛炒热起来,这样路过的大神就能在这多分享一些好东西,我们这些初学者也就能多多学习一些知识!谢谢大家!)
u8 TXDData[530]; //接收缓冲区200个数据
/************************************************************
*函数名称:void uart2_init(u32 bound)
*功 & &能:串口2初始化函数
*说 & &明:初始化IO 串口2
*输入参数:bound=波特率
*输出参数:无
*************************************************************/
void uart2_init(u32 bound) //串口2初始化函数
//GPIO端口设置
& GPIO_InitTypeDef GPIO_InitS
USART_InitTypeDef USART_InitS
NVIC_InitTypeDef NVIC_InitS
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); &//使能USART2
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);
//使能引脚复用,GPIOA时钟
& USART_DeInit(USART2); &//复位串口2
//USART2_TX & PA.2
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.2
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure);
//初始化PA2
//USART2_RX
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //PA3
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); &//初始化PA3
& //USART 初始化设置
USART_InitStructure.USART_BaudRate
& & & & //一般设置为9600;
USART_InitStructure.USART_WordLength
= USART_WordLength_9b; & & & & & //字长为8位数据格式
USART_InitStructure.USART_StopBits
&= USART_StopBits_1; & & & & & & &//一个停止位
USART_InitStructure.USART_Parity
= USART_Parity_No; & & & & & & & //无奇偶校验位
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_N//无硬件数据流控制
USART_InitStructure.USART_Mode
= USART_Mode_Rx | USART_Mode_Tx; //收发模式
USART_Init(USART2, &USART_InitStructure);
//初始化串口2
//USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启接收中断
//USART_ITConfig(USART2, USART_IT_TXE, ENABLE); //开启发送中断
USART_Cmd(USART2, ENABLE); & & & & & & & & & &//使能串口2
/*******************************************************************************
* 函数名称:void DMX_init(void)
* 功能描述:DMX512初始化
* 参数含义:无
* 备 & &注: 无
*********************************************************************************/
void DMX_init(void) //DMX512初始化
& TXDData[0] = 0; //起始码00
& for(i = 1; i&=512; i++)
& & &TXDData = 0;
uart2_init(250000);//串口2初始化函数-&发送DMX512
/*******************************************************************************
* 函数名称:void GPIO_Tx_Normal_Config(void)
* 功能描述:发送引脚变为普通IO
* 参数含义:无
* 备 & &注: 无
*********************************************************************************/
void GPIO_Tx_Config(u8 Set)
& GPIO_InitTypeDef &GPIO_InitS
& //设置发送的引脚为普通IO
& GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
& GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
if(0 == Set)
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //普通IO
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; &//复用IO
& GPIO_Init(GPIOA, &GPIO_InitStructure); //引脚初始化
/*******************************************************************************
* 函数名称:void DMX_SendPacket(void)
* 功能描述:DMX512发送数据&
* 参数含义:无
* 备 & &注: 无
*********************************************************************************/
void DMX_SendPacket(void) //发送DMX512数据
//配置为普通IO
pDMX_buf = 0;&/*发送起始码 00*/
GPIO_Tx_Config(0);
//设置发送的引脚为普通IO
//输出低电平
delay_us(150);
//延时150us
//输出高电平
delay_us(13);
//延时13us
GPIO_Tx_Config(1);
//设置发送的引脚为复用IO
& //USART1-&DR = 0x0100 | TXDData[0]; //第0帧前导码
& //while((USART2-&SR&0X40)==0);//循环发送,直到发送完毕
IWDG_ReloadCounter(); & &//喂狗
while(pDMX_buf &= 18) //1-512 195
while((USART2-&SR&0X40)==0);//等待,直到发送完毕
& & if(USART2-&SR & (1&&6))
USART2-&DR = 0x0100 | TXDData[pDMX_buf];
& & & &pDMX_buf++;
16:34 上传
点击文件名下载附件
330.84 KB, 下载次数: 2983
主题帖子精华
新手入门, 积分 40, 距离下一级还需 -20 积分
在线时间0 小时
顶起来!&顶起来!&顶起来!
主题帖子精华
高级会员, 积分 609, 距离下一级还需 391 积分
在线时间236 小时
回复【2楼】杨子2015:
---------------------------------
谢谢!非常感谢你的支持,希望大家都能去留留言,支持一下发帖人
主题帖子精华
在线时间349 小时
谢谢分享!!!不错啊
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
主题帖子精华
高级会员, 积分 609, 距离下一级还需 391 积分
在线时间236 小时
回复【4楼】八度空间:
---------------------------------
感谢支持!!!
主题帖子精华
金钱122901
在线时间1014 小时
谢谢分享....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
新手入门, 积分 28, 距离下一级还需 -8 积分
在线时间0 小时
QQ:&本人也在写STM32&dmx12发送程序,一直不成功,楼主能把源码打包发给我不,十分谢谢啦!!
主题帖子精华
高级会员, 积分 609, 距离下一级还需 391 积分
在线时间236 小时
回复【7楼】yuxuanwlfei:
---------------------------------
既然你诚心诚意的要求了,那么我就大发慈悲的贴出来给大家吧!(嘿嘿,我就是火箭队,不。。。不是火箭队!)
哈哈~开个玩笑,记得给我个赞哟~
主题帖子精华
金钱122901
在线时间1014 小时
回复【8楼】潜龙探渊:
---------------------------------
谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
新手入门, 积分 28, 距离下一级还需 -8 积分
在线时间0 小时
回复【8楼】潜龙探渊:
---------------------------------
撸主好人呀...跪谢啦...
主题帖子精华
新手入门, 积分 28, 距离下一级还需 -8 积分
在线时间0 小时
回复【8楼】潜龙探渊:
---------------------------------
请问楼主,如何实现读SD卡中的BIN文件然后通过串口发送DMX512数据...?
主题帖子精华
高级会员, 积分 609, 距离下一级还需 391 积分
在线时间236 小时
回复【11楼】yuxuanwlfei:
---------------------------------
先把SD卡中的BIM文件数据读出来存到DMX512的发送数组里就可以发了,因为DMX512是一直在发送的~
主题帖子精华
新手入门, 积分 28, 距离下一级还需 -8 积分
在线时间0 小时
回复【12楼】潜龙探渊:
---------------------------------
由于DMX512播放文件有30M那么大,所以无法缓存那么大的数据,我是采用先读取SD卡BIN中的数据,每次读512一个,然后通过DMX_SendPacket();这样一直循环发送,可这样会有个读取数据的延时,导致LED闪烁,请问如何解决此问题???
void&DMX512_Play_bin(unsigned&char&*pic_name)
&&&&int&i,&j;
&&&&unsigned&char&tmp_name[20];
BYTE&*&pdata&=&pColorD
BYTE&*&tmp_
&&&&unsigned&int&read_
&&&&sprintf((char*)tmp_name,"0:%s",pic_name);
&&&&f_mount(0,&&bmpfs[0]);
&&&&bmpres&=&f_open(&&bmpfsrc&,&(char&*)tmp_name,&FA_OPEN_EXISTING&|&FA_READ);
&&&&if(bmpres&==&FR_OK)
//&&&&&&&&printf("Open&file&success\r\n");
//&&&&&&&&printf("file&open&fail!\r\n");
for(j=0;j&300;j++)&&&
//300表示一幅图片含有300x512字节的信息
tmp_pdata&=&NULL;
f_lseek&(&bmpfsrc,(512*j));
f_read(&bmpfsrc,pdata,512,&read_num);
tmp_pdata&=&
for(i=1;i&512;i++)&&&&&&&&&&&&&&&&&&&&
&&&&& DMX_buf&=&LD_WORD(tmp_pdata);&
DMX_SendPacket();
&&&&f_close(&bmpfsrc);&&
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
void DMX_SendPacket(void)
&&& u16 pDMX_buf=0;
&//配置为普通IO
&GPIO_Tx_Normal_Config();&&&&&& //设置发送的引脚为普通IO
&GPIO_ResetBits(GPIOA,GPIO_Pin_2);&&&&&& //输出低电平&&&&&&&&&&
&delay_us(150); &&&&&&&//延时150us
&GPIO_SetBits(GPIOA,GPIO_Pin_2); &&//输出高电平
&delay_us(13); &&&&&&&//延时13us
&GPIO_Tx_Usart_Config();&&&&&//设置发送的引脚为串口
&&& USART2-&DR = 0x0100 | 0x00;&&&&&& //第0帧前导码,发送起始码
&&& while((USART2-&SR&0X40)==0);&&&&&&&&&&& //循环发送,直到发送完毕
&while(pDMX_buf & 512) //1-512
&&while((USART2-&SR&0X40)==0);&&&&&&& //循环发送,直到发送完毕
&&&&&&& if(USART2-&SR & (1&&6))
&&&&&&& {&
&&&USART2-&DR = 0x0100 | DMX_buf[pDMX_buf];
&&&&&&&&&&& pDMX_buf++;
&&&&&&& }&
int main(void)
&NVIC_Configuration();
//&&& ili9320_Initializtion();
&&& RCC_Configuration();&&&
&&& GPIO_ConfigurationA();&&
&&& DMX_init();&&
&while(1)&&&
&&DMX512_Play_bin("/DMX512.bin");
//&&&&& DMX_SendPacket();
12:00 上传
点击文件名下载附件
6.03 MB, 下载次数: 8686
主题帖子精华
高级会员, 积分 609, 距离下一级还需 391 积分
在线时间236 小时
回复【13楼】yuxuanwlfei:
---------------------------------
弄两个512字节的数组乒乓切换不就行了
主题帖子精华
新手入门, 积分 28, 距离下一级还需 -8 积分
在线时间0 小时
回复【14楼】潜龙探渊:
---------------------------------
但是要不停的读SD卡的DMX512数据,有30M那么大,还要不停的通过串口DMX512发送数据,若采用乒乓数组发送,那SD卡的数据如何与乒乓数组衔接?
主题帖子精华
高级会员, 积分 609, 距离下一级还需 391 积分
在线时间236 小时
回复【15楼】yuxuanwlfei:
---------------------------------
我也不是很懂,要不你请像原子这样的大神来帮你下
主题帖子精华
新手入门, 积分 28, 距离下一级还需 -8 积分
在线时间0 小时
回复【16楼】潜龙探渊:
---------------------------------
那你那有DMX控制器读SD开BIN发送标准DMX512的程序不,我现在做的就是要实现这个功能的。
主题帖子精华
高级会员, 积分 609, 距离下一级还需 391 积分
在线时间236 小时
回复【17楼】yuxuanwlfei:
---------------------------------没有
主题帖子精华
新手入门, 积分 21, 距离下一级还需 -1 积分
在线时间0 小时
回复【18楼】潜龙探渊:
---------------------------------
今年进了某舞台灯光公司,现在也在学习STM32和DMX512,先顶,多谢楼主,有空多交流。
主题帖子精华
高级会员, 积分 609, 距离下一级还需 391 积分
在线时间236 小时
回复【19楼】圆运动:
---------------------------------
好的好的
主题帖子精华
初级会员, 积分 61, 距离下一级还需 139 积分
在线时间0 小时
顶!!!刚学STM32,现在在弄DMX512,正一头雾水,有空求多指教啊。
主题帖子精华
新手入门, 积分 21, 距离下一级还需 -1 积分
在线时间0 小时
正在做DMX512,下载研究一下先
主题帖子精华
新手入门, 积分 23, 距离下一级还需 -3 积分
在线时间0 小时
想请教楼主, 如果接收程序在编写的时候肯定不能使用固定的通道号,因为不知道实际接几个灯,是不是还要另外设计写码器啊。如果不用写码器用什么方法实现,谢谢。
主题帖子精华
初级会员, 积分 138, 距离下一级还需 62 积分
在线时间6 小时
楼主我想问一下DMX512数据帧:数据位是9位,1位停止位,无奇偶校验,无硬件流,波特率固定是250000好像跟我看到的标准不一样??
应该是---DMX512&协议规定数据以数据包的形式通过异步通讯的方式进行传输。每个
数据包由若干数据帧组成,&每帧数据包括1&位低电平起始位、8&位数据位和2&位
高电平停止位。DMX512&协议要求数据传输的波特率为250kbps,&亦即每位的传
输时间为4us,&每帧数据的传输时间为44us,&它支持多达512&帧数据传输,&每帧
数据与相应的控制支路相对应。
以上有点疑问,数据帧到底要哪个为准?
做人要出于情,做事要出于心!
主题帖子精华
高级会员, 积分 609, 距离下一级还需 391 积分
在线时间236 小时
回复【23楼】freewaterzws:
---------------------------------
用硬件实现通道选择咯
主题帖子精华
高级会员, 积分 609, 距离下一级还需 391 积分
在线时间236 小时
回复【24楼】pandy:
---------------------------------
我是实际用示波器测量出来的波形跟图片的波形一样就可以正常跟非标准DMX512控制台通信了
主题帖子精华
中级会员, 积分 206, 距离下一级还需 294 积分
在线时间15 小时
ding,shu&ru&fa&peng&kui&le,zhi&neng&ping&ying&le...............................
主题帖子精华
新手入门, 积分 21, 距离下一级还需 -1 积分
在线时间0 小时
支持。。。。。
主题帖子精华
新手入门, 积分 21, 距离下一级还需 -1 积分
在线时间0 小时
顶起!!!!!!!!!!!!!
主题帖子精华
金牌会员, 积分 1139, 距离下一级还需 1861 积分
在线时间265 小时
支持一下楼主
主题帖子精华
中级会员, 积分 230, 距离下一级还需 270 积分
在线时间24 小时
不知道楼主还上不上来,有几个小问题想讨教一下楼主呢!
主题帖子精华
初级会员, 积分 92, 距离下一级还需 108 积分
在线时间27 小时
楼主 把接收的发一下呗 急需&&跪谢
主题帖子精华
高级会员, 积分 609, 距离下一级还需 391 积分
在线时间236 小时
楼主 把接收的发一下呗 急需&&跪谢
哦,那我要找一下了,因为太久了程序都不知道放哪里啦
主题帖子精华
高级会员, 积分 609, 距离下一级还需 391 积分
在线时间236 小时
/************************************************************
*函数名称:void uart2_init(u32 bound)
*功& & 能:串口2初始化函数
*说& & 明:初始化IO 串口2
*输入参数:bound:波特率
*输出参数:无
*************************************************************/
void uart2_init(u32 bound) //串口2初始化函数
//GPIO端口设置
&&GPIO_InitTypeDef GPIO_InitS
& & & & USART_InitTypeDef USART_InitS
& & & & NVIC_InitTypeDef NVIC_InitS
& & & & RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);&&//使能USART2
& & & & RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);& & & &&&//使能引脚复用,GPIOA时钟
& & & & USART_DeInit(USART2);&&//复位串口2
& & & & //USART2_TX& &PA.2
& & & & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.2
& & & & GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
& & & & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;& & & & //复用推挽输出
& & & & GPIO_Init(GPIOA, &GPIO_InitStructure); & & & & & & & & //初始化PA2
& & & & //USART2_RX& & & && &PA.3
& & & & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //PA3
& & & & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
& & & & GPIO_Init(GPIOA, &GPIO_InitStructure);&&//初始化PA3
&&//Usart2 NVIC 配置
&&NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
& & & & NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;&&//抢占优先级2
& & & & NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;& & & & & & & & & & & &&&//子优先级3
& & & & NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;& & & & & & & & & & & & & & & && & //IRQ通道使能
& & & & NVIC_Init(&NVIC_InitStructure);& & & & //根据指定的参数初始化VIC寄存器
&&//USART 初始化设置
& & & & USART_InitStructure.USART_BaudRate & & & & & & & & & & & & & & & & & & & & & & & & =& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & && && && & //一般设置为9600;
& & & & USART_InitStructure.USART_WordLength & & & & & & & & & & & & & & & & & & & & = USART_WordLength_9b;& && && &&&//字长为8位数据格式
& & & & USART_InitStructure.USART_StopBits & & & & & & & &&&& & & & & & & & & & & && &= USART_StopBits_1;& && && && &&&//一个停止位
& & & & USART_InitStructure.USART_Parity & & & & & & & & & & & & & & & & & & & & & & & & & & & & = USART_Parity_No;& && && && && &//无奇偶校验位
& & & & USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_N//无硬件数据流控制
& & & & USART_InitStructure.USART_Mode & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & = USART_Mode_Rx | USART_Mode_Tx; //收发模式
& & & & USART_Init(USART2, &USART_InitStructure); & & & & & & & & //初始化串口2
& & & & USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启接收中断& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&&//接收个数清零
& & & & USART_Cmd(USART2, ENABLE);& && && && && && &&&//使能串口2
/************************************************************
*函数名称:void USART2_IRQHandler(void)&&
*功& & 能:串口中断函数
*说& & 明:串口2中断服务程序
*************************************************************/
void USART2_IRQHandler(void)& && && && && & & & & & //串口2中断服务程序
& & & & static u16 UDR=0;
& & & & static u16 RXB8=0;
& & & & static uint16_t pDMX_buf = 0;&&//数据指针
& & & & static uint8_t fDMX_buf_right = 0;
& & & & if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)//USART_FLAG_RXNE
& & & & & & & & IWDG_ReloadCounter();& & //喂狗
& & & & & & & & UDR&&= USART_ReceiveData(USART2);&&//16bit&&0-8&&9bit
& & & & & & & & RXB8 = (UDR&0x0100);&&//得到第9位数据
& & & & & & & & if(RXB8 == 0) //如果是复位信号
& & & & & & & & {& &
& & & & & & & & & & & & if(!UDR) //如果数据为0
& & & & & & & & & & & & {
& & & & & & & && &&&fDMX_buf_right = 1; //接收数据正确
& & & & & & & & & & & & & & & & pDMX_buf = 0;& && & //直接接收第一个数据,不保存第0个数据
& & & & & & & && &}
& & & & & & & & }
& & & & & & & & else&&//rxb8=1 pDMX_buf =1 调光数据
& & & & & & & & {
& & & & & & & & & & & &&&if(1 == fDMX_buf_right)
& & & & & & & & & & & &&&{
& & & & & & & && && &RXDData[pDMX_buf++] = (u8)UDR; //得到8位的数据
& & & & & & & & & & & & & & & &&&//接收到0-192个数据
& & & & & & & & & & & & & & & &&&if(pDMX_buf & 20)
& & & & & & & & & & & & & & & &&&{
& & & & & & & & & & & & & & & & & & & & & & & & fDMX_buf_right = 0;
& & & & & & & & & & & & & & & & & & & & & & & & DMXSignalFlag = 1; & & & & & & & & //更新调光数据
& & & & & & & & & & & & & & & &&&}
& & & & & & & && & }
& & & & & & & & }
//--------------------------------接收中断---------------------------------------------& & & &
&&if(USART_GetITStatus(USART2, USART_IT_TXE) != RESET)
& && &// Disable the USART2 Transmit interrupt
& && &USART_ITConfig(USART2, USART_IT_TXE, DISABLE);& & & &&&//清中断 要不然一直执行此中断 OK
主题帖子精华
初级会员, 积分 92, 距离下一级还需 108 积分
在线时间27 小时
哦,那我要找一下了,因为太久了程序都不知道放哪里啦
主要通过485接受DMX数据,DMX512中break的88us和MAB的8us如何处理判断
主题帖子精华
新手入门, 积分 23, 距离下一级还需 -3 积分
在线时间3 小时
为什么发送的时候IO需要变为普通Io
主题帖子精华
高级会员, 积分 609, 距离下一级还需 391 积分
在线时间236 小时
为什么发送的时候IO需要变为普通Io
因为要发送头帧的波形
主题帖子精华
初级会员, 积分 84, 距离下一级还需 116 积分
在线时间5 小时
你好,我直接用串口转485线接DMX512上,用串口助手设置波特率256000,然后发送命令下去就能控制,但每次控制后,它自己又会变色,是怎么回事呢?是波特率跟时序的问题导致数据错位吗
主题帖子精华
高级会员, 积分 609, 距离下一级还需 391 积分
在线时间236 小时
你好,我直接用串口转485线接DMX512上,用串口助手设置波特率256000,然后发送命令下去就能控制,但每次控 ...
波特率不对
主题帖子精华
初级会员, 积分 155, 距离下一级还需 45 积分
在线时间19 小时
主题帖子精华
初级会员, 积分 84, 距离下一级还需 116 积分
在线时间5 小时
波特率不对
不是,需要一直发送命令
Powered by

我要回帖

更多关于 3dmx怎么进行多个布尔 的文章

 

随机推荐