STC12单片机DMX512源程序

/*------------DMX512 input -------------*/
乳液聚合/*------------singlechip stc12c4052-----*/
/*------------Crystal: 16.000Mhz--------*/
/*------------author : xingui liu xin------*/
/*------------time :2007.12.08-----------*/
/*-----version number V1.0-------------*/
#include <STC12C2052AD.h>
跟刀架#include <intrins.h>
#include <absacc.h>
#define uint unsigned int
#define uchar unsigned char
#define ASH  255
#define RATE  20
#define SPEED 20
sbit rled    =P3^7; //高电平有效
sbit gled    =P3^5;
sbit bled    =P3^4;
sbit RT_SEL  =P3^3;//低有效*
bit Dmx_sign;
bit Start_sign;
bit Stop_sign;
uchar SendValue_table [4];  //
uchar RecDmxDataNum;
/*-------------------延时程序---------------*/
void Delay_ms(uchar ms)
{
uchar i,j,k;
for(i=0;i<ms;i++)
{
for(j=0;j<80;j++)
{
for(k=0;k<120;k++);
}
}
}
/*----------------------------------------*/
void Init()
{
TMOD=0x22;  //T0: 8bit counter and auto load mode
//T1: 8bit counter and auto load mode
TH0=237;        //T0用于FLASH  和LED输出      411HZ
TL0=237;
TH1=0xfe;      //T1用于波特率发生器  250K BIT/S
TL1=0xfe;
AUXR=0x40;      //串口工作在12倍速下 ,因为T1比传统8051快12倍
TCON=0x00;
SCON=0xc0;
PCON=0x00;
ET0=0;          // Open intterrupt
TR0=0;
PS=1;
EA=1;
TR1=1;
RT_SEL= 0;  //75176的接收使能端0--接收
ES=1;
REN=1;
}
void  UART (void) interrupt  4      // DMX interrupt(uart)
{
uchar temp;
if(RI==1)
{     
RI = 0;
if(RB8==1)
if(Start_sign==0)
{
if(Dmx_sign==1)
{   
SendValue_table [RecDmxDataNum] = SBUF;
RecDmxDataNum++;
if(RecDmxDataNum >=4)
秸秆制煤{
Start_sign = 1;
}
}
else
{
temp=SBUF;
if(temp==0)
{
Dmx_sign = 1;
RecDmxDataNum = 0;
}
else
{
Dmx_sign = 0;
RecDmxDataNum = 0;
}
}
}
}
else
{
temp=SBUF;
if(temp==0)
{
Dmx_sign = 0;
Start_sign = 0;
}
else
{
Dmx_sign = 0;
Start_sign = 1;
}
}
}
}
/*------------------------------------------------------*/
void Dmx_Gray_Display(uchar rr,uchar gg,uchar bb)
{
uchar i;
for(i=0;i<255;i++)
{
if(i<rr)
rled=1;
else
rled=0;
if(i<gg)
gled=1;
等离子体刻蚀else
gled=0;
if(i<bb)
bled=1;
else
bled=0;
}
}
/*----------------------------------------*/
void gradual(void)
{ u
char i,j;
for(i=0;i<ASH;i++)
{
for(j=0;j<SPEED;j++)
{
Dmx_Gray_Display(i,i,i);
}
}
for(i=ASH;i>0;i--)
{
for(j=0;j<SPEED;j++)
{
Dmx_Gray_Display(i,i,i);
}
}
}
/*------------以下是第四通道控制跳变-----------------*/
void jump(uchar speed)
{
uchar i;
for(i=0;i<7;i++)
蜜饯LH{
switch(i)
{
case 0:rled=1;gled=0;bled=0;Delay_ms(speed);break;
case 1:rled=1;gled=1;bled=0;Delay_ms(speed);break;
case 2:rled=0;gled=1;bled=0;Delay_ms(speed);break;
case 3:rled=0;gled=0;bled=1;Delay_ms(speed);break;
case 4:rled=1;gled=0;bled=1;Delay_ms(speed);break;
case 5:rled=0;gled=1;bled=1;Delay_ms(speed);break;
case 6:rled=1;gled=1;bled=1;Delay_ms(speed);break;
default:break;
}
}
}
void dmx_contorl_jump(void)
{
if(SendValue_table[3]<50)连供系统
jump(RATE);
else if(SendValue_table[3]>50)
gradual();
else
return;
}
void main (void)
{
Init();
rled=0;
gled=0;
bled=0;
while(1)
{
Dmx_Gray_Display(SendValue_table[0],SendValue_table[1],SendValue_table[2]);
dmx_contorl_jump();
}
}

本文发布于:2024-09-25 15:25:43,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/201608.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:通道   程序   工作   接收   秸秆   等离子体   连供
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议