找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2390|回復(fù): 0
收起左側(cè)

STC單片機(jī)藍(lán)牙點(diǎn)亮LED代碼與調(diào)試,V1

[復(fù)制鏈接]
ID:598987 發(fā)表于 2022-7-11 21:50 | 顯示全部樓層 |閱讀模式
硬件
l JDY-23藍(lán)牙模塊(配有官網(wǎng)的安卓和ios軟件)
l STC12c2052AD
l 11.0592晶振,30pf陶瓷電容x2
l LED,杜邦線若干

軟件
l 串口調(diào)試工具,電腦直接使用STC自帶的比較方便,其它的也可以下面附件壓縮包里面也有
l Ios使用的是jdy-23自帶的JDY-LED(應(yīng)用商店搜索)
l 安卓附件里面帶有jdy官方軟件,或者其他藍(lán)牙串口調(diào)試工具都可以

stc波特率計算器

stc波特率計算器


接線
l 晶振和電容,最小系統(tǒng)對應(yīng)接
l 藍(lán)牙模塊燒錄器接線一樣,R ----> T,T ----> R
l LED,正極 ----> vcc,負(fù)極 ----> P3.7
線路簡單就沒必要配圖了


對我來說難點(diǎn)
1. 藍(lán)牙模塊的操作,實(shí)際上就是串口的操作
2. 串口十六進(jìn)制,ASCII碼,字符串之間的關(guān)系
3. 藍(lán)牙中斷(串口中斷)相關(guān)寄存器配置(有的是現(xiàn)成的模塊,不過還是要自己消化一下)
(1) STC單片機(jī)可以在STC軟件的”波特率計算器”,里面直接生成方便。(生成的話要自己添加EA=1(總中斷),ES=1(串口中斷)

實(shí)際效果
1. 通過字符串 o,點(diǎn)亮LED(發(fā)送低電平),發(fā)送c,關(guān)閉LED(發(fā)送高電平)
(1) 也可以發(fā)送對應(yīng)的十六進(jìn)制,例如o ----> ASCII11110進(jìn)制) ----> 6f16進(jìn)制)。所以發(fā)送f6等同于發(fā)送o(可以直接找網(wǎng)站轉(zhuǎn)碼省的自己算)

存在的問題
  • 不穩(wěn)定,雖然發(fā)送之后可以點(diǎn)亮LED,有時候會穩(wěn)定常亮。但是有時候會閃爍一下之后LED就熄滅了(有人知道是啥問題嗎?)

單片機(jī)代碼
代碼很簡單,就是想記錄一下自己的學(xué)習(xí)(論壇的代碼格式真的太爛了,將就看看吧)
  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位數(shù)據(jù),可變波特率
  10.     AUXR &= 0xBF;       //定時器1時鐘為Fosc/12,即12T
  11.     AUXR &= 0xFE;       //串口1選擇定時器1為波特率發(fā)生器
  12.     TMOD &= 0x0F;       //清除定時器1模式位
  13.     TMOD |= 0x20;       //設(shè)定定時器1為8位自動重裝方式
  14.     TL1 = 0xFD;     //設(shè)定定時初值
  15.     TH1 = 0xFD;     //設(shè)定定時器重裝值
  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接收到數(shù)據(jù)置1,只能通過軟件設(shè)置恢復(fù)成0
  55.   // 接受完數(shù)據(jù)處理之后需要恢復(fù)0,不然無法接受后續(xù)數(shù)據(jù)
  56.         RI = 0;
  57. }
復(fù)制代碼

51hei.png
JDY-23 5.0BLE藍(lán)牙模塊手冊-V1.2版本.7z (2.26 MB, 下載次數(shù): 24)



評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表