此文记录HC05蓝牙模块在C51单片机上的学习历程
文章目录
HC05一共有6个引脚,此实验一般只用到中间四个,即RXD、TXD、GND、VCC

HC05有两种模式,一是正常模式,二是配置模式,一定注意两种模式的接线方法是不同的
无论哪种模式,VCC与GND的接线方法是相同的,即VCC接单片机的5V口(供电电压为3.6V~6V,接到3.3V上是不亮的),GND接单片机的GND,如下所示


在配置模式下,单片机通过串口与电脑连接,电脑通过AT指令即可完成对HC05模块的参数配置。此时接线为:
配置模式下HC05的RXD接单片机的RXD,TXD接TXD。
由于博主使用的单片机型号为STC89C52RC,查看原理图得单片机的RXD为p30口,TXD为p31口

则连接如下图所示


在正常模式下HC05的RXD接单片机的TXD,TXD接RXD。
使用配置模式接线后,将单片机通过串口连接电脑。若此时给单片机上电,在连接无误的情况下, HC05模块上有灯快速闪烁,大概1s闪两次,此时还未进入配置模式。
给单片机断电,一直按住HC05模块上的小按钮,如下图所示:

在按住按钮的同时给单片机上电,上完电后松开按钮,HC05首先会快速闪烁,在1s后进入慢闪状态,大约2s闪烁一次,此时成功进入配置模式。
打开串口助手,题主这里用的是sscom5.13.1。打开之后配置串口助手,如下图所示,
(1)首先注意串口号是否正确
(2)然后一定要将波特率设置为38400(此波特率为配置模式的波特率,无论后面通过指令将波特率变为多少,都是调整的正常模式的波特率,配置模式的波特率为38400是不变的)
(3)勾选加回车换行选项(若使用的串口助手无此选项,手动在代码后加上\r\n,例如AT\r\n)

(4)打开串口,在输入框内输入AT,点击发送。若一切正常,则会收到OK,如下图所示。
若没有收到,请检查接线,或者中奖了,单片机/模块有问题 。

接下来可以使用AT指令对模块进行配置,部分AT指令如下
AT+ROLE=0 (蓝牙模块设为从机,此时只可以被搜索)
AT+CMODE=1 (蓝牙模块可以和任意设备连接)
AT+UART=9600,0,0 (设置波特率9600)
AT+NAME=HC05 (设置蓝牙的名字为HC05,手机蓝牙搜索时就找这个名字)
AT+PSWD=1234 (设置密码,手机蓝牙串口APP连接蓝牙模块,需要输入密码)
以上,蓝牙串口通通返回OK 。
例如改变波特率为9600:

将接线按照正常模式接入,即RXD对TXD,TXD对RXD。给单片机上电,HC05会快速闪烁。下载一个手机蓝牙调试app(题主使用的为Bluetooth spp pro,其他在应用市场上搜索的大部分也可以使用),搜索到自己的设备

点击连接,输入密码(一般默认为1234,可以在配置模式下通过AT指令修改自己的连接密码),然后连接成功。
单片机代码如下:
UART_init () 配置文件
#include <REGX52.H>
void UART_init() //9600bps@11.0592MHz
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位数据,可变波特率
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xFA; //设定定时初值
TH1 = 0xFA; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
ES=1;
EA=1;
}
.h文件
#ifndef __UART_H__
#define __UART_H__
void UART_init();
#endif
main.c文件
#include <REGX52.H>
void main()
{
UART_init();
P2=0x00;
while(1)
{
}
}
void UART_Routine() interrupt 4
{
if (RI==1)
{
P1=SBUF;//将SBUF值赋值给P1
if (P1==0x01)
{
P2=~0x80;
RI=0;
}
else if (P1==0x02)
{
P2=~0x40;
RI=0;
}
}
}
将代码烧录进单片机后,给单片机上电,此时HC05快速闪烁,打开手机app进行蓝牙连接,连接成功后HC05进入慢闪(大约5s快速闪两次)。

连接成功后选择键盘模式,选择配置键盘值

配置两个按键的键盘值


!!! 别忘记选择IO模式,选择为hex模式,若选错模式则实验会毫无反应
(若选择为ascii模式,则代码需要改动,例如键盘发送01给单片机,在hex模式下单片机收到的值为0x01,在ascii模式下收到的为0x0031,具体转换方法请查看acii码表)

配置结束后,点击保存键盘配置。
按下1键,单片机led D8闪烁;按下2键,单片机led D7闪烁,此时实验成功。
说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
1.问题描述使用Python的turtle(海龟绘图)模块提供的函数绘制直线。2.问题分析一幅复杂的图形通常都可以由点、直线、三角形、矩形、平行四边形、圆、椭圆和圆弧等基本图形组成。其中的三角形、矩形、平行四边形又可以由直线组成,而直线又是由两个点确定的。我们使用Python的turtle模块所提供的函数来绘制直线。在使用之前我们先介绍一下turtle模块的相关知识点。turtle模块提供面向对象和面向过程两种形式的海龟绘图基本组件。面向对象的接口类如下:1)TurtleScreen类:定义图形窗口作为绘图海龟的运动场。它的构造器需要一个tkinter.Canvas或ScrolledCanva
目录H2数据库入门以及实际开发时的使用1.H2数据库的初识1.1H2数据库介绍1.2为什么要使用嵌入式数据库?1.3嵌入式数据库对比1.3.1性能对比1.4技术选型思考2.H2数据库实战2.1H2数据库下载搭建以及部署2.1.1H2数据库的下载2.1.2数据库启动2.1.2.1windows系统可以在bin目录下执行h2.bat2.1.2.2同理可以通过cmd直接使用命令进行启动:2.1.2.3启动后控制台页面:2.1.3spring整合H2数据库2.1.3.1引入依赖文件2.1.4数据库通过file模式实际保存数据的位置2.2H2数据库操作2.2.1Mysql兼容模式2.2.2Mysql模式
目录一、安装包链接二、安装详细步骤1.安装Wireshark和WinPcap2.安装OracleVMVirtualBox3.安装ensp三、安装后注册四、启动路由器出现40错误怎么解决一、安装包链接二、安装详细步骤链接:https://pan.baidu.com/s/1QbUUYMOMIV2oeIKHWP1SpA?pwd=xftx提取码:xftx1.安装Wireshark和WinPcap找到Wireshark安装包所在文件夹,双击它,按照以下步骤安装。2.安装OracleVMVirtualBox找到OracleVMVirtualBox安装包所在文件夹,双击它,按照以下步骤安装。注:可自定义安装
Nginx安装1.官网下载Nginx2.使用XShell和Xftp将压缩包上传到Linux虚拟机中3.解压文件nginx-1.20.2.tar.gz4.配置nginx5.启动nginx6.拓展(修改端口和常用命令)(一)修改nginx端口(二)常用命令1.官网下载Nginxhttp://nginx.org/en/download.html这里我下载的是1.20.2版本,大家按需下载对应稳定版即可2.使用XShell和Xftp将压缩包上传到Linux虚拟机中没有XShell可以参考《Linux操作系统CentOS7连接XShell》3.解压文件nginx-1.20.2.tar.gz1)检查是否存
本人是音乐爱好者,从小就特别喜欢那个随着音乐跳动的方框效果,就是这个:arduino上一大把对,我忍你很久了,我就想用mpy做,全网没有,行我自己研究。果然兴趣是最好的老师,我之前有篇博客专门讲音频,有兴趣的可以回顾一下。提到可视化频谱,必然绕不开fft,大学学过这玩意,当时一心玩,老师讲的一个字都么听进去,网上教程简略扫了一下,大该就是把时域转频域的工具,我大mpy居然没有fft函数,奶奶的,先放着。音频信息如何收集?第一种傻瓜式的ADC,模拟转数字,原始粗暴,第二种,I2S库,我之前博客有讲过,数据是PCM编码。然后又去学PCM编码,一学豁然开朗,舒服,以代码为例:audio_in=I2S
因学习需要用到keras,通过查找较多资料最终完成Anaconda、TensorFlow和Keras的简单安装。因为网上的相关资料较多但大部分不够全面,查找起来不太方便,因此自己记录一下成功下载安装的详细过程,顺便推荐一下借鉴的写的很好的相关教程文章。keras需要在TensorFlow之上才能运行,所以要先安装TensorFlow,而TensorFlow只能在3.7以前的python版本中运行,所以需要先创建一个基于python3.6的虚拟环境,因此便需要先下载Anaconda。一、Anaconda3下载和安装Anaconda下载安装教程原文链接:https://blog.csdn.net/
【动态规划】一、背包问题1.背包问题总结1)动规四部曲:2)递推公式总结:3)遍历顺序总结:2.01背包1)二维dp数组代码实现2)一维dp数组代码实现3.完全背包代码实现4.多重背包代码实现一、背包问题1.背包问题总结暴力的解法是指数级别的时间复杂度。进而才需要动态规划的解法来进行优化!背包问题是动态规划(DynamicPlanning)里的非常重要的一部分,关于几种常见的背包,其关系如下:在解决背包问题的时候,我们通常都是按照如下五部来逐步分析,把这五部都搞透了,算是对动规来理解深入了。1)动规四部曲:(1)确定dp数组及其下标的含义(2)确定递推公式(3)dp数组的初始化(4)确定遍历顺
✅作者简介:大家好,我是小杨📃个人主页:「小杨」的csdn博客🔥系列专栏:小杨带你玩转C语言【初阶】🐳希望大家多多支持🥰一起进步呀!大家好呀!我是小杨。小杨花几天的时间将C语言中的操作符这部分知识做了一个大总结,在方便自己复习的同时也能够帮助到大家。通篇字数在一万字左右,可以算作是非常详细了,一文就可以带领大家彻底掌握操作符这部分内容,文章很长建议先收藏再看,防止下次想看就找不到啦。文章目录✍1,算术操作符✍2,移位操作符 🔍2.1,左移操作符 🔍2.2,右移操作符 ✨2.2.1,算术移位 ✨2.2.2,逻辑移位✍3,位操作符 🔍3.1,按位与&