久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
求助,,關(guān)于單片機(jī)代碼的問(wèn)題
[打印本頁(yè)]
作者:
zha
時(shí)間:
2017-5-2 12:28
標(biāo)題:
求助,,關(guān)于單片機(jī)代碼的問(wèn)題
寫了兩部分的代碼,一部分是led屏顯示數(shù)字的,另一部分是藍(lán)牙控制RBG的,單獨(dú)的可以用,為什么合在一起,藍(lán)牙那部分用不了了,求助
#include <reg52.h>
#include <string.h>
#include <intrins.h>
#define LCD1602_DB P0
unsigned char tmp;
unsigned int c=0;
unsigned char flag1s = 0;
unsigned char flag2s = 0;
unsigned char counter = 0;//jishu
unsigned char str[] = "COUNT: ";
sbit LCD1602_RS = P1^0;
sbit LCD1602_RW = P1^1;
sbit LCD1602_E = P1^5;
sbit red = P2^0;
sbit LED = P2^2;
sbit red1 = P2^1;
sbit RR = P2^3;
sbit GG = P2^4;
sbit BB = P2^5;
int PWM_0 = 0;
int PWM_1 = 0;
int PWM_2 = 0;
void InitLcd1602();
void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str);
void itoa (unsigned int n,unsigned char s[5]);
void keepred();
void init(); //串口初始化
void send(unsigned char a); //單字節(jié)發(fā)送函數(shù)
void ctrl(); //接收處理函數(shù)
void color();
void keepPWM();
void delay (unsigned char t) //延時(shí)
{
unsigned char i;
while(t--)
{
for(i=0; i<114; i++);
}
}
void main()
{
unsigned int sec = 0, i=0, j = 0;
unsigned char s[5] ;
unsigned char x[6] = "none";
red = 1;
red1 = 1;
TMOD = 0x01;
TL0 = 0xC9; //設(shè)置定時(shí)初值
TH0 = 0xFF;
TR0 = 1;
EA = 1;
ET0 = 1;
InitLcd1602();
sec = 0;
itoa(sec, s);
LcdShowStr(8, 0, x);
while(1)
{
if(RI==1) // 是否有數(shù)據(jù)到來(lái)
{
RI = 0;
tmp = SBUF;
ctrl();
delay(5); // 暫存接收到的數(shù)據(jù)
}
keepPWM();
if(flag1s == 1 )
{
flag1s = 0;
sec++;
}
if(flag2s == 1 )
{
flag2s = 0;
if(sec > 0)
sec--;
}
if(sec<=0)
{
sec = 0;
LED = 0;
LcdShowStr(8, 0, x);
}
else
{
LED = 1;
itoa(sec, s);
memset(s, '\0', 5);
delay(50);
}
if(RI == 0)
{
PWM_0 = PWM_0;
PWM_1 = PWM_1;
PWM_2 = PWM_2;
delay(5);
}
}
}
void keepred()
{
}
void LcdWaitReady()
{
unsigned char sta;
LCD1602_DB = 0xFF;
LCD1602_RS = 0;
LCD1602_RW = 1;
do {
LCD1602_E = 1;
sta = LCD1602_DB;
LCD1602_E = 0;
}while(sta & 0x80);
}
void LcdWriteCmd(unsigned char cmd)
{
LcdWaitReady();
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_DB = cmd;
LCD1602_E = 1;
LCD1602_E = 0;
}
void LcdWriteDat(unsigned char dat)
{
LcdWaitReady();
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_DB = dat;
LCD1602_E = 1;
LCD1602_E = 0;
}
void LcdSetCursor(unsigned char x, unsigned char y)
{
unsigned char addr;
if(y == 0)
addr = 0x00 + x;
else
addr = 0x40 + x;
LcdWriteCmd(addr | 0x80);
}
void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str)
{
LcdSetCursor(x, y);
while(*str != '\0')
{
LcdWriteDat(*str++);
}
}
void InitLcd1602()
{
LcdWriteCmd(0x38);
LcdWriteCmd(0x0C);
LcdWriteCmd(0x06);
LcdWriteCmd(0x01);
}
void itoa (unsigned int n,unsigned char s[])
{
unsigned char temp;
unsigned int i = 0;
unsigned int len = 0;
while(n != 0)
{
s[i] = (n % 10) + '0' ;//算出字符
n = n / 10;
i++;
}
s[i] = '\0';
len = strlen(s);
for(i = 0; i < len / 2; i++) //前后換順序
{
temp = s[i];
s[i] = s[len - 1 - i];
s[len - 1 - i] = temp;
}
LcdShowStr(1, 0, str);
LcdWriteCmd(0x01);
LcdShowStr(1, 0, str);
LcdShowStr(8, 0, s);
s[0] = '\0';
}
void keepPWM()//保持輸出
{
if(PWM_0 <=0)
PWM_0 =0;
if(PWM_1 <=0)
PWM_1 =0;
if(PWM_2 <=0)
PWM_2 =0;
if(PWM_0 >=255)
PWM_0 =255;
if(PWM_1 >=255)
PWM_1 =255;
if(PWM_2 >=255)
PWM_2 =255;
}
void init() //串口初始化
{
ES=0; //關(guān)中斷
SCON = 0x50; // REN=1允許串行接受狀態(tài),串口工作模式1,
//10位UART(1位起始位,8位數(shù)據(jù)位,1位停止位,無(wú)奇偶校驗(yàn)),波特率可變
TMOD = 0x20; // 定時(shí)器1工作于方式2,8位自動(dòng)重載模式, 用于產(chǎn)生波特率
TH1=TL1=0xFD; // 波特率9600 (本次測(cè)試采用晶振為11.0592)
PCON &= 0x7f; // 波特率不倍增
TR1 = 1; //定時(shí)器1開(kāi)始工作,產(chǎn)生波特率
//發(fā)送標(biāo)志位置0
TI=0; //接收標(biāo)志位置0
RI=0;
//EA=0;
ES=1;
}
/*void send(unsigned char a) //單字節(jié)數(shù)據(jù)發(fā)送
{
//注意:若單片機(jī)TXD(P3.1)無(wú)上拉能力,必須在P3.1端接上拉電阻。本次測(cè)試需要接上拉電阻
TI=0;
SBUF=a;
while(TI==0);
TI=0;
if(c%2) //發(fā)送指示燈標(biāo)志,每接收一次,此燈亮滅交替
led=1;
else
led=0;
c++;
}*/
void ctrl() //接收處理函數(shù)
{
switch(tmp)
{
case '1': //白
PWM_0 = 0;
PWM_1 = 0;
PWM_2 = 0;
//delay(3000);
//send(tmp);
break;
case '2':
PWM_0 = 255-128; //紫
PWM_1 = 255;
PWM_2 = 255-128;
//delay(3000);
// send(tmp);
break;
case '3':
PWM_0 = 255; //藍(lán)色
PWM_1 = 255;
PWM_2 = 0;
//delay(3000);
// send(tmp);
break;
case '4':
PWM_0 = 30; // 淺藍(lán)
PWM_1 = 100;
PWM_2 = 255;
//delay(3000);
// send(tmp);
break;
case '5':
PWM_0 = 255-33; // 灰
PWM_1 = 255-33;
PWM_2 = 255-33;
//delay(3000);
// send(tmp);
break;
case '6':
PWM_0 = 254; // 白
PWM_1 = 254;
PWM_2 = 254;
//delay(3000);
// send(tmp);
break;
case 'a':
PWM_0=PWM_0+5; // jiaqiang
PWM_1=PWM_1+5;
PWM_2=PWM_2+5;
break;
case 'b':
PWM_0=PWM_0-5; // jianruo
PWM_1=PWM_1-5;
PWM_2=PWM_2-5;
keepPWM();
break;
case 'c': //shanshuo
color();
break;
default: //其他,燈全滅
PWM_0 = 0; //hei
PWM_1 = 0;
PWM_2 = 0;
// send(tmp);
break;
}delay(5);
}
void color()
{
while(RI==0)
{
PWM_0 = rand()%255;
delay(2);
PWM_1 = rand()%255;
delay(2);
PWM_2 = rand()%255;
delay(2);
}
}
void InterruptTimer0() interrupt 1
{
TH0 = 0xFC; //重新加載初值
TL0 = 0x67;
if (red == 0&&red1==1)
{
delay(99);
if(red1==0)
flag1s = 1;
}
if (red1 == 0&&red == 1)
{
delay(99);
if(red == 0)
flag2s = 1;
}
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;
}
復(fù)制代碼
作者:
zha
時(shí)間:
2017-5-2 19:02
大神在哪里
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日日夜夜精品视频
|
9久久精品
|
91成人精品
|
欧洲一区视频
|
国产成人一区二区三区精
|
www.日韩系列
|
国产精品99久久久久久大便
|
手机看片1
|
日韩免费高清视频
|
精品九九九
|
欧美一级久久久猛烈a大片 日韩av免费在线观看
|
精品一区二区三区91
|
国产成年人视频
|
亚洲一区国产
|
av一区二区三区在线观看
|
成人精品鲁一区一区二区
|
日韩午夜精品
|
伊人网站在线
|
欧美日韩精品区
|
日韩伦理一区二区
|
日韩视频一区二区三区
|
狠狠综合久久av一区二区小说
|
国产激情网站
|
日本黄色大片免费看
|
亚洲欧美bt
|
91久久久久久
|
日韩小视频在线
|
日韩在线观看
|
精品国产乱码久久久久久88av
|
91天堂
|
99精品在线观看
|
久久久久一区
|
成人av一区二区三区
|
亚洲逼院
|
午夜精品一区二区三区在线观看
|
97影院在线午夜
|
中文字幕成人av
|
亚洲视频区
|
欧美激情视频一区二区三区在线播放
|
成人在线观看黄
|
亚洲精品中文字幕
|