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