ht66f2390蓝牙通信具体程序
时间: 2023-12-17 16:03:36 浏览: 143
手机蓝牙通讯程序
HT66F2390是一款8位单片机,不支持蓝牙通信,因此需要外接蓝牙模块来实现蓝牙通信。以下是一个基于HT66F2390和蓝牙模块HC-05的简单蓝牙通信程序示例:
```c
#include <ht66f2390.h>
#define BAUDRATE 9600
#define FOSC 8000000L
void UART_Init(void)
{
T3CON = 0x04;
T3FD = (FOSC/8/BAUDRATE-1) & 0xFF;
T3CON |= 0x80;
}
void UART_SendByte(unsigned char c)
{
while(!(T3CON & 0x02));
T3CON &= ~0x02;
SBUF = c;
}
unsigned char UART_ReceiveByte(void)
{
while(!(T3CON & 0x01));
T3CON &= ~0x01;
return SBUF;
}
void main()
{
unsigned char c;
UART_Init();
while(1)
{
c = UART_ReceiveByte();
UART_SendByte(c);
}
}
```
上面的程序实现了一个简单的串口回显功能,接收到的数据会原样通过串口发送回去。接下来,我们需要将该程序与蓝牙模块连接起来,实现蓝牙通信。
首先,需要将蓝牙模块的TXD和RXD引脚分别连接到HT66F2390的P1.1和P1.2引脚上。然后,我们需要在程序中加入蓝牙模块的初始化代码:
```c
#define BT_KEY P1_0
void BT_Init(void)
{
BT_KEY = 0;
delay_ms(1000);
UART_SendByte('A');
delay_ms(1000);
UART_SendByte('T');
delay_ms(1000);
UART_SendByte('+');
delay_ms(1000);
UART_SendByte('U');
delay_ms(1000);
UART_SendByte('A');
delay_ms(1000);
UART_SendByte('R');
delay_ms(1000);
UART_SendByte('T');
delay_ms(1000);
UART_SendByte('=');
UART_SendByte('9');
UART_SendByte('6');
UART_SendByte('0');
UART_SendByte('0');
UART_SendByte('0');
UART_SendByte('\r');
delay_ms(1000);
BT_KEY = 1;
}
```
上面的代码实现了蓝牙模块的初始化,将波特率设置为9600,这里假设蓝牙模块的初始波特率也是9600。其中,BT_KEY是一个控制蓝牙模块工作状态的引脚,当其为低电平时,蓝牙模块处于AT命令模式,当其为高电平时,蓝牙模块处于透传模式。
接下来,我们需要修改main函数,加入蓝牙通信的代码:
```c
void main()
{
unsigned char c;
UART_Init();
BT_Init();
while(1)
{
if(BT_KEY)
{
if(T3CON & 0x01)
{
c = UART_ReceiveByte();
UART_SendByte(c);
}
}
else
{
if(UART_ReceiveByte() == 'A')
{
delay_ms(100);
if(UART_ReceiveByte() == 'T')
{
delay_ms(100);
if(UART_ReceiveByte() == '+')
{
delay_ms(100);
if(UART_ReceiveByte() == 'I')
{
delay_ms(100);
if(UART_ReceiveByte() == 'N')
{
delay_ms(100);
if(UART_ReceiveByte() == 'Q')
{
delay_ms(100);
if(UART_ReceiveByte() == ':')
{
delay_ms(100);
while(UART_ReceiveByte() != '\n');
BT_KEY = 1;
}
}
}
}
}
}
}
}
}
}
```
上面的代码实现了一个简单的蓝牙透传功能,当BT_KEY为高电平时,程序会将串口接收到的数据原样通过蓝牙模块发送出去;当BT_KEY为低电平时,程序进入AT命令模式,等待蓝牙模块发送的指令,并将其原样通过串口发送回去。这样,就可以实现基于HT66F2390和HC-05的简单蓝牙通信了。
阅读全文