官术网_书友最值得收藏!

3.1 單片機(jī)嵌入式系統(tǒng)的研制步驟和方法

單片機(jī)嵌入式系統(tǒng)隨其用途不同,硬件和軟件均不相同。單片機(jī)最初的選型很重要,原則上是選擇內(nèi)部資源豐富、高性價(jià)比的單片機(jī)。硬件軟件化是提供高系統(tǒng)性價(jià)比的有效方法,盡量減少硬件成本,多用軟件實(shí)現(xiàn)相同的功能,這樣也可以大大提高系統(tǒng)的可靠性。

雖然單片機(jī)的硬件選型不盡相同,軟件編寫也千差萬(wàn)別,但系統(tǒng)的研制步驟和方法是基本一致的,一般都分為總體設(shè)計(jì)、硬件電路的構(gòu)思設(shè)計(jì)、軟件的編制和仿真調(diào)試幾個(gè)階段。單片機(jī)嵌入式系統(tǒng)的研制流程如圖3.1所示。

圖3.1 單片機(jī)嵌入式系統(tǒng)的研制流程

3.1.1 總體設(shè)計(jì)

1.確立功能和性能指標(biāo)

不管是工程控制系統(tǒng)還是智能儀器儀表,都必須首先分析和了解項(xiàng)目的總體要求、輸入信號(hào)類型和數(shù)量、輸出控制對(duì)象及數(shù)量、輔助外設(shè)種類及要求、使用環(huán)境及工作電源要求、產(chǎn)品成本、可靠性要求和可維護(hù)性、經(jīng)濟(jì)效益等因素,必要時(shí)可參考同類產(chǎn)品的技術(shù)資料,制定出可行的性能指標(biāo)。

2.單片機(jī)的選型

現(xiàn)在的單片機(jī)品種繁多,包括各種專用功能的單片機(jī),給用戶帶來(lái)了許多好處,可以節(jié)約很多外接擴(kuò)展器件。單片機(jī)的選型很重要,選擇時(shí)需考慮其功能是否全部滿足規(guī)定的要求。例如控制速度、精度、控制端口的數(shù)量、驅(qū)動(dòng)外設(shè)的能力、存儲(chǔ)器的大小、軟件編寫的難易程度、開發(fā)工具的支持程度等。再如要驅(qū)動(dòng)LED顯示器,可選用多端口的單片機(jī)直接驅(qū)動(dòng),還可以利用少端口的單片機(jī)加擴(kuò)展電路構(gòu)成,這就要具體分析選用何種器件有利于降低成本、電路易于制作、軟件便于編寫等因素。如果要求驅(qū)動(dòng)顯示器LCD,可以選用具有直接驅(qū)動(dòng)LCD的單片機(jī),也可使用加外接驅(qū)動(dòng)芯片的辦法,這就要求在應(yīng)用時(shí)具體問題具體分析。

此外,選擇某種單片機(jī)還需要考慮貨源是否充足,是否便于批量生產(chǎn),在考慮性價(jià)比的同時(shí),需研究易于實(shí)現(xiàn)產(chǎn)品技術(shù)指標(biāo)的因素。

3.軟件的編寫和支持工具

單片機(jī)應(yīng)用軟件的設(shè)計(jì)與硬件的設(shè)計(jì)一樣重要,沒有控制軟件的單片機(jī)是毫無(wú)用處的,它們緊密聯(lián)系,相輔相成,并且硬件和軟件具有一定的互換性,在應(yīng)用系統(tǒng)中,有些功能既可以用硬件實(shí)現(xiàn),也可以用軟件完成。多利用硬件,可以提高研制速度、減少編寫軟件的工作量、爭(zhēng)取時(shí)間、爭(zhēng)取商機(jī),但這樣會(huì)增加產(chǎn)品的單位成本,對(duì)于以價(jià)格為競(jìng)爭(zhēng)手段的產(chǎn)品不宜采用。相反,以軟件代替硬件完成一些功能,最直觀的優(yōu)點(diǎn)是可以降低成本,提高可靠性,增加技術(shù)難度而給仿制者增加仿制難度;缺點(diǎn)是同時(shí)也增加了系統(tǒng)軟件的復(fù)雜性,軟件的編寫工作量大,研制周期可能會(huì)加長(zhǎng),同時(shí)系統(tǒng)運(yùn)行的速度可能也會(huì)降低等。因此在總體考慮時(shí),必須綜合分析以上因素,合理地制定某些功能硬件和軟件的比例。

對(duì)于不同的單片機(jī),甚至同一公司的單片機(jī),它們的開發(fā)工具可能不同或不完全相同。這就要求在選擇單片機(jī)時(shí),需考慮開發(fā)工具的因素。原則上是以最少的開發(fā)投資滿足某一項(xiàng)目的研制過程,最好使用現(xiàn)有的開發(fā)工具或增加少量的輔助器材就可達(dá)到目的。當(dāng)然,開發(fā)工具是一次性投資,而形成產(chǎn)品卻是長(zhǎng)遠(yuǎn)的效益,這就需要平衡產(chǎn)品和開發(fā)工具的經(jīng)濟(jì)性和效益性。

3.1.2 硬件系統(tǒng)

根據(jù)總體設(shè)計(jì)中確立的功能特性要求,確定單片機(jī)的型號(hào)、所需外圍擴(kuò)展芯片、存儲(chǔ)器、I/O電路、驅(qū)動(dòng)電路,可能還有A/D和D/A轉(zhuǎn)換電路及其他模擬電路,設(shè)計(jì)出應(yīng)用系統(tǒng)的電路原理圖。

1.程序存儲(chǔ)器

單片機(jī)片內(nèi)程序存儲(chǔ)器,按存儲(chǔ)的內(nèi)容的寫入(常稱為編程)方式可分為固定ROM、可編程的PROM、可擦可編程的EPROM三類。可擦可編程的EPROM又分為UV-EPROM(紫外線擦除可編程,人們常把UV-EPROM稱為EPROM)、E2PROM(電擦除可編程)、Flash E2PROM(閃速存儲(chǔ)器)。由于Flash E2PROM寫入速度快,適合于多次擦寫的場(chǎng)合,最適于開發(fā)調(diào)試階段,已經(jīng)成為8~32位單片機(jī)的主流存儲(chǔ)器配置。

單片機(jī)片內(nèi)程序存儲(chǔ)器,按存儲(chǔ)容量也分為不同的等級(jí),從幾百B到幾百KB,這就為它們的應(yīng)用提供了更為廣闊的前景,而且這些單片機(jī)的價(jià)格也不高。同時(shí),這些內(nèi)置ROM的單片機(jī)基本上均可實(shí)現(xiàn)軟硬件的程序加密,為保護(hù)自己的知識(shí)產(chǎn)權(quán)提供了強(qiáng)有力的措施,所以這些單片機(jī)深得用戶喜愛,可以說(shuō)這類單片機(jī)正在逐漸成為市場(chǎng)上的主流產(chǎn)品。

2.數(shù)據(jù)存儲(chǔ)器

現(xiàn)在的單片機(jī)基本上都帶有內(nèi)部數(shù)據(jù)存儲(chǔ)器(RAM),容量從幾十B到幾KB。對(duì)于數(shù)據(jù)存儲(chǔ)器容量的要求,各系統(tǒng)之間差別很大,要求也不盡相同,如80C51/52系列的單片機(jī)片內(nèi)置有128B和256B的RAM,這對(duì)于一般中小型應(yīng)用系統(tǒng)(如實(shí)時(shí)控制系統(tǒng)和智能儀器儀表)已能滿足要求。對(duì)于RAM的容量要求稍大一點(diǎn),可采用如外擴(kuò)芯片8155這樣的芯片,8155可同時(shí)擴(kuò)充數(shù)量更多的I/O口線。如果是數(shù)據(jù)采集系統(tǒng),對(duì)RAM容量要求較大的系統(tǒng)則需要采用更大容量的數(shù)據(jù)存儲(chǔ)器,如果要求數(shù)據(jù)掉電保護(hù),則需要采用Flash E2PROM作為數(shù)據(jù)存儲(chǔ)器。當(dāng)然,外擴(kuò)的RAM也以盡可能少的芯片為原則。

3.單片機(jī)的系統(tǒng)總線

80C51總共有4個(gè)8位I/O口,如果使用內(nèi)置程序存儲(chǔ)器的芯片,可用做I/O口線的就較多,一般均可滿足要求。但如需外接ROM和RAM,P0口為標(biāo)準(zhǔn)的雙向數(shù)據(jù)/地址總線口,P2為高8位地址總線口,即使高8位的地址總線口沒有完全使用,余下的I/O口也不能另為他用,否則編程將相當(dāng)麻煩。這樣80C51能作為I/O的端口只有16個(gè)。此外,中斷、串行口和定時(shí)器/計(jì)數(shù)器口又要占用P3口的6個(gè)I/O口,剩下的也只有P1口,這8個(gè)I/O口就顯得相當(dāng)寶貴。

P0和P2口作為數(shù)據(jù)和地址總線,一般可以驅(qū)動(dòng)數(shù)個(gè)外接芯片(視外接芯片要求的驅(qū)動(dòng)電流而異),也即P0和P2口的驅(qū)動(dòng)能力還是有限的,如果外接的芯片過多,負(fù)載過重,系統(tǒng)將可能不能正常工作。此時(shí)必須加接緩沖驅(qū)動(dòng)器,通常使用74HC573作為地址總線驅(qū)動(dòng)器,使用74HC245雙向驅(qū)動(dòng)器作為數(shù)據(jù)總線驅(qū)動(dòng)器。

4.I/O接口

現(xiàn)在的單片機(jī)系列中普遍都有多種I/O口的型號(hào),對(duì)I/O口的使用應(yīng)從其功能和驅(qū)動(dòng)能力上加以考慮。對(duì)于僅需增加少量I/O口的情況,最好選用價(jià)格低廉的TTL或CMOS電路擴(kuò)展,這樣也可以提高單片機(jī)口線的利用率。對(duì)于需擴(kuò)展更多的I/O口,則可以選用標(biāo)準(zhǔn)的I/O口擴(kuò)展芯片8155、8255等。這些芯片的接口電路簡(jiǎn)單,編程方便,使用靈活,價(jià)格適中。

5.A/D和D/A轉(zhuǎn)換器

現(xiàn)在可使用的A/D轉(zhuǎn)換器數(shù)量繁多、品種齊全,各種分辨率、精度及速度的芯片應(yīng)有盡有,最著名的是美國(guó)的模擬數(shù)字器件公司(Analog)的一系列轉(zhuǎn)換器,此外還有Motorola和Maxim等公司的產(chǎn)品,這就為使用提供了很多便利條件。還有一種趨勢(shì)大家都已看到,即現(xiàn)在的各大單片機(jī)生產(chǎn)廠商都推出了內(nèi)帶A/D轉(zhuǎn)換器的單片機(jī),這樣的芯片性價(jià)比一般都較高。由于A/D或D/A轉(zhuǎn)換器與單片機(jī)沒有外部連線,所以工作就更可靠,體積也更小了。對(duì)轉(zhuǎn)換器的控制均可使用軟件的方法實(shí)現(xiàn),使用十分方便。如果能滿足要求,建議首選這樣的機(jī)型,而不要外掛轉(zhuǎn)換器件。當(dāng)然內(nèi)置轉(zhuǎn)換器的單片機(jī),轉(zhuǎn)換器一般都在12位以下,對(duì)那些有更高要求的應(yīng)用系統(tǒng),也只能外接轉(zhuǎn)換器芯片。

3.1.3 軟件系統(tǒng)

1.系統(tǒng)資源

在單片機(jī)嵌入式系統(tǒng)的開發(fā)中,軟件的設(shè)計(jì)是最為復(fù)雜和困難的,大部分情況下工作量都較大,特別是對(duì)那些控制系統(tǒng)比較復(fù)雜的情況。如果是機(jī)電一體化的設(shè)計(jì)人員,往往需要同時(shí)考慮單片機(jī)的軟件和硬件資源分配。在考慮一個(gè)應(yīng)用工程項(xiàng)目時(shí)就需要先分析該系統(tǒng)完成的任務(wù),明確軟件和硬件中的哪個(gè)承擔(dān)哪些工作。實(shí)際上這種情況很多,比如一些任務(wù)可以用軟件完成,也可以用硬件完成,此時(shí)還需考慮采用軟件或硬件的優(yōu)勢(shì),一般均以最優(yōu)的方案為首選,定義各輸入/輸出(I/O)的功能、數(shù)據(jù)的傳輸交換形式、與外部設(shè)備接口及它們的地址分配、程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的使用區(qū)域、主程序和子程序使用的空間、顯示(如有的話)等數(shù)據(jù)暫存區(qū)的選擇、堆棧區(qū)的開辟等因素。

2.程序結(jié)構(gòu)

一個(gè)優(yōu)秀的單片機(jī)程序設(shè)計(jì)人員,設(shè)計(jì)的軟件程序結(jié)構(gòu)是合理、緊湊和高效的。同一任務(wù),有時(shí)用主程序完成是合理的,但有時(shí)用子程序執(zhí)行效率會(huì)更高,占用CPU資源最少。對(duì)一些要求不高的中斷任務(wù)或在單片機(jī)的速度足夠高的情況下,則可以使用程序掃描查詢,也可以用中斷申請(qǐng)執(zhí)行,這也要具體問題具體分析。對(duì)于多中斷系統(tǒng),當(dāng)它們存在矛盾時(shí),需區(qū)分輕重緩急、主要和次要,區(qū)別對(duì)待,并適當(dāng)?shù)亟o予不同的中斷優(yōu)先級(jí)別。

在單片機(jī)的軟件設(shè)計(jì)中,任務(wù)可能很多,程序量很大,是否就意味著程序也按部就班地編寫下去呢?答案是否定的,在這種情況下一般都需要把程序分成若干個(gè)功能獨(dú)立的模塊,這也是軟件設(shè)計(jì)中常用的方法,即俗稱的化整為零的方法。理論和實(shí)踐都證明,這種方法是行之有效的。這樣可以分階段地對(duì)單個(gè)模塊進(jìn)行設(shè)計(jì)和調(diào)試,一般情況下單個(gè)模塊利用仿真工具即可調(diào)試好,最后再將它們有機(jī)地聯(lián)系起來(lái),構(gòu)成一個(gè)完整的控制程序,并對(duì)它們進(jìn)行聯(lián)合調(diào)試即可。

對(duì)于復(fù)雜的多任務(wù)實(shí)時(shí)控制系統(tǒng),要處理的數(shù)據(jù)非常龐大,同時(shí)又要求對(duì)多個(gè)控制對(duì)象進(jìn)行實(shí)時(shí)控制,要求對(duì)各控制對(duì)象的實(shí)時(shí)數(shù)據(jù)進(jìn)行快速的處理和響應(yīng),這對(duì)系統(tǒng)的實(shí)時(shí)性、并行性提出了更高的要求。這種情況下一般要求采用實(shí)時(shí)任務(wù)操作系統(tǒng),并要求這個(gè)系統(tǒng)具備優(yōu)良的實(shí)時(shí)控制能力。

3.數(shù)學(xué)模型

一個(gè)控制系統(tǒng)的研制,在明確了各部分需要完成的任務(wù)后,此時(shí)擺在設(shè)計(jì)人員面前的就是需要協(xié)調(diào)解決的問題了。這時(shí)設(shè)計(jì)人員必須進(jìn)一步分析各輸入、輸出變量的數(shù)學(xué)關(guān)系,即建立數(shù)學(xué)模型。這個(gè)步驟對(duì)一般較復(fù)雜的控制系統(tǒng)是必不可少的,而且不同的控制系統(tǒng),它們的數(shù)學(xué)模型也不盡相同。

在很多控制系統(tǒng)中,都需要對(duì)外部的數(shù)據(jù)進(jìn)行采集取樣、處理加工、補(bǔ)償校正和控制輸出。外部數(shù)據(jù)可能是數(shù)字量,也可能是模擬量。對(duì)于輸入模擬量時(shí),通過傳感器件進(jìn)行采樣,由單片機(jī)進(jìn)行分析處理后輸出。輸出的方式很多,可以顯示、打印或終端控制。從模擬量的采樣到輸出的諸多環(huán)節(jié)中,信號(hào)都可能會(huì)失真,即產(chǎn)生非線性誤差,這些都需要單片機(jī)進(jìn)行補(bǔ)償、校正和預(yù)加重,才能保證輸出量達(dá)到所要求的誤差范圍。

現(xiàn)階段8位單片機(jī)仍是主流。對(duì)于復(fù)雜參數(shù)的計(jì)算(例如非線性數(shù)據(jù)、對(duì)數(shù)、指數(shù)、三角函數(shù)、微積分運(yùn)算)如果使用PC(32位)的軟件編程相對(duì)簡(jiǎn)單,并且具有大量應(yīng)用軟件可以利用。但單片機(jī)要用匯編語(yǔ)言完成這樣的運(yùn)算,程序結(jié)構(gòu)是很復(fù)雜的,程序編寫也較困難,甚至難以建立數(shù)學(xué)模型,所以解決這個(gè)問題常用的方法多半采用查表法去實(shí)現(xiàn)。查表法即事先將測(cè)試和計(jì)算的數(shù)據(jù)按一定規(guī)律編制成表格,并存于存儲(chǔ)器中,CPU根據(jù)被測(cè)參數(shù)值和近似值查出最終所需的結(jié)果。查表法是一種行之有效的方法,它可以對(duì)輸入?yún)?shù)進(jìn)行補(bǔ)償校正、計(jì)算和轉(zhuǎn)換,程序編制簡(jiǎn)單,是將復(fù)雜的數(shù)值運(yùn)算簡(jiǎn)化為簡(jiǎn)單的數(shù)據(jù)輸出的好辦法,常被設(shè)計(jì)人員采用。

值得一提的是,現(xiàn)行大多數(shù)的單片機(jī)都具有查表指令,這給軟件設(shè)計(jì)提供了技術(shù)支持。

4.程序流程

較復(fù)雜的控制系統(tǒng)一般都需要繪制一份程序流程圖,可以說(shuō)它是程序編寫的綱領(lǐng)性文件,可以有效地指導(dǎo)程序的編寫。當(dāng)然,程序設(shè)計(jì)開始的流程圖不可能盡善盡美,在編制過程中仍需進(jìn)行修改和完善。認(rèn)真地繪制程序流程圖,可以起到事半功倍的效果。

流程圖就是根據(jù)系統(tǒng)功能的要求及操作過程,列出主要的各功能模塊。復(fù)雜程序流向多變,需要在初始化時(shí)設(shè)置各種標(biāo)識(shí),根據(jù)這些標(biāo)識(shí)控制程序的流向。當(dāng)系統(tǒng)中各功能模塊的狀態(tài)改變時(shí),只需修改相應(yīng)的標(biāo)識(shí)即可,無(wú)須具體地管理狀態(tài)變化對(duì)其他模塊的影響。這些需要在繪制流程圖時(shí),清晰地標(biāo)識(shí)出程序流程中各標(biāo)識(shí)的功能。

5.編寫程序

上述的工作完成后,就可以開始編寫程序了。程序編寫時(shí),首先需要對(duì)用到的參數(shù)進(jìn)行定義,與標(biāo)號(hào)的定義一樣,使用的字符必須易于理解,可以使用英文單詞和漢語(yǔ)拼音的縮寫形式,這對(duì)今后自己的辨讀和排錯(cuò)都是有好處的,然后初始化各個(gè)特殊功能寄存器的狀態(tài),定義中斷口的地址區(qū),安排數(shù)據(jù)存儲(chǔ)區(qū),根據(jù)系統(tǒng)的具體情況估算中斷、子程序的使用情況,預(yù)留出堆棧區(qū)和需要的數(shù)據(jù)緩存區(qū),接下來(lái)就可以編寫程序了。

過去單片機(jī)應(yīng)用軟件以匯編語(yǔ)言為主,因?yàn)樗?jiǎn)潔、直觀、緊湊,使設(shè)計(jì)人員樂于接受。而現(xiàn)在高級(jí)語(yǔ)言在單片機(jī)應(yīng)用軟件設(shè)計(jì)中發(fā)揮了越來(lái)越重要的角色,性能也越來(lái)越好,C語(yǔ)言已成為現(xiàn)代單片機(jī)嵌入式系統(tǒng)開發(fā)中較常用的高級(jí)語(yǔ)言。但不管使用何種語(yǔ)言,最終還是需要翻譯成機(jī)器語(yǔ)言,調(diào)試正常后,通過燒錄器固化到單片機(jī)或片外程序存儲(chǔ)器中。至此,程序編寫即告完成。

主站蜘蛛池模板: 清苑县| 大同县| 东源县| 连城县| 资兴市| 梁平县| 陆丰市| 兰溪市| 怀柔区| 屏东市| 隆德县| 邵阳市| 和顺县| 安阳市| 舒城县| 天水市| 临泉县| 门源| 镇雄县| 金寨县| 甘洛县| 土默特左旗| 北宁市| 兴安县| 通河县| 綦江县| 出国| 宜黄县| 营口市| 涡阳县| 津市市| 达尔| 运城市| 阜新市| 额尔古纳市| 嵊泗县| 莒南县| 民丰县| 乌恰县| 甘谷县| 靖西县|