性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

DMX512解碼程序問題解決

DMX512解碼程序不能識(shí)別地址編碼器,請(qǐng)高手看看哪里的問題//程序說明:本程序用于實(shí)現(xiàn)LDMX512為接收,DMX512信號(hào)自動(dòng)識(shí)別,當(dāng)無DMX512信號(hào)時(shí), //執(zhí)行自檢程序(七彩跳變) #include #include #include #define uchar unsigned char #define uint unsigned int #define ON 1 #define OFF 0 sbit R = P1^0 ; sbit G = P3^7 ; sbit Y = P3^4 ; sbit COM=P3^0 ; sbit EN_485= P1^7;//MAX485使能口 sbit Work_LED = P1^6;//LED指示燈 sbit DX= P3^1;//串口輸出口 uint Address; //? Set_R, Set_G, Set_B? ;? //3路 接收和設(shè)置地址 bit start_ok, Head_ok; bit DMX512_ok; //DMX512信號(hào)標(biāo)志 uchar cnt; uchar R_dat, G_dat, B_dat ; //RGB三路數(shù)據(jù) uint DMX_channel; //DMX三路的起始地址 uchar PWM; /****************************************************************** - 功能描述:延時(shí)函數(shù) - 隸屬模塊:無 - 函數(shù)屬性:無 - 參數(shù)說明:無???????? - 返回說明:無 - 注:..... ******************************************************************/ void Delay(uint ms) { uint a,b; for(a=ms;a!=0;a--) for(b=1210;b!=0;b--) ; //WDT_CONTR=0x3d; } /****************************************************************** - 功能描述:PWM掃描 - 隸屬模塊:無 - 函數(shù)屬性:無 - 參數(shù)說明:無???????? - 返回說明:無 - 注:..... *****************************************************************/ void RGB(void) { uchar x; for(x=255;x!=0;x--) for(PWM=0;PWM!=255;PWM++) { if(R_dat>PWM) {R=ON;} else { OFF;} if(G_dat>PWM) {G=ON;} else {G=OFF;} if(B_dat>PWM) {Y=ON;} else {Y=OFF;} } } /****************************************************************** - 功能描述:七彩跳變函數(shù) - 隸屬模塊:無 - 函數(shù)屬性:無 - 參數(shù)說明:無???????? - 返回說明:無 - 注:..... ******************************************************************/ void Tianbian(void) {uchar x=1,y; do { switch(x) { case 1: R=ON; G=Y=OFF; Work_LED=0; Delay(10);break; case 2: G=ON; R=Y=OFF; Work_LED=1;Delay(10);break; case 3: Y=ON; G=R=OFF; Work_LED=0;Delay(10);break; case 4: R=G=ON; Y=OFF; Work_LED=1; Delay(10);break; case 5: G=Y=ON; R=OFF; Work_LED=0;Delay(10);break; case 6: Y=R=ON; G=OFF; Work_LED=1;(10);break; case 7: Y=ON; G=R=ON; Work_LED=0;Delay(10);break; default:x=1; break; } if(y++>100) {y=0;x++;} }while(!DMX512_ok); } void main(void) { SCON=0XD0; //UART工作于方式3? 波特率為(1+SMOD)·(定時(shí)器1的溢出率)/32? REN=1接收允許 PCON=0X00; //不倍頻,晶振24M AUXR|=0X40; //T1工作在1T模式*12 TMOD=0X20; //T1工作于8位自動(dòng)重裝模式 TH1 =0XFD; //波特率20833*12=250K TL1 =0XFD; TR1=1; //開定時(shí)器1 IP=1; //設(shè)置串口中斷為最高優(yōu)先級(jí) ES=1; //開UART中斷 EA=1; //開總中斷 /*WDT_CONTR= 0x3d; *///狗 分頻? 16M?? 0.67s cnt=3; //3通道 EN_485=0; //MAX485收發(fā)選擇 EN_485=1發(fā), EN_485=0收 P1M1=0X00; //P1口設(shè)為推挽輸出 P1M0=0XFF; P3M1=0X00; //P3口設(shè)為推挽輸出 7為普通IO P3M0=0XFF; //==================? COM=0; P1=0; Work_LED=0; R=G=Y=ON; Delay(10); Work_LED=1; while(1) { DMX512_ok=0; DMX_channel=145; //WDT_CONTR= 0x3d; RGB(); if(!DMX512_ok) IP=1; { Tianbian(); //無信號(hào) } } } /****************************************************************** - 功能描述:串口中斷函數(shù),實(shí)現(xiàn)DMX512數(shù)據(jù)接收 - 隸屬模塊:無 - 函數(shù)屬性:無 - 參數(shù)說明:無???????? - 返回說明:無 - 注:..... ******************************************************************/ void Rec(void) interrupt 4 { if(RI==1) { RI=0; if(Head_ok) //收到頭碼就可以收數(shù)據(jù)碼 { DMX512_ok=1; if( Address == DMX_channel ) //R 地址比較 { R_dat = SBUF; //取出數(shù)據(jù) cnt--; if(!cnt) { Address = 1; start_ok = 0; cnt=3; Head_ok=0; } } if(Address == DMX_channel+1 ) //G 地址比較 { G_dat = SBUF; //取出數(shù)據(jù) cnt--; if(!cnt) { Address = 1; start_ok = 0; cnt=3; Head_ok=0; } } if( Address == DMX_channel+2 ) //G 地址比較 { B_dat = SBUF; //取出數(shù)據(jù) cnt--; if(!cnt) { Address = 1; start_ok = 0; cnt=3; Head_ok=0; } } if(++Address>=512) // 地址溢出 { Address = 1; start_ok = 0; cnt=3; Head_ok=0; //到此512個(gè)比較完 } } else { if(!RB8) //判斷收到的第九位數(shù)據(jù),只有在DMX送出>88us低電平的中斷信號(hào)時(shí)(也叫同步碼,起始碼,),RB8才會(huì)為0 { start_ok=1; //收到起始位 Address=1; //0-255共256個(gè)通道 } else if(start_ok) { Head_ok=1; // 收到設(shè)備信息數(shù)據(jù) } } } }

 

全部回復(fù)(1)
正序查看
倒序查看
天小明
LV.1
2
2019-10-07 12:08
在嗎?  我想你和研究下dmx512
0
回復(fù)
發(fā)