首先是蓝牙通信,我想指出,如果你用的是蓝牙模块的话,那么它的单片机程序与串口的单片机程序差不多一样,只要你会串口 *** 作,蓝牙也就解决了,如果不是用的蓝牙模块,另当别论。
然后是接受端手机这边,你应该懂一些java东西,知道怎让哪么调用底层程序,编写读取串口程序困茄,根据发送的协议,把接汪滑察受的数据转化为十进制就可以了.
扩展资料
单片机采用51系列单片机用C51语言编写,通过sprintf构造JSON格式文件通过蓝牙串口模块发送到安卓手机,简要代码如下:
sprintf(msg,"{\"RR\":\"%02x\"}\0",(unsigned int )RRtemp)
Serial_print(msg)
这里涉及到Serial_print()函数如下:
void Serial_print(char *msg)
{
while (*msg != '\0') {
S2BUF = *msg
while ((S2CON &S2TI) == 0)
S2CON &= ~S2TI
msg++
}
}
您好,这样:#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
//#define BIT(n) (1<<n)
#pragma interrupt_handler uart_recdata:12
#define mcuclk 8000000
uchar rdata
uchar flag=0
void delay(uint n)//10ms延时
{
uint i,j
for(i=0i<含肆ni++)
for(j=0j<1543j++)
}
void uart_init(uint baud)//串扒如口控制状态寄存器初始化,波特率设置
{
UCSRB=0x00
UCSRA=0x00 //控制寄存器清零
UCSRC=(1<<URSEL)|(0<<UPM0)|(3<<UCSZ0) //选择UCSRC,异步模式,禁止
// 校验,1位停止谈此轿位,8位数据位
baud=mcuclk/16/baud-1 //波特率
UBRRL=baud
UBRRH=baud>>8 //设置波特率
UCSRB=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE) //接收、发送使能,接收中断使能
SREG=BIT(7) //全局中断开放
DDRD|=0x02//配置TX为输出(很重要)
}
void uart_senddata(uchar data)
{
while(!(UCSRA&(BIT(UDRE))))//第五位UDRE为高,数据寄存器空,发数据至UDR
UDR=data
while(!(UCSRA&(BIT(TXC)))) //第六位TXC高, 发送结束
UCSRA|=BIT(TXC) //置位TXC
}
void uart_recdata()
{
UCSRB&=~BIT(RXCIE)
rdata=UDR
flag=1
UCSRB|=BIT(RXCIE)
}
void main()
{
// uchar i='A'
// uchar j=4
uart_init(19200)
while(1)
{
if(flag)
{
uart_senddata(rdata)
flag=0
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)