找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7207|回复: 2
打印 上一主题 下一主题
收起左侧

基于STC15F104W单片机的自动下载电路带程序

  [复制链接]
跳转到指定楼层
楼主
      需要将晶振频率设置为11.0592MHz(ISP下载软件中设置)ISP最新软件最低波特率设置为2400(软件默认)
工作原理:【STC15F104W单片机没有硬件串口,所以只能模拟串口】
因为ISP在下载程序之前会以最低波特率向目标单片机连续发送0X7F握手信号,基于此,在STC15F104W
单片机中模拟串口接收上位机发送的0X7F,当连续检测到有16个0X7F时候就认为是需要下载程序了,此时
P34脚输出高电平,而使外部的S8550三极管截至,目标单片机失电(模仿给单片机断电),延时600ms后再
给单片机上电,就可以下载程序了。此制作在不下载以及下载完程序时目标单片机一直得电,并且不妨碍
串口调试,不占用单片机硬件串口。供电用三极管采用S8550,最大工作电流1.5A,而电脑USB输出电流最
大500ma左右,所以正常情况下电路不会出现问题。【T0模拟串口时钟,T2用作延时计数器】

实物图
从家里找了一片STC89C52RC单片机,连续写了1000多次,没有一次失败,下面是视频

单片机源程序如下:
  1. #include "init.h"

  2. extern u8 cnt7f;                        //连续接收到0X7F的次数计数器
  3. extern u16 t2cnt;                        //T2定时计数值
  4. extern u8 RBUF;                          //接收缓冲区
  5. extern u8 RDAT;                         //接收数据
  6. extern u8 RCNT;                         //接收计数器
  7. extern u8 RBIT;                                //接收位数
  8. extern bit RING;                         //正在接收标志
  9. extern bit REND;                        //接收完成标志

  10. /*T2初始化*/
  11. void Timer2Init(void)                //1毫秒@11.0592MHz
  12. {
  13.         AUXR |= 0x04;                        //定时器时钟1T模式
  14.         T2L = T1MS;             //初始化计时值
  15.     T2H = T1MS >> 8;
  16.         IE2 |= 0x04;                         //使能定时器2中断
  17. }

  18. /*全局初始化*/
  19. void all_init(void)
  20. {
  21.         TMOD=0x00;                                 //定时器0在16位自动重装模式
  22.         AUXR=0x80;                                 //定时器0在1T模式
  23.         TL0=65536-FOSC/3/BAUD;
  24.         TH0=(65536-FOSC/3/BAUD)>>8;//初始化定时器0并设定重装值
  25.         TR0=1;                                         //定时器0开始运行
  26.         ET0=1;                                         //使能定时器0中断
  27.         PT0=1;                                         //定时计数器0中断高优先级
  28.         EA=1;                                        //开总中断
  29.        
  30.         RING=0;
  31.         REND=0;
  32.         RCNT=0;
  33.         Timer2Init();
  34.         cnt7f=0;
  35.         P3M1 &= 0XEF;                         //1110 1111设置P3.4为强推挽输出
  36.         P3M0 |= 0X10;                          //0001 0000设置P3.4为强推挽输出
  37.         enable = 0;                                //确定给目标单片机供电
  38.        
  39.         AUXR |= 0x10;                        //定时器2开始计时
  40.         while(t2cnt<300);                 //等待 使系统稳定
  41.         AUXR &= 0xEF;                        //关定时器2计时
  42.         t2cnt = 0;                                //清零T2计数值
  43. }
复制代码

所有资料51hei提供下载:
STC15F104W模拟串口实现自动下载.rar (394.15 KB, 下载次数: 111)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏14 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:45334 发表于 2019-12-10 08:33 | 只看该作者
视频.rar (4.74 MB, 下载次数: 28)
回复

使用道具 举报

板凳
ID:155785 发表于 2021-3-8 21:10 | 只看该作者
这个需要把程序烧到STC15F104W里,然后再把STC15F104W装上去对吧?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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