總體規(guī)劃
軟件所要完成的任務(wù)已在總體設(shè)計(jì)時(shí)規(guī)定,在具體軟件設(shè)計(jì)時(shí),要結(jié)合硬件結(jié)構(gòu),進(jìn)一步明確軟件所承擔(dān)的一個(gè)個(gè)任務(wù)細(xì)節(jié),確定具體實(shí)施的方法,合理分配資源。
1程序設(shè)計(jì)技術(shù)
合理的軟件結(jié)構(gòu)是設(shè)計(jì)一個(gè)性能優(yōu)良的單片機(jī)應(yīng)用系統(tǒng)軟件的基礎(chǔ)。在程序設(shè)計(jì)中,應(yīng)培養(yǎng)結(jié)構(gòu)化程序設(shè)計(jì)風(fēng)格,各功能程序?qū)嵭心K化、子程序化。一般有以下兩種設(shè)計(jì)方法。
a.模塊程序設(shè)計(jì)
模塊程序設(shè)計(jì)是單片機(jī)應(yīng)用中常用的一種程序設(shè)計(jì)技術(shù)。它是把一個(gè)較長(zhǎng)的程序分解為若干個(gè)功能相對(duì)獨(dú)立的較小的程序模塊,各個(gè)程序模塊分別設(shè)計(jì)、編程和調(diào)試,最后由各個(gè)調(diào)試好的模塊組成一個(gè)大的程序。
優(yōu)點(diǎn)是單個(gè)功能明確的程序模塊的設(shè)計(jì)和調(diào)試比較方便,容易完成,一個(gè)模塊可以為多個(gè)程序所共享。其缺點(diǎn)是各個(gè)模塊的連接有時(shí)有一定難度。
b.自頂向下的程序設(shè)計(jì)
自頂向下程序設(shè)計(jì)時(shí),先從主程序開始設(shè)計(jì),從屬程序或子程序用符號(hào)來代替。主程序編好后再編制各從屬程序和子程序,最后完成整個(gè)系統(tǒng)軟件的設(shè)計(jì)。
優(yōu)點(diǎn)是比較符合于人們的日常思維,設(shè)計(jì)、調(diào)試和連接同時(shí)按一個(gè)線索進(jìn)行,程序錯(cuò)誤可以較早的發(fā)現(xiàn)。缺點(diǎn)是上一級(jí)的程序錯(cuò)誤將對(duì)整個(gè)程序產(chǎn)生影響,一處修改可能引起對(duì)整個(gè)程序的全面修改。
2程序設(shè)計(jì)
在選擇好軟件結(jié)構(gòu)和所采用的程序設(shè)計(jì)技術(shù)后,便可著手進(jìn)行程序設(shè)計(jì),將設(shè)計(jì)任務(wù)轉(zhuǎn)化為具體的程序。
a.建立數(shù)學(xué)模型
根據(jù)設(shè)計(jì)任務(wù),描述出各輸入變量和各輸出變量之間的數(shù)學(xué)關(guān)系,此過程即為建立數(shù)學(xué)模型。數(shù)學(xué)模型隨系統(tǒng)任務(wù)的不同而不同,其正確度是系統(tǒng)性能好壞的決定性因素之一。
b.繪制程序流程圖
通常在編寫程序之前先繪制程序流程圖,以提高軟件設(shè)計(jì)的總體效率。程序流程圖以簡(jiǎn)明直觀的方式對(duì)任務(wù)進(jìn)行描述,并很容易由此編寫出程序,故對(duì)初學(xué)者來說尤為適用。
在設(shè)計(jì)過程中,先畫出簡(jiǎn)單的功能性流程圖(粗框圖),然后對(duì)功能流程圖進(jìn)行細(xì)化和具體化,對(duì)存儲(chǔ)器、寄存器、標(biāo)志位等工作單元作具體的分配和說明,將功能流程圖中每一個(gè)粗框的操作轉(zhuǎn)變?yōu)榫唧w的存儲(chǔ)器單元、工作寄存器或I/O口的操作,從而給出詳細(xì)的程序流程圖(細(xì)框圖)。
c.程序的編制
在完成程序流程圖設(shè)計(jì)以后,便可以編寫程序。程序設(shè)計(jì)語言對(duì)程序設(shè)計(jì)的影響較大。匯編語言是最為常用的單片機(jī)程序語言,用匯編語言編寫程序代碼精簡(jiǎn),直接面向硬件電路進(jìn)行設(shè)計(jì),速度快,但進(jìn)行大量數(shù)據(jù)運(yùn)算時(shí),編寫難度將大大增加,不易閱讀和調(diào)試。在有大量數(shù)據(jù)運(yùn)算時(shí)可采用C語言(如MCS-51的C51)或PL/M語言。
編寫程序時(shí),應(yīng)注意系統(tǒng)硬件資源的合理分配與使用,子程序的入/出口參數(shù)的設(shè)置與傳遞。采用合理的數(shù)據(jù)結(jié)構(gòu)、控制算法,以滿足系統(tǒng)要求的精度。
在存儲(chǔ)空間分配時(shí),應(yīng)將使用頻率最高的數(shù)據(jù)緩沖器設(shè)在內(nèi)部RAM;標(biāo)志應(yīng)設(shè)置在片內(nèi)RAM位操作區(qū)(20H~2FH)中;指定用戶堆棧區(qū),棧區(qū)的大小應(yīng)留有余量;余下部分作為數(shù)據(jù)緩沖區(qū)。
在編寫程序過程中,根據(jù)流程圖逐條用符號(hào)指令來描述,即得匯編語言源程序。應(yīng)按MCS-51匯編語言的標(biāo)準(zhǔn)符號(hào)和格式書寫,在完成系統(tǒng)功能的同時(shí)應(yīng)注意保證設(shè)計(jì)的可靠性,如數(shù)字濾波、軟件陷阱、保護(hù)等。必要時(shí)可作若干功能性注釋,提高程序的可讀性。
3程序設(shè)計(jì)
各程序模塊編輯之后,需進(jìn)行匯編或編譯、調(diào)試,當(dāng)滿足設(shè)計(jì)要求后,將各程序模塊按照軟件結(jié)構(gòu)設(shè)計(jì)的要求連接起來,即為軟件裝配,從而完成軟件設(shè)計(jì)。在軟件裝配時(shí),應(yīng)注意軟件接口。
單片機(jī)應(yīng)用系統(tǒng)硬件設(shè)計(jì)應(yīng)該考慮哪些問題?
(1)存儲(chǔ)器擴(kuò)展:容量需求,在選擇單片機(jī)時(shí)就考慮到單片機(jī)的內(nèi)部存儲(chǔ)器資源,如能滿足要求就不需要進(jìn)行擴(kuò)展,在必須擴(kuò)展時(shí)注意存儲(chǔ)器的類型、容量和接口,一般盡量留有余地,并且盡可能減少芯片的數(shù)量。選擇合適的方法、ROM和RAM的形式,RAM是否要進(jìn)行掉電保護(hù)等。
(2)I/O接口的擴(kuò)展:?jiǎn)纹瑱C(jī)應(yīng)用系統(tǒng)在擴(kuò)展I/O接口時(shí)應(yīng)從體積、價(jià)格、負(fù)載能力、功能等幾個(gè)方面考慮。應(yīng)根據(jù)外部需要擴(kuò)展電路的數(shù)量和所選單片機(jī)的內(nèi)部資源(空閑地址線的數(shù)量)選擇合適的地址譯碼方法。
(3)輸入通道的設(shè)計(jì):輸入通道設(shè)計(jì)包括開關(guān)量和模擬輸入通道的設(shè)計(jì)。開關(guān)量要考慮接口形式、電壓等級(jí)、隔離方式、擴(kuò)展接口等。模擬量通道的設(shè)計(jì)要與信號(hào)檢測(cè)環(huán)節(jié)(傳感器、信號(hào)處理電路等)結(jié)合起來,應(yīng)根據(jù)系統(tǒng)對(duì)速度、精度和價(jià)格等要求來選擇,同時(shí)還需要和傳感器等設(shè)備的性能相匹配,要考慮傳感器類型、傳輸信號(hào)的形式(電流還是電壓)、線性化、補(bǔ)償、光電隔離、信號(hào)處理方式等,還應(yīng)考慮A/D轉(zhuǎn)換器的選擇(轉(zhuǎn)換精度、轉(zhuǎn)換速度、結(jié)構(gòu)、功耗等)及相關(guān)電路、擴(kuò)展接口,有時(shí)還涉及軟件的設(shè)計(jì)。高精度的模數(shù)轉(zhuǎn)換器價(jià)格十分昂貴,因而應(yīng)盡量降低對(duì)A/D轉(zhuǎn)換器的要求,能用軟件實(shí)現(xiàn)的功能盡量用軟件來實(shí)現(xiàn)。
(4)輸出通道的設(shè)計(jì):輸出通道設(shè)計(jì)包括開關(guān)量和模擬量輸出通道的設(shè)計(jì)。開關(guān)量要考慮功率、控制方式(繼電器、可控硅、三極管等)。模擬量輸出要考慮D/A轉(zhuǎn)換器的選擇(轉(zhuǎn)換精度、轉(zhuǎn)換速度、結(jié)構(gòu)、功耗等)、輸出信號(hào)的形式(電流還是電壓)、隔離方式、擴(kuò)展接口等。
(5)人機(jī)界面的設(shè)計(jì):人機(jī)界面的設(shè)計(jì)包括輸入鍵盤、開關(guān)、撥碼盤、啟/停操作、復(fù)位、顯示器、打印、指示、報(bào)警等。輸入鍵盤、開關(guān)、撥碼盤應(yīng)考慮類型、個(gè)數(shù)、參數(shù)及相關(guān)處理(如按鍵的去抖處理)。啟/停、復(fù)位操作要考慮方式(自動(dòng)、手動(dòng))及其切換。顯示器要考慮類型(LED,LCD)、顯示信息的種類、倍數(shù)等。此外還要考慮各種人機(jī)界面的擴(kuò)展接口。
(6)通信電路的設(shè)計(jì):?jiǎn)纹瑱C(jī)應(yīng)用系統(tǒng)往往作為現(xiàn)場(chǎng)測(cè)控設(shè)備,常與上位機(jī)或同位機(jī)構(gòu)成測(cè)控網(wǎng)絡(luò),需要其有數(shù)據(jù)通信的能力,通常設(shè)計(jì)為RS-232C、RS-485、紅外收發(fā)等通信標(biāo)準(zhǔn)。
(7)印刷電路板的設(shè)計(jì)與制作:電路原理圖和印刷電路板的設(shè)計(jì)常采用專業(yè)設(shè)計(jì)軟件進(jìn)行設(shè)計(jì),如Protel,OrCAD等。設(shè)計(jì)印刷電路板需要有很多的技巧和經(jīng)驗(yàn),設(shè)計(jì)好印刷電路板圖后應(yīng)送到專業(yè)化制作廠家生產(chǎn),在生產(chǎn)出來的印刷電路板上安裝好元件,則完成硬件設(shè)計(jì)和制作。
(8)負(fù)載容限的考慮:?jiǎn)纹瑱C(jī)總線的負(fù)載能力是有限的。如MCS-51的P0口的負(fù)載能力為4mA,最多驅(qū)動(dòng)8個(gè)TTL電路,P1~P3口的負(fù)載能力為2mA,最多驅(qū)動(dòng)4個(gè)TTL電路。若外接負(fù)載較多,則應(yīng)采取總線驅(qū)動(dòng)的方法提高系統(tǒng)的負(fù)載容限。常用驅(qū)動(dòng)器有:?jiǎn)蜗蝌?qū)動(dòng)器74LS244,雙向驅(qū)動(dòng)器74LS245等。
(9)信號(hào)邏輯電平兼容性的考慮:在所設(shè)計(jì)的電路中,可能兼有TTL和CMOS器件,也有非標(biāo)準(zhǔn)的信號(hào)電平,要設(shè)計(jì)相應(yīng)的電平兼容和轉(zhuǎn)換電路。當(dāng)有RS-232,RS-485接口時(shí),還要實(shí)現(xiàn)電平兼容和轉(zhuǎn)換。常用的集成電路有MAX232,MAX485等。
(10)電源系統(tǒng)的配置:?jiǎn)纹瑱C(jī)應(yīng)用系統(tǒng)一定需要電源,要考慮電源的組數(shù)、輸出功率、抗干擾。要熟悉常用三端穩(wěn)壓器(78хх系列、79хх系列)、精密電源(AD580,MC1403,CJ313/336/385,W431)的應(yīng)用。
(11)抗干擾的實(shí)施:采取必要的抗干擾措施是保證單片機(jī)系統(tǒng)正常工作的重要環(huán)節(jié)。它包括芯片、器件選擇、去耦濾波、印刷電路板布線、通道隔離等。
-
單片機(jī)
+關(guān)注
關(guān)注
6030文章
44489瀏覽量
631997 -
軟件設(shè)計(jì)
+關(guān)注
關(guān)注
3文章
58瀏覽量
17753 -
程序設(shè)計(jì)
+關(guān)注
關(guān)注
3文章
261瀏覽量
30352
原文標(biāo)題:?jiǎn)纹瑱C(jī)設(shè)計(jì)應(yīng)該考慮哪些事情?
文章出處:【微信號(hào):aidanpianji,微信公眾號(hào):?jiǎn)纹瑱C(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論