找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 38560|回復(fù): 19
打印 上一主題 下一主題
收起左側(cè)

STC單片機(jī)自動下載器制作電路與程序設(shè)計

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:70941 發(fā)表于 2015-1-23 15:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
學(xué)習(xí)單片機(jī)的朋友都知道,STC單片機(jī)雖然便宜,但是每次下載程序都需要冷啟動,才能下載程序,一個成品,需要調(diào)試N次,如果每次都要用手按,實在無語啊,我在數(shù)碼之家論壇,21IC電子論壇,阿莫論壇都看見有制作貼子。這個日志介紹我制作的stc單片機(jī)自動下載器
自動下載器工作原理:
        在STC單片機(jī)中有兩個程序區(qū),用戶程序區(qū)與ISP程序區(qū)。單片機(jī)上電后(冷啟動,并非外部手動復(fù)位或看門狗復(fù)位),先會運行ISP程序,檢測是否有合法的下載命令流,占時幾十毫秒到幾百毫秒,如果沒有合法的下載命令流,則立即運行用戶程序。
如果有合法的下載命令流,則ISP監(jiān)控程序開始與ISP下載軟件通信,軟件也會進(jìn)入編程模式,向監(jiān)控程序發(fā)送程序碼,監(jiān)控程序接收程序碼,并將其寫入用戶程序區(qū)中。在編程完畢,對程序校驗成功后,用戶程序立即生效,開始運行用戶程序。
        STC-ISP嘗試與MCU握手連接的時候,是以“最低波特率”設(shè)置項中的波特率不斷的從串口發(fā)送“0x7F”信號,直到MCU上電冷啟(或者軟復(fù)位至ISP)經(jīng)幾十毫秒到幾百毫秒檢測下載命令流后,MCU做出響應(yīng),STC-ISP才停止發(fā)送“0x7F”信號開始燒寫。
我的stc單片機(jī)自動下載器電路圖




制作好的圖片














stc單片機(jī)自動下載器程序
/***********************************
********STC單片機(jī)自動下載器********
**********MCU STC15F104W***11.0592MHZ********
**************荊棘鳥***************
**********************************/
#include <reg52.h>//52系列單片機(jī)特殊寄存器頭文件
#define uint unsigned int//宏定義
#define uchar unsigned char
/********單片機(jī)I/O功能聲明*********/
sbit DYKZD=P3^4;//電源控制端
sbit  XZXHD=P3^3;//下載信號檢測端
uchar x;//下載信號低電平個數(shù)
/**************初始化**************/
void init()//初始化子函數(shù)
{
DYKZD=0;//電源控制端打開
XZXHD=1;
INT1= 1;
IT1= 1;                    //設(shè)置INT1的中斷類型 (1:僅下降沿 0:上升沿和下降沿)
EX1= 1;                    //使能INT1中斷
EA = 1;//打開總中斷開關(guān)
}
/*************延時函數(shù)*************/
void delayms(uint xms)//延時子函數(shù)
{
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;
}
}
}
下載速度還是比較快,如果程序太大,可能會下載失敗,我的設(shè)置最高波特率也能下載,偶然也會失敗

評分

參與人數(shù) 1黑幣 +5 收起 理由
ssfc + 5 贊一個!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏13 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:64913 發(fā)表于 2015-1-26 22:01 | 只看該作者
很不錯,謝謝你的分享.
回復(fù)

使用道具 舉報

板凳
ID:64913 發(fā)表于 2015-1-26 22:07 | 只看該作者
原理圖有點小錯誤,單片機(jī)VCC沒有接電源
回復(fù)

使用道具 舉報

地板
ID:19120 發(fā)表于 2015-1-29 11:23 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

5#
ID:79034 發(fā)表于 2015-10-1 05:24 | 只看該作者
真心有用
回復(fù)

使用道具 舉報

6#
ID:88716 發(fā)表于 2015-10-1 13:37 來自觸屏版 | 只看該作者
請問用的是什么芯片
回復(fù)

使用道具 舉報

7#
ID:44267 發(fā)表于 2015-10-9 11:21 | 只看該作者
就是頂一下
回復(fù)

使用道具 舉報

8#
ID:44267 發(fā)表于 2015-10-18 16:16 | 只看該作者
這個程序,我也搞個一個,用51單片機(jī)就行了
回復(fù)

使用道具 舉報

9#
ID:79544 發(fā)表于 2015-11-2 13:48 | 只看該作者
15F104W的電源沒接上
回復(fù)

使用道具 舉報

10#
ID:79544 發(fā)表于 2015-11-2 13:49 | 只看該作者
直接取USB的5v應(yīng)該就行。就是8550的發(fā)射腳
回復(fù)

使用道具 舉報

11#
ID:79544 發(fā)表于 2015-11-2 13:51 | 只看該作者
這個下載器應(yīng)該在單片機(jī)用USB供電的情況可以用,單片機(jī)獨立供電坑怕不行。
回復(fù)

使用道具 舉報

12#
ID:91165 發(fā)表于 2015-11-2 16:20 | 只看該作者
騰飛的龍 發(fā)表于 2015-11-2 13:49
直接取USB的5v應(yīng)該就行。就是8550的發(fā)射腳

有的USB口供電不足,下載會失敗
回復(fù)

使用道具 舉報

13#
ID:94392 發(fā)表于 2015-11-2 20:17 來自觸屏版 | 只看該作者
樓主我的晶振是32.068MHz的,做頻譜燈,可以嗎??
回復(fù)

使用道具 舉報

14#
ID:79544 發(fā)表于 2015-11-3 16:14 | 只看該作者
樓主您好:不好用啊
回復(fù)

使用道具 舉報

15#
ID:47652 發(fā)表于 2015-11-12 12:26 | 只看該作者
好東西,謝謝分享
回復(fù)

使用道具 舉報

16#
ID:126422 發(fā)表于 2017-1-21 17:16 | 只看該作者
剛買一貼片15F104,太小不好焊。
回復(fù)

使用道具 舉報

17#
ID:192284 發(fā)表于 2017-5-11 15:54 | 只看該作者
學(xué)習(xí)了,之前一直就覺得這個冷啟動麻煩,但是卻沒想過怎么去改變,看來還是太懶惰了,應(yīng)該多動動腦筋思考��!
回復(fù)

使用道具 舉報

18#
ID:72047 發(fā)表于 2017-9-10 19:12 | 只看該作者
下來學(xué)習(xí)一下

好動西,頂
回復(fù)

使用道具 舉報

19#
ID:87000 發(fā)表于 2019-4-26 10:04 | 只看該作者
怎么判斷下載完畢 了?
回復(fù)

使用道具 舉報

20#
ID:644425 發(fā)表于 2019-12-5 12:50 來自觸屏版 | 只看該作者
看了一下程序,就是讓前沿單片機(jī)控制后端單片機(jī)上電,達(dá)到冷啟動目的。如果這樣的話,還不如自己用max232做個串口下載器,同時串口竊電,那么,點了下載就同時供電,停止下載就斷電,要調(diào)試的時候在串口監(jiān)視器里鏈接串口,又通電了,不是更方便?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表