#include <STC15W401AS.h>
#include <stdio.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define channle_num 4
#define cycle 200 //周期
#define LVD_VECTOR 6
#define SNUM 36
#define HALF 18
#define MOVENUM 8
#define GREEN 0
#define RED 1
#define BLUE 2
sbit S1=P5^5;
sbit S2=P3^3;
#define RGB_H S1=1
#define RGB_L S1=0
//9种颜色数据
code unsigned char colorArr1[9][3]={
{0,255,0},{97,255,0},{255,255,0},{255,0,0}
,{0,0,255},{46,8,84},{32,160,240},{255,255,255},{0,255,255}};
9种颜色数据
code unsigned char colorArr[9][3]={
{0,0,0},{120,255,0},{120,255,0},{42,238,27}
,{234,251,38},{35,218,3},{64,24,114},{250,18,20},{120,255,0}};
定义一个二维,每个括号内的三个数据对应一个像素点
16像素点的数组,每个像素点的颜色由3个字节绝对{绿,红,蓝}
unsigned char s[36][3]={
{50,5,5},{5,50,5},{5,5,50},{50,5,5},{5,50,5},{5,5,50},{50,5,5},{5,50,5},{50,5,5},{50,5,5},
{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},
{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},
{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5}};
//unsigned char s[8][3]={
{50,5,5},{5,50,5},{5,5,50},{50,5,5},{5,50,5},{5,5,50},
// {50,5,5},{5,50,5}}; //定义一个二维,每个括号内的三个数据对应一个像素点{G,R,B}
//定义两个消减比
code unsigned char cut[8]={6,2,1,0,0,1,2,6};
code unsigned char cut2[8]={0,0,0,0,0,0,0,0};
//定义一个拖尾数组
unsigned char tail[8][3]={
{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5},{50,5,5}};
unsigned char k;
char i;
unsigned char j=0;
unsigned char color=0; //控制显示颜色
uint cnt=0;
uint PWM_cnt1 = 0;
uchar buf[3];
unsigned char PWM_cnt,hight;
float HSV[3] = {0,0,0};
//extern uchar Read_IAP_Byte(uint addr);
//extern void Write_IAP_Byte(uint addr, uchar writeVal);
//extern void Erase_IAP_Sector(uint addr);
typedef struct flag
{
uchar F1:1 ; //key_timer_cnt1 标志位
uchar F2:1 ; //key_timer_cnt2 标志位
uchar F3:1 ; //PWM 计数器 标志位
uchar F4:1 ;
uchar F5:1 ;
uchar F6:1 ;
uchar F7:1 ;
uchar F8:1 ;
}Flag;
Flag num;
void Delay1ms() //@24.000MHz
{
unsigned char i, j;
_nop_();
i = 32;
j = 40;
do
{
while (--j);
} while (--i);
}
void Delay1msN(unsigned char i)
{
while(i–)
{
Delay1ms();
}
}
void Delay10ms() //@24.000MHz
{
unsigned char i, j, k;
i = 2;
j = 56;
k = 172;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void Delay15ms() //@24.000MHz
{
unsigned char i, j, k;
i = 2;
j = 212;
k = 132;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void Delay20ms() //@24.000MHz
{
unsigned char i, j, k;
_nop_();
i = 3;
j = 112;
k = 91;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void Delay30ms() //@24.000MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 4;
j = 168;
k = 10;
do
{
do
{
while (--k);
} while (--