我从来没有写过多少博客,所以我发布了一个相对简单的小例子我以前做过的) android 通过wifi实现通用遥控器 中拆分的小案例):
android客户通过蓝牙协议控制继电器(想控制其他东西,自己设计)
图示:
今晚先说硬件电路和单片机。
最小单片机系统板和外围电路,这个电路很简单(注意继电器的连接),不要做太多介绍。
单片机端程序(串口使用蓝牙模块):
/***********************************************************
C52与蓝牙连接:
单片机程序需要一次复位 有效接收
注意设置比特率
蓝牙模块连接
蓝牙 51
RXD TXD
TXD RXD
unsigned int tmp=0x00; //初始tmp定义 主要表明tmp接收16进制数据
unsigned char tmp 表明tmp接收的字符型数据
其他连线:
P接一个继电器
串口采用蓝牙模块
***********************************************************/
#include #include unsigned int tmp=0x00; //初始tmp定义 主要表明tmp接收16进制数据
//unsigned char tmp 表明tmp接收的字符数据
sbit ji=P1^1; //继电器
void init(); //初始化
void delay(unsigned int i); ///延迟函数
void ctrl(); ///根据接收信息进行操作
void main()
{
init();
ji=0;
while(1)
{
//RI 用于接收和发送的标志位RI==1.表示收到了 RI==0,表示出去了
if(RI==1) // 是否有数据
{
tmp = SBUF;
RI = 0; // 临时存储接收到的数据
ctrl(); ///根据接收信息进行操作
}
}
}
void init() //初始化
{
TMOD = 0x20; // 定时器1在8位自动重载模式下工作, 用于产生波特率
TH1=0xFD;
TL1=0xFD; // 波特率9600
SCON = 0x50; // 设置串行口工作方式1 允许接收相当于以下三句话
PCON =0x00; // 波特率不翻倍
TR1 = 1;
EA=1;
ES=1;
}
void delay(unsigned int i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--) ;
}
void ctrl() //
{
switch(tmp) //已经把SBUF中数据赋值tmp中了
{
case 0x01:
ji=1; ///接收字符1,继电器0关
break;
case 0x02: ///接收字符2,继电器打开
ji=0;
break;
default:
break;
}
}