盧軼楠,王學(xué)偉
(北京化工大學(xué)信息科學(xué)與技術(shù)學(xué)院,北京100029)
盧軼楠(碩士),主要研究領(lǐng)域?yàn)閱纹瑱C(jī)與控制工程。
STC單片機(jī)是我國(guó)宏晶公司研制的一系列51單片機(jī)。STC單片機(jī)以傳統(tǒng)的8051單片機(jī)為基礎(chǔ),經(jīng)過技術(shù)改進(jìn)和資源擴(kuò)展,具有片內(nèi)資源豐富、運(yùn)算速度快、價(jià)格低等優(yōu)點(diǎn)。STC單片機(jī)下載程序不需要編程器燒寫,可以通過串口下載。美中不足的是,STC單片機(jī)下載時(shí)必須進(jìn)行冷啟動(dòng),即下載信號(hào)加到單片機(jī)串口以后必須對(duì)單片機(jī)斷電再上電,這給用戶帶來了一些不便。尤其是反復(fù)調(diào)試程序需要多次下載時(shí),顯得更加繁瑣。
為了解決這一問題,有必要研制一種STC單片機(jī)專用的自動(dòng)下載系統(tǒng),使系統(tǒng)接收到上位機(jī)發(fā)往單片機(jī)的下載信號(hào)后,自動(dòng)冷啟動(dòng)STC單片機(jī),完成下載任務(wù)。
STC單片機(jī)下載時(shí),需要使用宏晶公司提供的STC-犐犛犘軟件。下載開始時(shí),上位機(jī)軟件首先向單片機(jī)發(fā)出下載命令。自動(dòng)下載系統(tǒng)收到上位機(jī)對(duì)單片機(jī)發(fā)出的下載命令后,實(shí)現(xiàn)對(duì)單片機(jī)的斷電、上電冷啟動(dòng)操作。單片機(jī)經(jīng)冷啟動(dòng)后,收到命令數(shù)據(jù)流后作出回應(yīng),開始下載程序[1-2]。需要注意的是,單片機(jī)在正常工作中,串口有可能接收數(shù)據(jù),由于自動(dòng)下載系統(tǒng)與單片機(jī)串口連接,因而系統(tǒng)必須具有自動(dòng)判斷接收的數(shù)據(jù)流是否為下載命令的能力,保證及時(shí)冷啟動(dòng)目標(biāo)單片機(jī)。
為了檢測(cè)下載程序的命令數(shù)據(jù)流,可以采用如下方法:從PC的串口引出連接線,接至PC的另一個(gè)串口,用串口調(diào)試助手打開;用STC-ISP軟件發(fā)送下載命令,可以檢測(cè)到在波特率為9 600 bps的情況下,該軟件持續(xù)向單片機(jī)發(fā)送十六進(jìn)制的0x80;當(dāng)自動(dòng)下載系統(tǒng)連續(xù)接收到足夠數(shù)量的0x80時(shí),即可判定接收到了下載命令數(shù)據(jù)流,從而進(jìn)入冷啟動(dòng)程序。
自動(dòng)下載系統(tǒng)需要接收上位機(jī)發(fā)往目標(biāo)單片機(jī)的下載命令程序流,并對(duì)目標(biāo)單片機(jī)進(jìn)行冷啟動(dòng)。STC15F104E是宏晶公司研發(fā)的一款單片機(jī),具有省去一些外部電路而功能較全面的優(yōu)點(diǎn)[3]。
該單片機(jī)的特點(diǎn)有:
◆內(nèi)部集成了可靠復(fù)位,省去了外部復(fù)位電路。
◆內(nèi)部集成了R/C時(shí)鐘(在常溫下僅有5‰溫漂),省去了外部晶振。
◆內(nèi)部集成了2個(gè) 16位可重裝載定時(shí)器,與普通8051單片機(jī)兼容。
◆為DIP8/SOP8封裝,體積較小,功耗較低。
◆增強(qiáng)型8051內(nèi)核,單時(shí)鐘周期,信號(hào)處理速度快,實(shí)時(shí)性較好。
由于STC15F104E可以省去傳統(tǒng)單片機(jī)的復(fù)位電路、外部晶振電路,且采用貼片封裝,因此占用電路板面積非常小,適合集成在電路板上,因而作為本系統(tǒng)的主控芯片。
如圖1所示,整個(gè)系統(tǒng)以STC15F104E為核心進(jìn)行設(shè)計(jì)。STC15F104E的P3.0腳與目標(biāo)單片機(jī)STC89C52RC的串口接收端相連,即將發(fā)往目標(biāo)單片機(jī)的信號(hào)連接到自動(dòng)下載系統(tǒng),實(shí)現(xiàn)信號(hào)的獲取和處理。由于自動(dòng)下載系統(tǒng)不需要發(fā)出任何信息,STC15F104E的P3.1引腳懸空,不與目標(biāo)單片機(jī)相連。
圖1 主控電路
對(duì)目標(biāo)單片機(jī)進(jìn)行冷啟動(dòng),實(shí)現(xiàn)斷電、再上電,可以用三極管作為電子開關(guān)實(shí)現(xiàn)。必須注意到的是,三極管的最大可通過電流不要小于單片機(jī)電路的所需電流。如果三極管僅作為單片機(jī)供電的開關(guān),由于STC89系列單片機(jī)的正常工作模式功耗為2~7 mA,90系列三極管通常情況下可以滿足需求。但在某些情況下,單片機(jī)的串口上電后會(huì)給單片機(jī)供電,使單片機(jī)各引腳電平處于不確定的狀態(tài),因而必須對(duì)目標(biāo)電路板整體進(jìn)行冷啟動(dòng),三極管必須滿足目標(biāo)電路板的總電流需求。由于三極管8550的最大可通過電流為1.5 A,可以滿足絕大多數(shù)電路的供電需求,所以選擇三極管 8550連接到目標(biāo)單片機(jī)STC89C52RC的VCC腳,作為對(duì)其冷啟動(dòng)的開關(guān)。
如圖1所示,D1為指示燈,其亮滅可以通過STC15F104E的P3.3腳控制。在程序中加入相應(yīng)的語句即可實(shí)現(xiàn)燈的亮滅與閃爍,以顯示系統(tǒng)的狀態(tài)。
STC單片機(jī)自動(dòng)下載系統(tǒng)軟件流程如圖2所示。在初始化后,系統(tǒng)循環(huán)檢測(cè)是否接收到下載信號(hào);經(jīng)過判斷證實(shí)接收到下載信號(hào)后,就切斷目標(biāo)單片機(jī)電源;等待適當(dāng)?shù)臅r(shí)間后,再給目標(biāo)單片機(jī)上電。單片機(jī)正常工作期間,系統(tǒng)接收到發(fā)往目標(biāo)單片機(jī)串口的非下載命令程序,經(jīng)自動(dòng)判斷后不作任何動(dòng)作。
圖2 STC單片機(jī)自動(dòng)下載系統(tǒng)軟件流程
由于STC15F104E沒有串口,因而必須利用定時(shí)器模擬串口。其方法是,定義一個(gè)常量,根據(jù)所需要的波特率對(duì)該常量賦值,并將該常量值賦到定時(shí)所用的寄存器中。在模擬外部晶振為11.0592 MHz、波特率為9600 bps的情況下,設(shè)置常量BAUD為0xFE80,并將該常量賦值到TL1、TH1兩個(gè)寄存器中,實(shí)現(xiàn)定時(shí)。每到相應(yīng)時(shí)間觸發(fā)定時(shí)中斷程序,將外部引腳的狀態(tài)讀入并存入預(yù)先設(shè)定的數(shù)組中,完成模擬串口讀入字節(jié)的任務(wù)。
在STC上位機(jī)軟件發(fā)出的下載命令中,波特率為9600 bps時(shí)數(shù)據(jù)流為連續(xù)的0x80。由于在單片機(jī)正常工作時(shí)也有可能接收0x80,下載系統(tǒng)只有嚴(yán)格檢測(cè)到連續(xù)多個(gè)0x80時(shí),才能判斷為接收到了下載命令。如果其中有一個(gè)不是0x80,則重新檢測(cè)計(jì)數(shù)。這里設(shè)定為當(dāng)系統(tǒng)連續(xù)接收到200個(gè)0x80時(shí),判定為接收到了下載命令。
接收到下載命令后,STC15F104E首先關(guān)閉定時(shí)器中斷,停止模擬串口的接收工作。之后將P3.4置1,切斷目標(biāo)單片機(jī)的電源。延遲1~2 s后置0,恢復(fù)對(duì)目標(biāo)單片機(jī)的供電??紤]到STC上位機(jī)下載軟件從發(fā)送下載命令到單片機(jī)開始下載大約需要1~2 s的時(shí)間,恢復(fù)供電后需要繼續(xù)延遲5 s,保證目標(biāo)單片機(jī)已經(jīng)開始下載后再啟動(dòng)定時(shí)器中斷。
STC單片機(jī)接收到下載命令后,必須作出回應(yīng)才能進(jìn)行下載。上位機(jī)發(fā)出的下載信號(hào)同時(shí)發(fā)送到目標(biāo)單片機(jī)和自動(dòng)下載系統(tǒng),自動(dòng)下載系統(tǒng)中的單片機(jī)的P3.1腳懸空,而目標(biāo)單片機(jī)的P3.1與上位機(jī)串口相連。這樣,只有目標(biāo)單片機(jī)能夠回應(yīng)下載命令實(shí)現(xiàn)下載,自動(dòng)下載系統(tǒng)中的單片機(jī)不能回應(yīng)下載命令,避免了對(duì)上位機(jī)的干擾。
本文針對(duì)STC單片機(jī)冷啟動(dòng)下載的特點(diǎn),設(shè)計(jì)了STC單片機(jī)自動(dòng)下載系統(tǒng),自動(dòng)判斷下載命令并對(duì)目標(biāo)單片機(jī)實(shí)現(xiàn)自動(dòng)冷啟動(dòng)下載。由于自動(dòng)下載系統(tǒng)是以STC15F104E為核心,在使用前仍然需要以傳統(tǒng)冷啟動(dòng)方式將代碼下載到STC15F104E中,之后才可以對(duì)目標(biāo)單片機(jī)實(shí)現(xiàn)自動(dòng)下載。STC單片機(jī)自動(dòng)下載系統(tǒng)省去了操作人員手動(dòng)開關(guān)電源的不便,避免了相應(yīng)的機(jī)械損耗,具有較高的實(shí)用價(jià)值。
[1]郭天祥.新概念51單片機(jī)C語言教程:入門、提高、開發(fā)、拓展全攻略[M].北京:電子工業(yè)出版社,2009:272-275.
[2]宏晶科技.STC89C51RC-RD+Datasheet[EB/OL].(2009-02-02)[2011-06].http://www.mcu-memory.com.
[3]宏晶科技.STC15F100 Series Datasheet[EB/OL].(2011-01-20)[2011-06].http://www.mcu-memory.com.