51单片机用蓝牙调时程序代码
时间: 2023-10-05 19:07:42 浏览: 73
51单片机循迹蓝牙小车c程序.zip
以下是51单片机使用蓝牙调时的程序代码示例:
```c
#include <STC12C5A.H>
sbit led = P1^0; //定义P1.0口为LED指示灯
sbit key = P3^2; //定义P3.2口为按键输入口
sbit beeper = P2^3; //定义P2.3口为蜂鸣器输出口
unsigned char time_buf[6]; //定义存储时间的数组
void delay_ms(unsigned int ms) //延时函数
{
unsigned int i, j;
for (i = 0; i < ms; i++) {
for (j = 0; j < 114; j++) {}
}
}
void send_byte(unsigned char byte) //发送一个字节
{
SBUF = byte;
while (!TI) {}
TI = 0;
}
void send_time(unsigned char *time_buf) //发送时间
{
send_byte(time_buf[0] / 10 + '0');
send_byte(time_buf[0] % 10 + '0');
send_byte(':');
send_byte(time_buf[1] / 10 + '0');
send_byte(time_buf[1] % 10 + '0');
send_byte(':');
send_byte(time_buf[2] / 10 + '0');
send_byte(time_buf[2] % 10 + '0');
send_byte('\n');
}
void int0_isr() interrupt 0 //外部中断0服务程序
{
unsigned char i;
for (i = 0; i < 6; i++) {
while (!RI) {}
time_buf[i] = SBUF;
RI = 0;
}
send_time(time_buf); //发送接收到的时间
beeper = 1; //蜂鸣器响
delay_ms(100);
beeper = 0;
}
void main()
{
TMOD = 0x20; //定时器1工作在方式2,用于产生波特率
TH1 = 0xfd; //波特率9600
TL1 = 0xfd;
TR1 = 1; //打开定时器1
SM0 = 0; //串口工作在方式1
SM1 = 1;
REN = 1; //允许接收
EA = 1; //开总中断
ES = 1; //开串口中断
EX0 = 1; //开外部中断0
IT0 = 1; //设外部中断0为下降沿触发
while (1) {
if (key == 0) { //按键按下
delay_ms(10); //消抖
if (key == 0) { //确认按键按下
led = !led; //LED指示灯翻转
while (!key) {} //等待按键释放
}
}
}
}
```
这段程序实现了使用蓝牙模块调整单片机时钟,并将时间通过串口发送出来,同时通过按键控制LED指示灯的亮灭。其中,P3.2口为按键输入口,P1.0口为LED指示灯输出口,P2.3口为蜂鸣器输出口。需要注意的是,蓝牙模块的数据格式为“HH:MM:SS\n”,即时、分、秒之间用冒号分隔,最后需要加上换行符。
阅读全文