欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
求助:hc05控制rgb的顏色變化
[打印本頁]
作者:
zha
時間:
2017-4-20 14:49
標題:
求助:hc05控制rgb的顏色變化
我做了一個app控制的rgb小燈顏色,是用藍牙hc05,能夠控制幾種顏色了,問題是只能夠通過延時來實現燈的亮,延時一到就滅了,請問怎么改才能變成只要發送了命令就一直亮,只有接收到下一個
命令才改變顏色,很急,求思路
#include <reg52.h>
#include <intrins.h>
unsigned char tmp;
unsigned int c=0;
sbit RR = P1^0;
sbit GG = P1^1;
sbit BB = P1^2;
sbit led = P1^3;
unsigned char PWM_0 = 0;
unsigned char PWM_1 = 0;
unsigned char PWM_2 = 0;
unsigned char counter = 0;//jishu
void init(); //串口初始化
void send(unsigned char a); //單字節發送函數
void ctrl(); //接收處理函數
void delay (unsigned char t) //延時
{
unsigned char i;
while(t--)
{
for(i=0; i<114; i++);
}
}
void main()
{
EA = 1;
TMOD = 0x01;
TL0 = 0xC9; //設置定時初值
TH0 = 0xFF;
ET0 = 1;
TR0 = 1;
init();
while(1)
{
if(RI==1) // 是否有數據到來
{
RI = 0;
tmp = SBUF; // 暫存接收到的數據
ctrl();
}
}
}
void init() //串口初始化
{
ES=0; //關中斷
SCON = 0x50; // REN=1允許串行接受狀態,串口工作模式1,
//10位UART(1位起始位,8位數據位,1位停止位,無奇偶校驗),波特率可變
TMOD = 0x20; // 定時器1工作于方式2,8位自動重載模式, 用于產生波特率
TH1=TL1=0xFD; // 波特率9600 (本次測試采用晶振為11.0592)
PCON &= 0x7f; // 波特率不倍增
TR1 = 1; //定時器1開始工作,產生波特率
//發送標志位置0
TI=0; //接收標志位置0
RI=0;
//EA=0;
ES=1;
RR = 1;
GG = 1;
BB = 1;
}
void send(unsigned char a) //單字節數據發送
{
//注意:若單片機TXD(P3.1)無上拉能力,必須在P3.1端接上拉電阻。本次測試需要接上拉電阻
TI=0;
SBUF=a;
while(TI==0);
TI=0;
if(c%2) //發送指示燈標志,每接收一次,此燈亮滅交替
led=1;
else
led=0;
c++;
}
void ctrl() //接收處理函數
{
switch(tmp)
{
case '1': //hong
PWM_0 = 220;
PWM_1 = 20;
PWM_2 = 60;
delay(3000);
send(tmp);
break;
case '2':
PWM_0 = 128; //zi
PWM_1 = 0;
PWM_2 = 128;
delay(3000);
send(tmp);
break;
case '3':
PWM_0 = 0; //lan
PWM_1 = 0;
PWM_2 = 255;
delay(3000);
send(tmp);
break;
case '4':
PWM_0 = 30; // qian lan
PWM_1 = 144;
PWM_2 = 255;
delay(3000);
send(tmp);
break;
case '5':
PWM_0 = 49; //hui
PWM_1 = 79;
PWM_2 = 79;
delay(3000);
send(tmp);
break;
default: //其他,燈全滅
PWM_0 = 0; //hei
PWM_1 = 0;
PWM_2 = 0;
send(tmp);
}
}
void InterruptTimer0() interrupt 1
{
TL0 = 0xC9; //設置定時初值
TH0 = 0xFF;
counter++;
if(counter >= 255) counter = 0;
if(counter >= PWM_0) RR = 0; else RR = 1;
if(counter >= PWM_1) GG = 0; else GG = 1;
if(counter >= PWM_2) BB = 0; else BB = 1;
}
復制代碼
作者:
zha
時間:
2017-4-20 15:02
求教啊,大神在哪里
作者:
小51hei56565
時間:
2017-7-21 23:13
hc 05 模塊里面state 端口與en 端口可以不接是吧,那這兩個端口有什么用呢
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1