自己在學(xué)51單片機(jī)時(shí)選用的是AT89S5X系列的單片機(jī),后來(lái)接觸到STC89C5X系列和STC12、15系列后因?yàn)樨S富的內(nèi)部資源和合適的價(jià)格,而且直接用串口就能下載程序,大多數(shù)基本選用了STC的單片機(jī)。
但是STC單片機(jī)有個(gè)說(shuō)麻煩不麻煩,但說(shuō)不麻煩又挺煩的問(wèn)題。就是下載程序時(shí)需要重啟電源,在寫(xiě)程序驗(yàn)證過(guò)程中不斷修改程序在所難免,于是重啟電源就成了不小的負(fù)擔(dān),而且影響心情還傷電源開(kāi)關(guān),這點(diǎn)就足以讓我還對(duì)ATMEL的SPI燒寫(xiě)余情未了!人家多方便,一鍵OK。
于是乎!百度看看有沒(méi)有可以解決這個(gè)問(wèn)題的方法,果然這STC單片機(jī)的這個(gè)不方便大家都有共識(shí),但是真正有人愿意共享出來(lái)的資料,要么程序一看就有錯(cuò)誤,分明STC15F104W沒(méi)有串口模塊偏寫(xiě)個(gè)串口中斷,貼個(gè)電路圖和程序都不搭邊。。。我無(wú)語(yǔ),看了文庫(kù)里的資料那叫一個(gè)內(nèi)牛滿面。。。發(fā)資料的人你就不能不嘚瑟嘛,把他的心路歷程有感情的看完后才發(fā)現(xiàn)人家也是COPY的,而且經(jīng)過(guò)美化完全不成樣子。。。
于是乎!還是自力更生吧。。主控芯片選用STC15F104W。我喜歡STC15F104W這塊單片機(jī),因?yàn)樗挥?個(gè)腳,小巧玲瓏的東西就是看著喜歡。但為什么不給它裝個(gè)UART模塊,老姚(網(wǎng)上都這么叫)實(shí)在是太小氣了!
雖然說(shuō)網(wǎng)上資料很坑,但是起碼思路還有那么一絲靠譜。原理很簡(jiǎn)單,無(wú)非就是STC_ISP這個(gè)軟件在加載完HEX文件后點(diǎn)擊“下載”后,軟件會(huì)給選中串口發(fā)送一連串相同的數(shù)據(jù),我叫他握手信號(hào)吧,這個(gè)握手信號(hào)其實(shí)就是一個(gè)固定的波形,無(wú)非我用2400bps的波特率讀出是“0x7F”,用9600bps讀出的是“0xF8”,我程序就是9600bps的波特率。或者其他波特率讀出是啥。。。自己看看就知道了。。。
STC的單片機(jī)上電后首先是執(zhí)行一小段驗(yàn)證程序,判斷是否要進(jìn)入燒寫(xiě)程序過(guò)程,如果沒(méi)有這個(gè)驗(yàn)證信號(hào)就執(zhí)行ROM里的程序,當(dāng)然這個(gè)驗(yàn)證的程序是STC單片機(jī)生產(chǎn)時(shí)就定義了的我們沒(méi)法改變。
我要實(shí)現(xiàn)不用手動(dòng)上電,那必須需要一個(gè)“電子開(kāi)關(guān)”來(lái)幫我上電,三極管、繼電器、MOS管。。。。隨便你。
我用的是繼電器來(lái)給需要編程的STC單片機(jī)重新上電的。電路很簡(jiǎn)單,就一個(gè)8550加個(gè)電阻驅(qū)動(dòng)一個(gè)小繼電器再加個(gè)續(xù)流二極管,繼電器控制電源正極對(duì)待編程單片機(jī)的供電,選擇常閉那對(duì)接口。
整個(gè)程序很簡(jiǎn)單,就是利用IO口來(lái)模擬串口接收數(shù)據(jù),判斷當(dāng)連續(xù)接收到若干個(gè)握手信號(hào)后判斷,斷開(kāi)待編程單片機(jī)的電源一段時(shí)間后重新接通電源,整個(gè)過(guò)程監(jiān)控芯片(STC15F104W)沒(méi)有輸出數(shù)據(jù)到串口線,不影響STC單片機(jī)的燒寫(xiě)。
最終效果很不錯(cuò),達(dá)到預(yù)期的效果了。。。。感興趣的你也試試!
大體原理就這樣,不喜歡藏著掖著,下面是所有資料:STC15F104免上電下載線.rar
上測(cè)試圖,雖然這個(gè)效果在圖片上完全不能體現(xiàn),但還是喜歡貼子里有圖片。