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

第1章 單片機開發預備知識

單片機的應用十分廣泛,從工業控制到家用電器,許多地方都有單片機的身影。掌握了單片機開發技術,不僅能夠根據自己的需要進行電子設計,實現自己的一些想法,而且也為進一步學習嵌入式技術打下一定的基礎。

本章將對單片機應用系統的軟、硬件設計以及開發和調試等各個方面加以介紹,以便讀者能通過對本章的學習較快地完成單片機應用系統的研制工作。

1.1 單片機開發流程

單片機的開發主要分為硬件開發和軟件開發,在系統設計上又有最小系統和擴展系統兩種。下面將通過系統硬件設計、軟件設計進行開發流程的介紹,并以最小系統及一些典型的擴展系統為例進行簡單的說明。

1.1.1 單片機應用系統設計步驟

單片機應用系統是指以單片機為核心,配以一定的外圍電路和軟件,能實現某種或幾種功能的應用系統。它由硬件部分和軟件部分組成。一般來說,應用系統所要完成的任務不同,相應的硬件配置和軟件配置也就不同。因此,單片機應用系統的設計應包括硬件設計和軟件設計兩大部分。為保證系統能可靠工作,在軟、硬件的設計中,還要考慮其抗干擾能力。

在應用系統的設計中,軟件、硬件和抗干擾設計是緊密相關、不可分離的。在有些情況下硬件的任務可由軟件來完成(如某些濾波、校準功能等);而在另一些要求系統實時性強、響應速度快的場合,則往往用硬件代替軟件來完成某些功能。設計者應根據實際情況,合理地安排軟、硬件的比例,選取最佳的設計方案,使系統具有最佳的性能價格比。

設計一個單片機測控系統,一般可分為4個步驟。

● 需求分析、方案論證和總體設計階段

需求分析、方案論證是單片機測控系統設計工作的開始,也是工作的基礎。只有經過深入細致的需求分析和周密而科學的方案論證才能使系統設計工作順利完成。

需求分析的內容主要包括:被測控參數的形式(電量、非電量、模擬量、數字量等)、被測控參數的范圍、性能指標、系統功能、工作環境、顯示、報警、打印要求等。

方案論證是根據用戶要求設計出符合現場條件的軟硬件方案,在選擇測量結果輸出方式上,既要滿足用戶要求,又要使系統簡單、經濟、可靠,這是進行方案論證與總體設計一貫堅持的原則。

● 器件選擇、電路設計制作、數據處理、軟件編寫階段

器件選擇和電路設計主要根據方案中所確定的指標進行,同時需要考慮器件的電氣特性。

數據處理、軟件編寫是單片機系統實現功能最重要的步驟。首先,設計數據處理的算法,如果是簡單的控制可以跳過這一步。然后,設計程序的結構,得到流程圖。最后進行程序的編寫工作。

● 整個系統的設計與性能測定階段

編制好的程序或焊接好的線路,不能按預計的那樣正確工作是常有的事,這就需要查錯和調試。查錯和調試有時是很費時間的。

調試時,應將硬件和軟件分成幾部分,逐個部分調試,各部分都調試通過后再進行聯調。調試完成后,應在實驗室模擬現場條件,對所設計的硬件、軟件進行性能測定。

● 文件編制階段

文件不僅是設計工作的結果,而且是以后使用、維修以及進一步再設計的依據。因此,一定要精心編寫,描述清楚,使數據及資料齊全。

文件應包括:任務描述;設計的指導思想及設計方案論證;性能測定及現場試用報告與說明;使用指南;軟件資料(流程圖、子程序使用說明、地址分配、程序清單);硬件資料(電原理圖、元件布置圖及接線圖、接插件引腳圖、線路板圖、注意事項)。

一個項目定下來后,經過詳細調研、方案論證后,就進入正式研制階段。從總體上來看,設計任務可以分為硬件設計和軟件設計,這兩者互相結合,不可分離。從時間上來看,硬件設計的絕大部分工作量是在最初階段,到后期往往還要作一些修改。軟件設計任務貫徹始終,到中后期基本上都是軟件設計任務。

1.1.2 系統硬件設計

單片機應用系統的硬件設計包括3大部分內容:單片機系統的擴展部分設計、各功能模塊的設計和工藝設計。

1.單片機系統的擴展部分設計

系統擴展設計包括存儲器擴展和接口擴展。存儲器的擴展指EPROM、EEPROM和RAM的擴展,接口擴展是指8255、8155、8279以及其他功能器件的擴展。它們都屬于單片機系統擴展的內容。

2.各功能模塊的設計

如信號測量功能模塊、信號控制功能模塊、人機對話功能模塊、通信功能模塊等,根據系統功能要求配置相應的A/D、D/A、鍵盤、顯示器、打印機等外圍設備。

為使硬件設計盡可能合理,應重點考慮以下幾點:

(1)盡可能采用功能強的芯片,以簡化電路。

(2)留有余地。在設計硬件電路時,要考慮到將來修改、擴展方便。

(3)ROM空間。目前EPROM容量越來越大,一般選用2764以上的EPROM,它們都是28腳,要升級很方便。

(4)RAM空間。8031內部RAM不多,當要增強軟件數據處理功能時,往往覺得不足。這就要求系統配置外部RAM,如6264、62256等。

(5)I/O端口。在樣機研制出來后進行現場試用時,往往會發現一些被忽視的問題,而這些問題是不能單靠軟件措施來解決的。如有些新的信號需要采集,就必須增加輸入檢測端;有些物理量需要控制,就必須增加輸出端。如果硬件設計之初就多設計出一些I/O端口,這問題就會迎刃而解。

(6)A/D和D/A通道。和I/O端口同樣的原因,留出一些A/D和D/A通道將來可能會解決大問題。

3.工藝設計

工藝設計包括機箱、面板、配線、接插件等。設計時必須考慮到安裝、調試、維修的方便。另外,硬件抗干擾措施也必須在硬件設計時一并考慮進去。

1.1.3 系統軟件設計

在進行應用系統的總體設計時,軟件設計和硬件設計應綜合考慮,同時進行。當系統的電路設計定型后,軟件的任務也就明確了。

系統中的應用軟件是根據系統功能要求設計的。一般地講,軟件的功能可分為兩大類:一類是執行軟件,它能完成各種實質性的功能,如測量、計算、顯示、打印、輸出控制等;另一類是監控軟件,它專門用來協調各執行模塊和操作者的關系,在系統軟件中充當組織調度角色。

設計人員在進行程序設計時應從以下幾個方面加以考慮:

(1)根據軟件功能要求,將系統軟件分成若干個相對獨立的部分。設計出合理的軟件總體結構,使其清晰、簡捷,流程合理。

(2)各功能程序實行模塊化、子程序化。既便于調試、鏈接,又便于移植、修改。

(3)在編寫應用軟件之前,應繪制出程序流程圖。這不僅是程序設計的一個重要組成部分,而且是決定成敗的關鍵部分。從某種意義上講,多花些時間來設計程序流程圖,就可以節約幾倍源程序編輯調試時間。

(4)要合理分配系統資源,包括ROM、RAM、定時器/計數器、中斷源等。其中最關鍵的是片內RAM分配。對8031來講,片內RAM指00H~7FH單元,這128個字節的功能不完全相同,分配時應充分發揮其特長,做到物盡其用。例如在工作寄存器的8 個單元中,R0和R1具有指針功能,是編程的重要角色,避免作為他用;20H~2FH這16個字節具有位尋址功能,用來存放各種標志位、邏輯變量、狀態變量等;設置堆棧區時應事先估算出子程序和中斷嵌套的級數及程序中棧操作指令使用情況,其大小應留有余量。若系統中擴展了RAM存儲器,應把使用頻率最高的數據緩沖器安排在片內RAM中,以提高處理速度。當RAM資源規劃好后,應列出一張RAM資源詳細分配表,以備編程查用方便。

(5)注意在程序的有關位置處寫上功能注釋,提高程序的可讀性。

1.1.4 最小應用系統舉例

單片機的最小應用系統是單片機最簡單的應用,這樣的系統雖然不能完成實際的任務,但是已經能夠讓單片機正常地工作起來。只需要進一步加入外設就能完成一定的任務。下面將以89C51和8031兩種單片機為例進行最小系統的介紹。

1.89C51最小應用系統

89C51 內部有4KB閃存,芯片本身就是一個最小系統。在能滿足系統的性能要求的情況下,可優先考慮采用此種方案。用這種芯片構成的最小系統簡單、可靠。用89C5l單片機構成最小應用系統時,只要將單片機接時鐘電路和復位電路即可,如圖1-1所示。由于集成度的限制,最小應用系統只能用作一些小型的測控單元。

2.8031最小應用系統

8031無片內程序存儲器,因此,其最小應用系統必須在片外擴展EPROM。圖1-2所示為外接程序存儲器的最小應用系統。

片外EPROM或RAM的地址線由P0口(低8位地址線)和P2口(高8位地址線)組成。地址鎖存器的鎖存信號為ALE。

程序存儲器的取指令控制信號為PSEN。當程序存儲器只有一片時,可將其片選端直接接地。數據存儲器的讀/寫控制信號為RD、WR,其片選線與譯碼器輸出端相連。

8031芯片必須EA直接接地,其他與89C51最小應用系統一樣,也必須有復位及時鐘電路。

圖1-1 AT89C51最小系統

圖1-2 8031最小系統

1.1.5 典型應用系統

在實際應用中,單片機需要在最小應用系統的基礎上增加一定的外部設備。外部設備的管理主要通過外部地址進行,這里將介紹地址空間的分配以及總線的驅動。

1.地址空間分配

對于RAM和I/O容量較大的應用系統,主要考慮如何把64KB程序存儲器和64KB數據存儲器的空間分配給各個芯片,主要有兩種方法:線選法和譯碼器法。

線選法的優點是硬件電路結構簡單,但由于所用片選線都是高位地址線,它們的權值較大,地址空間沒有充分利用,芯片之間的地址不連續。當芯片所需的片選信號多于可利用的地址線時,常采取全地址譯碼法。它將低位地址線作為芯片的片內地址(取外部電路中最大的地址線位數),用譯碼器對高位地址線進行譯碼,譯出的信號作為片選線。一般采用74LS138作地址譯碼器。圖1-3所示是一個全地址譯碼的系統實例。圖中各器件芯片所對應的地址如表1-1所示。

表1-1 各擴展芯片地址

圖1-3 8031全地址譯碼器實例

因為6264是8K字節RAM,所以需要13根低位地址線(A12~A0)進行片內尋址,其他三根高位地址線A15~A13經3-8譯碼后作為外圍芯片的片選線。圖中尚剩余三根地址選擇線Y7~Y5,可供擴展三片8K字節RAM芯片或三個外圍接口電路芯片。

2.總線的驅動

在應用系統中,所有系統擴展的外圍芯片都通過總線驅動,外圍芯片工作時有一個輸入電流,不工作時也有漏電流存在,因此總線只能帶動一定數量的電路。MCS-51系列單片機作為數據總線和低8位地址總線的P0口可驅動8個LSTFL電路,而其他口只能驅動4個13TFL電路。當應用系統規模過大時,可能造成負載過重,致使驅動能力不夠,系統不能可靠地工作。

(1)總線的驅動擴展

多芯片應用系統,首先要估計總線的負載情況,以確定是否需要對總線的驅動能力進行擴展。圖1-4為MCS-51單片機總線驅動擴展原理圖。

圖1-4 MCS-51單片機總線驅動原理圖

地址總線和控制總線的驅動器為單向驅動器,并具有三態輸出功能。驅動器有一個控制端G,以控制驅動器開通或處于高阻狀態。通常,在單片應用系統中沒有DMA功能時,地址總線及控制總線可一直處于開通狀態,這時控制端G接地即可。

常用的單向總線驅動器為74LS244。圖1-5為74LS244引腳和邏輯圖。8個三態線驅動器分成兩組,分別由1G和2G來控制。

圖1-5 74LS244引腳和邏輯圖

數據總線的驅動器應為雙向驅動、三態輸出,并由兩個控制端來控制數據傳送方向。如圖1-4所示,數據輸出允許控制端DBEO有效時,數據總線輸入高阻狀態,輸出為開通狀態;數據輸入允許控制端DBEI有效時則狀態與以上相反。

常用的雙向驅動器為74LS245,圖1-6為其引腳和邏輯圖,16個三態門中每兩個三態門組成一路雙向驅動。驅動方向由G、DIR兩個控制端控制,G控制端控制驅動器有效或高阻態,在G控制端有效(G=0)時,DIR控制端控制驅動器的驅動方向,DIR = 0時驅動方向為從B至A,DIR = 1則相反。

圖1-6 74LS245引腳和邏輯圖

MCS-51單片機應用系統總線驅動擴展電路中,P0口的雙向驅動采用雙向驅動器741S245;P2口的單向驅動器采用74LS244。

對于P0 口的雙線驅動器74LS245,使G接地保證芯片一直處于工作狀態,而輸入/輸出的方向控制由單片機的數據存儲器的“讀”控制引腳(RD)和程序存儲器的取指控制引腳(PSEN)通與門控制DIR引腳實現。這種連接方法保證無論是“讀”數據存儲器中數據(RD有效)還是從程序存儲器中取指令(PSEN有效)時,都能保證P0 口的輸入驅動;除此以外的時間里(RDPSEN均無效)保證P0的輸出驅動。

對于P2口,因為只作地址輸出口,所以74LS244的驅動門控制端1 G、2 G接地。

上面介紹了如何在總線上擴展驅動器,下面簡單介紹一下如何來估算驅動器的驅動能力。

總線驅動器驅動能力是以驅動同類門個數度量的。驅動器驅動能力和驅動器負載性質有關。由于驅動器負載有交流和直流之分,因此總線驅動器驅動能力估算時應同時考慮交流和直流負載兩方面的影響。

(1)直流負載下驅動能力的估算

在直流負載下,驅動器驅動能力主要取決于高電平輸出時驅動器能提供的最大電流和低電平輸出時驅動器所能吸收的最大電流,如圖1-7 所示。圖中,IOH為驅動器在高電平輸出時的最大輸出電流,IIH為每個同類負載所吸收的電流。IOL為驅動器在低電平輸出時的最大吸入電流,IIL為驅動器需要為每個同類門提供的吸入電流。顯然,下面兩個式子滿足時才能使驅動器可靠工作。

若設:IOH=15mA,IOL=24mA,IIH=0.1mA和IIL=0.2mA,

則根據上述二式求得N1 = 150和N2 = 120。因此,驅動器的實際驅動能力應為120個同類門。

(2)交流負載下驅動能力的估算

總線上傳送的數據是脈沖型信號,在同類門負載為容性(分布電容造成)時就必須考慮電容的影響。驅動器驅動容性負載時的關系如圖1-8所示。若設:CP為驅動器的最大驅動電容,Cii = 1, 2, …, N)為每個同類門的分布電容。為了滿足同類門電容的交流效應,驅動器負載電路應滿足如下關系:

圖1-8 負載門的交流效應

若取:CP=15μF,Ci不大于0.3μF,則根據上式可求得N3 = 50。

綜上所述,驅動器驅動負載門的能力應從交流和直流負載兩方面加以考慮。通常,對于TTL負載,主要應考慮直流負載特性,因為TTL電流大,分布電容小;對于MOS型負載,主要考慮交流特性,因為MOS型負載的輸入電流很小,分布電容是不容忽視的。

圖1-7 驅動器驅動直流負載示意圖

例如,74LS245驅動器常可驅動100多個74LS系列門電路,若把驅動負載的種種因素也考慮在內,起碼也能可靠驅動50個同類門。但為了保險起見,74LS245輸出線上一般也能掛接30個左右同類門。因此,驅動器不僅可以減輕主機負擔,增強單片機驅動負載的能力,為負載電阻和分布電容提供較大的驅動電流,而且也能夠消除驅動器后面負載電路對主機芯片的干擾和影響,較好地保證總線上信號波形的完整性。

(3)總線的負載平衡和上拉電阻的配置

在進行單片機應用系統設計時,都是將I/O芯片掛在相關總線上。進行設計時往往注意負載的數量,不使總線過載,但往往忽視總線負載的平衡問題。

所謂總線負載的平衡,主要發生在數據總線DB上。一般來說,I/O部件的數據都以D0為起點往DB上掛,但由于各種接口部件的數據寬度不一致,就極易造成DB的負載失衡。圖1-9所示為有2個8位數據的部件、2個4位數據的部件及1個l位數據的接口。按照圖1-9的接線,DB各位的負載顯然是不平衡的,D4~ D7只掛了2個負載,而D0連接的負載數達5個之多。

圖1-9 DB總線失調

當總的負載較輕時,這種失衡不會引起太大的問題。但若負載接近總線的驅動能力,就有可能影響總線信號的邏輯電平。以圖1-9為例,負載不同的各位數據線上,高低電平的數值有明顯差異。如高電平有的達4.3V,而有的只有3.7V。圖1-9中I/O5的信號位傳送很不可靠,常常發生錯誤,與負載失衡有密切關系。若將I/O4接數據位D7~D4,將I/O5接數據位D7,這樣就能改善總線的不平衡程度,提高系統的可靠性。

除了配置總線驅動器,注意總線負載平衡配置之外,在總線上適當安裝上拉電阻也可以提高總線信號傳輸的可靠性,加上拉電阻給總線帶來的好處有以下幾點。

① 提高信號電平

提高集成電路輸入信號的噪聲容限,是提高抗干擾能力的一個重要措施。提高信號的高電平可以提高噪聲容限,其方法之一是提高芯片的電源電壓,方法之二是在總線輸出口配置上拉電阻。以8031單片機P0口數據為例,當不加上拉電阻時,P0.0口輸出電流為I,端口的高電平為μ=VCC-IR。當加入上拉電阻后,P0.0口輸出電流變為I1,由于負載恒定,則I1<I,因此端口電平μ=VCC-I1R,μ將要有所提高。

② 提高總線的抗電磁干擾能力

當總線處于高阻狀態時是處于懸高狀態,比較容易接受外界的電磁干擾。

例如,當程序存儲器的地址空間小于64K字節時,由于受到外界干擾而引起程序亂飛,當亂飛空間超出系統程序存儲器的地址空間時,程序存儲器全部關斷,致使數據總線處于高阻狀態。外界的電磁干擾信號就很容易通過數據總線進入CPU,引入虛假的程序指令,對程序運行造成更加嚴重的破壞。若數據總線上配有上拉電阻,總線具有穩定的高電平,這時的指令僅是“FFH”,相當于“MOV R7,A”指令,這比總線上出現的隨機指令所造成的后果要好得多。

③ 抑制靜電干擾

當總線的負載是CMOS芯片時,由于CMOS芯片的輸入阻抗很高,容易積累靜電電荷而形成靜電放電干擾,嚴重時會損壞芯片。若在總線上配置上拉電阻,則降低了芯片的輸入阻抗,為靜電感應電荷提供泄荷通路,提高了芯片使用的可靠性。

④ 有助于削弱反射波干擾

由于總線負載的輸入阻抗往往很高,對于變化速度很快的傳輸信息,當傳輸線較長時容易引起反射波干擾。若在總線的終端配置上拉電阻,降低了負載的輸入阻抗,可有效抑制反射波干擾。

圖1-10 數據總線配置上拉電阻

數據總線配置上拉電阻如圖1-10所示。上拉電阻一般取2~10k?,典型值為10k?。實際應用中負載電阻可選用電阻排,其引腳間距與集成芯片標準間距一致,應用起來十分方便。

1.1.6 數據采集系統

在任何單片機測控制系統中,都是從盡量快速、準確、完整地獲得數字形式的數據開始的,因此,數據采集系統作為溝通模擬域與數字域的必不可少的橋梁起著非常重要的作用。

數據采集系統一般由信號調理電路、多路切換電路、采樣保持電路、A/D、CPU、RAM、EPROM組成。其原理框圖如圖1-11所示。

圖1-11 數據采集系統原理圖

1.信號調理電路

信號調理電路是傳感器與A/D之間的橋梁,也是測控系統中重要組成部分。信號調理的主要功能是:

(1)目前標準化:正業儀表通常采用0~10mA和4~20mA的信號,為了和A/D的輸入形式相適應,經I/V變換成電壓信號。

(2)某些測量信號可能是非電壓量,如熱電阻等,這些非電壓量信號必須變為電壓信號,還有些信號是弱電壓信號,如熱電偶信號,必須放大濾波,這些處理包括信號形式的變換、量程調整、環境補償、線性化等。

(3)某些惡劣條件下,共模電壓干擾很強,如共模電壓高達220V,不采用隔離的辦法無法完成數據采集任務,因此,必須根據現場環境,考慮共模干擾的抑制,甚至采用隔離措施,包括地線隔離、路間隔離等。

綜上所述,非電量的轉換、信號形式的變換、放大、濾波、共模抑制及隔離等,都是信號調理的主要功能。

信號調理電路包括電橋、放大、濾波、隔離等電路。根據不同的調理對象,采用不同的電路。電橋電路的典型應用之一就是熱阻測溫。用熱電阻測溫時,工業設備距離計算機較遠,引線將很長,這就容易引進干擾,并在熱電阻的電橋中產生長引線誤差。解決辦法有:采用熱電阻溫度變換器;智能傳感器加通訊方式連接;采用三線制連接方法。

信號放大電路通常由運放承擔,運放的選擇主要考慮精度要求(失調及失調溫漂)、速度要求(帶寬和上升率)、幅度要求(工作電壓范圍及增益)及共模抑制要求。常用于前置放大器的有μA741、LF347(低精度),OP-07、OP-27(中等精度)及ICL7650(高精度)等。

濾波和限幅電路通常采用二極管、穩壓管、電容等器件。用二極管和穩壓管的限幅方法會產生一定的非線性且靈敏度下降,這可以通過后級增益調整和非線性校正補償。此外,由于限幅值比最大輸入值高,當使用多路開關時,某一路超限可能影響其他路,需選用優質的多路模擬開關,如AD7501。

共模電壓的存在對模擬信號的處理有影響,高的共模電壓會擊穿器件,即使沒有損壞器件,也會影響測量精度。隔離是克服共模干擾影響的有效措施。常用的隔離方法有光電隔離或采用隔離放大器等。

2.多路切換電路

通常被檢測的物理量有多個,如果每一通道都設有放大、采樣保持(S/H)和ADC幾個環節就很不經濟,而且電路也復雜。采用模擬多路開關就可以使多個通道共用一個放大器、S/H和ADC,采用時間分割法使幾個模擬通道輪流接通,這樣既經濟,又使電路簡單。模擬多路開關的選擇主要考慮導通電阻的要求、截止電阻的要求和速度要求,常用的模擬多路開關有CD4501、CD4066、AD7501、AD7507等。為了降低截止通道的負載影響,提高開關速度,降低通道串擾,采用多級模擬多路開關來完成通道切換。

3.采樣保持電路(S/H)

采樣保持電路是為了保證模擬信號高精度轉換為數字信號的電路。在模擬數字變換電路中,如果變換期間輸入電壓是變化的,那么就可能產生錯誤的數字信號輸出。采樣保持電路就是將快速變化的模擬信號進行“采樣”與“保持”,使模擬信號在ADC轉換過程中保持不變。采樣保持器的選擇要綜合考慮捕獲時間、孔隙時間、保持時間、下降率等參數。常用的采樣保持器有AD582、AD583、13398等。

4.模—數轉換(ADC)

ADC是計算機同外界交換信息所必需的接口器件,因為它能將描述自然現象和生產過程的模擬量轉換成便于計算機存儲和處理的數字量。因此,從某種意義上說,沒有ADC的廣泛應用,就沒有計算機應用技術的發展。選擇ADC需主要考慮的指標有分辨率、轉換時間、精度、電源、輸入電壓范圍、工作環境、數字輸出特性、價格等。

5.基本的單片機系統

基本的單片機系統除了采用前面介紹的外,電可采用片內帶有多路轉換開關、采樣保持電路、ADC的高集成度的單片機。例如可采用Philips公司的8XC552型,也可采用Intel公司的MCS-96單片機(16位)。由于數據采集系統許多單元電路都集成在單片機內,這給硬件設計工作帶來了極大的方便。

主站蜘蛛池模板: 象州县| 宝兴县| 托克托县| 桓台县| 大邑县| 衡阳县| 苏尼特左旗| 苏尼特左旗| 花莲市| 沅江市| 晋江市| 屏东市| 唐河县| 宣化县| 丰镇市| 南城县| 千阳县| 贞丰县| 德兴市| 红安县| 禄劝| 瑞金市| 灵台县| 阿拉善左旗| 怀宁县| 浦东新区| 大同市| 房产| 香河县| 邮箱| 京山县| 佛山市| 祁阳县| 会东县| 柘城县| 衡山县| 丹阳市| 和田市| 遂宁市| 桓台县| 游戏|