找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 36426|回复: 19
收起左侧

STC单片机自动下载器制作电路与程序设计

  [复制链接]
ID:70941 发表于 2015-1-23 15:51 | 显示全部楼层 |阅读模式
学习单片机的朋友都知道,STC单片机虽然便宜,但是每次下载程序都需要冷启动,才能下载程序,一个成品,需要调试N次,如果每次都要用手按,实在无语啊,我在数码之家论坛,21IC电子论坛,阿莫论坛都看见有制作贴子。这个日志介绍我制作的stc单片机自动下载器
自动下载器工作原理:
        在STC单片机中有两个程序区,用户程序区与ISP程序区。单片机上电后(冷启动,并非外部手动复位或看门狗复位),先会运行ISP程序,检测是否有合法的下载命令流,占时几十毫秒到几百毫秒,如果没有合法的下载命令流,则立即运行用户程序。
如果有合法的下载命令流,则ISP监控程序开始与ISP下载软件通信,软件也会进入编程模式,向监控程序发送程序码,监控程序接收程序码,并将其写入用户程序区中。在编程完毕,对程序校验成功后,用户程序立即生效,开始运行用户程序。
        STC-ISP尝试与MCU握手连接的时候,是以“最低波特率”设置项中的波特率不断的从串口发送“0x7F”信号,直到MCU上电冷启(或者软复位至ISP)经几十毫秒到几百毫秒检测下载命令流后,MCU做出响应,STC-ISP才停止发送“0x7F”信号开始烧写。
我的stc单片机自动下载器电路图




制作好的图片














stc单片机自动下载器程序
/***********************************
********STC单片机自动下载器********
**********MCU STC15F104W***11.0592MHZ********
**************荆棘鸟***************
**********************************/
#include <reg52.h>//52系列单片机特殊寄存器头文件
#define uint unsigned int//宏定义
#define uchar unsigned char
/********单片机I/O功能声明*********/
sbit DYKZD=P3^4;//电源控制端
sbit  XZXHD=P3^3;//下载信号检测端
uchar x;//下载信号低电平个数
/**************初始化**************/
void init()//初始化子函数
{
DYKZD=0;//电源控制端打开
XZXHD=1;
INT1= 1;
IT1= 1;                    //设置INT1的中断类型 (1:仅下降沿 0:上升沿和下降沿)
EX1= 1;                    //使能INT1中断
EA = 1;//打开总中断开关
}
/*************延时函数*************/
void delayms(uint xms)//延时子函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
/************外部中断ITN1********/
void exint1() interrupt 2       //INT1中断入口
{
x++;
}
/**************主程序************/
void main() //主程序
{
init();
while(1)
{
if(x>60)
{
DYKZD=1;
delayms(500);
DYKZD=0;
delayms(60000);
x=0;
}
}
}
下载速度还是比较快,如果程序太大,可能会下载失败,我的设置最高波特率也能下载,偶然也会失败

评分

参与人数 1黑币 +5 收起 理由
ssfc + 5 赞一个!

查看全部评分

回复

使用道具 举报

ID:64913 发表于 2015-1-26 22:01 | 显示全部楼层
很不错,谢谢你的分享.
回复

使用道具 举报

ID:64913 发表于 2015-1-26 22:07 | 显示全部楼层
原理图有点小错误,单片机VCC没有接电源
回复

使用道具 举报

ID:19120 发表于 2015-1-29 11:23 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:79034 发表于 2015-10-1 05:24 | 显示全部楼层
真心有用
回复

使用道具 举报

ID:88716 发表于 2015-10-1 13:37 来自手机 | 显示全部楼层
请问用的是什么芯片
回复

使用道具 举报

ID:44267 发表于 2015-10-9 11:21 | 显示全部楼层
就是顶一下
回复

使用道具 举报

ID:44267 发表于 2015-10-18 16:16 | 显示全部楼层
这个程序,我也搞个一个,用51单片机就行了
回复

使用道具 举报

ID:79544 发表于 2015-11-2 13:48 | 显示全部楼层
15F104W的电源没接上
回复

使用道具 举报

ID:79544 发表于 2015-11-2 13:49 | 显示全部楼层
直接取USB的5v应该就行。就是8550的发射脚
回复

使用道具 举报

ID:79544 发表于 2015-11-2 13:51 | 显示全部楼层
这个下载器应该在单片机用USB供电的情况可以用,单片机独立供电坑怕不行。
回复

使用道具 举报

ID:91165 发表于 2015-11-2 16:20 | 显示全部楼层
腾飞的龙 发表于 2015-11-2 13:49
直接取USB的5v应该就行。就是8550的发射脚

有的USB口供电不足,下载会失败
回复

使用道具 举报

ID:94392 发表于 2015-11-2 20:17 来自手机 | 显示全部楼层
楼主我的晶振是32.068MHz的,做频谱灯,可以吗??
回复

使用道具 举报

ID:79544 发表于 2015-11-3 16:14 | 显示全部楼层
楼主您好:不好用啊
回复

使用道具 举报

ID:47652 发表于 2015-11-12 12:26 | 显示全部楼层
好东西,谢谢分享
回复

使用道具 举报

ID:126422 发表于 2017-1-21 17:16 | 显示全部楼层
刚买一贴片15F104,太小不好焊。
回复

使用道具 举报

ID:192284 发表于 2017-5-11 15:54 | 显示全部楼层
学习了,之前一直就觉得这个冷启动麻烦,但是却没想过怎么去改变,看来还是太懒惰了,应该多动动脑筋思考啊!
回复

使用道具 举报

ID:72047 发表于 2017-9-10 19:12 | 显示全部楼层
下來學習一下

好動西,頂
回复

使用道具 举报

ID:87000 发表于 2019-4-26 10:04 | 显示全部楼层
怎么判断下载完毕 了?
回复

使用道具 举报

ID:644425 发表于 2019-12-5 12:50 来自手机 | 显示全部楼层
看了一下程序,就是让前沿单片机控制后端单片机上电,达到冷启动目的。如果这样的话,还不如自己用max232做个串口下载器,同时串口窃电,那么,点了下载就同时供电,停止下载就断电,要调试的时候在串口监视器里链接串口,又通电了,不是更方便?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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