STC51单片机一般是通过串口线下载程序到MCU。但是,有时候单片机放在作品上,串口线不够长,不方便下载,或者频繁拔插单片机,也不方便。

本方法,通过笔记本蓝牙,蓝牙串口模块HC-05,即可实现STC51单片机无线下载程序到MCU。

需要以下准备:

  1. 有蓝牙模块的笔记本。

  2. 蓝牙串口模块HC-05

  3. STC51单片机

  4. STC-ISP V6.53(只要能任意选择COM口的都行。)

  5. USB转串口模块

第一步:

打开笔记本蓝牙模块。首先你要确定你有蓝牙模块和装好相应的驱动,这里我就不详细展开了。不同笔记本打开方式不同。我的联想Y笔记本如图1:

第二步:

将USB转串口和HC-05的VCC,GND,相连,TXD接RXD,RXD接TXD。将USB转串口模块插入笔记本。此时HC-05指示灯应该是快速闪烁。

如上图,点击添加设备,搜索到HC-05后连接,输入设备的配对码 1234 ,如图2,

然后就连接成功,在 控制面板\硬件和声音\设备和打印机 里便可以看到HC-05了。在HC-05上右键,属性,硬件,便可以看到COM口号,COM28,如图3。

第三步:

将HC-05模块的PIO11置高(我买的模块有个按键),上电,模块便进入AT命令响应模式。此时HC-05指示灯应该是慢速地闪烁。

此时可以打开任意串口助手软件,如STC-ISP的串口助手,设置波特率38400,数据位8位,停止位1位,无校验位,无流控制。

串口发送字符: AT(后面要加个回车键,我之前不知道,以为没进入AT模式),成功则返回OK。

接下来设置HC-05工作模式:波特率9600,数据位8位,停止位1位,偶校验,无流控制。串口发送字符:AT+UART=9600,0,2

然后就可以关闭串口了。

第四步:

将HC-05插到单片机上,还是一样,VCC,GND,相连,TXD接RXD,RXD接TXD。

硬件部分就完成了。

第五步:

在单片机程序中加入ISP.c,ISP.h,在程序开关调用函数 UARTInit(); 实现STC51单片机的ISP。

/******************************************************************************
* 文    件: ISP.c
* 原作者: 李锋源
* 修  改: ZhnJa
* 创建日期: 2011-7-15
* 修改日期: 2013-8-01
* 说 明: 原文件为阿土开发板的Driver.c,提取出来的ISP下载程序。
******************************************************************************/#include "ISP.h"
#include "STC12C5A60S2.h"
#include <intrins.h> #ifdef   Self_Define_ISP_Download            //如果有自定义ISP下载功能
unsigned char bufptr;
code unsigned char passward[]={ICPCODE};
unsigned char buf[sizeof(passward)*2];      //静态串口缓冲区
#endif/******************************************************************************
*                               UART初始化
*描    述:串口初始化函数, 通常是在使用串口前调用本函数来进行初始化, 通常是在
*          main函数中调用。
*入口参数:无
*返    回:无
*注    意:串口使用的是中断模式
******************************************************************************/
void UARTInit(void)
{#define Fclk 11059200UL    //晶振 11.059M 不可以写成11059200#define BitRate 9600UL    //9600b/sunsigned char i;unsigned int j;
#ifdef  Self_Define_ISP_Download   //自定义下载使用到bufptr = 0;for( i=0; i<sizeof(buf); i++){buf[i] = 0;}
#endifEA=0;                            //暂时关闭中断TMOD &= 0x0F;TMOD |=0x20;                 //定时器1工作在模式2,自动重装模式SCON=0x50;                       //串口工作在模式1TH1=256-(Fclk/(BitRate*12*16)); //计算定时器重装值TL1=256-(Fclk/(BitRate*12*16));PCON|=0x80;                       //串口波特率加倍// ES=1;                      //串行中断允许TR1=1;                         //启动定时器1REN=1;                         //允许接收 EA=1;                           //允许中断 for(i=0;i<8;i++)               //短暂延时判断有无ISP下载命令{  for(j=0;j<40000;j++){if(RI){RI = 0;IAP_CONTR = 0x60;     //复位到IAP}}}ES=1;                          //串行中断允许
}/******************************************************************************
*                               延时1s函数
*描    述:延时1s函数,在UartInit()调用供ISP延时。
*入口参数:无
*返    回:无
*注    意:
******************************************************************************/
void delay1s(void)
{unsigned char i,j,k;for(i=0;i<200;i++){for(j=0;j<200;j++){k = 10;while(k--);}}
}
/******************************************************************************
*                           发送一个字符
*描    述:向串口发送一个字符。
*入口参数:要发送的字符
*返    回:无
*注    意:
******************************************************************************/
void SendByte(unsigned char c)
{SBUF = c;while(!TI);TI = 0;
}
/******************************************************************************
*                          发送一个字符串
*描    述:向串口发送一个字符串
*入口参数:*s要发送的字符串
*返    回:无
*注    意:
******************************************************************************/
void SendStr(char *s)
{while(*s){SendByte(*s++);}
}/******************************************************************************
*                               串口0中断
*描    述:串口0(UART0)中断。
*入口参数:无
*返    回:无
*注    意:
******************************************************************************/
void UartISR(void) interrupt 4
{
#ifdef Self_Define_ISP_Downloadunsigned char ptScr,ptDst;if(RI){RI = 0;                //清标志位buf[bufptr] = SBUF;ptScr = bufptr;  if(bufptr==sizeof(buf)){bufptr = 0;}else{bufptr++;}while(buf[ptScr] == passward[ptDst]){if(ptScr == 0){ptScr = sizeof(buf)-1;}else{ptScr--;}if(ptDst == 0){//   reset();delay1s();            //复位前提示程序IAP_CONTR = 0x60;       //复位到IAP}else{ptDst--;} }//用户程序开始//用户程序结束}//End if(RI) if(TI)                           //发送完成{         TI = 0;                        //清标志位}
#else                               //如果不使用自定义ISP下载程序if(RI){RI = 0;}else{TI = 0;}
#endif
}/*======================End Of File====================*/
/******************************************************************************
* 文    件: ISP.h
* 原作者: 李锋源
* 修  改: ZhnJa
* 创建日期: 2011-7-15
* 修改日期: 2013-8-01
******************************************************************************/
#ifndef __ISP_H__
#define __ISP_H__#include "STC12C5A60S2.h"
//系统配置
#define Self_Define_ISP_Download            //ISP下载
#define ICPCODE     0x12,0x34,0x56,0x78,0x90,0xAB,0xCD,0xEF
#define FOSC    11059000UL
#define T100HZ  (FOSC/12/100)//函数声明//串口
void UARTInit(void);
void UARTInit(void);void SendByte(unsigned char c);
void SendStr(char *s);void delay1s(void);#endif

第六步:

先用普通的正常下载方式将包含有ISP功能的程序下载到STC51单片机上。

打开STC-ISP(V6.53),设置如图,点击发送自定义下载命令即可实现远程下载。

补充:最高,最低波特率要设置为9600

说明1:
ISP,即In-System Programming,在线编程。
具有ISP功能的单片机芯片,可以通过简单的下载线直接在电路板上给芯片写入或者擦除程序,并且支持在线调试。
说明2:
须先下载一次有ISP功能的程序到单片机,之后才能实现冷启动下载程序,即ISP功能。

STC51单片机实现蓝牙无线下载程序相关推荐

  1. STC51单片机数码管显示程序和仿真

    STC51单片机数码管显示程序和仿真 仿真使用的数码管时共阴极 1.共阳: char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92

  2. 【CH559L单片机】串口下载程序说明

    [CH559L单片机]串口下载程序说明

  3. 使用stc15F101w单片机,无法下载程序 ,提示程序被截断

    在使用STC15f101w单片机,程序编译完成下载程序时一直提示这个. 因为在keil里面没有F101w的选项我选择的是f104w,这个片子的flash为4k.所以生成的下载文件达到了4k大小. 即如 ...

  4. 51单片机usb烧录电路_STC51单片机自动ISP下载电路设计 - ch340g单片机下载程序电路原理...

    STC51单片机自动ISP下载电路设计 1.51单片机程序下载原理 51单片机程序烧写接口为RXD和TXD,即UART口,这两个接口是通信口,配合不同的芯片可以实现不同的通讯方式.如果连接MAX232 ...

  5. 使用USB转TTL串口板和ST-LINK调试下载器给STM32单片机下载程序

    使用USB转TTL串口板和ST-LINK调试下载器给STM32单片机下载程序 简介 STM32的启动模式 JTAG和SWD接口引脚对比 驱动安装 使用官方STM32 ST-LINK Utility软件 ...

  6. 奥克斯空调红外遥控信号编码协议的分析,STC51单片机读红外程序

    2022.9 网上根本找不到资料,没人免费发布,有发布也是要钱的.哎.自己研究吧. 刚买的奥克斯清芯净空调,遥控器型号YKR-T/101,这样子的,手感不错: 用USB示波器抓了波形看了一下,和标准的 ...

  7. STC双串口单片机无法烧写下载程序原因,普中开发箱,STC12C5A60S2

    我用的是普中科技的开发箱,用STC-ISP下载线直接连到P3.0和P3.1针脚下载程序,发现无法下载程序的原因是开发箱的P3.0和P3.1是与DB9串口相连的,由J-RXD和J-TXD两个跳线控制,烧 ...

  8. 51单片机容易串电,用USB转ttl(ch340)给51单片机下载程序,接上TX,RX,板子上的灯就亮了,怎么解决?

    1 原理框架图: 2 原理图: 51单片机要冷启动下载程序,就是先点下载,然后再给单片机上电,上述的电路设计解决了在用USB转ttl为51单片机下载程序时串电的问题.

  9. STM32F103ZET6程序移植为C8T6+C8T6下载程序flash timeout的解决方案

    文章目录 一.程序移植 :程序移植还是蛮简单的 二.程序下载 : 会出现问题 (一)BOOT0和BOOT1 (二)程序下载 1.代码通用 2.状况不断 3.解决办法 (三)STM32F103C8T6下 ...

最新文章

  1. python检查目录是否存在,如果不存在则创建
  2. BetaBot 木马分析
  3. alertdialog怎么水平排列_轻钢二级吊顶怎么安装
  4. 数据挖掘之关联分析七(非频繁模式)
  5. 一次回母校教前端的经历
  6. [转]EL函数、自定义EL函数、自定义标签
  7. Mac安装mysql8.x最简洁的步骤,避免采坑
  8. 随机投点法计算定积分java_11 随机模拟积分 | 统计计算
  9. android window 半透明,popupWindow半透明背景
  10. x264源代码简单分析:x264命令行工具(x264.exe)
  11. matplotlib绘制圆饼图
  12. 拼接字符串Joiner的用法
  13. 安卓手机格式化怎么弄_安卓手机怎么格式化
  14. [WUSTCTF2020]level3 笔记与自省
  15. 霍兰德职业规划测试软件,霍兰德职业兴趣测试
  16. react + canvas点线动画背景
  17. android 获取通话记录对应卡槽,短信记录对应卡槽
  18. (震撼实拍)垃圾场里发奋学习的兄妹俩
  19. Python实现BOA蝴蝶优化算法优化支持向量机回归模型(SVR算法)项目实战
  20. 加速基因测序进程,北鲲云高性能计算平台再发力

热门文章

  1. WICC 2021成功召开 融云带来 PaaS 服务演进方向新探索
  2. 判断点与多边形的关系(1):向量积法
  3. 4.2 运动学自行车模型(第四章 车辆的动态建模)
  4. 读文章笔记-自适应和加速GB生成算法
  5. CVPR2023对抗攻击相关论文
  6. python词云模糊_用Python和WordCloud绘制词云(内附让字体清晰的秘笈)
  7. 脚本病毒分析扫描专题1-VBA代码阅读扫盲、宏病毒分析
  8. 搭建机器人电控系统——通信协议——串口通信USART/UART、RS232、RS485及其实例
  9. 提升Flash寿命的方法
  10. 电商产品2| ERP框架+登录页 低保真原型