标题: STC单片机蓝牙点亮LED代码与调试,V1 [打印本页]

作者: 技艺123    时间: 2022-7-11 21:50
标题: STC单片机蓝牙点亮LED代码与调试,V1
硬件
l JDY-23蓝牙模块(配有官网的安卓和ios软件)
l STC12c2052AD
l 11.0592晶振,30pf陶瓷电容x2
l LED,杜邦线若干

软件
l 串口调试工具,电脑直接使用STC自带的比较方便,其它的也可以下面附件压缩包里面也有
l Ios使用的是jdy-23自带的JDY-LED(应用商店搜索)
l 安卓附件里面带有jdy官方软件,或者其他蓝牙串口调试工具都可以


接线
l 晶振和电容,最小系统对应接
l 蓝牙模块烧录器接线一样,R ----> TT ----> R
l LED,正极 ----> vcc,负极 ----> P3.7
线路简单就没必要配图了


对我来说难点
1. 蓝牙模块的操作,实际上就是串口的操作
2. 串口十六进制,ASCII码,字符串之间的关系
3. 蓝牙中断(串口中断)相关寄存器配置(有的是现成的模块,不过还是要自己消化一下)
(1) STC单片机可以在STC软件的”波特率计算器”,里面直接生成方便。(生成的话要自己添加EA=1(总中断),ES=1(串口中断)

实际效果
1. 通过字符串 o,点亮LED(发送低电平),发送c,关闭LED(发送高电平)
(1) 也可以发送对应的十六进制,例如o ----> ASCII11110进制) ----> 6f16进制)。所以发送f6等同于发送o(可以直接找网站转码省的自己算)

存在的问题

单片机代码
代码很简单,就是想记录一下自己的学习(论坛的代码格式真的太烂了,将就看看吧)
  1. #include "reg52.h"
  2. #include <intrins.h>

  3. sfr AUXR = 0x8E;  //reg52.h这个库未对AUXR定义,这里额外定义一下

  4. sbit led = P3^7;

  5. char cmd;

  6. void UartInit()     //9600bps@11.0592MHz
  7. {
  8.     PCON &= 0x7F;       //波特率不倍速
  9.     SCON = 0x50;        //8位数据,可变波特率
  10.     AUXR &= 0xBF;       //定时器1时钟为Fosc/12,即12T
  11.     AUXR &= 0xFE;       //串口1选择定时器1为波特率发生器
  12.     TMOD &= 0x0F;       //清除定时器1模式位
  13.     TMOD |= 0x20;       //设定定时器1为8位自动重装方式
  14.     TL1 = 0xFD;     //设定定时初值
  15.     TH1 = 0xFD;     //设定定时器重装值
  16.     ET1 = 0;        //禁止定时器1中断
  17.     TR1 = 1;        //启动定时器1
  18.     EA = 1;         //开启总中断
  19.     ES = 1;        //开启串口中断
  20. }

  21. void send_byte(char data_msg)
  22. {
  23.     SBUF = data_msg;
  24.     while(!TI);
  25.     TI = 0;
  26. }

  27. void send_msg(char* data_msg)
  28. {
  29.     while(*data_msg != '\0')
  30.     {
  31.         send_byte(*data_msg);
  32.         data_msg++;
  33.     }
  34. }

  35. void main()
  36. {
  37.     UartInit();

  38.     led = 1;

  39.     while(1);
  40. }

  41. void UART_Routine() interrupt 4
  42. {
  43.     cmd = SBUF;
  44.     if(cmd == 'o')
  45.     {
  46.         led = 0;
  47.         send_msg("turn on.\r\n");
  48.     }
  49.     if(cmd == 'c')
  50.     {
  51.         led = 1;
  52.         send_msg("turn off.\r\n");
  53.     }
  54.   // SBUF接收到数据置1,只能通过软件设置恢复成0
  55.   // 接受完数据处理之后需要恢复0,不然无法接受后续数据
  56.         RI = 0;
  57. }
复制代码


JDY-23 5.0BLE蓝牙模块手册-V1.2版本.7z (2.26 MB, 下载次数: 24)








欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1