完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include # define Red 0 # define Yellow 1 # define Green 2 # define Cyan 3 # define Blue 4 # define Purple 5 # define White 6 # define Black 7 # define Orange 8 # define Pink 9 ***it DMX512_OUT=P3^1; bit Uart2_Flag=0; unsigned char T0RH=0; unsigned char T0RL=0; unsigned int cmr4us=0; unsigned char index=0,Pixels_Group=0; unsigned char xdata Work_Data_Buff[512]; unsigned char Fade; void Configtimer0(unsigned char ms); void ConfigUART(unsigned long baud); void DMX512_Head(); void DMX512_TXD(unsigned char dat); void Color_Set(unsigned int Ch1,unsigned int Ch2,unsigned char Color); void Send_Dmx_Data(void); void main() { EA=1; ConfigTimer0(22); ConfigUART(250000); while(1) { switch(index) { case 0:Pixels_Group=0;Fade=255; Color_Set(0,31,0);Send_Dmx_Data(); break; default:break; } } } void DMX512_TXD(unsigned char dat) { cmr4us=0; DMX512_OUT=1; while(cmr4us<400); DMX512_OUT=0; while(cmr4us<402); DMX512_OUT=1; while(cmr4us<403); Uart2_Flag=0; SCON|=0X08; SBUF=dat; while(!Uart2_Flag); } void Color_Set(unsigned int Ch1,unsigned int Ch2,unsigned char Color) //参数: 起始通道,结束通道,颜色 { unsigned char R_data,G_data,B_data; unsigned int i; switch ( Color) { case Red : R_data = Fade; G_data = 0x00; B_data = 0x00; break; case Green : R_data = 0x00; G_data = Fade; B_data = 0x00; break; case Yellow : R_data = Fade; G_data = Fade; B_data = 0x00; break; case Blue : R_data = 0x00; G_data = 0x00; B_data = Fade; break; case Purple : R_data = Fade; G_data = 0x00; B_data = Fade; break; case Cyan : R_data = 0x00; G_data = Fade; B_data = Fade; break; case White : R_data = Fade; G_data = Fade; B_data = Fade; break; case Black : R_data = 0x00; G_data = 0x00; B_data = 0x00; break; case Orange : R_data = 0xff; G_data = 125; B_data = 0x00; break; case Pink : R_data = 0xff; G_data = 0; B_data = 125; break; default: break; } for ( i = Ch1*3;i <= Ch2*3;i++) { Work_Data_Buff = R_data; i++; Work_Data_Buff = G_data; i++; Work_Data_Buff = B_data; i++; } } void Send_Dmx_Data(void) { unsigned int i,j; switch (Pixels_Group) { case 0: DMX512_TXD(0); //头码 for(j=0; j<600 ;j++) { Uart2_Flag=0; SCON|=0X08; SBUF=Work_Data_Buff[j]; while(!Uart2_Flag); } break; case 1 : TB8 = 0; SBUF = 0x00; while( ! TI ); TI = 0; TB8= 1; SBUF = 0x00; while( ! TI ); TI = 0; for(i=0;i<7;i++) { for(j=0; j<96 ;j++) { SBUF = Work_Data_Buff[j]; while( ! TI ); TI = 0; } } break; case 2 : TB8 = 0; SBUF = 0x00; while( ! TI ); TI = 0; TB8= 1; SBUF = 0x00; while( ! TI ); TI = 0; for(i=0;i<200;i++) { for(j=0; j<3 ;j++) { SBUF = Work_Data_Buff[j]; while( ! TI ); TI = 0; } } } } void ConfigUART(unsigned long baud) //250000bps@24MHz { PCON &= 0x7F; //波特率不倍速 SCON = 0xC0; //9位数据,可变波特率 AUXR |= 0x40; //定时器1时钟为Fosc,即1T AUXR &= 0xFE; //串口1选择定时器1为波特率发生器 TMOD &= 0x0F; //清除定时器1模式位 TMOD |= 0x20; //设定定时器1为8位自动重装方式 TH1 = 256-(8000000/32)/baud; //设定定时初值 TL1 = TH1; //设定定时器重装值 ET1 = 0; //禁止定时器1中断 PS=1; ES=1; TR1 =1; //启动定时器1 } void ConfigTimer0(unsigned char ms) //T0配置函数 { unsigned long tmp; tmp = 8000000; //定时器计数频率 tmp = (tmp * ms) / 1000000; //计算所需的计数值 tmp = 65536 - tmp; //计算定时器重载值 tmp = tmp; //修正中断响应延时造成的误差 T0RH = (unsigned char)(tmp >> 8); //定时器重载值拆分为高低字节 T0RL = (unsigned char)tmp; AUXR |= 0x80; //定时器时钟1T模式 TMOD &= 0xF0; //清零T0的控制位 TMOD |= 0x01; //配置T0为模式1 TH0 = T0RH; //加载T0重载值 TL0 = T0RL; ET0 = 1; //使能T0中断 TR0 = 1; //启动T0 } void interruptTime0() interrupt 1 { static unsigned int count=0; TH0 = T0RH; TL0 = T0RL; count++; if(count>=4) { count=0; if(cmr4us<1000) cmr4us++; } } void interruptUART() interrupt 4 { if(RI) { RI=0; } if(TI) { TI=0; Uart2_Flag=1; } } |
|
相关推荐
3个回答
|
|
1.波特率,2 发送和接收方式
|
|
|
|
程序太复杂了,没法调试,调串口的时候把其他的都屏蔽掉
|
|
|
|
先用串口调试工具检测一下串口能否正常打开、读写数据,然后再说程序的问题。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
122 浏览 0 评论
565 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
772 浏览 0 评论
948 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
658 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12041 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 23:15 , Processed in 0.853629 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号