l 引 言
通常進(jìn)行單片機(jī)的實(shí)驗(yàn)或開發(fā)時(shí),,傳統(tǒng)的并行編程方法中,,編程器是必不可少的,。仿真,、調(diào)試完的程序需要借助編程器燒到單片機(jī)內(nèi)部或外接的程序存儲(chǔ)器中,。
在開發(fā)過(guò)程中,程序每改動(dòng)一次就要拔下電路板上的芯片,,編程后再插上,。隨著計(jì)算機(jī)技術(shù)的發(fā)展,許多公司推出了帶有片內(nèi)FLASH存儲(chǔ)器的MCU,,F(xiàn)LASH存儲(chǔ)器具有電可擦除,、無(wú)需后備電源保護(hù)數(shù)據(jù)、可在線編程等特點(diǎn),。在線編程目前有兩種實(shí)現(xiàn)方法:在線系統(tǒng)編程(ISP)和在線應(yīng)用編程(IAP),。ISP一般是通過(guò)單片機(jī)專用的串行編程接口對(duì)單片機(jī)內(nèi)部的FLASH存儲(chǔ)器進(jìn)行編程,例如AT-MEL公司的單片機(jī)AT89S52就提供了一個(gè)SPI串行接口對(duì)內(nèi)部程序存儲(chǔ)器編程(ISP),。
在線編程(ISP)允許單片機(jī)內(nèi)部運(yùn)行的程序去改寫FLASH存儲(chǔ)器的內(nèi)容,,可以在運(yùn)行過(guò)程中修改某些運(yùn)行參數(shù),已經(jīng)編程的器件也可以用ISP方式擦除或再編程,。單片機(jī)在ISP模式下上電時(shí),,可以進(jìn)行ISP操作,在ISP模式下,單片機(jī)通過(guò)串行端口與外部主機(jī)(如PC機(jī)或終端)通信,,從主機(jī)接收命令和數(shù)據(jù),,用于擦除和再編程代碼存儲(chǔ)區(qū)。ISP的實(shí)現(xiàn)一般只需要很少的外部電路輔
助實(shí)現(xiàn),,使用ISP技術(shù),,連接一根下載線即可對(duì)芯片編程,不再需要編程器就可進(jìn)行單片機(jī)的實(shí)驗(yàn)和開發(fā),,單片機(jī)芯片可以直接焊接在電路板上,,調(diào)試結(jié)束即成成品,甚至可以遠(yuǎn)程在線升級(jí)或改變單片機(jī)中的程序,。
2 AT89S52 ISP原理
AT89S52具有ISP功能,。在RESET引腳處于高電平時(shí),利用P1.5(MOSI),,P1.6(MISO),,P1.7(SCK)三引腳的數(shù)據(jù)設(shè)置或傳送達(dá)到程序下載的目的,P1.5(MOSI)引腳作為串行指令的輸入端口,,P1.6(MISO)引腳作為串行數(shù)據(jù)的輸出端口,,P1.7(SCK)引腳作為串行移位脈沖的輸入端口。
AT89S系列中的FLASH地址編址是以字節(jié)為單位的,,在使用過(guò)程中應(yīng)注意高低字節(jié)的區(qū)別,,上位機(jī)和目標(biāo)板通信時(shí),一般都是4字節(jié)的指令,,第1字節(jié)為操作碼,,第2、第3字節(jié)一般為地址碼,,第4字節(jié)為數(shù)據(jù),。
根據(jù)串行下載波形圖和串行下載編程指令集即可完成有關(guān)在線下載的操作。
3 在線編程控制系統(tǒng)的設(shè)計(jì)
3.1 系統(tǒng)結(jié)構(gòu)
AT89S52負(fù)責(zé)人機(jī)界面的信息交互,,主要由顯示部分,,鍵盤部分和數(shù)據(jù)通路組成。
顯示部分由AT89S52的P1,,P2口組成,。P2是八位的顯示數(shù)據(jù)通路,P1.1~P1.4是4個(gè)LED的使能線,,達(dá)到動(dòng)態(tài)顯示4位數(shù)據(jù)的效果,。
鍵盤部分由INT0,INT1,,CT0,,CT1組成,。利用中斷的優(yōu)先級(jí)嵌套實(shí)現(xiàn)命令與數(shù)據(jù)的輸入,減少了鍵盤的體積,。硬件分配如下:
數(shù)據(jù)通路部分主要是PSP的控制,。PSP是PIC16FX系列微處理器專門針對(duì)8位機(jī)的通用數(shù)據(jù)端口,由CS,,WR,,RD,8位數(shù)據(jù)線組成,,可供AT89S52直接控制,。
PIC收到PSP的數(shù)據(jù)后會(huì)產(chǎn)生一個(gè)中斷響應(yīng),由軟件設(shè)計(jì)者決定該中斷如何處理,。因此,,可以設(shè)定0XC0~0XFF為命令字節(jié),供控制使用,,0X00~0X09為功能號(hào),,組合起來(lái)就可以實(shí)現(xiàn)各種控制的命令。
PIC16FX具有4路A/D通道,,精度為10 b,,轉(zhuǎn)換時(shí)間為56μs。內(nèi)置硬件看門狗電路,,提高了可靠性,,節(jié)省了軟件開支。利用其4路中斷功能實(shí)現(xiàn)系統(tǒng)復(fù)位及檢修測(cè)試功能,。PGM接口(在線編程接口)可采用ICD2適配器進(jìn)行在線編程和調(diào)試。系統(tǒng)結(jié)構(gòu)如圖1所示,。
3.2 系統(tǒng)功能
(1) AT89S52頻率4 MHz,,具有在線編程,無(wú)需編程器直接燒寫的功能,,用AT89S52[INT0],,[INT1],[CT0],,[CT1]四個(gè)引腳單獨(dú)引出,,方便作為鍵盤接口。
(2) AT89S52 P1.1~P1.4分別作為L(zhǎng)ED1~4的使能線,,高電平有效,,P2口作為L(zhǎng)ED1~4的八位顯示數(shù)據(jù)口。
(3) AT89S52串口與16F877A的串口可直接進(jìn)行串口通訊,。
(4) AT89S52 P0口及[ALE十P1.0],,[WR],,[RD]作為8位并行端口與16F877A通訊。
(5) PIC16F877A:頻率20 MHz:
?、?PA-AN[0]-板載A/D通道:VREF+/-可調(diào)
AN[1],,[5]一外接A/D通道,AN[2-3]-VREF+/-可調(diào),,AN[4]-T0CKI-WDT監(jiān)控,。
② PB-PB0-外接INT中斷信號(hào),,低電平/下降沿有效,,PB1,2,,4,,5作為INPUT1234,低電平/下降沿有效,。
3.3 電路原理圖
AT89S52部分電路原理如圖2所示,。
PIC16F877A部分電路原理如圖3所示。
4 軟件設(shè)計(jì)
4.1 AT89S52部分
首先執(zhí)行系統(tǒng)初始化,,初始時(shí)鐘,,全局變量,定時(shí)器,,IO端口,,鍵盤中斷服務(wù)子程序。
然后進(jìn)入MAINLOOP循環(huán)程序,,等待接受鍵盤中斷,。如果鍵盤有輸入動(dòng)作,系統(tǒng)產(chǎn)生鍵盤中斷,,進(jìn)入鍵盤中斷服務(wù)子程序,。
鍵盤中斷服務(wù)子程序的主要功能是生成命令數(shù)據(jù)包,并根據(jù)用戶指令處理該命令數(shù)據(jù)包,。
命令數(shù)據(jù)包的格式如下:
若用戶確認(rèn),,則發(fā)送到PIC16F877A執(zhí)行;
若用戶取消,,則退出鍵盤中斷服務(wù)子程序,,重新進(jìn)入等待狀態(tài)。系統(tǒng)運(yùn)行流程圖如圖4所示,。
4.2 PIC軟件結(jié)構(gòu)
PIC系統(tǒng)初始化后首先按默認(rèn)參數(shù)啟動(dòng)PWM輸出,,在啟動(dòng)過(guò)程中不斷地進(jìn)行A/D轉(zhuǎn)換,將采集到的數(shù)據(jù)根據(jù)PID策略調(diào)節(jié)PWM的占空比,,從而達(dá)到調(diào)節(jié)電機(jī)轉(zhuǎn)速的目的,,同時(shí)不問(wèn)斷的監(jiān)聽PSP通道,,若收到AT89S52的命令數(shù)據(jù)包,馬上更新默認(rèn)啟動(dòng)參數(shù),,讓電機(jī)以新參數(shù)模式運(yùn)行在新轉(zhuǎn)速狀態(tài),。
PIC16F877A執(zhí)行軟件運(yùn)行流程圖如圖5所示。
5 結(jié) 語(yǔ)
利用AT89S52作為主處理器,,PIC16F87X作為從處理器,,使控制精度大為提高,可達(dá)10位PWM精度,。AT89S52與PIC16F87X具有在線編程功能,,功能齊全,片上資源豐富,,可以滿足系統(tǒng)升級(jí)要求,。隨著帶有系統(tǒng)在線編程功能的單片機(jī)得到廣泛應(yīng)用與發(fā)展,ISP技術(shù)成了未來(lái)發(fā)展方向,,基于在線編程技術(shù)的控制系統(tǒng)應(yīng)用也將越來(lái)越廣泛,。