天才教育網(wǎng)合作機(jī)構(gòu) > 培訓(xùn)機(jī)構(gòu) >

東莞電工培訓(xùn)網(wǎng)

歡迎您!
朋友圈

全國(guó)統(tǒng)一學(xué)習(xí)專線 9:00-21:00

位置:培訓(xùn)資訊 > 一種實(shí)用的PIC編程器的設(shè)計(jì)

一種實(shí)用的PIC編程器的設(shè)計(jì)

日期:2010-01-17 11:17:35     瀏覽:229    來源:東莞電工培訓(xùn)網(wǎng)
介紹一種簡(jiǎn)便實(shí)用的PIC編程器實(shí)現(xiàn)方案。設(shè)計(jì)思想是:以單片機(jī)作為主控機(jī),欲寫入的PIC程序代碼存放在主控機(jī)中,由主控機(jī)提供PIC芯片編程所需信號(hào),并監(jiān)測(cè)整個(gè)編程流程。在時(shí)鐘脈沖信號(hào)作用下,把代碼寫入PIC的Flash中以達(dá)到對(duì)芯片編程的目的。該方案可以在脫離PC的環(huán)境下運(yùn)行,適用于對(duì)批量的PIC芯片進(jìn)行編程。
關(guān)鍵詞 PIClOF202 串行編程 89C51

    隨著工業(yè)生產(chǎn)的擴(kuò)大,存在著對(duì)同一型號(hào)芯片進(jìn)行相同代碼編程的需要。目前采用的編程方式是通過專用的編程器來執(zhí)行,其編程過程離不開PC機(jī)。在對(duì)一定批量的芯片編程時(shí),操作比較煩瑣,保密性能差,且難以在工業(yè)現(xiàn)場(chǎng)進(jìn)行。

    本編程器設(shè)計(jì)簡(jiǎn)單,操作方便,保密性好,易攜帶,需要的外部設(shè)備少。編程器以PIClOF202為例進(jìn)行設(shè)計(jì)。PIClOF2xx系列是 Microchip公司生產(chǎn)的低功耗,高性能Flash單片機(jī)。其封裝小,易于使用,成本低。性能穩(wěn)定,在通用電子設(shè)計(jì)中被廣泛使用。本設(shè)計(jì)的基本思想適用于其他類型的單片機(jī)。

1 PICl0F2xx的存儲(chǔ)結(jié)構(gòu)及編程方法
1.1 存儲(chǔ)空間映射
    以PICl0F202為例,其內(nèi)部程序存儲(chǔ)空間映射如下:
    0000H~0lFFH是用戶可以使用的代碼存儲(chǔ)空間,0200H~03FFH是系統(tǒng)的配置空間。其中01FFH單元是復(fù)位向量,系統(tǒng)復(fù)位后程序指針PC 將指向此地址單元。0200H~0203H是用戶ID信息存儲(chǔ)區(qū)間。0204H地址單元存放的是備份的OSCCAL值,被預(yù)留用來測(cè)試內(nèi)部晶振,因此該值在任何情況下都不應(yīng)該被更改。一旦被擦除,必須恢復(fù)該值,否則芯片不能正常工作。03FF地址單元存放系統(tǒng)的配置字,其他地址單元系統(tǒng)保留。

1.2 芯片編程方法
    采用串行在線編程的方式,串行時(shí)鐘信號(hào)由主控單元的I/O口發(fā)出,從PIC的時(shí)鐘引腳ISCLK輸入。在串行時(shí)鐘信號(hào)作用下,串行數(shù)據(jù)從數(shù)據(jù)引腳ISDAT輸入/輸出,完成對(duì)芯片的Flash的代碼寫入。

    只有在進(jìn)入編程模式后,PIClOF202才能允許對(duì)其存儲(chǔ)空間的操作,如圖l所示。當(dāng)保持ISDAT(串行數(shù)據(jù)輸入端)和ISCLK(串行時(shí)鐘輸入端) 為低電平時(shí),VCC(芯片電源)上升到高電平。經(jīng)tl延時(shí),MCLR(編程模式選擇端)上升到高電平,再經(jīng)t2延時(shí),開始時(shí)鐘脈沖和數(shù)據(jù)的輸入/輸出。此時(shí)PIClOF202進(jìn)入編程模式。

2 系統(tǒng)硬件結(jié)構(gòu)
    系統(tǒng)邏輯框圖如圖2所示,由主控機(jī)、控制模塊、監(jiān)控顯示模塊和目標(biāo)芯片組成。主控機(jī)選用89C51單片機(jī),用單片機(jī)的2個(gè)I/O口分別提供ISDAT和 ISCLK信號(hào);目標(biāo)芯片即PIC。PIC的MCLR端為編程模式選擇端。為了讓PIC10F202能夠進(jìn)入編程狀態(tài),需要由控制模塊實(shí)現(xiàn)對(duì)MCLR端的電平控制。監(jiān)控顯示模塊用于指示目前系統(tǒng)的工作狀態(tài)和監(jiān)控系統(tǒng)運(yùn)行

2.1 控制模塊的實(shí)現(xiàn)
    為了實(shí)現(xiàn)控制模塊對(duì)MCLR端的電平控制,使用2個(gè)晶體管T1、T2,如圖3所示。當(dāng)單片機(jī)I/O口為高電位時(shí),T1導(dǎo)通,其發(fā)射級(jí)為低電位,T2導(dǎo)通,于是電源VPP與PIC的MCLR端接通;當(dāng)I/O口為低電位時(shí),T1截止,其發(fā)射級(jí)為高電位,T2截止,VPP和MCLR端之間斷開。

2.2 監(jiān)控顯示模塊
    采用一組發(fā)光二極管來顯示系統(tǒng)狀態(tài)和編程結(jié)果。系統(tǒng)的工作狀態(tài)包括:目標(biāo)芯片檢測(cè)、就緒等待、編程進(jìn)行中、代碼校驗(yàn)等。系統(tǒng)在就緒等待狀態(tài)下,就緒狀態(tài)燈亮,主控機(jī)監(jiān)控按鍵指令;接到指令后即進(jìn)入編程狀態(tài),同時(shí)編程燈亮,編程后執(zhí)行校驗(yàn),校驗(yàn)完成后結(jié)束燈亮,說明完成整個(gè)縮程工作。整個(gè)編程過程中,若遇到故障,相應(yīng)故障燈顯示。

3 系統(tǒng)軟件設(shè)計(jì)
3.1 數(shù)據(jù)(命令)輸入方法
    無論是指令還是需要寫入的代碼數(shù)據(jù),都在相應(yīng)的時(shí)鐘節(jié)拍下由串行數(shù)據(jù)端輸入。串行時(shí)鐘始終與串行數(shù)據(jù)的要求一致。對(duì)于不同的命令,時(shí)鐘脈沖間的時(shí)間參數(shù) t1~t6的要求是不同的。在相應(yīng)時(shí)鐘脈沖下降沿,PIC對(duì)數(shù)據(jù)端采樣,命令代碼在前,一段時(shí)間延時(shí)后,輸入代碼數(shù)據(jù)。數(shù)據(jù)低位在前,高位在后,如圖4所示。時(shí)間參數(shù)的具體要求見參考文獻(xiàn)。

    下面以數(shù)據(jù)導(dǎo)入為例簡(jiǎn)要說明。
    代碼舉例如下:

  

   

    由命令字表中可知,若導(dǎo)人數(shù)據(jù)的命令字是xx0010B,低位在前由ISDAT輸入,每次ISCLK的下降沿對(duì)ISDAT采樣。以上代碼實(shí)現(xiàn)了“0”、 “1”的輸入,其他命令的輸入類似。數(shù)據(jù)輸入和命令輸入都是下降沿有效。每次導(dǎo)入1字節(jié)的數(shù)據(jù)為12位,但是必須在16個(gè)時(shí)鐘脈沖中完成。前6個(gè)時(shí)鐘脈沖的下降沿輸入命令字,且前4位有效。一段時(shí)間參數(shù)的延遲后,數(shù)據(jù)開始輸入,第1個(gè)時(shí)鐘下降沿輸入起始位,后第2~13個(gè)時(shí)鐘的下降沿輸入1字節(jié)的數(shù)據(jù),共 12位。第14、15個(gè)時(shí)鐘下降沿輸入數(shù)據(jù)無效,*一個(gè)下降沿輸入停止位(起始位和停止位固定為O)。

3.2 PC指針的處理及尋址方法
    在對(duì)其編程的過程中,需要知道當(dāng)前PIC的PC指針指向的Flash存儲(chǔ)區(qū)單元地址,也就是當(dāng)前的操作單元。由于無法直接讀取其PC指針的值,故采用在 89C5l的RAM區(qū)定義一個(gè)變量用來記錄PIC的PC指針(12位,占用2字節(jié))。該變量的值始終和PIC的PC指

如果本頁(yè)不是您要找的課程,您也可以百度查找一下: