1.設(shè)備的準(zhǔn)備
① 必備的設(shè)備:計(jì)算機(jī)、仿真器、編程器以及數(shù)字萬用表、電烙鐵、鉗子、螺釘旋具等工具。仿真器是調(diào)試程序用的,不同的單片機(jī)要有不向的仿真器,如51系列單片機(jī)就要51系列單片機(jī)仿真器。仿真器有通用型仿真器、專用型仿真器。通用型適用于多個(gè)系列,價(jià)高;專用型只適用于某一系列,價(jià)低。編程器是固化(或?qū)懭?芯片用的,編程器也分簡易型和通用型,兩者的差別主要是可固化芯片數(shù)目不同,前者數(shù)目少而后者數(shù)目多,其售價(jià)差別也很大。初學(xué)者選一種可固化自己所用芯片的簡易型編程器即可。不管是仿真還是編程都需要和計(jì)算機(jī)連起來,通過計(jì)算機(jī)來仿真或編程。
② 其它設(shè)備:雙蹤示波器、多功能信號(hào)發(fā)生器、直流穩(wěn)壓電源等。
2.總體設(shè)計(jì)
總體設(shè)計(jì),分為產(chǎn)品的結(jié)構(gòu)設(shè)計(jì)(或叫機(jī)械設(shè)計(jì))、電氣設(shè)計(jì)兩種。
結(jié)構(gòu)設(shè)計(jì)主要考慮產(chǎn)品的形狀、體積、面板的尺寸;面板上諸如按鈕、指示燈、顯示器的布置;儀器背板的尺寸、背板上信號(hào)線和電源線如何引入;接線端子如何安排等。
電氣設(shè)計(jì)包括軟件和硬件的設(shè)計(jì)、單片機(jī)的選擇、外圍電路器件的選擇、編程語言的選擇等。在最后要畫出單片機(jī)應(yīng)用系統(tǒng)的結(jié)構(gòu)框圖,在結(jié)構(gòu)框圖里要包括所選單片機(jī)的框圖以及各個(gè)功能塊的框圖。
3.硬件設(shè)計(jì)
硬件設(shè)計(jì)主要是指設(shè)計(jì)能實(shí)現(xiàn)所要求功能的硬件電路。根據(jù)前面總體設(shè)計(jì)時(shí)設(shè)計(jì)的系統(tǒng)結(jié)構(gòu)框圖畫出電路原理圖,結(jié)合產(chǎn)品的結(jié)構(gòu)和工藝設(shè)計(jì),再畫出印制電路板圖。在作單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計(jì)時(shí),應(yīng)考慮如下:
① 硬件設(shè)計(jì)中涉及到的具體電路首先應(yīng)是自己以前在別的項(xiàng)目上用過的現(xiàn)成的電路,這種電路好與否自己最清楚。其次是借鑒別人的電路,注意采用別人電路時(shí)一定要先調(diào)試,不能直接放在電路中。
② 硬件電路采用模塊化設(shè)計(jì)。如—個(gè)單片機(jī)應(yīng)用系統(tǒng)有單片機(jī)最小系統(tǒng)、時(shí)鐘電路、a/d轉(zhuǎn)換電路、led或lcd顯示電路、串口通信電路等,可分別作為獨(dú)立模塊來設(shè)計(jì)。模塊化設(shè)計(jì)的好處在于可以“分而治之”。每一個(gè)模塊都調(diào)試通過,那么整個(gè)系統(tǒng)的硬件就基本調(diào)試通過了,而且調(diào)試好的模塊還可方便地移植到其它的單片機(jī)應(yīng)用系統(tǒng)中去。
③ 選擇市場貨源充足、常用的元器件,尤其是集成電路芯片不能選獨(dú)家產(chǎn)品,獨(dú)家產(chǎn)品一是售價(jià)太高,二是一旦缺貨就無計(jì)可施。
④ 在進(jìn)行硬件電路設(shè)計(jì)時(shí),要充分考慮系統(tǒng)各部分的驅(qū)動(dòng)能力,若驅(qū)動(dòng)能力不夠,系統(tǒng)就不能可靠工作或完全不能工作。
⑤ 在畫電路原理圖時(shí),要充分考慮產(chǎn)品的結(jié)構(gòu)設(shè)計(jì)和工藝設(shè)計(jì),必須在做印制電路板圖之前完成,否則印制電路板的個(gè)數(shù)、大小尺寸和形狀均無法確定。
⑥ 目前流行的繪電路圖的工具有很多種,其中最好和常用的是protel 99se/ protel dxp,但是在用protel 99se/ protel dxp畫印制電路板時(shí)要充分考慮到抗電磁干擾問題。
⑦ 在用protel 99se/ protel dxp繪制印制電路板圖時(shí),有幾個(gè)最小尺寸值必須注意:線寬一般情況下要大于等于15mil;過孔直徑不小于30mil;線距(相鄰兩線的最小間隔)不小于10 mil。mil是英制的長度單位,為1in(1in=0.0254m)的千分之一。
⑧ 在繪制印制電路板圖時(shí),大部分元器件引腳的寬度和間距都是標(biāo)準(zhǔn)的,但有些多腳插接件卻不好繪制,即使用游標(biāo)卡尺測量,有時(shí)也會(huì)出現(xiàn)插不上去的現(xiàn)象。解決的方法是:繪制好印制電路板圖后,以1:1的比例打印一份出來,然后再找一塊較平的塑料泡沫,把印制電路板圖貼上去,再把元器件插上去,看是否合適,如不合適,重新修改,直到合適為止。
4.硬件調(diào)試
硬件調(diào)試在焊好元器件的印制電路板上進(jìn)行,其步驟如下:
① 檢查印制電路板。在元器件的安裝和焊接之前,先用眼睛和萬用表檢查印制電路板是否有短路和斷路的地方。
② 元器件在安裝的過程中一定要注意方向,在焊接的過程中要保持印制電路板板面的整潔,注意有無漏焊、錯(cuò)焊、連焊。
③ 空載上電。檢查電源輸出是否正確、單片機(jī)引腳上電源和地的電位是否正確以及其它集成芯片上電源和地的電位是否正確。
④ 上電??蛰d上電檢查正確后,即可將各芯片插入各插座,正式上電,再檢查各點(diǎn)電位是否正確。若發(fā)現(xiàn)電位不對(duì)或某個(gè)元器件發(fā)燙甚至冒煙,立即斷電,查找原因,直至排除故障方可重新上電。
⑤ 仿真調(diào)試。單片機(jī)的仿真器是幫助設(shè)計(jì)者對(duì)應(yīng)用系統(tǒng)進(jìn)行調(diào)試的專用工具。在不通電的情況下,首先把仿真器與pc機(jī)的并口或usb口、串口相連,然后把仿真器的仿真頭插入單片機(jī)應(yīng)用系統(tǒng)的專有插座中,這樣單片機(jī)、仿真器以及pc機(jī)三者就構(gòu)成了一個(gè)聯(lián)機(jī)開發(fā)系統(tǒng)。
5.軟件設(shè)計(jì)
在軟件設(shè)計(jì)上,應(yīng)注意如下幾點(diǎn):
① 與硬件設(shè)計(jì)類似,軟件設(shè)計(jì)中所涉及的實(shí)現(xiàn)某一功能的程序,首先也是自己以前在別的項(xiàng)目上用過的現(xiàn)成的程序模塊;其次借鑒他人的程序模塊,具體途徑是上網(wǎng)查找,包括硬件電路和源代碼,同樣也是在用之前一定要進(jìn)行調(diào)試。
② 軟件設(shè)計(jì)也應(yīng)模塊化。模塊化的好處是便于測試、修改和擴(kuò)展。調(diào)試工作可以并行進(jìn)行,幾個(gè)調(diào)試人員可以同時(shí)調(diào)試不同的模塊。
③ 合理分配內(nèi)存資源,要給堆棧預(yù)留足夠的ram區(qū),不能讓堆棧溢出。
④ 在軟件上采用抗電磁干擾措施,比如采樣時(shí),使用軟件濾波;在使用看門狗電路時(shí)也需有軟件的配合。
⑤ 為提高程序的可讀性,要給程序模塊增加必要的注釋。
⑥ 編程語言的選擇。匯編語言是單片機(jī)早期開發(fā)使用的語言,由于其可讀性、可移植性、可維護(hù)性差等缺點(diǎn),而逐漸被c語言取代。c語言是一種簡潔高效的高級(jí)語言,具備可讀性好、可靠性高、有功能豐富的函數(shù)庫、運(yùn)算速度快、編譯效率高、可移植性好等特點(diǎn),并且可以直接實(shí)現(xiàn)對(duì)硬件的控制,因而逐漸成為了單片機(jī)應(yīng)用系統(tǒng)開發(fā)中的主流編程語言。
6.軟件調(diào)試
軟件調(diào)試與所選用的軟件結(jié)構(gòu)和程序設(shè)計(jì)技術(shù)有關(guān)。如果采用模塊程序設(shè)計(jì)技術(shù),則逐個(gè)模塊調(diào)好以后,再進(jìn)行系統(tǒng)程序總調(diào)試。
對(duì)于模塊結(jié)構(gòu)程序,要一個(gè)個(gè)子程序分別調(diào)試。調(diào)試子程序時(shí),一定要符合現(xiàn)場環(huán)境,即入口條件和出口條件。調(diào)試的手段可采用單步運(yùn)行方式和斷點(diǎn)運(yùn)行方式,通過檢查用戶系統(tǒng)cpu的現(xiàn)場、ram的內(nèi)容和i/o口的狀態(tài),檢測程序執(zhí)行結(jié)果是否符合設(shè)計(jì)要求。通過檢測,可以發(fā)現(xiàn)程序中的死循環(huán)錯(cuò)誤、機(jī)器碼錯(cuò)誤及轉(zhuǎn)移地址的錯(cuò)誤,同時(shí)也可以發(fā)現(xiàn)用戶系統(tǒng)中的硬件故障、軟件算法及硬件設(shè)計(jì)錯(cuò)誤。在調(diào)試過程中不斷調(diào)整用戶系統(tǒng)的軟件和硬件,逐步通過一個(gè)個(gè)程序模塊。
各獨(dú)立程序模塊調(diào)試通過后,可以把各功能塊聯(lián)合起來一起進(jìn)行整體程序綜合調(diào)試。在這階段若發(fā)生故障,可以考慮各子程序在運(yùn)行時(shí)是否破壞現(xiàn)場,緩沖單元是否發(fā)生沖突,零位的建立和清除在設(shè)計(jì)上有否失誤,堆棧區(qū)域有否溢出,輸入設(shè)備的狀態(tài)是否正常,等等。若用戶系統(tǒng)是在開發(fā)系統(tǒng)的監(jiān)控程序下運(yùn)行時(shí),還要考慮用戶緩沖單元是否和監(jiān)控程序的工作單元發(fā)生沖突。
單步和斷點(diǎn)調(diào)試后,還應(yīng)進(jìn)行連續(xù)調(diào)試,這是因?yàn)閱尾竭\(yùn)行只能驗(yàn)證程序的正確與否,而不能確定定時(shí)精度、cpu的實(shí)時(shí)響應(yīng)等問題。待全部完成后,應(yīng)反復(fù)運(yùn)行多次,除了觀察穩(wěn)定性之外,還要觀察用戶系統(tǒng)的操作是否符合原始設(shè)計(jì)要求、安排的用戶操作是否合理等,必要時(shí)還要作適當(dāng)修正。
7.固化
目標(biāo)程序經(jīng)仿真器調(diào)試通過后,即可固化。源程序經(jīng)編譯、連接生成的機(jī)器碼有兩種格式(*.hex格式或*.bin格式)均可固化。固化的方法有兩種:一是仿真器配備的固化功能;二是專用的編程器。專用的編程器有很多種,又分為簡易和通用編程器兩種,前者可固化芯片數(shù)目少,后者可固化芯片數(shù)目多。
8.運(yùn)行測試
運(yùn)行測試包括功能測試和可靠性測試。功能測試是按照設(shè)計(jì)任務(wù)書檢查各個(gè)功能是否一一實(shí)現(xiàn)??煽啃詼y試,又稱“烤機(jī)”,“烤機(jī)”時(shí)間不定,可以是48小時(shí)、72小時(shí)或更長,目的是測試在規(guī)定的時(shí)間內(nèi)系統(tǒng)能否正常運(yùn)行。除檢測運(yùn)行時(shí)間外,還要高溫、低溫測試以及抗電磁干擾測試等。當(dāng)功能測試和可靠性測試都通過,該單片機(jī)應(yīng)用系統(tǒng)開發(fā)成功。