|
這個(gè)東西是我學(xué)習(xí)搞得,還沒搞完,屬于半成品,目前有的 功能是遠(yuǎn)程控制LED燈亮滅,而我的設(shè)計(jì)是要控制PWM波來控制COB光源。
先來講講這個(gè)東西吧,就是屬于藍(lán)牙接收個(gè)指令,然后通過判斷指令來作出相應(yīng)的操作。同時(shí)我的設(shè)想是把命令弄成數(shù)組,然后接收到的指令也一點(diǎn)一點(diǎn)存入數(shù)組,這樣就可以支持無限多的指令了(懶得搞,論壇里有,但是有點(diǎn)毛病還沒調(diào),懶得弄,反正我要設(shè)計(jì)還有很多時(shí)間,俺不急。。。)
單片機(jī)源碼(藍(lán)牙模塊設(shè)置為從機(jī),波特率9600等等自己調(diào)哈)E4A源碼:
遙控器.zip
(27.58 KB, 下載次數(shù): 71)
2019-12-3 17:02 上傳
點(diǎn)擊文件名下載附件
單片機(jī)源程序如下:
/*************** ***********************************************************************
* 串口通信控制 *
實(shí)現(xiàn)現(xiàn)象:下載程序后打開串口調(diào)試助手,將波特率設(shè)置為4800,根據(jù)串口接收到的數(shù)據(jù)執(zhí)行不同命令。
注意事項(xiàng):無。
***************************************************************************************/
#include "reg52.h" //此文件中定義了單片機(jī)的一些特殊功能寄存器
#include "string.h"
#include "stdio.h"
#include "intrins.h"
typedef unsigned int uint; //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
typedef unsigned char uchar;
uchar receiveData;
sbit LED=P1^0;
/*******************************************************************************
* 函數(shù)名 :UsartInit()
* 函數(shù)功能 :設(shè)置串口
* 輸入 : 無
* 輸出 : 無
*******************************************************************************/
void UsartInit()
{
SCON=0X50; //設(shè)置為工作方式1
TMOD=0X21; //設(shè)置計(jì)數(shù)器工作方式2
//PCON=0X80; //波特率加倍
TH1=0XFd; //計(jì)數(shù)器初始值設(shè)置,注意波特率是4800的,晶振11.0592
TL1=0XFd;
ES=1; //打開接收中斷
EA=1; //打開總中斷
TR1=1; //打開計(jì)數(shù)器
}
/*******************************************************************************
* 函 數(shù) 名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void main()
{
UsartInit(); // 串口初始化
while(1)
{
}
}
/*******************************************************************************
* 函數(shù)名 : Usart() interrupt 4
* 函數(shù)功能 : 串口通信中斷函數(shù)
* 輸入 : 無
* 輸出 : 無
*******************************************************************************/
void Usart() interrupt 4
{
receiveData=SBUF;//出去接收到的數(shù)據(jù)
if(receiveData=='A')LED=1;
if(receiveData=='B')LED=0;
RI = 0;
TI=1;printf("zhiling:");
SBUF=receiveData;//將接收到的數(shù)據(jù)放入到發(fā)送寄存器
TI=1;printf("\n");while(!TI); //等待發(fā)送數(shù)據(jù)完成
TI=0; //清除發(fā)送完成標(biāo)志位
}
|
評(píng)分
-
查看全部評(píng)分
|