第13章 應(yīng)用設(shè)計(jì)_第1頁
第13章 應(yīng)用設(shè)計(jì)_第2頁
第13章 應(yīng)用設(shè)計(jì)_第3頁
第13章 應(yīng)用設(shè)計(jì)_第4頁
第13章 應(yīng)用設(shè)計(jì)_第5頁
已閱讀5頁,還剩111頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第1313章章 AT89S51AT89S51單片機(jī)的應(yīng)用單片機(jī)的應(yīng)用 設(shè)計(jì)與調(diào)試設(shè)計(jì)與調(diào)試1內(nèi)容概要內(nèi)容概要介紹介紹AT89S51單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)。單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)。主要包括:應(yīng)用系統(tǒng)的設(shè)計(jì)步驟和方法以及應(yīng)用系統(tǒng)設(shè)計(jì)主要包括:應(yīng)用系統(tǒng)的設(shè)計(jì)步驟和方法以及應(yīng)用系統(tǒng)設(shè)計(jì)舉例。此外,還介紹了目前流行的單片機(jī)應(yīng)用系統(tǒng)的仿真開舉例。此外,還介紹了目前流行的單片機(jī)應(yīng)用系統(tǒng)的仿真開發(fā)工具以及如何利用仿真開發(fā)工具對(duì)單片機(jī)應(yīng)用系統(tǒng)進(jìn)行開發(fā)工具以及如何利用仿真開發(fā)工具對(duì)單片機(jī)應(yīng)用系統(tǒng)進(jìn)行開發(fā)調(diào)試。發(fā)調(diào)試。對(duì)單片機(jī)應(yīng)用系統(tǒng)的抗干擾和可靠性設(shè)計(jì)作以介紹。對(duì)單片機(jī)應(yīng)用系統(tǒng)的抗干擾和可靠性設(shè)計(jì)作以介紹。 213

2、.1 單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)步驟單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)步驟 應(yīng)用系統(tǒng)指以單片機(jī)為核心,配以一定的外圍電路和軟應(yīng)用系統(tǒng)指以單片機(jī)為核心,配以一定的外圍電路和軟件、能實(shí)現(xiàn)用戶所要求的測(cè)控功能。件、能實(shí)現(xiàn)用戶所要求的測(cè)控功能。 系統(tǒng)的設(shè)計(jì),首先需深入細(xì)致的需求分析,周密而科學(xué)的系統(tǒng)的設(shè)計(jì),首先需深入細(xì)致的需求分析,周密而科學(xué)的方案論證。應(yīng)用系統(tǒng)設(shè)計(jì),一般可分為方案論證。應(yīng)用系統(tǒng)設(shè)計(jì),一般可分為4階段。階段。(1)明確任務(wù)和需求分析以及擬定設(shè)計(jì)方案階段)明確任務(wù)和需求分析以及擬定設(shè)計(jì)方案階段 明確系統(tǒng)所要完成的任務(wù),是系統(tǒng)設(shè)計(jì)工作的基礎(chǔ),系統(tǒng)明確系統(tǒng)所要完成的任務(wù),是系統(tǒng)設(shè)計(jì)工作的基礎(chǔ),系統(tǒng)設(shè)計(jì)方案正確性

3、保證。設(shè)計(jì)方案正確性保證。3 需求分析主要包括:需求分析主要包括:被測(cè)控參數(shù)的形式(電量、非電量、被測(cè)控參數(shù)的形式(電量、非電量、模擬量、數(shù)字量等)、范圍、性能指標(biāo)、系統(tǒng)功能、工作環(huán)模擬量、數(shù)字量等)、范圍、性能指標(biāo)、系統(tǒng)功能、工作環(huán)境、顯示、報(bào)警、打印要求等。境、顯示、報(bào)警、打印要求等。 擬定設(shè)計(jì)方案是需求分析,先確定大致方向和準(zhǔn)備采用的擬定設(shè)計(jì)方案是需求分析,先確定大致方向和準(zhǔn)備采用的手段。注意,在進(jìn)行設(shè)計(jì)方案確定的時(shí)候,簡(jiǎn)單的方法往往手段。注意,在進(jìn)行設(shè)計(jì)方案確定的時(shí)候,簡(jiǎn)單的方法往往可以解決大問題,切忌可以解決大問題,切忌“將簡(jiǎn)單的問題復(fù)雜化將簡(jiǎn)單的問題復(fù)雜化”(2)硬件和軟件設(shè)計(jì)階段

4、)硬件和軟件設(shè)計(jì)階段 根據(jù)擬定的設(shè)計(jì)方案,設(shè)計(jì)出相應(yīng)的系統(tǒng)硬件電路。硬件根據(jù)擬定的設(shè)計(jì)方案,設(shè)計(jì)出相應(yīng)的系統(tǒng)硬件電路。硬件設(shè)計(jì)的前提是必須能夠完成系統(tǒng)的要求和保證可靠性。在硬設(shè)計(jì)的前提是必須能夠完成系統(tǒng)的要求和保證可靠性。在硬件設(shè)計(jì)時(shí),如果能夠?qū)⒂布娐吩O(shè)計(jì)與軟件設(shè)計(jì)結(jié)合起來考件設(shè)計(jì)時(shí),如果能夠?qū)⒂布娐吩O(shè)計(jì)與軟件設(shè)計(jì)結(jié)合起來考慮效果會(huì)更好。因?yàn)楫?dāng)有些問題在硬件電路中無法完成時(shí),慮效果會(huì)更好。因?yàn)楫?dāng)有些問題在硬件電路中無法完成時(shí),4可直接由軟件來完成(如某些軟件濾波、校準(zhǔn)功能等);當(dāng)可直接由軟件來完成(如某些軟件濾波、校準(zhǔn)功能等);當(dāng)軟件編寫程序很麻煩的時(shí)候,通過稍稍改動(dòng)硬件電路(或盡軟件編寫

5、程序很麻煩的時(shí)候,通過稍稍改動(dòng)硬件電路(或盡可能不改動(dòng))可能會(huì)使軟件變得十分簡(jiǎn)單。另外在另一些要可能不改動(dòng))可能會(huì)使軟件變得十分簡(jiǎn)單。另外在另一些要求系統(tǒng)實(shí)時(shí)性強(qiáng)、響應(yīng)速度快的場(chǎng)合,則往往必須用硬件代求系統(tǒng)實(shí)時(shí)性強(qiáng)、響應(yīng)速度快的場(chǎng)合,則往往必須用硬件代替軟件來完成某些功能。所以在硬件設(shè)計(jì)時(shí),最好能與軟件替軟件來完成某些功能。所以在硬件設(shè)計(jì)時(shí),最好能與軟件的設(shè)計(jì)結(jié)合起來,統(tǒng)一考慮,合理安排軟、硬件的比例,使的設(shè)計(jì)結(jié)合起來,統(tǒng)一考慮,合理安排軟、硬件的比例,使系統(tǒng)具有最佳的性系統(tǒng)具有最佳的性/價(jià)比。當(dāng)硬件電路設(shè)計(jì)完成后,就可以進(jìn)價(jià)比。當(dāng)硬件電路設(shè)計(jì)完成后,就可以進(jìn)行硬件電路板的繪制和焊接工作了。行

6、硬件電路板的繪制和焊接工作了。 接下來就是軟件設(shè)計(jì)。正確的編程就是根據(jù)需求分析,先接下來就是軟件設(shè)計(jì)。正確的編程就是根據(jù)需求分析,先繪制出軟件的流程圖,十分重要。繪制往往不能一次成功,繪制出軟件的流程圖,十分重要。繪制往往不能一次成功,通常需進(jìn)行多次修改。通常需進(jìn)行多次修改。 5 流程圖的繪制可按照由簡(jiǎn)到繁的方式再逐步細(xì)化,先繪制流程圖的繪制可按照由簡(jiǎn)到繁的方式再逐步細(xì)化,先繪制系統(tǒng)大體上需要執(zhí)行的程序模塊,然后將這些模塊按照要求系統(tǒng)大體上需要執(zhí)行的程序模塊,然后將這些模塊按照要求組合在一起(如主程序、子程序以及中斷服務(wù)子程序等)。組合在一起(如主程序、子程序以及中斷服務(wù)子程序等)。 在大方向

7、沒有問題后,再將每個(gè)模塊進(jìn)行細(xì)化,最后形成在大方向沒有問題后,再將每個(gè)模塊進(jìn)行細(xì)化,最后形成軟件流程圖,這樣程序的編寫速度就會(huì)很快,同時(shí)程序流程軟件流程圖,這樣程序的編寫速度就會(huì)很快,同時(shí)程序流程圖還會(huì)為后面的調(diào)試工作帶來很多方便,如程序調(diào)試中某個(gè)圖還會(huì)為后面的調(diào)試工作帶來很多方便,如程序調(diào)試中某個(gè)模塊不正常,就可以通過流程圖來查找問題的原因。模塊不正常,就可以通過流程圖來查找問題的原因。軟件編軟件編寫者一定要克服不繪制流程圖直接在計(jì)算機(jī)上編寫程序的習(xí)寫者一定要克服不繪制流程圖直接在計(jì)算機(jī)上編寫程序的習(xí)慣。慣。 設(shè)計(jì)者也可在上述軟硬件設(shè)計(jì)完成后,先使用單片機(jī)的EDA軟件仿真開發(fā)工具Proteu

8、s,來進(jìn)行仿真設(shè)計(jì)。 用Proteus設(shè)計(jì)的系統(tǒng)與用戶樣機(jī)在硬件上無任何聯(lián)系,是一種完全用軟件手段完全用軟件手段來對(duì)單片機(jī)硬件電路和軟件來進(jìn)行設(shè)計(jì)、開發(fā)與仿真調(diào)試的開發(fā)工具。如果先在軟件仿真工具的環(huán)境下進(jìn)行設(shè)計(jì)并調(diào)試通過,雖然還不能完全說明實(shí)際系統(tǒng)就完全通過,至少在邏輯上是行得通的。 軟件仿真通過后,再進(jìn)行軟硬件設(shè)計(jì)與實(shí)現(xiàn),可大大減少可大大減少設(shè)計(jì)上所走的彎路設(shè)計(jì)上所走的彎路。也是目前世界上流行的一種開發(fā)方法。7(3)硬件與軟件聯(lián)合調(diào)試階段)硬件與軟件聯(lián)合調(diào)試階段下一步就是軟硬件的聯(lián)合調(diào)試。需通過硬件仿真開發(fā)工具來進(jìn)行,具體的調(diào)試方法和過程,在本章后面介紹。所有軟件和硬件電路全部調(diào)試通過,并不

9、意味系統(tǒng)設(shè)計(jì)成功,還需通過運(yùn)行來調(diào)整系統(tǒng)的運(yùn)行狀態(tài),例如例如系統(tǒng)中的A/D轉(zhuǎn)換結(jié)果是否正確,如果不正確,是否要調(diào)零和調(diào)整基準(zhǔn)電壓等。(4)資料與文件整理編制階段)資料與文件整理編制階段系統(tǒng)調(diào)試通過,就進(jìn)入資料與文件資料與文件整理編制階段。8資料與文件包括:資料與文件包括:任務(wù)描述、設(shè)計(jì)的指導(dǎo)思想及設(shè)計(jì)方案論證、性能測(cè)定及現(xiàn)場(chǎng)試用報(bào)告與說明、使用指南、軟件資料(流程圖、子程序使用說明、地址分配、程序清單)、硬件資料(電原理圖、元件布置圖及接線圖、接插件引腳圖、線路板圖、注意事項(xiàng))。文件不僅是設(shè)計(jì)工作的結(jié)果,而且是以后使用、維修以及文件不僅是設(shè)計(jì)工作的結(jié)果,而且是以后使用、維修以及進(jìn)一步再設(shè)計(jì)的依

10、據(jù)。進(jìn)一步再設(shè)計(jì)的依據(jù)。因此,要精心編寫,描述清楚,使數(shù)據(jù)及資料齊全。913.2 單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì) 系統(tǒng)的設(shè)計(jì)。主要從硬件設(shè)計(jì)硬件設(shè)計(jì)和軟件設(shè)計(jì)軟件設(shè)計(jì)兩方面考慮。13.2.1 硬件設(shè)計(jì)應(yīng)考慮的問題硬件設(shè)計(jì)應(yīng)考慮的問題 硬件設(shè)計(jì)硬件設(shè)計(jì)時(shí),應(yīng)重點(diǎn)考慮以下問題。1盡可能采用功能強(qiáng)的芯片盡可能采用功能強(qiáng)的芯片(1)單片機(jī)選型)單片機(jī)選型。單片機(jī)的集成度越來越高,許多外圍部件都已集成在芯片內(nèi),有的單片機(jī)本身就是一個(gè)系統(tǒng),這可省去許多外圍部件的擴(kuò)展工作,使設(shè)計(jì)工作簡(jiǎn)化。10 第1章已介紹較為流行的各種單片機(jī),根據(jù)需求,選擇合適機(jī)型。 例如,例如,目前市場(chǎng)上較為流行的美國(guó)美國(guó)Cygn

11、al公司公司的C8051F020 8位單片機(jī),片內(nèi)集成有8通道A/D、兩路D/A、兩路電壓比較器,內(nèi)置溫度傳感器、定時(shí)器、可編程數(shù)字交叉開關(guān)和64個(gè)通用I/O口、電源監(jiān)測(cè)、看門狗、多種類型的串行總線(兩個(gè)UART、SPI)等。用1片C8051F020 單片機(jī),就構(gòu)成一個(gè)應(yīng)用系統(tǒng)。再如,如系統(tǒng)需要較大的I/O驅(qū)動(dòng)能力和較強(qiáng)的抗干擾能力,可考慮選用可考慮選用AVR單片機(jī)單片機(jī)。11(2)優(yōu)先選片內(nèi)有閃存的產(chǎn)品)優(yōu)先選片內(nèi)有閃存的產(chǎn)品。例如,例如,使用ATMEL公司的AT89S5x系列產(chǎn)品,PHILIPS公司的89C58(內(nèi)有32KB的閃爍存儲(chǔ)器)等,可省去片外擴(kuò)展程序存儲(chǔ)器的工作,減少芯片數(shù)量,縮

12、小系統(tǒng)體積。(3)RAM容量的考慮。容量的考慮。多數(shù)單片機(jī)片內(nèi)的RAM單元有限,當(dāng)需增強(qiáng)數(shù)據(jù)處理功能時(shí),往往覺得不足,這就要求系統(tǒng)配置外部RAM,如6264、62256芯片等。如處理的數(shù)據(jù)量大,需更大的數(shù)據(jù)存儲(chǔ)器空間,可采用數(shù)據(jù)存儲(chǔ)器芯片DS12887,其容量為256KB,內(nèi)有鋰電池保護(hù),保存數(shù)據(jù)可達(dá)10年以上。12(4)對(duì))對(duì)I/O端口留有余地端口留有余地。在樣機(jī)研制出來現(xiàn)場(chǎng)試用時(shí),往往會(huì)發(fā)現(xiàn)一些被忽視的問題,而這些問題是不能單靠軟件措施來解決的。如有新的信號(hào)需要采集,就必須增加輸入檢測(cè)端;有些物理量需要控制,就必須增加輸出端。如果在硬件設(shè)計(jì)之初就多設(shè)計(jì)留有一些多設(shè)計(jì)留有一些I/O端口端口,

13、這些問題就會(huì)迎刃而解。(5)預(yù)留)預(yù)留A/D和和D/A通道通道。與上述I/O端口同樣原因,留出一些A/D和D/A通道將來可能會(huì)解決大問題。132以軟代硬以軟代硬原則上,只要軟件能做到且能滿足性能要求,就不用硬件。硬件多不但增加成本,而且系統(tǒng)故障率也會(huì)提高硬件多不但增加成本,而且系統(tǒng)故障率也會(huì)提高。以軟帶硬的實(shí)質(zhì),是以時(shí)間換空間,軟件執(zhí)行過程需要消耗時(shí)間,因此帶來的問題就是實(shí)時(shí)性下降。問題就是實(shí)時(shí)性下降。在實(shí)時(shí)性要求不高的場(chǎng)合,以軟代硬是很合算的。3工藝設(shè)計(jì)工藝設(shè)計(jì)包括機(jī)箱、面板、配線、接插件等。須考慮到安裝、調(diào)試、維修方便。另外,硬件抗干擾措施(將在本章后面介紹)也須在硬件設(shè)計(jì)時(shí)一并考慮進(jìn)去。

14、1413.2.2 典型的單片機(jī)應(yīng)用系統(tǒng)典型的單片機(jī)應(yīng)用系統(tǒng) 典型單片機(jī)應(yīng)用系統(tǒng)框圖如圖圖13-1所示。圖圖13-1 單片機(jī)典型應(yīng)用系統(tǒng)框圖15主要由單片機(jī)基本部分、輸入部分單片機(jī)基本部分、輸入部分和輸出部分組成。(1)單片機(jī)基本部分)單片機(jī)基本部分由單片機(jī)及其擴(kuò)展的外設(shè)及芯片,如鍵盤、顯示器、打印機(jī)、數(shù)據(jù)存儲(chǔ)器、程序存儲(chǔ)器、數(shù)字I/O等組成。(2)輸入部分)輸入部分“測(cè)”的部分,被被“測(cè)測(cè)”的信號(hào)類型有的信號(hào)類型有:數(shù)字量、模擬量和開關(guān)量。模擬量輸入檢測(cè)的主要包括信號(hào)調(diào)理電路以及A/D轉(zhuǎn)換器。A/D轉(zhuǎn)換器中又包括多路切換、采樣保持、A/D轉(zhuǎn)換電路,目前都集成在A/D轉(zhuǎn)換器芯片中,或直接集成在單

15、片機(jī)片內(nèi)。16連接傳感器傳感器與A/D轉(zhuǎn)換器轉(zhuǎn)換器之間的橋梁是信號(hào)調(diào)理電路信號(hào)調(diào)理電路,傳感器輸出的模擬信號(hào)要經(jīng)信號(hào)調(diào)理電路對(duì)信號(hào)進(jìn)行放大、濾對(duì)信號(hào)進(jìn)行放大、濾波、隔離、量程調(diào)整波、隔離、量程調(diào)整等,變換成適合A/D轉(zhuǎn)換的電壓信號(hào)。 信號(hào)放大通常由單片式儀表放大器承擔(dān)。儀表放大器對(duì)信號(hào)進(jìn)行放大比普通運(yùn)算放大器具有更優(yōu)異的性能。如何根據(jù)不同的傳感器正確地選擇儀表放大器來進(jìn)行信號(hào)調(diào)理電路的設(shè)計(jì),請(qǐng)參閱有關(guān)資料和文獻(xiàn)。(3)輸出部分)輸出部分是應(yīng)用系統(tǒng)“控控”的部分的部分,包括包括數(shù)字量、開關(guān)量控制信號(hào)的輸出和模擬量控制信號(hào)(常用于伺服控制)的輸出。1713.2.3 系統(tǒng)設(shè)計(jì)中的地址空間分配與總線驅(qū)

16、動(dòng)系統(tǒng)設(shè)計(jì)中的地址空間分配與總線驅(qū)動(dòng) 應(yīng)用系統(tǒng)有時(shí)往往是多芯片系統(tǒng),這時(shí)會(huì)遇到兩個(gè)問題兩個(gè)問題: 一是如何把如何把64KB程序存儲(chǔ)器和程序存儲(chǔ)器和64KB數(shù)據(jù)存儲(chǔ)器的空間分?jǐn)?shù)據(jù)存儲(chǔ)器的空間分配給各個(gè)芯片配給各個(gè)芯片; 二是如何實(shí)現(xiàn)如何實(shí)現(xiàn)AT89S51單片機(jī)對(duì)多片芯片的驅(qū)動(dòng)單片機(jī)對(duì)多片芯片的驅(qū)動(dòng)。 本小節(jié)介紹單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)時(shí)經(jīng)常遇到的地址空間分地址空間分配和總線驅(qū)動(dòng)問題配和總線驅(qū)動(dòng)問題,供設(shè)計(jì)參考。181地址空間分配地址空間分配 擴(kuò)展多片芯片擴(kuò)展多片芯片的應(yīng)用系統(tǒng),首先應(yīng)考慮如何把首先應(yīng)考慮如何把64KB程序程序存儲(chǔ)器和存儲(chǔ)器和64KB數(shù)據(jù)存儲(chǔ)器的空間分配給各個(gè)芯片數(shù)據(jù)存儲(chǔ)器的空間分配給各

17、個(gè)芯片。 第8章已介紹地址空間分配的兩種方法兩種方法:線選法線選法和譯碼法譯碼法。下面通過一個(gè)例子來說明如何解決這個(gè)問題。 圖圖13-2所示為一個(gè)全地址譯碼的系統(tǒng)實(shí)例。圖中所示的AT89S51單片機(jī)擴(kuò)展的各器件芯片所對(duì)應(yīng)的地址如表表13-1。19 圖圖13-2 全地址譯碼的系統(tǒng)實(shí)例2021因6264、2764都是8KB,故需要13條條低位地址線(A12A0)進(jìn)行片內(nèi)尋址,低8位地址線A7A0經(jīng)8D鎖存器74LS373輸出(圖中沒有畫出),其他3條高位地址線條高位地址線A15A13經(jīng)3-8譯碼器74LS138譯碼后作為外圍芯片的片選線。圖中尚剩余3條地址選擇線Y7* Y5* ,還可擴(kuò)展3片存儲(chǔ)器

18、芯片或外圍I/O接口芯片。2總線驅(qū)動(dòng)總線驅(qū)動(dòng)擴(kuò)展多片芯片時(shí),注意單片機(jī)4個(gè)并行雙向口的個(gè)并行雙向口的P0P3口口的驅(qū)動(dòng)能力的驅(qū)動(dòng)能力。下面討論這個(gè)問題。22 AT89S51的P0、P2口口通常作為總線端口作為總線端口,當(dāng)擴(kuò)展芯片較多,可造成負(fù)載過重,致使驅(qū)動(dòng)能力不夠驅(qū)動(dòng)能力不夠,通常要附加總線驅(qū)動(dòng)器或其他驅(qū)動(dòng)電路。因此在多芯片應(yīng)用系統(tǒng)設(shè)計(jì)中首先要估計(jì)總線負(fù)載情況,以確定是否需對(duì)總線驅(qū)動(dòng)能力進(jìn)行擴(kuò)展。 圖圖13-3為AT89S51單片機(jī)總線驅(qū)動(dòng)擴(kuò)展原理圖。P2口需單口需單向驅(qū)動(dòng)向驅(qū)動(dòng),常見的單向總線驅(qū)動(dòng)器為單向總線驅(qū)動(dòng)器為74LS244。 圖圖13-4為74LS244引腳圖引腳圖和邏輯圖邏輯圖。

19、8個(gè)三態(tài)驅(qū)動(dòng)器分成兩組,分別由1G* 和2G*控制。2324圖13-3 AT89S51單片機(jī)總線驅(qū)動(dòng)擴(kuò)展原理圖P0口口作為數(shù)據(jù)總線,雙向傳輸,其驅(qū)動(dòng)器應(yīng)為雙向驅(qū)動(dòng)、作為數(shù)據(jù)總線,雙向傳輸,其驅(qū)動(dòng)器應(yīng)為雙向驅(qū)動(dòng)、三態(tài)輸出三態(tài)輸出,由兩個(gè)控制端兩個(gè)控制端來控制數(shù)傳方向。如圖圖13-3所示,數(shù)據(jù)輸出允許控制端DBEO有效時(shí),數(shù)據(jù)總線輸入為高阻狀態(tài),輸出為開通狀態(tài);數(shù)據(jù)輸入允許控制端DBEI有效時(shí),則狀態(tài)與上相反。常見雙向驅(qū)動(dòng)器為常見雙向驅(qū)動(dòng)器為74LS245,圖圖13-5為引腳圖和邏輯圖。驅(qū)動(dòng)方向由 G*、DIR兩個(gè)控制端控制, G*控制端控制驅(qū)動(dòng)器有效或高阻態(tài), G*在 控制端有效(G* =0)時(shí)

20、,DIR控制端控制驅(qū)動(dòng)器的驅(qū)動(dòng)方向,DIR=0時(shí)驅(qū)動(dòng)方向?yàn)閺腂至A,DIR=1時(shí)則相反。25圖圖13-4 單向驅(qū)動(dòng)器74LS244引腳圖和邏輯圖圖圖13-5 74LS245的引腳圖和邏輯圖圖圖13-6所示為AT89S51系統(tǒng)總線驅(qū)動(dòng)擴(kuò)展電路圖總線驅(qū)動(dòng)擴(kuò)展電路圖。P0口口的雙向驅(qū)動(dòng)采用的雙向驅(qū)動(dòng)采用74LS245,如圖圖13-6(a)所示;P2口的單口的單向驅(qū)動(dòng)器采用向驅(qū)動(dòng)器采用74LS244,如圖圖13-6(b)所示。 28圖圖13-6 AT89S51單片機(jī)應(yīng)用系統(tǒng)中的總線驅(qū)動(dòng)擴(kuò)展電路圖 P0口口雙向驅(qū)動(dòng)器74LS245的的G*接地接地,保證芯片一直處于工作狀態(tài),而輸入輸入/輸出的方向控制輸出

21、的方向控制由單片機(jī)的數(shù)據(jù)存儲(chǔ)器的“讀讀”控制引腳(控制引腳(RD*)和程序存儲(chǔ)器的取指控制引腳取指控制引腳(PSEN*)通過與門控制DIR引腳實(shí)現(xiàn)。無論是“讀”數(shù)據(jù)存儲(chǔ)器中數(shù)據(jù)( 有效)還是從程序存儲(chǔ)器中取指令(PSEN*有效),都能保證對(duì)P0口的輸入驅(qū)動(dòng); 除此以外的時(shí)間(RD*及PSEN*均無效),保證對(duì)P0口的輸出驅(qū)動(dòng)。對(duì)于P2口,因?yàn)橹挥米鲉蜗虻牡刂份敵觯?4LS244的驅(qū)動(dòng)門控制端1G* 、2G*接地。2913.2.4 應(yīng)用設(shè)計(jì)例應(yīng)用設(shè)計(jì)例1最小應(yīng)用系統(tǒng)設(shè)計(jì)最小應(yīng)用系統(tǒng)設(shè)計(jì) AT89S51有4KB閃爍存儲(chǔ)器閃爍存儲(chǔ)器,本身就是一個(gè)數(shù)字量輸入/輸出的最小應(yīng)用系統(tǒng)。 在構(gòu)建AT89S5

22、1最小應(yīng)用系統(tǒng)時(shí),AT89S51需要外接需要外接時(shí)鐘電時(shí)鐘電路路和復(fù)位電路復(fù)位電路即可,如圖圖13-7。 注意,本最小應(yīng)用系統(tǒng)只能作為小型的數(shù)字量的測(cè)控單元。30圖圖13-7 AT89S51單片機(jī)構(gòu)成的最小應(yīng)用系統(tǒng)13.2.5 應(yīng)用設(shè)計(jì)例應(yīng)用設(shè)計(jì)例2數(shù)字電壓表的設(shè)計(jì)數(shù)字電壓表的設(shè)計(jì) 設(shè)計(jì)一個(gè)數(shù)字電壓表。測(cè)量設(shè)計(jì)一個(gè)數(shù)字電壓表。測(cè)量05V的模擬電壓,并把電壓的的模擬電壓,并把電壓的測(cè)量值顯示在測(cè)量值顯示在LED數(shù)碼顯示器上。數(shù)碼顯示器上。1. 硬件接口電路設(shè)計(jì)硬件接口電路設(shè)計(jì) 數(shù)字電壓表接口電路如數(shù)字電壓表接口電路如圖圖13-8。A/D轉(zhuǎn)換器采用轉(zhuǎn)換器采用ADC0809,把加到把加到IN0腳的模

23、擬輸入電壓轉(zhuǎn)換為數(shù)字量,送至單片機(jī)內(nèi)進(jìn)腳的模擬輸入電壓轉(zhuǎn)換為數(shù)字量,送至單片機(jī)內(nèi)進(jìn)行處理,電壓值顯示在行處理,電壓值顯示在LED數(shù)碼顯示器上。時(shí)鐘由定時(shí)器定時(shí)數(shù)碼顯示器上。時(shí)鐘由定時(shí)器定時(shí)中斷提供,在定時(shí)器中斷服務(wù)程序中,對(duì)時(shí)鐘輸出引腳中斷提供,在定時(shí)器中斷服務(wù)程序中,對(duì)時(shí)鐘輸出引腳P1.3取取反。本數(shù)字電壓表的分辨率為反。本數(shù)字電壓表的分辨率為5V/256=1LSB=0.0196V,測(cè)量,測(cè)量誤差為誤差為1LSB。3233圖13-8 數(shù)字電壓表接口電路2. 2. 軟件設(shè)計(jì)軟件設(shè)計(jì)參考程序如下:參考程序如下:#include #include #define #define ucharucha

24、r unsigned char unsigned char #define #define uintuint unsigned unsigned intint ucharuchar code table16=0 x3f, 0 x06, 0 x5b, 0 x4f, 0 x66, 0 x6d, 0 x07, code table16=0 x3f, 0 x06, 0 x5b, 0 x4f, 0 x66, 0 x6d, 0 x07, 0 x7f, 0 x6f ; 0 x7f, 0 x6f ; / /* *共陰極數(shù)碼管段碼表共陰極數(shù)碼管段碼表* */ /sbitsbit OE=P10; OE=P10;

25、/ /* *ADCADC各引腳定義各引腳定義* */ /sbitsbit EOC=P11; EOC=P11;sbitsbit START=P12; START=P12;sbitsbit CLK=P13; CLK=P13;/ /* *延時(shí)子程序延時(shí)子程序* */ /void void DelayMS(uintDelayMS(uint ms) ms)34uchar i;while( ms-)for(i=0;i150;i+);/*顯示轉(zhuǎn)換結(jié)果*/void Dislay(uchar d)P2=0 xf7; /*右邊數(shù)碼管顯示個(gè)位數(shù)*/P0=LEDdatad%10;DelayMS(uint ms);P2

26、=0 xfb;P0=LEDdatad%100/10; /*中間數(shù)碼管顯示十位數(shù)*/DelayMS(uint ms);P2=0 xfd;P0=LEDdatad%100; /*左邊數(shù)碼管顯示十位數(shù)*/DelayMS(uint ms);unsigned char i35/*主程序主程序*/void main( );TMOD=0 x02;/*設(shè)置定時(shí)器設(shè)置定時(shí)器T0為定時(shí)器方式為定時(shí)器方式2*/TH0=0 x14;/*給給T0裝入初值裝入初值*/TL0=0 x00; IE=0 x82;/*總中斷允許,定時(shí)器總中斷允許,定時(shí)器T0中斷允許中斷允許*/TR0=1;/*接通接通T0 計(jì)數(shù)計(jì)數(shù)* /P1=0

27、x07;/*CLK、START、EOC、OE為低、高、高、高為低、高、高、高* /while(1)START=0; START=1; START=0; /* START腳加正脈沖,啟動(dòng)轉(zhuǎn)換腳加正脈沖,啟動(dòng)轉(zhuǎn)換* /while(EOC=0);/*是否轉(zhuǎn)換結(jié)束是否轉(zhuǎn)換結(jié)束* /OE=1;/*允許讀轉(zhuǎn)換結(jié)果允許讀轉(zhuǎn)換結(jié)果* /36Dislay(P3);/*顯示轉(zhuǎn)換結(jié)果顯示轉(zhuǎn)換結(jié)果* /OE=0;/*關(guān)閉轉(zhuǎn)換結(jié)果輸出關(guān)閉轉(zhuǎn)換結(jié)果輸出* /*定時(shí)器定時(shí)器T0中斷服務(wù)程序中斷服務(wù)程序*/void T0INT( ) interrupt 1 CLK=! CLK;/*轉(zhuǎn)換器時(shí)鐘轉(zhuǎn)換器時(shí)鐘CLK 取反取反* /3

28、713.2.6 應(yīng)用設(shè)計(jì)例應(yīng)用設(shè)計(jì)例3帶有報(bào)警功能的溫度測(cè)量?jī)x的設(shè)計(jì)帶有報(bào)警功能的溫度測(cè)量?jī)x的設(shè)計(jì) 設(shè)計(jì)一個(gè)帶有報(bào)警功能的溫度測(cè)量?jī)x。被測(cè)溫度經(jīng)溫度傳設(shè)計(jì)一個(gè)帶有報(bào)警功能的溫度測(cè)量?jī)x。被測(cè)溫度經(jīng)溫度傳感器及信號(hào)調(diào)理電路,變?yōu)楦衅骷靶盘?hào)調(diào)理電路,變?yōu)?5V的模擬電壓信號(hào),經(jīng)的模擬電壓信號(hào),經(jīng)A/D轉(zhuǎn)換器轉(zhuǎn)換器ADC0809轉(zhuǎn)換為數(shù)字量,送至單片機(jī)內(nèi)進(jìn)行處理。轉(zhuǎn)換為數(shù)字量,送至單片機(jī)內(nèi)進(jìn)行處理。測(cè)量的溫度值顯示在數(shù)碼顯示器上。測(cè)得溫度值與設(shè)定值進(jìn)測(cè)量的溫度值顯示在數(shù)碼顯示器上。測(cè)得溫度值與設(shè)定值進(jìn)行比較,當(dāng)溫度大于上限值和小于下限值時(shí)分別發(fā)出報(bào)警信行比較,當(dāng)溫度大于上限值和小于下限值時(shí)分別發(fā)出報(bào)警

29、信號(hào)。號(hào)。1. 硬件電路設(shè)計(jì)硬件電路設(shè)計(jì) 溫度測(cè)量?jī)x的硬件功能結(jié)構(gòu)框圖如溫度測(cè)量?jī)x的硬件功能結(jié)構(gòu)框圖如圖圖13-9所示。所示。3839圖圖13-9 硬件功能結(jié)構(gòu)框圖硬件功能結(jié)構(gòu)框圖 硬件電路從功能模塊上來劃分有兩部分:數(shù)據(jù)采集電路和硬件電路從功能模塊上來劃分有兩部分:數(shù)據(jù)采集電路和溫度顯示與超限報(bào)警電路。溫度顯示與超限報(bào)警電路。(1)數(shù)據(jù)采集電路的設(shè)計(jì))數(shù)據(jù)采集電路的設(shè)計(jì) 數(shù)據(jù)采集電路電路如數(shù)據(jù)采集電路電路如圖圖13-10所示,主要由溫度傳感器、信所示,主要由溫度傳感器、信號(hào)調(diào)理、號(hào)調(diào)理、A/D轉(zhuǎn)換器等組成。轉(zhuǎn)換器等組成。 溫度傳感器采用常見的二端式電流型集成溫度傳感器溫度傳感器采用常見的二端

30、式電流型集成溫度傳感器AD590。溫度變化。溫度變化1,其輸出電流變化,其輸出電流變化1A,在,在25時(shí),其時(shí),其輸出電流為輸出電流為298.2A。AD590具有較高精度和重復(fù)性,測(cè)溫范具有較高精度和重復(fù)性,測(cè)溫范圍為圍為55+150,重復(fù)性優(yōu)于,重復(fù)性優(yōu)于0.1,通過激光平衡調(diào)整,通過激光平衡調(diào)整,校準(zhǔn)精度可達(dá)校準(zhǔn)精度可達(dá) 0.5。由于。由于AD590的上述特點(diǎn),使其在溫度的上述特點(diǎn),使其在溫度測(cè)量中得到了廣泛應(yīng)用。測(cè)量中得到了廣泛應(yīng)用。 圖圖13-1013-10 數(shù)據(jù)采集電路圖數(shù)據(jù)采集電路圖放大電路采用低溫穩(wěn)定、高精度的普通運(yùn)算放大器放大電路采用低溫穩(wěn)定、高精度的普通運(yùn)算放大器OP07,它

31、將溫度傳感器的電壓信號(hào)放大它將溫度傳感器的電壓信號(hào)放大05V,加到,加到A/D轉(zhuǎn)換器轉(zhuǎn)換器0809的模擬輸入端,以便的模擬輸入端,以便A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。A/D轉(zhuǎn)換器采用轉(zhuǎn)換器采用AD0809,假設(shè)被采集的溫度信號(hào)為緩變,假設(shè)被采集的溫度信號(hào)為緩變信號(hào),足以滿足轉(zhuǎn)換速度的要求。信號(hào),足以滿足轉(zhuǎn)換速度的要求。42(2)溫度顯示與超限報(bào)警電路的設(shè)計(jì))溫度顯示與超限報(bào)警電路的設(shè)計(jì) 溫度顯示與超限報(bào)警電路如溫度顯示與超限報(bào)警電路如圖圖13-11所示。所示。 測(cè)得的溫度值利用測(cè)得的溫度值利用LED數(shù)碼管進(jìn)行顯示。數(shù)碼管的數(shù)碼管進(jìn)行顯示。數(shù)碼管的adp段的段碼由單片機(jī)的段的段碼由單片機(jī)的

32、P0口控制,口控制,a段對(duì)應(yīng)段對(duì)應(yīng)P0口的最低位。數(shù)口的最低位。數(shù)碼管的顯示位由碼管的顯示位由P2.0P2.3分別控制,本例中用到了分別控制,本例中用到了P2.0P2.2對(duì)應(yīng)的數(shù)碼管。對(duì)應(yīng)的數(shù)碼管。 超限報(bào)警電路部分,由超限報(bào)警電路部分,由P3.0和和P3.1分別控制兩個(gè)發(fā)光二極分別控制兩個(gè)發(fā)光二極管管LED1和和LED2的亮與滅。當(dāng)溫度低于下限值時(shí)黃色發(fā)光二的亮與滅。當(dāng)溫度低于下限值時(shí)黃色發(fā)光二極管亮,當(dāng)溫度高于上限值時(shí),紅色發(fā)光二極管亮。極管亮,當(dāng)溫度高于上限值時(shí),紅色發(fā)光二極管亮。圖圖13-11 溫度顯示與超限報(bào)警電路溫度顯示與超限報(bào)警電路 2軟件設(shè)計(jì)軟件設(shè)計(jì)參考程序如下:參考程序如下:

33、#include #include #define #define ucharuchar unsigned char unsigned char #define #define uintuint unsigned unsigned intint ucharuchar code code segcodesegcode =0 x3f, =0 x3f, 0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f ; /0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f ; /* *顯示段碼表顯示段

34、碼表* */ /ucharuchar Temperature =0,0,0; Temperature =0,0,0;/ /* *3 3個(gè)個(gè)顯示位的溫度值顯示位的溫度值* */ /sbitsbit OE=P27; OE=P27;/ /* *ADC0809ADC0809各引腳定義各引腳定義* */ /sbitsbit EOC=P26; EOC=P26;sbitsbit START=P25; START=P25;sbitsbit CLK=P24; CLK=P24;sbitsbit H_LED=P30; H_LED=P30;/ /* *報(bào)警指示燈報(bào)警指示燈/ /sbitsbit L_LED=P31;

35、L_LED=P31;sbitsbit BEEP=P37; BEEP=P37;/ /* *蜂鳴器蜂鳴器* */ /45uchar t=0;void Deley_ms(uint x) /*延時(shí)函數(shù)延時(shí)函數(shù)*/uchar i;while(x-) for(i=0;i120;i+);void Display( )/*溫度溫度顯示函數(shù)顯示函數(shù)*/uchar i, bitcode = 0 xf7, 0 xfb, 0 xfd /*顯示位的位控值顯示位的位控值*/for(i=0;i3;i+); /*循環(huán)循環(huán)顯示顯示3位的控制位的控制*/P0= segcodeTemperaturei ;P2&= bitcode

36、i ;Deley_ms(5);P2|=0 x0f;46void main( );uchar dIE=0 x8a;/*允許T1、T0中斷*/TMOD=0 x18;/*設(shè)置T1、T0的工作模式與方式*/TH0=245;TL0=0;TH1=(65536-1000)/256;TL1=(65536-1000)%256;TR0=1;H_LED=L_LED=1;while(1) START=0; START=1; START=0; /*啟動(dòng)轉(zhuǎn)換*/while(1) if(EOC=1)47OE=1;d=P1;/*讀取讀取A/D轉(zhuǎn)換結(jié)果轉(zhuǎn)換結(jié)果*/OE=0;Temperature2=d/100;Temperat

37、ure1=d%100/10;Temperature0=d%10;Display( )if(d130) /*判溫度是否高于上限判溫度是否高于上限*/TR1=1; H_LED =! L_LED;elseTR1=0; H_LED=L_LED=1;48break;void T0_INT( ) interupt 1/*定時(shí)器定時(shí)器T0中斷函數(shù)中斷函數(shù), T0為為ADC0809提供時(shí)提供時(shí)鐘鐘*/clk=clkvoid T1_INT( ) interupt 3/*定時(shí)器定時(shí)器T1中斷函數(shù)中斷函數(shù)*/TH1=(65536-1000)/256;TL1=(65536-1000)%256;TL1=(65536-1

38、000)%256;BEEP=BEEP;if(L_LED=0)/*根據(jù)上限還是下限報(bào)警來設(shè)定不同的延時(shí)間隔根據(jù)上限還是下限報(bào)警來設(shè)定不同的延時(shí)間隔*/if(+t !=150)return;49elseif(+t !=60)return;t=0;Deley_ms(20)5013.3 單片機(jī)應(yīng)用系統(tǒng)的仿真開發(fā)與調(diào)試單片機(jī)應(yīng)用系統(tǒng)的仿真開發(fā)與調(diào)試 “仿真仿真”就是利用仿真開發(fā)工具提供的可控手段來模仿單就是利用仿真開發(fā)工具提供的可控手段來模仿單片機(jī)系統(tǒng)真實(shí)運(yùn)行的情況。在單片機(jī)系統(tǒng)調(diào)試中,仿真應(yīng)用的片機(jī)系統(tǒng)真實(shí)運(yùn)行的情況。在單片機(jī)系統(tǒng)調(diào)試中,仿真應(yīng)用的范圍主要集中在對(duì)程序的仿真上。例如,在單片機(jī)的開發(fā)過程

39、范圍主要集中在對(duì)程序的仿真上。例如,在單片機(jī)的開發(fā)過程中,程序的設(shè)計(jì)是最為重要的但也是難度最大的。一種最簡(jiǎn)單中,程序的設(shè)計(jì)是最為重要的但也是難度最大的。一種最簡(jiǎn)單和原始的開發(fā)流程是:編寫程序和原始的開發(fā)流程是:編寫程序燒寫芯片燒寫芯片驗(yàn)證功能,這種驗(yàn)證功能,這種方法對(duì)于簡(jiǎn)單的小系統(tǒng)是可行的,但在較大的程序中使用這種方法對(duì)于簡(jiǎn)單的小系統(tǒng)是可行的,但在較大的程序中使用這種方法則是行不通的。方法則是行不通的。 仿真的種類主要分為兩大類:軟件仿真和硬件仿真。仿真的種類主要分為兩大類:軟件仿真和硬件仿真。 51(1)軟件仿真)軟件仿真 主要是使用軟件來模擬單片機(jī)運(yùn)行,因此仿真與硬件無關(guān)主要是使用軟件來模

40、擬單片機(jī)運(yùn)行,因此仿真與硬件無關(guān)的系統(tǒng)具有優(yōu)點(diǎn)。不需搭建硬件電路就可以對(duì)程序進(jìn)行驗(yàn)證,的系統(tǒng)具有優(yōu)點(diǎn)。不需搭建硬件電路就可以對(duì)程序進(jìn)行驗(yàn)證,特別適合于偏重算法的程序。缺點(diǎn)是無法完全仿真與硬件相特別適合于偏重算法的程序。缺點(diǎn)是無法完全仿真與硬件相關(guān)的部分,最終還要通過硬件仿真來完成最終的設(shè)計(jì)。關(guān)的部分,最終還要通過硬件仿真來完成最終的設(shè)計(jì)。(2)硬件仿真)硬件仿真 使用附加的硬件來替代用戶系統(tǒng)的單片機(jī)并完成單片機(jī)全使用附加的硬件來替代用戶系統(tǒng)的單片機(jī)并完成單片機(jī)全部或大部分的功能,就可對(duì)程序的運(yùn)行進(jìn)行控制。例如單步,部或大部分的功能,就可對(duì)程序的運(yùn)行進(jìn)行控制。例如單步,全速,斷點(diǎn)等。例如在程序的

41、運(yùn)行中,在設(shè)置斷點(diǎn)處查看某全速,斷點(diǎn)等。例如在程序的運(yùn)行中,在設(shè)置斷點(diǎn)處查看某寄存器、存儲(chǔ)器單元內(nèi)容。硬件仿真是開發(fā)過程中所必寄存器、存儲(chǔ)器單元內(nèi)容。硬件仿真是開發(fā)過程中所必 52須的,人們把實(shí)現(xiàn)硬件仿真功能的開發(fā)工具稱為仿真器。須的,人們把實(shí)現(xiàn)硬件仿真功能的開發(fā)工具稱為仿真器。 仿真開發(fā)工具應(yīng)具有如下最基本的功能。仿真開發(fā)工具應(yīng)具有如下最基本的功能。(1 1)用戶程序的輸入與修改。)用戶程序的輸入與修改。(2 2)程序運(yùn)行、調(diào)試(單步運(yùn)行、設(shè)置斷點(diǎn)運(yùn)行)、排錯(cuò)、)程序運(yùn)行、調(diào)試(單步運(yùn)行、設(shè)置斷點(diǎn)運(yùn)行)、排錯(cuò)、狀態(tài)查詢等功能。狀態(tài)查詢等功能。(3 3)用戶樣機(jī)硬件電路的診斷與檢查。)用戶樣機(jī)

42、硬件電路的診斷與檢查。(4 4)有較全的開發(fā)軟件。用戶可用匯編語言或)有較全的開發(fā)軟件。用戶可用匯編語言或C C語言編制應(yīng)語言編制應(yīng)用程序;由開發(fā)系統(tǒng)編譯連接生成目標(biāo)文件、可執(zhí)行文件。用程序;由開發(fā)系統(tǒng)編譯連接生成目標(biāo)文件、可執(zhí)行文件。配有反匯編軟件,能將目標(biāo)程序轉(zhuǎn)換成匯編語言程序;有豐配有反匯編軟件,能將目標(biāo)程序轉(zhuǎn)換成匯編語言程序;有豐富的子程序或庫函數(shù)可供用戶選擇調(diào)用。富的子程序或庫函數(shù)可供用戶選擇調(diào)用。(5)將調(diào)試正確的程序?qū)懭氲匠绦虼鎯?chǔ)器中。)將調(diào)試正確的程序?qū)懭氲匠绦虼鎯?chǔ)器中。下面介紹常用的仿真開發(fā)工具。下面介紹常用的仿真開發(fā)工具。13.3.1 仿真開發(fā)系統(tǒng)簡(jiǎn)介仿真開發(fā)系統(tǒng)簡(jiǎn)介 目前

43、使用較多的仿真開發(fā)系統(tǒng)目前使用較多的仿真開發(fā)系統(tǒng)大致分為如下大致分為如下兩類兩類。1通用機(jī)仿真開發(fā)系統(tǒng)通用機(jī)仿真開發(fā)系統(tǒng) 目前目前使用最多的一類開發(fā)裝置使用最多的一類開發(fā)裝置。通過。通過PC機(jī)的并行口、串機(jī)的并行口、串行口或行口或USB口,外加在線仿真器,如口,外加在線仿真器,如圖圖13-12所示。所示。 圖圖13-13為在線仿真器與為在線仿真器與PC機(jī)以及用戶樣機(jī)的實(shí)際連接圖。機(jī)以及用戶樣機(jī)的實(shí)際連接圖。在線仿真器一側(cè)與在線仿真器一側(cè)與PC機(jī)的機(jī)的USB口(或并行口、串行口)相口(或并行口、串行口)相連。在調(diào)試程序時(shí),在線仿真器另一側(cè)的仿真插頭插入到用連。在調(diào)試程序時(shí),在線仿真器另一側(cè)的仿真

44、插頭插入到用5455圖圖13-12 通用機(jī)仿真開發(fā)系統(tǒng)圖圖13-13 在線仿真器與在線仿真器與P C機(jī)以及用戶樣機(jī)的連接機(jī)以及用戶樣機(jī)的連接戶樣機(jī)空出的的單片機(jī)插座上,來對(duì)樣機(jī)上的單片機(jī)進(jìn)行戶樣機(jī)空出的的單片機(jī)插座上,來對(duì)樣機(jī)上的單片機(jī)進(jìn)行“仿真仿真”。從仿真插頭向在線仿真器看去,看到的就是一個(gè)。從仿真插頭向在線仿真器看去,看到的就是一個(gè)“單片機(jī)單片機(jī)”。 這個(gè)這個(gè)“單片機(jī)單片機(jī)”是用來是用來“代替代替”用戶樣機(jī)上的用戶樣機(jī)上的單片機(jī)。但是這個(gè)單片機(jī)。但是這個(gè)“單片機(jī)單片機(jī)”片內(nèi)程序的運(yùn)行是由片內(nèi)程序的運(yùn)行是由PC機(jī)軟機(jī)軟件控制的。件控制的。 由于在線仿真器有由于在線仿真器有PC機(jī)及其仿真開發(fā)

45、軟件的強(qiáng)大支持,機(jī)及其仿真開發(fā)軟件的強(qiáng)大支持,可在可在PC機(jī)的屏幕上觀察用戶程序的運(yùn)行情況,可采用單步、機(jī)的屏幕上觀察用戶程序的運(yùn)行情況,可采用單步、設(shè)斷點(diǎn)等手段逐條跟蹤用戶程序并進(jìn)行修改和調(diào)試,查找軟、設(shè)斷點(diǎn)等手段逐條跟蹤用戶程序并進(jìn)行修改和調(diào)試,查找軟、硬件故障。硬件故障。 在線仿真器除了在線仿真器除了“出借出借” 單片機(jī)外,還單片機(jī)外,還“出借出借”存儲(chǔ)器,存儲(chǔ)器,即仿真即仿真RAM。也就是說,在用戶樣機(jī)調(diào)試期間,仿真器把開。也就是說,在用戶樣機(jī)調(diào)試期間,仿真器把開發(fā)系統(tǒng)的一部分存儲(chǔ)器發(fā)系統(tǒng)的一部分存儲(chǔ)器“變換變換”成為用戶樣機(jī)的存儲(chǔ)器。成為用戶樣機(jī)的存儲(chǔ)器。 57 這部分存儲(chǔ)器與用戶樣

46、機(jī)的程序存儲(chǔ)器具有相同的存儲(chǔ)這部分存儲(chǔ)器與用戶樣機(jī)的程序存儲(chǔ)器具有相同的存儲(chǔ)空間,用來存放待調(diào)試的用戶程序??臻g,用來存放待調(diào)試的用戶程序。 當(dāng)仿真器與當(dāng)仿真器與PC機(jī)聯(lián)機(jī)后,用戶可利用機(jī)聯(lián)機(jī)后,用戶可利用PC機(jī)上的仿真開發(fā)機(jī)上的仿真開發(fā)軟件,在軟件,在PC機(jī)上編輯、修改源程序,然后通過交叉匯編軟機(jī)上編輯、修改源程序,然后通過交叉匯編軟件將其匯編成機(jī)器代碼,傳送到在線仿真器中的仿真件將其匯編成機(jī)器代碼,傳送到在線仿真器中的仿真RAM中。中。這時(shí)用戶可用單步、斷點(diǎn)、跟蹤、全速等方式運(yùn)行用戶程序,這時(shí)用戶可用單步、斷點(diǎn)、跟蹤、全速等方式運(yùn)行用戶程序,系統(tǒng)狀態(tài)實(shí)時(shí)地顯示在屏幕上。待程序調(diào)試通過后,再

47、使用系統(tǒng)狀態(tài)實(shí)時(shí)地顯示在屏幕上。待程序調(diào)試通過后,再使用仿真開發(fā)系統(tǒng)提供的編程器或?qū)S镁幊唐?,把調(diào)試完畢的程仿真開發(fā)系統(tǒng)提供的編程器或?qū)S镁幊唐鳎颜{(diào)試完畢的程序?qū)懭氲絾纹瑱C(jī)的序?qū)懭氲絾纹瑱C(jī)的Flash存儲(chǔ)器中或外擴(kuò)的存儲(chǔ)器中或外擴(kuò)的EPROM中。中。 目前國(guó)內(nèi)生產(chǎn)的在線仿真器部分產(chǎn)品多采用目前國(guó)內(nèi)生產(chǎn)的在線仿真器部分產(chǎn)品多采用Bondout和和58HOOKS 技術(shù)。技術(shù)。 隨著集成電路芯片技術(shù)的發(fā)展,很多單片機(jī)生產(chǎn)廠商在芯隨著集成電路芯片技術(shù)的發(fā)展,很多單片機(jī)生產(chǎn)廠商在芯片內(nèi)部增加了仿真功能,即內(nèi)嵌仿真功能的單片機(jī)芯片,仿片內(nèi)部增加了仿真功能,即內(nèi)嵌仿真功能的單片機(jī)芯片,仿真調(diào)試一般通過真調(diào)

48、試一般通過JTAG 接口進(jìn)行控制。為了降低成本和增加接口進(jìn)行控制。為了降低成本和增加可靠性,內(nèi)嵌的仿真部分一般功能比較簡(jiǎn)單。可靠性,內(nèi)嵌的仿真部分一般功能比較簡(jiǎn)單。 為滿足工業(yè)現(xiàn)場(chǎng)調(diào)試的需要,還有一種獨(dú)立型仿真器。該為滿足工業(yè)現(xiàn)場(chǎng)調(diào)試的需要,還有一種獨(dú)立型仿真器。該類仿真器采用模塊化結(jié)構(gòu),配有不同外設(shè),如外存板、打印類仿真器采用模塊化結(jié)構(gòu),配有不同外設(shè),如外存板、打印機(jī)、鍵盤機(jī)、鍵盤/顯示器等,用戶可根據(jù)需要選用。在工業(yè)現(xiàn)場(chǎng),往顯示器等,用戶可根據(jù)需要選用。在工業(yè)現(xiàn)場(chǎng),往往沒有往沒有PC機(jī)的支持,這時(shí)使用獨(dú)立型仿真器也可進(jìn)行仿真調(diào)機(jī)的支持,這時(shí)使用獨(dú)立型仿真器也可進(jìn)行仿真調(diào)試工作,只不過要輸入

49、機(jī)器碼,稍顯麻煩一些。試工作,只不過要輸入機(jī)器碼,稍顯麻煩一些。592. 單片機(jī)系統(tǒng)虛擬仿真開發(fā)工具單片機(jī)系統(tǒng)虛擬仿真開發(fā)工具Proteus 單片機(jī)虛擬仿真開發(fā)工具是一種完全用軟件手段對(duì)單片機(jī)單片機(jī)虛擬仿真開發(fā)工具是一種完全用軟件手段對(duì)單片機(jī)應(yīng)用系統(tǒng)進(jìn)行仿真開發(fā),它與用戶樣機(jī)在硬件上無任何聯(lián)系,應(yīng)用系統(tǒng)進(jìn)行仿真開發(fā),它與用戶樣機(jī)在硬件上無任何聯(lián)系,通常這種系統(tǒng)是由通常這種系統(tǒng)是由PC機(jī)上安裝仿真開發(fā)工具軟件構(gòu)成,可機(jī)上安裝仿真開發(fā)工具軟件構(gòu)成,可進(jìn)行系統(tǒng)的虛擬設(shè)計(jì)與仿真調(diào)試。進(jìn)行系統(tǒng)的虛擬設(shè)計(jì)與仿真調(diào)試。 Proteus軟件是英國(guó)軟件是英國(guó)Lab Center electronics 開發(fā)的虛

50、擬開發(fā)的虛擬仿真軟件,為各種實(shí)際的單片機(jī)系統(tǒng)開發(fā)提供了功能強(qiáng)大的仿真軟件,為各種實(shí)際的單片機(jī)系統(tǒng)開發(fā)提供了功能強(qiáng)大的EDA工具,已有近工具,已有近20年的歷史。年的歷史。 除了具有和其他除了具有和其他EDA工具一樣的原理編輯、印刷電路板自工具一樣的原理編輯、印刷電路板自動(dòng)或人工布線及電路仿真功能外,最大特色是用戶可對(duì)單片動(dòng)或人工布線及電路仿真功能外,最大特色是用戶可對(duì)單片機(jī)連同所有外圍接口、電子器件以及外部的測(cè)試儀器一起機(jī)連同所有外圍接口、電子器件以及外部的測(cè)試儀器一起60仿真。仿真。 可直接在基于單片機(jī)原理圖的虛擬模型上進(jìn)行編程,并實(shí)可直接在基于單片機(jī)原理圖的虛擬模型上進(jìn)行編程,并實(shí)現(xiàn)源代碼

51、級(jí)的實(shí)時(shí)調(diào)試。現(xiàn)源代碼級(jí)的實(shí)時(shí)調(diào)試。Proteus軟件的特點(diǎn)。軟件的特點(diǎn)。(1)能夠?qū)δM電路、數(shù)字電路進(jìn)行仿真。)能夠?qū)δM電路、數(shù)字電路進(jìn)行仿真。(2) 除了仿真除了仿真51系列單片機(jī)外,系列單片機(jī)外,Proteus軟件還可仿真軟件還可仿真68000系列、系列、AVR系列、系列、PIC12-18系列、系列、Z80系列、系列、HC11等其他各系列單片機(jī)。等其他各系列單片機(jī)。(3)具有硬件仿真開發(fā)系統(tǒng)中的全速、單步、設(shè)置斷點(diǎn)等具有硬件仿真開發(fā)系統(tǒng)中的全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能調(diào)試功能,同時(shí)可觀察各個(gè)變量、寄存器等的當(dāng)前狀態(tài)。61(4)該軟件提供各種單片機(jī)與豐富的外圍接口芯片提供各種單片機(jī)與

52、豐富的外圍接口芯片、存儲(chǔ)器芯片組成的系統(tǒng)仿真、RS-232動(dòng)態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能。(5)提供豐富的虛擬儀器,如示波器、邏輯分析儀、信號(hào)豐富的虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。發(fā)生器等。利用虛擬儀器在仿真過程中可以測(cè)量系統(tǒng)外圍電路的特性,設(shè)計(jì)者可充分利用Proteus軟件提供的虛擬儀器,來進(jìn)行系統(tǒng)的軟件仿真測(cè)試與調(diào)試。 總之,是一款功能強(qiáng)大的單片機(jī)軟件仿真開發(fā)工具。62 在使用Proteus進(jìn)行仿真開發(fā)時(shí),編譯調(diào)試環(huán)境可選用編譯調(diào)試環(huán)境可選用Keil C51 Vision 3軟件軟件。該軟件支持眾多不同公司的MCS-51架構(gòu)的芯片,集編輯、編

53、譯和程序仿真等于一體,同時(shí)還支持匯編和C語言的程序設(shè)計(jì),界面友好易學(xué),在調(diào)試程序、軟件仿真方面有強(qiáng)大的功能。 用用Proteus調(diào)試不需任何硬件在線仿真器,也不需要用戶不需任何硬件在線仿真器,也不需要用戶硬件樣機(jī),直接就可以在硬件樣機(jī),直接就可以在PC機(jī)上開發(fā)和調(diào)試單片機(jī)軟件。機(jī)上開發(fā)和調(diào)試單片機(jī)軟件。調(diào)試完畢的軟件可以將機(jī)器代碼固化,一般能直接投入運(yùn)行。63 盡管Proteus具有開發(fā)效率高,不需附加的硬件開發(fā)裝置成本。但是軟件模擬器是使用純軟件來仿真,對(duì)實(shí)時(shí)性還不對(duì)實(shí)時(shí)性還不能完全準(zhǔn)確地模擬能完全準(zhǔn)確地模擬,不能進(jìn)行用戶樣機(jī)硬件部分的診斷與實(shí)不能進(jìn)行用戶樣機(jī)硬件部分的診斷與實(shí)時(shí)在線仿真時(shí)在

54、線仿真。 因此在系統(tǒng)開發(fā)中,一般是先用Proteus設(shè)計(jì)出系統(tǒng)的硬件電路,編寫程序,在Proteus環(huán)境下仿真調(diào)試通過。然后依照仿真的結(jié)果,完成實(shí)際硬件設(shè)計(jì)。再將仿真通過的程序用燒錄到程序存儲(chǔ)器中,然后安裝到用戶樣機(jī)硬件板上去觀察運(yùn)行結(jié)果,如有問題,再連接硬件仿真器去分析、調(diào)試。6413.3.3 用戶樣機(jī)的仿真調(diào)試用戶樣機(jī)的仿真調(diào)試 介紹如何使用仿真開發(fā)工具進(jìn)行匯編語言源程序編寫、調(diào)試以及與用戶樣機(jī)硬件聯(lián)調(diào)工作。1用戶樣機(jī)的程序調(diào)試用戶樣機(jī)的程序調(diào)試 用戶源程序調(diào)試過程如圖圖13-14,分以下4個(gè)步驟。(1)輸入用戶源程序)輸入用戶源程序。用戶使用編輯軟件WS,按照匯編語言源程序要求的格式、語

55、法規(guī)定,把源程序輸入到把源程序輸入到PC機(jī)中,機(jī)中,并保存在磁盤上并保存在磁盤上。65圖圖13-14 用戶樣機(jī)軟件設(shè)計(jì)、調(diào)試的過程 (2)在)在PC機(jī)上,利用匯編程序?qū)τ脩粼闯绦蜻M(jìn)行匯編,機(jī)上,利用匯編程序?qū)τ脩粼闯绦蜻M(jìn)行匯編,直至語法錯(cuò)誤全部糾正為止。直至語法錯(cuò)誤全部糾正為止。如無語法錯(cuò)誤,則進(jìn)入下一個(gè)步驟。 (3)動(dòng)態(tài)在線調(diào)試。)動(dòng)態(tài)在線調(diào)試。這一步對(duì)用戶的源程序進(jìn)行調(diào)試。上述的步驟(1)、步驟(2)是一個(gè)純粹的軟件運(yùn)行過程,這一步,必須要有在線仿真器配合,這一步,必須要有在線仿真器配合,才能對(duì)用戶源程序進(jìn)行調(diào)試。用戶程序中分為與用戶樣機(jī)硬件無關(guān)以及與用戶樣機(jī)緊密相關(guān)的程序。67 對(duì)于與用

56、戶樣機(jī)硬件無關(guān)的程序,對(duì)于與用戶樣機(jī)硬件無關(guān)的程序,如計(jì)算程序如計(jì)算程序,雖無語法錯(cuò)誤,但可能存在邏輯錯(cuò)誤,使計(jì)算結(jié)果不正確,此時(shí)必須借助于在線仿真器的動(dòng)態(tài)在線調(diào)試手段,如單步運(yùn)行、設(shè)置斷點(diǎn)等,發(fā)現(xiàn)邏輯錯(cuò)誤,然后返回到步驟(1)修改,直至邏輯錯(cuò)誤糾正為止。 對(duì)于與樣機(jī)硬件緊密相關(guān)的程序段與樣機(jī)硬件緊密相關(guān)的程序段(如接口驅(qū)動(dòng)程序),一定先把在線仿真器的仿真插頭插入用戶樣機(jī)的單片機(jī)插座中(見圖圖13-13),進(jìn)行在線仿真調(diào)試,利用仿真開發(fā)系統(tǒng)提供單步、設(shè)置斷點(diǎn)等調(diào)試手段,來進(jìn)行系統(tǒng)的調(diào)試。68 部分程序段運(yùn)行有可能不正常,部分程序段運(yùn)行有可能不正常,可能是可能是軟件邏輯軟件邏輯上有問題,上有問題

57、,也可能是也可能是硬件硬件有故障有故障,必須通過仿真工具提供的調(diào)試手段,把硬件故障排除后,再與硬件配合,把硬件故障排除后,再與硬件配合,對(duì)用戶程序進(jìn)行動(dòng)態(tài)在線調(diào)試。對(duì)于軟件的邏輯錯(cuò)誤,則返回到第一步進(jìn)行修改,直至邏輯錯(cuò)誤消除為止。在調(diào)試這類程序時(shí),硬件調(diào)試與軟件調(diào)試是不能完全分開的。許多硬件錯(cuò)誤是通過軟件的調(diào)試而發(fā)現(xiàn)和糾正的。(4)將調(diào)試完畢的用戶程序通過)將調(diào)試完畢的用戶程序通過編程寫入器編程寫入器(也稱燒寫(也稱燒寫器),固化在程序存儲(chǔ)器中。器),固化在程序存儲(chǔ)器中。692用戶樣機(jī)的硬件調(diào)試用戶樣機(jī)的硬件調(diào)試 用戶樣機(jī)全部焊接完畢,就可對(duì)樣機(jī)的硬件進(jìn)行調(diào)試。首先進(jìn)行靜態(tài)調(diào)試靜態(tài)調(diào)試,目的是

58、排除明顯的硬件故障。(1)靜態(tài)調(diào)試)靜態(tài)調(diào)試 分兩步: 第一步第一步在樣機(jī)加電前,根據(jù)硬件設(shè)計(jì)圖,用萬用表等工具,仔細(xì)檢查樣機(jī)線路樣機(jī)線路是否連接正確是否連接正確,并核對(duì)元器件型號(hào)、規(guī)格和安裝是否符合要求,應(yīng)特別注意應(yīng)特別注意電源系統(tǒng)電源系統(tǒng)的檢查的檢查,防止電源的短路和極性錯(cuò)誤,并重點(diǎn)檢查系統(tǒng)總線(地址總線、數(shù)據(jù)總線、控制總線)是否存在相互之間短路或與其他信號(hào)線短路。70 第二步第二步加電后檢查各芯片插座上有關(guān)引腳的電位有關(guān)引腳的電位,測(cè)量各各點(diǎn)電平是否正常點(diǎn)電平是否正常,尤其應(yīng)注意AT89S51插座的各點(diǎn)電位,若若有高壓,與在線仿真器聯(lián)機(jī)調(diào)試時(shí),將會(huì)損壞在線仿真器有高壓,與在線仿真器聯(lián)機(jī)調(diào)

59、試時(shí),將會(huì)損壞在線仿真器。 具體步驟如下。具體步驟如下。 電源檢查。電源檢查。當(dāng)用戶樣機(jī)板連接或焊接完成之后,先不插主先不插主要元器件,要元器件,通上電源。通常用+5V直流電源(這是TTL電源),用萬用表電壓檔測(cè)試各元器件插座上相應(yīng)電源引腳電各元器件插座上相應(yīng)電源引腳電壓數(shù)值是否正確,極性是否符合。壓數(shù)值是否正確,極性是否符合。如有錯(cuò)誤,要及時(shí)檢查、排除,以使每個(gè)電源引腳的數(shù)值都符合要求。71各元器件電源檢查。各元器件電源檢查。斷開電源,按正確的元器件方向插上元器件。最好是分別插入,分別通電,最好是分別插入,分別通電,逐一檢查每個(gè)元器件逐一檢查每個(gè)元器件上的電源是否正確上的電源是否正確,直到最

60、后全部插上元器件。通電后,每個(gè)元器件上電源值應(yīng)正確無誤。檢查相應(yīng)芯片的邏輯關(guān)系。檢查相應(yīng)芯片的邏輯關(guān)系。通常采用靜態(tài)電平檢查法,即靜態(tài)電平檢查法,即在一個(gè)芯片信號(hào)輸入端加入一個(gè)相應(yīng)電平,檢查輸出電平是在一個(gè)芯片信號(hào)輸入端加入一個(gè)相應(yīng)電平,檢查輸出電平是否正確。否正確。單片機(jī)系統(tǒng)大都是數(shù)字邏輯電路,使用電平檢查法可首先檢查出邏輯設(shè)計(jì)是否正確,選用的元器件是否符合要求,邏輯關(guān)系是否匹配,元器件連接關(guān)系是否符合要求等。72(2)在線仿真與動(dòng)態(tài)調(diào)試)在線仿真與動(dòng)態(tài)調(diào)試 用戶樣機(jī)中的硬件故障硬件故障(如各個(gè)部件內(nèi)部存在的故障和部件之間連接的邏輯錯(cuò)誤)主要靠聯(lián)機(jī)在線仿真來排除聯(lián)機(jī)在線仿真來排除 在斷電情況

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論