找回密码
 注册
关于网站域名变更的通知
查看: 630|回复: 3
打印 上一主题 下一主题

求教,关于单片机与蓝牙hc05问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-3-18 11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
单片机是stc89c52,晶振是11.0592M,用的是蓝牙hc05,硬件连好后发送命令,问题在于发送前两次命令正常,但第三次收到消息不对,并且之后发命令像死机一样无反应怎么解决,已测任何命令发送都成功过,大部分都在第三次时候出现,顺便问下hc05模块en脚和state脚要接么,我没接悬空了。代码如下:+ _+ ~3 r0 e1 K+ W+ l
#include<reg52.h>& a5 w' p" R8 v' C. d% L
#include "intrins.h"
6 e& r( w* F0 n3 l$ P#include "stdio.h"
7 m" }% J. t; z#define uchar unsigned char
9 U2 m+ f! r0 A9 @' e  ?/ o, N#define uint unsigned int5 n0 j- w: L2 M8 C+ M1 h
/ w0 i3 }' p# p6 c
uchar date;       % i' @/ B2 a3 D' q
uint cmd;; j9 h/ ^' x' s9 P  b
sbit a=P2^0;" \. h0 g0 Q% z$ L% J" u
sbit b=P2^1;( g6 d; h1 I8 T2 _4 ]; ]
sbit c=P2^2;
$ k6 C/ L( x. c. wsbit d=P2^3;; c7 T0 r1 G/ @) Y9 O! c  r; {
uchar code at[]="get a";% E8 ?) R8 B  ]$ _# p' @
uchar code bt[]="get b";! ^  C5 d1 b5 G, j# J3 M3 [3 a3 g
uchar code ct[]="get c";7 J4 K2 i4 M  m; K6 T. o
uchar code dt[]="get d";5 w* d# b0 E3 D2 |+ K+ H
: O$ v, B! a8 U% y7 V, E& d
//------------------------------BLE---------------------------------------
/ u4 |8 L; u$ b4 vvoid UartConfiguration() //串口初始化* W( J) Q# I' h: V' u
{
  P6 C7 c$ \0 Q! u2 s- L7 J9 m        TMOD=0x20;           //定时器工作在模式2,8位自动重装模式8 U% p: Q: M0 J- w
        TH1=0xfd;         
% M) q, g# S9 R7 A7 M        TL1=0xfd;; p2 G  S0 y/ W) K. V$ |3 N
        PCON=0x00;           //串口波特率,SMOD=08 `4 S, G1 v) S9 Z* o
        SCON=0x50;           //串口工作在模式1     10uart6 |3 n- L+ ?; ?& C2 `! f0 Q
        EA=1;                   //总开关开
( ?% q* _$ j. i9 @% i) W) `+ b        ES=1;
: k) d2 e& H" h1 Q& D* ^2 |6 ?$ c) E9 L        TR1=1;                   //计数器开6 `* B$ A/ @% K

; v) c* ?, P. V/ I0 l}
1 f& @* q  O+ f. P; N7 d+ x8 H/ B; d6 |. b9 l! t
void sendDate(uchar buf)                //发送字符
8 a! i' G/ U* }5 b{
8 U$ P# T/ k- |2 O9 o6 a; s8 u          SBUF=buf;+ [: ^7 v4 x" j& |4 x, K: \+ `
        while(!TI);
; \) R; S- s. I( }7 K& X5 e        TI=0;
/ s5 y& h6 y  T5 g( {* s; q}% y9 {& r8 P. N# P0 m' a
void SendString(uchar *p)                //发送字符串
. Y# e' l  E4 v0 s{       - T0 V; m. h% T0 z+ S' G
        while(*p)7 _- }/ g8 ~' u- w0 ^2 u; K
        {8 W9 w- D6 }5 X7 W  S: _& p4 ~
         sendDate(*p);
; w+ b$ F( H/ o5 z$ O0 ]         p++;& x7 J# Y: m9 p( H/ P' \* g$ ~
        }
6 j! I9 c* p, t1 @: Z}7 s- \/ k  x; L/ m
void Iscmd()& J+ Y( s8 @( F# R; l
{
9 `7 W, ^& I) f& t0 Q0 `        if(date=='a'||date=='b'||date=='c'||date=='d')cmd=1;           //判断是否为命令
4 A! R% D* n4 C9 a" ?6 G& P}
7 r* E$ b" v& o6 a% @- |8 V) b# g6 F
% U: ?, {; ?& x( _1 C& fvoid Uart() interrupt 4                           //串口判断是否有收到或发送完毕
8 Y/ W5 M! c" b0 o, G{/ s5 }6 X: Y3 Q9 V! t: y& H
        if(RI==1){date=SBUF;RI=0;Iscmd();}         //获取收到数据,RI置0,判断是否是命令4 G% C, ^$ P5 u" i5 T- g
        if(TI==1){TI=0;}                           //发送完毕置0! H, \2 h  ?. A7 g! z7 {' W$ F2 x
}/ F% k9 F" Y& N. B2 I
//----------------------------------------------------------------, u+ O6 ?4 v& }

- M: T& e" C- w0 r% D1 K- I; k
; w$ Y# f8 V/ ~: g8 m4 yvoid main()
6 P, H9 T3 U9 Y  Z, W  m{7 I9 U( @, U, P1 F
  UartConfiguration(); //蓝牙初始化5 t# r$ {8 @: C
  while(1)' \: X6 c8 q, ^0 ^
  {       ) U: I$ A9 w4 h+ Z/ w
        if(cmd)                  //命令判断/ i& _+ J9 s/ y; U* b
        {
" Z$ h8 J- F6 ~1 V2 `9 b                switch(date){                   //根据命令选择' `7 C2 a: X" Z6 v' t! J
                           case 'a':SendString(at);a=0;break;
: u$ |$ N  c: f' |- h% w                           case 'b':SendString(bt);b=0;break;
% \( S4 I  R9 Z6 f' T                           case 'c':SendString(ct);c=0;break;
0 I) `/ |1 o1 `, {, C' J$ t                           case 'd':SendString(dt);d=0;break;
" h) M; T" n4 m1 R                           default:break;
" V. U! z, w' |2 [                                  }
7 |& m. {1 U2 c$ k$ ^                cmd=0;         //命令标志置0
" ]$ B. E9 N1 ^3 C5 F        }
7 m. c: E# K; y1 y0 N  }
  B: V5 `0 P/ s" ]& ^7 p}. J# l  V8 L4 C- X
* K" F7 ]& S! y- k, Z+ u

该用户从未签到

2#
发表于 2021-3-18 11:28 | 只看该作者
电脑上sscom5仿真,看看是硬件问题还是软件问题

点评

先判断是那的问题,硬件或软件 在电脑上用串口助手发命令很好的方法  详情 回复 发表于 2021-3-18 13:35
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2021-3-18 13:35 | 只看该作者
    行者~ABC 发表于 2021-3-18 11:28
    ) W8 Z0 h' c5 U. @* l6 f/ A电脑上sscom5仿真,看看是硬件问题还是软件问题

    0 F/ ^4 Q3 A) N先判断是那的问题,硬件或软件
    0 R' h& y7 i$ ]7 n' ], W) D2 `在电脑上用串口助手发命令很好的方法2 Z8 e- ]# F" q0 M8 T

    该用户从未签到

    4#
    发表于 2021-3-18 13:45 | 只看该作者
    是不是单片机跑死了,需要加看门狗
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-20 17:48 , Processed in 0.140625 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表