|
|
#include "stc15.h"
#include "intrins.h"
#define uint unsigned int
#define uchar unsigned char
//#define MAIN_Fosc 24000000
sbit Din=P5^3;
void io_init()//初始化IO口,如果不初始化IO口,特定某些IO可能高阻状态,具体怎么初始化参考手册,这里为双向口
{
P0M0=0x00;
P0M1=0x00;//P0
P1M0=0x00;
P1M1=0x00;//P1
P2M0=0x00;
P2M1=0x00;//P2
P3M0=0x00;
P3M1=0x00;//P3
P4M0=0x00;
P4M1=0x00;//P4
P5M0=0x00;
P5M1=0x00;//P5
P6M0=0x00;
P6M1=0x00;//P6
P7M0=0x00;
P7M1=0x00;//P7
}
//void delay_ms(unsigned int ms)//一个简单的延时
//{
// unsigned int i;
// do
// {
// i = MAIN_Fosc / 13000;
// while(--i); //14T per loop
// }
// while(--ms);
//}
void delay_us(uint us)
{
unsigned char i;
while(us--)
{
i = 3;
while (--i);
}
}
void delay_ms(uint ms)
{
unsigned char i, j;
while(ms--)
{
_nop_();
_nop_();
i = 24;
j = 84;
do
{
while (--j);
} while (--i);
}
}
/*******************************************************
* 函数名: RGB_LOW
* 描述 :0码
* 输入 :无
* 输出 :无
* 备注 :
*******************************************************/
void RGB_LOW()
{
Din=1;
_nop_();
Din=0;
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
}
/*******************************************************
* 函数名: RGB_High
* 描述 :1码
* 输入 :无
* 输出 :无
* 备注 :
*******************************************************/
void RGB_High()
{
Din=1;
_nop_(); _nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
Din=0;
_nop_();_nop_(); _nop_(); _nop_();
}
/*******************************************************
* 函数名: RGB_RESET
* 描述 :复位
* 输入 :无
* 输出 :无
* 备注 :
*******************************************************/
void RGB_RESET()
{
Din = 0;
delay_us(60);
}
/*******************************************************
* 函数名: RGB_BYTE
* 描述 :单色一个字节写入
* 输入 :X 为
r
g
b
* 输出 :无
* 备注 :
*******************************************************/
void RGB_BYTE(uchar X)
{
uchar i;
for(i=0;i<8;i++)
{
if((X&0X80))
{
RGB_High();
}
else
RGB_LOW();
X=X<<1;
}
}
/*******************************************************
* 函数名:RGB_display
* 描述 :颜色写入
* 输入 :r:红色
g;蓝色
b;绿色
len;灯的个数
* 输出 :无
* 备注 :0-255级亮度
*******************************************************/
void RGB_display(uchar r,uchar g,uchar b,uchar len)
{
uchar i;
RGB_RESET();
for(i=0;i<len;i++)
{
RGB_BYTE(r);
RGB_BYTE(g);
RGB_BYTE(b);
}
RGB_RESET();
}
void main()
{
uchar q;
uchar r,g,b;
uchar w,e;
io_init();//对IO进行初始化稍微延时一会
delay_ms(10);
r=255;
g=0;
b=0;
e=1;
while(1)
{
for(q=1;q<29;q++)
{
RGB_display(g,r,b,q);
delay_ms(e);
}
w++;
switch(w)
{
case 0:r=255;g=0;b=0;e=5;break;
case 1:r=0;g=255;b=0;e=10;break;
case 2:r=0;g=0;b=255;e=15;break;
case 3:r=255;g=255;b=0;e=20;break;
case 4:r=255;g=0;b=255;e=25;break;
case 5:r=255;g=255;b=255;e=30;break;
case 6:r=100;g=0;b=255;e=1;break;
case 7:r=200;g=100;b=20;e=2;break;
case 8:r=120;g=120;b=255;e=3;break;
case 9:r=234;g=77;b=32;e=4;break;
case 10:r=136;g=0;b=255;e=5;break;
case 11:r=30;g=100;b=255;e=6;break;
}
if(w==12)
{
w=0;
}
}
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|