大伙,我想問(wèn)下,我現(xiàn)在有條燈帶,上面有30顆燈,
手冊(cè)是這樣的
T0H 0碼,高電平時(shí)間 0.3
T1H 1碼,高電平時(shí)間 0.9
T0L 0碼,低電平時(shí)間 0.9
T1L 1碼,低電平時(shí)間 0.3
Trst Reset碼,低電平時(shí)間 80
輸出0的話就是一個(gè)T0H和一個(gè)T0L(占空比)
輸出1的話就是一個(gè)T1H和一個(gè)T1L(占空比)
現(xiàn)在要用定時(shí)器中斷實(shí)現(xiàn)這個(gè)過(guò)程,就是他這個(gè)0.3us我在定時(shí)器寫出來(lái)了,應(yīng)該是這樣
void inital_Timer3()
{
TH3=(65536-5)>>8;
TL3=(65536-5);
T3CON=0x04; //打開(kāi)中斷
}
然后三十顆燈我給了一個(gè)數(shù)組,全亮藍(lán)色,最終的結(jié)果要的是一直亮藍(lán)色
uint8_t rgb_data[90]=
{
0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,
0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,
0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,0X00,0X00,0XFF,
};
然后我一個(gè)位一個(gè)位的移給燈,一個(gè)RGB燈是24位
void Blue_Control(uint8_t *rgb_data)
{
uint8_t i,j,temp,z;
for(i=0;i<90;i++)
{
temp=rgb_data[i];
for(j=0;j<8;j++) //一個(gè)十六進(jìn)制有8位
{
z=(temp&0x80);//每次取高位,每取完一次就左移
if(z) //為真就是邏輯1,那就是1的占空比比較大,就會(huì)輸出1
{
P0_6=1;
//inital_Timer3();
//inital_Timer3();
//inital_Timer3();
P0_6=0;
//inital_Timer3();
}
else//為假就是邏輯0,那就是0的占空比比較大,就會(huì)輸出0
{
P0_6=1;
//inital_Timer3();
P0_6=0;
//inital_Timer3();
//inital_Timer3();
//inital_Timer3();
}
temp=temp<<1; //左移
}
}
}
請(qǐng)問(wèn)怎么在中斷里面實(shí)現(xiàn)這個(gè)全亮的過(guò)程,還有他這個(gè)0.3us又不能寫在這些電平后面,不知道0.3us要怎么整,請(qǐng)大伙給我講講,謝謝.
|