李學(xué)海, 孫群中, 吳蓬勃, 李 莉
(石家莊郵電職業(yè)技術(shù)學(xué)院 電信系,河北 石家莊 050021)
目前,許多高校擁有早期購(gòu)置的多種不同類(lèi)型的單片機(jī)實(shí)驗(yàn)平臺(tái)(或?qū)嶒?yàn)箱),其陳舊過(guò)時(shí)現(xiàn)象非常嚴(yán)重。例如,本校2005年批量購(gòu)買(mǎi)的一種單片機(jī)實(shí)驗(yàn)箱(型號(hào)為T(mén)MC-1),如果不作改進(jìn),就已經(jīng)不能使用了。原因是研制時(shí)所基于的單片機(jī)型號(hào),幾年前就已經(jīng)停產(chǎn)、斷供。
如果研究一項(xiàng)技術(shù),用于升級(jí)改造各高校大量現(xiàn)存的、頻臨淘汰的單片機(jī)實(shí)驗(yàn)箱,不僅節(jié)約大筆開(kāi)支,集約教學(xué)資源,激活存量資源,還可減少大量資源浪費(fèi)和環(huán)境污染,也符合國(guó)家倡導(dǎo)的循環(huán)經(jīng)濟(jì)和綠色環(huán)保。
對(duì)于過(guò)時(shí)的單片機(jī)實(shí)驗(yàn)箱的改造和進(jìn)一步進(jìn)行升級(jí),使其能夠適應(yīng)不同架構(gòu)的單片機(jī),是根據(jù)經(jīng)驗(yàn)[1-9],那是可能的。
單片機(jī)實(shí)驗(yàn)箱主要用于單片機(jī)學(xué)習(xí)、實(shí)驗(yàn)或開(kāi)發(fā),因此單片機(jī)是整個(gè)系統(tǒng)的核心。本校所批量購(gòu)置的單片機(jī)實(shí)驗(yàn)箱,是由清華大學(xué)科教儀器廠早年生產(chǎn)的“TMC-1開(kāi)放式單片機(jī)實(shí)驗(yàn)系統(tǒng)”(實(shí)物圖見(jiàn)圖1),其售價(jià)為每臺(tái)數(shù)千元。該型實(shí)驗(yàn)箱用于學(xué)習(xí)、實(shí)驗(yàn)傳統(tǒng)的80C51單片機(jī),原廠共設(shè)計(jì)了20個(gè)實(shí)驗(yàn)項(xiàng)目,并且為客戶提供了每個(gè)實(shí)驗(yàn)項(xiàng)目的電路接線圖、匯編語(yǔ)言和C語(yǔ)言源程序,供學(xué)生解讀、模仿和驗(yàn)證。
圖1 TMC-1開(kāi)放式單片機(jī)實(shí)驗(yàn)箱
學(xué)生完成實(shí)驗(yàn)的主要方式是驗(yàn)證實(shí)驗(yàn)項(xiàng)目的預(yù)定功能,就是對(duì)于每個(gè)實(shí)驗(yàn)學(xué)生所需完成的主要操作:①硬件。插接連線而把外圍電路連接到單片機(jī)的通用并行端口上;②軟件。利用運(yùn)行于PC機(jī)的一款在系統(tǒng)內(nèi)編程工具軟件(Flash Magic),把現(xiàn)成源程序編譯后獲得的目標(biāo)程序(HEX代碼)下載燒寫(xiě)到單片機(jī)內(nèi)部。然后令單片機(jī)獨(dú)立運(yùn)行,來(lái)查看運(yùn)行效果。這種方式就是“燒試法”或叫“盲調(diào)法”。[1]
至于用戶程序的錄入、編輯、匯編(或編譯)、調(diào)試這些環(huán)節(jié),只能借助于一款帶有軟件模擬(或叫虛擬仿真功能)的IDE(集成開(kāi)發(fā)環(huán)境)來(lái)實(shí)現(xiàn)和練習(xí),例如KEIL公司的μVision,或者國(guó)內(nèi)的Wave或Medwin。由此可見(jiàn),TMC-1實(shí)驗(yàn)箱只能實(shí)現(xiàn)ISP編程,不能實(shí)現(xiàn)仿真,因此它只具備單片機(jī)硬件工具鏈(仿真器、燒寫(xiě)器、目標(biāo)板,三件套)[1]中的兩種功能。
實(shí)驗(yàn)箱在單片機(jī)的安裝位置,焊裝了一個(gè)帶有鎖緊扳手的活動(dòng)插座,即為ZIF插座,用于直接插接雙列直插封裝型(DIP)的40腳單片機(jī)。該實(shí)驗(yàn)箱的研制背景為,原廠針對(duì)的是飛利浦“P89C51RD2”單片機(jī),該型號(hào)單片機(jī)已經(jīng)買(mǎi)不到了。因此,需要在搞清該單片機(jī)特點(diǎn),找一款與其兼容的、廉價(jià)易購(gòu)的新型單片機(jī),作為替代品。例如,STC89C51RC單片機(jī)。
P89C51RD2單片機(jī)是由荷蘭恩智浦(NXP)公司的前身,即為飛利浦(Philips)公司的半導(dǎo)體部門(mén),獲準(zhǔn)英特爾(Intel)公司許可證生產(chǎn)的80C51兼容品之一。其實(shí)P89C51RD2共有4個(gè)同型產(chǎn)品,即為P89C51RA2、P89C51RB2、P89C51RC2和P89C51RD2(可泛稱為P89C51Rx2),其性能完全一致,主要差別是存儲(chǔ)器的容量不同,程序存儲(chǔ)器依次為8KB、16KB、32KB和64KB的Flash。
該單片機(jī)的內(nèi)部額外固化了1KB的自舉程序(叫Boot Loader),地址編碼為FC00H~FFFFH,與Flash空間的一個(gè)區(qū)塊(Block 15)重疊,用于實(shí)現(xiàn)ISP(在系統(tǒng)內(nèi)編程)和IAP(在應(yīng)用中編程)下載用戶程序,并且是經(jīng)過(guò)UART串口下載的。ISP和IAP都屬于免用專用編程器的“自編程”功能和技術(shù),在TMC-1實(shí)驗(yàn)箱中僅僅利用了它的ISP能力。
每次單片機(jī)P89C51Rx2加電時(shí)或者復(fù)位后,都會(huì)面臨一個(gè)選擇問(wèn)題,是開(kāi)始執(zhí)行自舉程序而進(jìn)入自編程狀態(tài),還是開(kāi)始執(zhí)行用戶程序而去實(shí)現(xiàn)用戶規(guī)定的目標(biāo)任務(wù)。這就需要在/PSEN引腳上外接一只撥動(dòng)開(kāi)關(guān)(或者跨接插針),用來(lái)設(shè)定單片機(jī)是進(jìn)入編程狀態(tài)(該腳接地),還是進(jìn)入用戶程序(該腳懸空)。與編程有關(guān)的局部電路如圖2所示[2]。
圖2 P89C51Rx2的ISP控制電路
為了實(shí)現(xiàn)自編程,單片機(jī)制造商為P89C51Rx2設(shè)計(jì)了兩種工作模式:編程模式和用戶模式。兩種模式的進(jìn)入方式或進(jìn)入流程,如圖3所示。每次上電或復(fù)位后P89C51Rx2的硬件都會(huì)自動(dòng)檢查“引導(dǎo)狀態(tài)字節(jié)”內(nèi)容和/PSEN引腳狀態(tài),只有前者為00H、后者為接地,將從FC00H開(kāi)始執(zhí)行ISP自舉程序,進(jìn)入編程模式[1,10]。
圖3 P89C51Rx2的模式進(jìn)入方式
STC89C51RC單片機(jī)是由我國(guó)深圳宏晶科技研制生產(chǎn)的一種80C51兼容品,性價(jià)比高、貨源充足。
與P89C51Rx2單片機(jī)相同的是,STC89C51RC單片機(jī)也是在內(nèi)部固化了一段實(shí)現(xiàn)ISP自編程的自舉程序,并且ISP的實(shí)現(xiàn)也是經(jīng)過(guò)UART串口下載用戶程序的。因此,仍然可以利用實(shí)驗(yàn)箱原有的下載通道。
更重要的是,需要關(guān)注兩者的不同點(diǎn):STC89C51RC進(jìn)入ISP的方式是在每次上電復(fù)位之后,檢測(cè)UART串口接收端子RXD上是否有PC機(jī)送來(lái)的約定碼流(比如連續(xù)的10個(gè)小寫(xiě)字母“d”的ASCII編碼),并且持續(xù)檢測(cè)幾十到幾百ms。如果有,則進(jìn)入ISP模式;否則,進(jìn)入用戶程序。此外,即使進(jìn)入了ISP模式,在完成用戶程序的下載任務(wù)之后,最終還是會(huì)自動(dòng)再進(jìn)入到用戶程序,其操作流程如圖4所示[11]。
圖4 STC89C51RC的模式進(jìn)入方式
經(jīng)過(guò)分析得知,在把單片機(jī)替換為STC89C51RC之后,實(shí)驗(yàn)箱原有的編程電路仍然不變,只是編程開(kāi)關(guān)無(wú)用了,使其固定在用戶模式(USER)即可(見(jiàn)圖2)。按理講,每次要下載程序時(shí),可以利用實(shí)驗(yàn)箱的電源開(kāi)關(guān),只要斷開(kāi)一下單片機(jī)的電源,然后再接通,即可令STC89C51RC進(jìn)入編程模式。實(shí)踐證明,不可行!
經(jīng)過(guò)分析,由于整個(gè)實(shí)驗(yàn)箱的電源回路,不僅負(fù)載多,而且還有濾波電容,導(dǎo)致電源電壓的爬升緩慢,其上升沿不符合STC89C51RC的嚴(yán)格要求,不能可靠地觸發(fā)其上電復(fù)位而進(jìn)入編程模式。因此制作了一塊小適配板,如圖5所示,其電路原理圖如圖6所示。電路中僅僅在單片機(jī)的正電源回路中加入了一只非自鎖式單刀雙擲按鈕開(kāi)關(guān)S1,靜態(tài)為接通,按動(dòng)為斷開(kāi)。把單片機(jī)插裝到適配板上,再把適配板插裝到實(shí)驗(yàn)箱中原來(lái)單片機(jī)的位置。實(shí)踐證明,依然行不通!
再次經(jīng)過(guò)分析得出結(jié)論,這回是單片機(jī)內(nèi)部的鉗位電路惹的禍。由于當(dāng)今的單片機(jī)等數(shù)字芯片基本都是采用了高速CMOS工藝制作的,此工藝為了防止靜電擊穿,需要在除電源引腳之外的絕大多數(shù)引腳的芯片內(nèi)部加裝鉗位二極管[1]。如圖7所示,只畫(huà)出了其中一條引腳上的二極管。這樣即使在斷開(kāi)S1時(shí),處于電路中的單片機(jī),其內(nèi)部的VCC端子仍然可獲取來(lái)自一些端口引腳GPIO的電流。結(jié)果導(dǎo)致單片機(jī)斷電不徹底,于是進(jìn)入不了ISP模式。
圖5 STC89C51RC適配板實(shí)物圖
圖6 適配板原理圖
圖7 單片機(jī)內(nèi)部的鉗位電路
癥結(jié)找到了,解決的措施是,把雙聯(lián)開(kāi)關(guān)S1中剩余的一聯(lián)正好利用起來(lái),串聯(lián)到單片機(jī)的電源地回路中,如圖8所示。實(shí)踐證明可行。
圖8 單片機(jī)內(nèi)部的鉗位電路
經(jīng)過(guò)上述改造,使得實(shí)驗(yàn)箱能夠適配廉價(jià)易購(gòu)的國(guó)產(chǎn)單片機(jī)STC89C51RC,以及STC10、STC11、STC12等系列中的數(shù)10個(gè)型號(hào)。如果沿著這種加裝適配硬件或軟件的思路繼續(xù)深入改造下去,還可讓實(shí)驗(yàn)箱能適配非80C51兼容品的其他單片機(jī)(例如PIC系列等),甚至還可以為該實(shí)驗(yàn)箱額外添加一項(xiàng)高級(jí)功能“在線調(diào)試器(ISD或ICD)”。這時(shí)的實(shí)驗(yàn)箱可以用作一款簡(jiǎn)易仿真器,來(lái)學(xué)習(xí)仿真器的工作原理和操作方法。類(lèi)似這樣的改造活動(dòng)實(shí)際就變成了升級(jí)行為。
(1) 升級(jí)實(shí)例一。選擇一片功能可以囊括或者超出標(biāo)準(zhǔn)80C51的高性能兼容型號(hào)的單片機(jī)(例如,SST89C58、SST89E564RD或P89V51RD2等),以SST89C58為例[12],利用一款專業(yè)燒寫(xiě)器把一段1KB的在線調(diào)試專用代碼(SoftIce58.hex,是原廠免費(fèi)提供的,但不供源程序)固化到單片機(jī)中;然后直接插裝于實(shí)驗(yàn)箱的單片機(jī)插座中,就可以把該實(shí)驗(yàn)箱升級(jí)為“簡(jiǎn)易型80C51單片機(jī)仿真器”;這時(shí)的實(shí)驗(yàn)箱就具備了80C51單片機(jī)硬件工具鏈“三件套”的全部功能。
不過(guò),實(shí)踐證明,原廠提供的代碼SoftIce58.hex,其功能不夠理想。就是用戶程序不能脫機(jī)運(yùn)行,也就不能制成原型機(jī)。原因是,每次加電或復(fù)位單片機(jī)都會(huì)進(jìn)入監(jiān)控模式,并且自動(dòng)擦除用戶程序。經(jīng)過(guò)對(duì)SST89C58硬件和SoftIce58.hex軟件的大量研究與分析,最后對(duì)于外接硬件和固化軟件SoftIce58.hex進(jìn)行了大膽地改進(jìn),使問(wèn)題得到圓滿解決。
(2) 升級(jí)實(shí)例二。如果能在80C51單片機(jī)實(shí)驗(yàn)箱上學(xué)習(xí)AVR單片機(jī),會(huì)進(jìn)一步提升實(shí)驗(yàn)箱的功能和利用率(ATMEL公司的AVR系列8位單片機(jī)的產(chǎn)銷(xiāo)量位居全球第二)。以下就以目前國(guó)內(nèi)教科書(shū)中講解較多的ATmega16(或ATmega32)單片機(jī)為例[4],來(lái)升級(jí)8051實(shí)驗(yàn)箱。這需要我們?cè)O(shè)計(jì)和制作一塊專用的適配板,電路原理如圖9所示。電路中設(shè)計(jì)了高、低電平復(fù)位開(kāi)關(guān),分別適應(yīng)于8051和AVR單片機(jī)。因此,該適配板不僅可以用于AVR到8051的轉(zhuǎn)換,而且還可以用于8051到AVR的轉(zhuǎn)換。
(3) 升級(jí)實(shí)例三。試想一下,如果能在80C51單片機(jī)實(shí)驗(yàn)箱上學(xué)習(xí)PIC單片機(jī)該是多么有趣的事兒(多年來(lái)PIC系列8位單片機(jī)的產(chǎn)銷(xiāo)量保持全球第一;Microchip公司于2013年5月16日宣布,交付了第120億枚單片機(jī)給一家日本公司Nidec)。以下就以目前國(guó)內(nèi)認(rèn)知度最高的PIC16F877單片機(jī)為例[5-6],來(lái)進(jìn)行升級(jí)。這需要設(shè)計(jì)和制作一塊專用的適配板,電路原理如圖10所示。
適配板上規(guī)劃了用于插裝PIC16F877的DIP40插座、用于插往實(shí)驗(yàn)箱的DIP40插針、時(shí)鐘發(fā)生器外接晶體、手動(dòng)復(fù)位開(kāi)關(guān)及其上來(lái)電阻、用于在線編程和調(diào)試的6芯插口(兩個(gè)類(lèi)型可選其一,分別適合對(duì)接原廠供應(yīng)的兩款簡(jiǎn)易型在線調(diào)試器“ICD3”和“PICkit3”)。
圖9 ATmega16單片機(jī)適配板原理圖
焊裝好的PIC16F877單片機(jī)適配板直接插裝于實(shí)驗(yàn)箱的單片機(jī)插座中,就可以把該實(shí)驗(yàn)箱升級(jí)為“簡(jiǎn)易型PIC16F877單片機(jī)仿真器”;這時(shí)的實(shí)驗(yàn)箱就具備了PIC16F877單片機(jī)硬件工具鏈“三件套”的全部功能。
(4) 升級(jí)實(shí)例四。上面3個(gè)例子都是在8位單片機(jī)之間的轉(zhuǎn)換,本例將介紹一種從8位8051升級(jí)到32位的STM32單片機(jī),并且可以在線燒寫(xiě)編程和仿真調(diào)試(需要借助于一款現(xiàn)成的在線調(diào)試器,例如U-LINK、J-LINK或ST-LINK等)。這里以48腳扁平封裝的STM32F103C8單片機(jī)為例,該型單片機(jī)的I/O共引出了2個(gè)16位的并行口,恰好可以對(duì)接8051的4個(gè)8位并行口。需要注意一點(diǎn):該型單片機(jī)的電源電壓為3.3 V。STM32F103C8單片機(jī)適配板的原理圖,如圖11所示。
除了以上幾個(gè)升級(jí)實(shí)例之外,如果有需要或者有興趣,還可以為目前國(guó)內(nèi)市場(chǎng)上見(jiàn)到的其他單片機(jī)品種(例如EM78系列、SPMC65系列、MSP430系列、MC68HC08和MC9S08系列、ST62系列、COP8系列、Z8系列、HT48系列、RC8系列、TMP86系列等等)[1-15]分別設(shè)計(jì)制作適配板,那就可以進(jìn)一步提升實(shí)驗(yàn)箱的用途、價(jià)值和靈活性。
圖10 PIC16F877單片機(jī)適配板原理圖
圖11 STM32F103C8單片機(jī)適配板原理圖
這種經(jīng)過(guò)了改造、升級(jí)的實(shí)驗(yàn)箱,曾在課內(nèi)實(shí)驗(yàn)、課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)、創(chuàng)新實(shí)踐、電子制作、電子設(shè)計(jì)大賽、開(kāi)發(fā)性試驗(yàn)等實(shí)踐教學(xué)活動(dòng)中,都得到了很好的應(yīng)用,并且受到了師生們的廣泛肯定與好評(píng)。以下僅就三個(gè)方面的應(yīng)用作一簡(jiǎn)介。
除了在基于80C51的“單片機(jī)原理及應(yīng)用”必修課程的實(shí)驗(yàn)中,本實(shí)驗(yàn)箱繼續(xù)得到應(yīng)用,并且學(xué)生借助于它還可以學(xué)習(xí)到仿真器才能實(shí)現(xiàn)的在線調(diào)試技術(shù),延伸和完善了硬件工具鏈的訓(xùn)練能力和效果。在此實(shí)驗(yàn)箱的基礎(chǔ)上,還為學(xué)生開(kāi)設(shè)了“PIC單片機(jī)原理”選修課。學(xué)校歡迎,原因是換塊PIC單片機(jī)適配板就行
了,無(wú)需添置專用的PIC單片機(jī)實(shí)驗(yàn)箱;實(shí)驗(yàn)教師歡迎,原因是節(jié)省了實(shí)驗(yàn)室和操作臺(tái)空間,還免除了更換實(shí)驗(yàn)箱的麻煩;學(xué)生歡迎,原因是對(duì)于在80C51實(shí)驗(yàn)中已經(jīng)熟悉了實(shí)驗(yàn)箱布局的學(xué)生,在實(shí)驗(yàn)PIC時(shí)上手快捷、高效。
在課程設(shè)計(jì)和畢業(yè)設(shè)計(jì)活動(dòng)中,該實(shí)驗(yàn)箱也受到了學(xué)生們的青睞。理由是,可以根據(jù)設(shè)計(jì)目標(biāo)的大小和復(fù)雜程度,選擇不同的單片機(jī)類(lèi)型,增加了靈活性和便利性,提高了設(shè)計(jì)項(xiàng)目的完成率和成功率。還可以方便地進(jìn)行不同單片機(jī)的比較,以及在比較實(shí)踐中學(xué)習(xí)到新知識(shí)。
為了提高學(xué)生的動(dòng)手能力和設(shè)計(jì)能力,我們有計(jì)劃地定期舉行一些科技周活動(dòng)。過(guò)去電信工程系的學(xué)生所制作的一些參賽作品,都是采用簡(jiǎn)單的電子電路設(shè)計(jì)的,電路功能稍微復(fù)雜一點(diǎn),學(xué)生就設(shè)計(jì)不出來(lái)。而有效利用本實(shí)驗(yàn)箱的同學(xué),則能設(shè)計(jì)出功能豐富、貼近實(shí)用的作品,甚至有的作品因設(shè)計(jì)思想新穎而獲得比賽獎(jiǎng)。在科技活動(dòng)中,學(xué)生能利用單片機(jī)技術(shù)來(lái)完成自己的設(shè)計(jì),這也印證了本實(shí)驗(yàn)箱的實(shí)用價(jià)值和教學(xué)效果。
通過(guò)本項(xiàng)目的研究,不僅鍛煉了研發(fā)團(tuán)隊(duì)中的教師和同學(xué)們的動(dòng)手能力和創(chuàng)新能力,而且還激活了存量資源,甚至還拓寬了原有實(shí)驗(yàn)箱的用途和功能。另外,還可以很方便地進(jìn)行不同型號(hào)之間的單片機(jī)性能的橫向比較研究。如果把該課題的設(shè)計(jì)思想加以推廣,甚至變通、延伸和移植的話,還可以改造和升級(jí)眾多高校實(shí)驗(yàn)室中,數(shù)量巨大的趨于報(bào)廢的各種單片機(jī)實(shí)驗(yàn)箱或?qū)嶒?yàn)臺(tái),以及廣大單片機(jī)愛(ài)好者手中大量的各種單片機(jī)學(xué)習(xí)板和實(shí)驗(yàn)板。這不僅能節(jié)約開(kāi)支、避免浪費(fèi),還可以盤(pán)活大量的壓庫(kù)資源、節(jié)省空間、減少維護(hù),其經(jīng)濟(jì)效益和社會(huì)效益是顯而易見(jiàn)的。
[1] 李學(xué)海.經(jīng)典80C51單片機(jī)輕松入門(mén)與上手[M]. 北京:清華大學(xué)出版社,2009.
[2] 李學(xué)海.經(jīng)典80C51單片機(jī)快速進(jìn)階與實(shí)作[M].北京:清華大學(xué)出版社,2012.
[3] 李學(xué)海.新型80C51單片機(jī)輕松入門(mén)與應(yīng)用開(kāi)發(fā)——AT89S8253[M]. 北京:金盾出版社,2011.
[4] 李學(xué)海.ATtinyAVR單片機(jī)精品項(xiàng)目開(kāi)發(fā)[M].北京:科學(xué)出版社,2012.
[5] 李學(xué)海.PIC單片機(jī)實(shí)用教程——基礎(chǔ)篇(第2版)[M].北京:北京航空航天大學(xué)出版社,2007.
[6] 李學(xué)海.PIC單片機(jī)BASIC編程項(xiàng)目開(kāi)發(fā)[M].北京:科學(xué)出版社,2012.
[7] 李學(xué)海.EM78單片機(jī)實(shí)用教程——基礎(chǔ)篇[M]. 北京:電子工業(yè)出版社,2003.
[8] 李學(xué)海.凌陽(yáng)8位單片機(jī)——基礎(chǔ)篇[M]. 北京:北京航空航天大學(xué)出版社,2005.
[9] 李學(xué)海.16位語(yǔ)音型單片機(jī)SPCE061A實(shí)用教程——基礎(chǔ)篇[M]. 北京:人民郵電出版社,2007.
[10] Philips.80C51 8-bit Flash microcontroller family P89C51RA2xx /RB2xx /RC2xx /RD2xx [EB/OL],2002.7
[11] 陳桂友.增強(qiáng)型8051單片機(jī)實(shí)用開(kāi)發(fā)技術(shù)[M].北京:北京航空航天大學(xué)出版社,2010.1
[12] SST.FlashFlex51 MCU SST89C54 / SST89C58[EB/OL],2004.6
[13] 李學(xué)海.基于MC68HC908的智能遙控電話報(bào)警系統(tǒng)設(shè)計(jì)[C]//電子產(chǎn)品世界*特刊.第3屆Motorola杯單片機(jī)應(yīng)用大獎(jiǎng)賽論文集,2000.
[14] Atmel.8-bit AVR Microcontroller with 16K Bytes In-System Programmable Flash ATmega169V/ATmega169 [EB/OL],2005.5
[15] Freescale.MC9S08AW60/MC9S08AW48/MC9S08AW32/MC9S08-AW16 Data Sheet(Rev 2)[EB/OL],2006.12