找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4240|回复: 5
收起左侧

新人求助,单片机对dmx512通讯协议实现问题!!!!!

[复制链接]
ID:65444 发表于 2014-8-25 16:54 | 显示全部楼层 |阅读模式
如何用单片机实现dmx512协议,并且在协议里加载控制程序???
回复

使用道具 举报

ID:26188 发表于 2014-8-25 17:42 来自手机 | 显示全部楼层
你准备用什么芯片?用51还是m3
回复

使用道具 举报

ID:65444 发表于 2014-8-26 08:24 | 显示全部楼层
hujia 发表于 2014-8-25 17:42
你准备用什么芯片?用51还是m3

51吧,我们学的就是51,这个比较熟悉
回复

使用道具 举报

ID:1 发表于 2014-8-27 13:46 | 显示全部楼层
发送程序如下:

#include <reg51.h>
#include <stdio.h>
#include <absacc.h>

#define max_circuit 512

sbit busy = P3^5;
sbit ack = P3^4;
sbit strobe = P3^2;

int idx_in;
int i,j,k;

//Interruption caract鑢e envoy?par PC

input() interrupt 0 using 1 {
        EX0 = 0;
        busy = 1;
        ack = 0;
        XBYTE[idx_in] = P1;
        idx_in ++;
        if (idx_in == max_circuit) idx_in = 0;
        ack = 1;
        busy = 0;
        EX0 = 1;
}

//Initialisation de la liaison s閞ie

void init_serial(void) {
        //DMX ?250kBauds
        TMOD = 0x60;
        SCON = 0x90;
        TI = 0;
}

//Initialisation des variables

void init_prg(void) {
        for (idx_in=0 ; idx_in<max_circuit ; idx_in++) XBYTE[idx_in] = 0xAA;
        idx_in = 0;
        busy = 0;
        ack = 1;
        EX0 = 1;
        PX0 = 0;
        IT0 = 1;
        EA = 1;
}

//G閚閞ation de la trame DMX

void send_dmx() {
        unsigned int count;
        EX0 = 0;
        TB8 = 0;
        TXD = 1;        //break
        TXD = 0;
        for (count=0 ; count<15 ; count++); //attente de 15 cycles d'horloge
        TXD = 1;
        for (count=0 ; count<2 ; count++); //attente de 2 cycles d'horloge
        TB8 = 1;        //MAB
        SBUF = 0x00;
        while (!TI);
        TI = 0;
        for (count=0 ; count<max_circuit ; count++){
                TB8 = 1;
                SBUF = XBYTE[count];
                while(!TI);
                TI = 0;
        }
        TXD = 1;
        EX0 = 1;
}

//Programme principal

void main (void) {
        init_serial();
        init_prg();
        while(1) {
                send_dmx();
                for (i=0;i<3;i++){
                        for (j=0;j<255;j++){
                                for(k=0;k<255;k++);
                        }
                }
        }
}
回复

使用道具 举报

ID:65444 发表于 2014-8-27 14:39 | 显示全部楼层
admin 发表于 2014-8-27 13:46
发送程序如下:

#include

这,这,这。。。。大神,能附带一点解释吗?麻烦了,感激不尽啊!
回复

使用道具 举报

ID:65588 发表于 2014-8-29 19:23 | 显示全部楼层
楼主同求啊!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表