《單片微型計算機原理及應(yīng)用》課件第7章_第1頁
《單片微型計算機原理及應(yīng)用》課件第7章_第2頁
《單片微型計算機原理及應(yīng)用》課件第7章_第3頁
《單片微型計算機原理及應(yīng)用》課件第7章_第4頁
《單片微型計算機原理及應(yīng)用》課件第7章_第5頁
已閱讀5頁,還剩89頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

7.1單片機應(yīng)用系統(tǒng)的開發(fā)過程7.2單片機應(yīng)用系統(tǒng)設(shè)計的基本原則與方法7.3單片機應(yīng)用系統(tǒng)的一般結(jié)構(gòu)7.4單片機應(yīng)用系統(tǒng)的調(diào)試7.5單片機應(yīng)用系統(tǒng)舉例

——數(shù)字壓力表的設(shè)計第7章單片機應(yīng)用系統(tǒng)設(shè)計與開發(fā)7.1單片機應(yīng)用系統(tǒng)的開發(fā)過程通常,開發(fā)一個單片機應(yīng)用系統(tǒng)需要經(jīng)過以下幾個過程:·系統(tǒng)可行性分析;·系統(tǒng)需求分析;·系統(tǒng)方案設(shè)計;·系統(tǒng)構(gòu)建;·系統(tǒng)調(diào)試與測試;·固化程序與電路,形成正式系統(tǒng)(或產(chǎn)品)。1.可行性分析可行性分析將對新系統(tǒng)開發(fā)研制的必要性及可實現(xiàn)性給出明確的結(jié)論,根據(jù)這一結(jié)論決定系統(tǒng)的開發(fā)研制工作是否進(jìn)行下去??尚行苑治鐾ǔ囊韵聨讉€方面進(jìn)行論證:①市場或用戶需求;②經(jīng)濟(jì)效益和社會效益;③技術(shù)支持與開發(fā)環(huán)境;④現(xiàn)在的競爭力與未來的生命力。2.系統(tǒng)需求調(diào)查做好詳細(xì)的系統(tǒng)需求分析是對研制新系統(tǒng)準(zhǔn)確定位的關(guān)鍵。當(dāng)建造一個新的單片機應(yīng)用系統(tǒng)時,首先要調(diào)查市場或用戶的需求,了解用戶對未來新系統(tǒng)的希望和要求,通過對各種需求信息進(jìn)行分析綜合,得出市場或用戶是否需要新系統(tǒng)的結(jié)論。

其次,應(yīng)對國內(nèi)外同類系統(tǒng)的狀況進(jìn)行調(diào)研。調(diào)研的主要內(nèi)容包括:①原有系統(tǒng)的結(jié)構(gòu)、功能以及存在的問題;②國內(nèi)外同類系統(tǒng)的最新發(fā)展情況以及與新系統(tǒng)有關(guān)的各種技術(shù)資料;③同行業(yè)中哪些用戶已經(jīng)采用了新的系統(tǒng),它們的結(jié)構(gòu)、功能、使用情況以及所產(chǎn)生的經(jīng)濟(jì)效益。最后,經(jīng)過對現(xiàn)狀、用戶、技術(shù)需求的詳細(xì)分析總結(jié),,整理出詳盡具體的系統(tǒng)需求分析報告,作為下一步系統(tǒng)設(shè)計的主要依據(jù)。顯然,需求分析報告的準(zhǔn)確性將影響系統(tǒng)的成敗。3.系統(tǒng)方案設(shè)計單片機應(yīng)用系統(tǒng)的方案設(shè)計是系統(tǒng)實現(xiàn)的基礎(chǔ),這項工作要十分仔細(xì),考慮周全。方案設(shè)計的主要依據(jù)是市場或用戶的需求、應(yīng)用環(huán)境狀況、關(guān)鍵技術(shù)支持、同類系統(tǒng)經(jīng)驗借鑒及開發(fā)人員設(shè)計經(jīng)驗等。為完成系統(tǒng)功能,方案設(shè)計主要內(nèi)容包括:①系統(tǒng)結(jié)構(gòu)硬件設(shè)計;②系統(tǒng)軟件與算法設(shè)計;③界面和可靠性設(shè)計等。4.系統(tǒng)構(gòu)建這一階段的工作是將前面產(chǎn)生的系統(tǒng)方案付諸實施,將硬件框圖轉(zhuǎn)化為具體電路,軟件流程及算法用程序加以實現(xiàn)。設(shè)計硬件電路時,單片機的選用對電路結(jié)構(gòu)及復(fù)雜度有較大影響。一個合適的單片機將會最大限度地降低其外圍連接電路,從而簡化整個系統(tǒng)的硬件。5.系統(tǒng)調(diào)試與測試系統(tǒng)調(diào)試檢驗所設(shè)計系統(tǒng)的正確與可靠,從中發(fā)現(xiàn)組裝問題或設(shè)計錯誤。這里所指的設(shè)計錯誤,是指設(shè)計過程中所出現(xiàn)的小錯誤或局部錯誤,決不允許出現(xiàn)重大錯誤。

6.固化程序與電路,形成正式系統(tǒng)(或產(chǎn)品)開發(fā)、測試完系統(tǒng)后,要對單片機程序進(jìn)行固化,對單片機系統(tǒng)硬件電路進(jìn)行完善。作為正式系統(tǒng)(或產(chǎn)品),不僅要提供一個能正確可靠運行的系統(tǒng)(或產(chǎn)品),而且還應(yīng)提供關(guān)于該系統(tǒng)(或產(chǎn)品)的全部文檔。這些文檔包括系統(tǒng)設(shè)計方案、硬件電原理圖、軟件程序清單、軟/硬件功能說明、軟/硬件裝配說明書、系統(tǒng)操作手冊等。

7.2單片機應(yīng)用系統(tǒng)設(shè)計的

基本原則與方法

7.2.1單片機應(yīng)用系統(tǒng)的基本設(shè)計原則單片機應(yīng)用系統(tǒng)的基本設(shè)計原則是:①可靠性高;②性能價格比高;③操作簡便;④設(shè)計周期短。

1.可靠性高高可靠性是系統(tǒng)應(yīng)用的前提,在系統(tǒng)設(shè)計的每一個環(huán)節(jié),都應(yīng)該將可靠性作為首要的設(shè)計準(zhǔn)則。

通常,高可靠性可從以下5個方面進(jìn)行考慮:

(1)使用可靠性高的元器件;

(2)嚴(yán)格安裝硬件設(shè)備及電路;

(3)采取必要的抗干擾措施,以防止環(huán)境干擾(如空間電磁輻射、強電設(shè)備啟停、酸堿環(huán)境腐蝕等)、信號串?dāng)_、電源或地線干擾等影響系統(tǒng)的可靠性;

(4)請專家和有經(jīng)驗的設(shè)計人員對系統(tǒng)的設(shè)計方案嚴(yán)格把關(guān);

(5)作必要的冗余設(shè)計或增加自診斷功能。2.性能價格比高單片機除體積小、功耗低等特點外,最大的優(yōu)勢在于高性能價格比。

3.操作簡便如果所設(shè)計的產(chǎn)品人機交互過多,必然會給用戶操作帶來一定困難,也不利于最大限度地降低勞動強度。

4.設(shè)計周期短只有縮短設(shè)計周期,才能有效地降低設(shè)計費用,充分發(fā)揮新系統(tǒng)的技術(shù)優(yōu)勢,及早占領(lǐng)市場并具有一定的競爭力。

7.2.2單片機應(yīng)用系統(tǒng)的一般設(shè)計方法在進(jìn)行單片機應(yīng)用系統(tǒng)方案設(shè)計時,可以下述一般設(shè)計方法作為指導(dǎo)。

1.確定系統(tǒng)功能與性能由需求分析可以確定出單片機應(yīng)用系統(tǒng)的設(shè)計目標(biāo),這一目標(biāo)包括系統(tǒng)功能與性能。系統(tǒng)功能主要有數(shù)據(jù)采集、數(shù)據(jù)處理、輸出控制等。2.確定系統(tǒng)基本結(jié)構(gòu)單片機應(yīng)用系統(tǒng)結(jié)構(gòu)一般是以單片機為核心外部擴(kuò)展相關(guān)電路的形式。確定了系統(tǒng)中的單片機、存儲器分配及輸入/輸出方式就可大體確定出單片機應(yīng)用系統(tǒng)的基本組成。

1)單片機在系統(tǒng)詳細(xì)方案設(shè)計時,先要確定單片機的型號。所選單片機的型號不同,組成的系統(tǒng)結(jié)構(gòu)也就不同。

選擇單片機的原則是:·有供貨渠道;·最適宜實現(xiàn)系統(tǒng)的功能與性能;·有開發(fā)手段,且性價比較高。。以下列出較有影響的單片機型號及廠家,供選型參考?!?位機MCS-51系列Intel(美國英特爾公司)SUPER8,Z8系列Zilog(美國)F8,3870系列Fairchild(美國仙童公司)68HC05,68HC11系列Motorola(美國摩托羅拉公司)6500/1系列Rockwell(美國洛克威爾公司)TMS700系列TI(美國得克薩斯儀器公司)NS8070系列NS(美國國家半導(dǎo)體公司)CDP1800系列RCA(美國無線電公司)MN6800系列National(日本松下公司)μCOM87(μPD7800)系列NEC(日本電氣公司)HD6301,HD6305,HD63L05Hitachi(日本日立公司)AT89C系列ATMEL公司·16位機8096(8098)系列Intel(美國英特爾公司)MK68200系列Mostek(美國莫斯特公司)TMS-9900系列TI公司HPC1604系列NS公司μPD78300系列NEC公司2)存儲器分配不同的單片機具有不同的存儲器組織。MCS-51單片機的程序存儲器與數(shù)據(jù)存儲器空間相互獨立,工作寄存器與內(nèi)部數(shù)據(jù)存儲器共用一個存儲空間,I/O端口則與外部數(shù)據(jù)存儲器共用一個存儲空間。3)I/O方式采用不同的輸入/輸出方式,對于單片機應(yīng)用系統(tǒng)的軟、硬件結(jié)構(gòu)有直接的影響。在單片機應(yīng)用系統(tǒng)中,常用的I/O方式主要有:

·無條件傳送方式(同步傳送方式);

·查詢方式;

·中斷方式。3.硬件設(shè)計單片機應(yīng)用系統(tǒng)的硬件設(shè)計是圍繞著單片機做外部功能擴(kuò)展而展開的,其結(jié)構(gòu)如圖7―1所示,它主要涉及以下擴(kuò)展部分的設(shè)計。

1)程序存儲器若單片機內(nèi)無片內(nèi)程序存儲器或存儲容量不夠時,需外部擴(kuò)展程序存儲器。外部擴(kuò)展的存儲器通常選用EPROM或E2PROM。EPROM集成度高、價格便宜,E2PROM則編程容易。當(dāng)程序量較小時,使用E2PROM較方便;當(dāng)程序量較大時,采用EPROM更經(jīng)濟(jì)。目前還有采用Flash存儲器的,將會更加方便。圖7―1單片機應(yīng)用系統(tǒng)硬件的一般結(jié)構(gòu)2)數(shù)據(jù)存儲器數(shù)據(jù)存儲器利用RAM構(gòu)成。大多數(shù)單片機都提供了小容量的片內(nèi)數(shù)據(jù)存儲區(qū),只有當(dāng)片內(nèi)數(shù)據(jù)存儲區(qū)不夠用時才擴(kuò)展外部數(shù)據(jù)存儲器。存儲器的設(shè)計原則是:在存儲容量滿足的前提下,盡可能減少存儲芯片的數(shù)量。建議使用大容量的存儲芯片以減少存儲器芯片數(shù)目,但應(yīng)避免盲目地擴(kuò)大存儲容量。3)I/O接口由于外設(shè)多種多樣,使得單片機與外設(shè)之間的接口電路也各不相同。因此,I/O接口常常是單片機應(yīng)用系統(tǒng)中設(shè)計最復(fù)雜也是最困難的部分之一。

4)譯碼電路當(dāng)需要外部擴(kuò)展電路時,就需要設(shè)計譯碼電路。譯碼電路要盡可能簡單,這就要求存儲器空間分配合理,譯碼方式選擇得當(dāng)。

5)總線驅(qū)動器如果單片機外部擴(kuò)展的器件較多,負(fù)載過重,就要考慮設(shè)計總線驅(qū)動器。6)抗干擾電路針對可能出現(xiàn)的各種干擾,應(yīng)設(shè)計抗干擾電路。在單片機應(yīng)用系統(tǒng)中,一個不可缺少的抗干擾電路就是抗電源干擾電路。最簡單的實現(xiàn)方法是在系統(tǒng)弱電部分(以單片機為核心)的電源入口處對地跨接1個大電容(100μf左右)與1個小電容(01μf左右),在系統(tǒng)內(nèi)部各芯片的電源端對地跨接1個小電容(001μf~0.1μf)。

4.軟件設(shè)計軟件是單片機應(yīng)用系統(tǒng)中的一個重要組成部分。一般計算機應(yīng)用系統(tǒng)的軟件包括系統(tǒng)軟件和用戶軟件,而單片機應(yīng)用系統(tǒng)中的軟件只有用戶軟件,即應(yīng)用系統(tǒng)軟件。軟件設(shè)計的關(guān)鍵是確定軟件應(yīng)完成的任務(wù)及選擇相應(yīng)的軟件結(jié)構(gòu)。

1)任務(wù)確定根據(jù)系統(tǒng)軟、硬件的功能分工,確定出軟件應(yīng)完成什么功能。作為實現(xiàn)控制功能的軟件應(yīng)明確控制對象、控制信號及控制時序;作為實現(xiàn)處理功能的軟件應(yīng)明確輸入是什么、要做什么樣的處理(即處理算法)、產(chǎn)生何種輸出。2)軟件結(jié)構(gòu)設(shè)計軟件結(jié)構(gòu)設(shè)計與程序設(shè)計技術(shù)密切相關(guān)。程序設(shè)計技術(shù)則提供了程序設(shè)計的基本方法。在單片機應(yīng)用系統(tǒng)中,最常用的程序設(shè)計方法是模塊程序設(shè)計。模塊程序設(shè)計具有結(jié)構(gòu)清晰、功能明確、設(shè)計簡便、程序模塊可共享、便于功能擴(kuò)展及便于程序維護(hù)等特點。為了編制模塊程序,先要將軟件功能劃分為若干子功能模塊,然后確定出各模塊的輸入、輸出及相互間的聯(lián)系。圖7―2單片機應(yīng)用系統(tǒng)軟件的一般結(jié)構(gòu)7.3單片機應(yīng)用系統(tǒng)的一般結(jié)構(gòu)1.單機結(jié)構(gòu)單機結(jié)構(gòu)是指在單片機應(yīng)用系統(tǒng)中只有1個單片機。這種結(jié)構(gòu)是目前單片機應(yīng)用系統(tǒng)采用最多的一種結(jié)構(gòu),它適用于小規(guī)模的單片機應(yīng)用系統(tǒng)。

典型的單機軟硬件結(jié)構(gòu)框圖如圖7-1與圖7-2所示。前面所敘述的單片機應(yīng)用系統(tǒng)的設(shè)計方法是針對單機結(jié)構(gòu)而言的。單機結(jié)構(gòu)的優(yōu)點是設(shè)計簡單、系統(tǒng)緊湊,對于小規(guī)模應(yīng)用系統(tǒng)具有最佳的性能/價格比。但在大規(guī)模應(yīng)用系統(tǒng)中,由于單機結(jié)構(gòu)難以實現(xiàn)多任務(wù)處理及高速度運行,因而無法滿足系統(tǒng)功能與性能的要求。2.多機結(jié)構(gòu)多機結(jié)構(gòu)是指在單片機應(yīng)用系統(tǒng)中有多個單片機同時工作。這種結(jié)構(gòu)是面向大規(guī)模單片機應(yīng)用系統(tǒng)的。由于拓?fù)浣Y(jié)構(gòu)不同,多機結(jié)構(gòu)又分為多級多機分散控制結(jié)構(gòu)與局部網(wǎng)絡(luò)結(jié)構(gòu),其中多級多機分步式控制結(jié)構(gòu)在目前應(yīng)用較為廣泛。多級多機分步式控制結(jié)構(gòu)的典型代表是兩級多機分步式控制系統(tǒng)。它的拓?fù)浣Y(jié)構(gòu)如圖7-3所示。圖7―3兩級多機分散控制系統(tǒng)結(jié)構(gòu)如果單片機允許外部擴(kuò)展數(shù)據(jù)存儲器,則可以采取多端口共享存儲器結(jié)構(gòu)實現(xiàn)主機系統(tǒng)與單片機系統(tǒng)的通信。這也是目前采用較多的一種方法。多端口存儲器互連結(jié)構(gòu)如圖7-4所示。主機系統(tǒng)與單片機系統(tǒng)都可以對共享存儲器進(jìn)行讀寫操作,這樣,主機系統(tǒng)的信息與單片機系統(tǒng)的信息可以通過共享存儲器加以交換,實現(xiàn)其通信目的。為了防止數(shù)據(jù)沖突,對共享存儲器應(yīng)作如下處理:

·給共享存儲器每個端口規(guī)定不同的優(yōu)先級,防止數(shù)據(jù)競爭。

·對共享存儲器進(jìn)行分區(qū),使得每個單片機系統(tǒng)與主機系統(tǒng)間交換的數(shù)據(jù)僅在它們擁有的固定存儲區(qū)上存儲,防止數(shù)據(jù)串?dāng)_。圖7―4多端口共享存儲器互連結(jié)構(gòu)7.4單片機應(yīng)用系統(tǒng)的調(diào)試

單片機應(yīng)用系統(tǒng)調(diào)試是系統(tǒng)開發(fā)的重要環(huán)節(jié)。當(dāng)完成了單片機應(yīng)用系統(tǒng)的硬件、軟件設(shè)計和硬件組裝后,便可進(jìn)入單片機應(yīng)用系統(tǒng)調(diào)試階段。系統(tǒng)調(diào)試的目的是要查出用戶系統(tǒng)中硬件設(shè)計與軟件設(shè)計中存在的錯誤及可能出現(xiàn)的不協(xié)調(diào)問題,以便修改設(shè)計,最終使用戶系統(tǒng)能正確可靠地工作。

最好能在方案設(shè)計階段就考慮系統(tǒng)調(diào)試問題,如采取什么調(diào)試方法、使用何種調(diào)試儀器等,以便在系統(tǒng)方案設(shè)計時將必要的調(diào)試方法綜合進(jìn)軟、硬件設(shè)計中,或提早做好調(diào)試準(zhǔn)備工作。圖7-5說明了系統(tǒng)調(diào)試的一般過程。圖7―5系統(tǒng)調(diào)試的一般過程7.4.1單片機應(yīng)用系統(tǒng)調(diào)試工具在單片機應(yīng)用系統(tǒng)調(diào)試中,最常用的調(diào)試工具有以下幾種。

1.單片機開發(fā)系統(tǒng)單片機開發(fā)系統(tǒng)(又稱仿真器)的主要作用是:①系統(tǒng)硬件電路的診斷與檢查;②程序的輸入與修改;③硬件電路、程序的運行與調(diào)試;④程序在存儲器中的固化。由于單片機本身不具有調(diào)試及輸入程序的能力,因此單片機開發(fā)系統(tǒng)成為開發(fā)單片機應(yīng)用系統(tǒng)不可缺少的工具。

2.萬用表萬用表主要用于測量硬件電路的通斷、兩點間阻值、測試點處穩(wěn)定電流或電壓值及其他靜態(tài)工作狀態(tài)。例如,當(dāng)給某個集成芯片的輸入端施加穩(wěn)定輸入時,可用萬用表來測試其輸出,通過測試值與預(yù)期值的比較,就可大致判定該芯片的工作是否正常。3.邏輯筆邏輯筆可以測試數(shù)字電路中測試點的電平狀態(tài)(高或低)及脈沖信號的有無。假如要檢測單片機擴(kuò)展總線上連接的某譯碼器是否有譯碼信號輸出,可編寫一循環(huán)程序使譯碼器對一特定譯碼狀態(tài)不斷進(jìn)行譯碼。

4.邏輯脈沖發(fā)生器與模擬信號發(fā)生器邏輯脈沖發(fā)生器能夠產(chǎn)生不同寬度、幅度及頻率的脈沖信號,它可作為數(shù)字電路的輸入源。5.示波器示波器可以測量電平、模擬信號波形及頻率,還可以同時觀察兩個或多個信號的波形及它們之間的相位差(雙蹤或多蹤示波器)。它既可以對靜態(tài)信號進(jìn)行測試,也可以對動態(tài)信號進(jìn)行測試,而且測試準(zhǔn)確性好。它是任何電子系統(tǒng)調(diào)試維修的一種必備工具。

6.邏輯分析儀邏輯分析儀能夠以單通道或多通道實時獲取與觸發(fā)事件相關(guān)的邏輯信號,可保存顯示觸發(fā)事件前后所獲取的信號,供操作者隨時觀察,并作為軟、硬件分析的依據(jù),以便快速有效地查出軟、硬件中的錯誤。邏輯分析儀主要用于動態(tài)調(diào)試中信號的捕獲。7.4.2單片機應(yīng)用系統(tǒng)的一般調(diào)試方法

1.硬件調(diào)試硬件調(diào)試是利用開發(fā)系統(tǒng)、基本測試儀器(萬用表、示波器等),通過執(zhí)行開發(fā)系統(tǒng)有關(guān)命令或運行適當(dāng)?shù)臏y試程序(也可以是與硬件有關(guān)的部分用戶程序段),檢查用戶系統(tǒng)硬件中存在的故障。硬件調(diào)試可分靜態(tài)調(diào)試與動態(tài)調(diào)試兩步進(jìn)行。

1)靜態(tài)調(diào)試靜態(tài)調(diào)試是在用戶系統(tǒng)未工作時的一種硬件檢查。2)動態(tài)調(diào)試動態(tài)調(diào)試是在用戶系統(tǒng)工作的情況下發(fā)現(xiàn)和排除用戶系統(tǒng)硬件中存在的器件內(nèi)部故障、器件間連接邏輯錯誤等的一種硬件檢查。由于單片機應(yīng)用系統(tǒng)的硬件動態(tài)調(diào)試是在開發(fā)系統(tǒng)的支持下完成的,故又稱為聯(lián)機仿真或聯(lián)機調(diào)試。2.軟件調(diào)試軟件調(diào)試是通過對用戶程序的匯編、連接、執(zhí)行來發(fā)現(xiàn)程序中存在的語法錯誤與邏輯錯誤并加以排除糾正的過程。軟件調(diào)試的一般方法是先獨立后聯(lián)機、先分塊后組合、先單步后連續(xù)。

1)先獨立后聯(lián)機

2)先分塊后組合

3)先單步后連續(xù)3.系統(tǒng)聯(lián)調(diào)系統(tǒng)聯(lián)調(diào)是指讓用戶系統(tǒng)的軟件在其硬件上實際運行,進(jìn)行軟、硬件聯(lián)合調(diào)試,從中發(fā)現(xiàn)硬件故障或軟、硬件設(shè)計錯誤。這是對用戶系統(tǒng)檢驗的重要一關(guān)。系統(tǒng)聯(lián)調(diào)主要解決以下問題:

(1)軟、硬件能否按預(yù)定要求配合工作,如果不能,那么問題出在哪里?如何解決?(2)系統(tǒng)運行中是否有潛在的設(shè)計時難以預(yù)料的錯誤,如硬件延時過長造成工作時序不符合要求、布線不合理造成有信號串?dāng)_等。(3)系統(tǒng)的動態(tài)性能指標(biāo)(包括精度、速度參數(shù))是否滿足設(shè)計要求。

4.現(xiàn)場調(diào)試一般情況下,通過系統(tǒng)聯(lián)調(diào)后,用戶系統(tǒng)就可以按照設(shè)計目標(biāo)正常工作了。但在某些情況下,由于用戶系統(tǒng)運行的環(huán)境較為復(fù)雜(如環(huán)境干擾較為嚴(yán)重、工作現(xiàn)場有腐蝕性氣體等),在實際現(xiàn)場工作之前,環(huán)境對系統(tǒng)的影響無法預(yù)料,只能通過現(xiàn)場運行調(diào)試來發(fā)現(xiàn)問題,找出相應(yīng)的解決辦法;或者雖然已經(jīng)在系統(tǒng)設(shè)計時考慮到抗環(huán)境干擾的對策,但是否行之有效,還必須通過用戶系統(tǒng)在實際現(xiàn)場的運行來加以驗證。7.5單片機應(yīng)用系統(tǒng)舉例

——數(shù)字壓力表的設(shè)計

7.5.1數(shù)字壓力表的功能需求數(shù)字壓力表用于檢測現(xiàn)場的實時壓力。壓力信號通過壓力傳感器模擬信號經(jīng)放大電路輸入到芯片A/D轉(zhuǎn)換通道,實現(xiàn)模擬信號的數(shù)字化,再將采集到的壓力信號以工程量的形式顯示在LCD液晶顯示器上。為了實現(xiàn)數(shù)字壓力表的主要功能,首先設(shè)定五個參量:實時壓力CURRENTPRESS:當(dāng)前的壓力值;上限值H_LIMIT:壓力的高報警線(本系統(tǒng)高報警線為30MPa);下限值L_LIMIT:壓力的低報警線(本系統(tǒng)低報警線為10MPa);壓力量最大值H_range:壓力量程的上限值(本系統(tǒng)上限值為40MPa);壓力量最小值L_range:壓力量程的下限值(本系統(tǒng)上限值為0MPa)。其次,還需設(shè)置S1(加鍵)、S2(減鍵)、S3(保存鍵)、S4(轉(zhuǎn)換鍵)4個按鍵控制修改系統(tǒng)參量,滿足不同用戶的要求。其中S4的切換順序依次為CURRENTPRESS、H_LIMIT、L_LIMIT、H_range、L_range。在切換到每種信號模式下時,就可以利用加減鍵S1、S2調(diào)節(jié)該設(shè)定值的大小,單按加減鍵則每次設(shè)定值加減1,若長按加減鍵則可以進(jìn)行連續(xù)加減設(shè)定值。例如,若當(dāng)前處于上限值顯示的狀態(tài)下,可以通過加減鍵實現(xiàn)上限值的改變來滿足不同的需求,下限值、壓力量最大值、壓力量最小值也可以通過同樣的方式進(jìn)行修改。只有實時壓力顯示值是不能通過加減鍵來改變的,它顯示的就是當(dāng)前的壓力值。

7.5.2數(shù)字壓力表的總體結(jié)構(gòu)設(shè)計根據(jù)壓力表的功能需求,設(shè)計了如圖7-6所示的壓力表結(jié)構(gòu)圖,包括電源供電模塊、CPU控制器、壓力信號采集轉(zhuǎn)換模塊、按鍵輸入電路、LCD顯示模塊、報警輸出及指示電路、參數(shù)存儲模塊。采用單片機模塊化設(shè)計,具有參數(shù)可修改、實時性強、運行穩(wěn)定性高和抗干擾性強等特點。圖7-6壓力表的總體結(jié)構(gòu)圖

7.5.3數(shù)字壓力表的硬件電路壓力表具體的硬件電路原理圖如圖7-7所示。圖7-7壓力表的硬件電路圖

7.5.4數(shù)字壓力表的軟件程序系統(tǒng)軟件主要包括初始化程序和主程序兩個部分。初始化程序主要由CPU各個端口初始化處理、初始數(shù)據(jù)加載、初始化A/D轉(zhuǎn)換等操作組成。在主程序中主要完成外部輸入模擬量的轉(zhuǎn)換,外部按鍵操作的接受處理,狀態(tài)參數(shù)的修改和保存,液晶顯示器的顯示更新、越限判斷處理以及報警等工作。主程序流程圖如圖7-8所示,執(zhí)行系統(tǒng)狀態(tài)及參數(shù)初始化程序后,進(jìn)入主循環(huán)程序,對信號進(jìn)行A/D轉(zhuǎn)換,然后啟動越限判斷子程序和檢測按鍵,若有按鍵按下,則進(jìn)入相應(yīng)的按鍵處理子程序。在對按鍵進(jìn)行處理的同時,顯示緩沖區(qū)的數(shù)據(jù)也得到更新,等下一個循環(huán)到來,將顯示緩沖區(qū)的數(shù)據(jù)送入顯示電路模塊。圖7-8主程序流程圖越限判斷子程序流程圖如圖7-9所示。當(dāng)實時壓力大于上限設(shè)定值時,D1燈亮,蜂鳴器報警;當(dāng)實時壓力小于下限設(shè)定值時,D2燈亮同時蜂鳴器報警。圖7-9越限判斷子程序流程圖按鍵掃描子程序流程圖如圖7-10所示。首先判斷有無鍵按下,若為轉(zhuǎn)換鍵,則在實時壓力、上限值、下限值、壓力最大值、壓力最小值之間進(jìn)行切換;若為加減鍵,則對相應(yīng)的值進(jìn)行加減操作;若為保存鍵,則保存所有的參數(shù)設(shè)置。圖7-10鍵盤掃描子程序流程圖本系統(tǒng)是在Keilc中進(jìn)行C語言編程實現(xiàn)的。下面給出本系統(tǒng)的C語言清單,其中對于I2C總線芯片24C02C的所有操作與5.3.5節(jié)的實例完全相同,這里不在詳細(xì)介紹。LCD顯示的寫指令和寫數(shù)據(jù)函數(shù)也與6.5.4節(jié)完全相同。(1)主程序press.c:通過ADC0832芯片在LCD液晶顯示器上顯示壓力數(shù)據(jù)。#include<lcd.h>#include<adc.h>#include<key.h>#include<i2c.h>#include<alarm.h>ucharkey_temp=0; //顯示狀態(tài):0.實時壓力1.上限顯示2.下限顯示

//3.壓力最大值4.壓力最小值ucharreal_press[]=".MPa"; //實時壓力顯示格式ucharrealPress=0; //實時壓力值ucharh_limit=30,l_limit=10; //上下限值ucharh_range=40,l_range=0; //壓力值范圍ucharpress[]="0MPa"; //設(shè)定上下限及壓力范圍的顯示格式ucharwrite_dat[4]; //保存上下限值和壓力范圍值/*******************************************數(shù)字量與工程量的轉(zhuǎn)換函數(shù)入口參數(shù):ADC轉(zhuǎn)換后的數(shù)字量,壓力最大值,壓力最小值*******************************************/voidConvert_Value(uchardigtal,value_h,value_l){ ucharinterval; interval=value_h-value_l; //計算監(jiān)測壓力量程

realPress=(digtal*interval)/255+value_l;//實時壓力換算

if(realPress>=100) real_press[0]=0x30+realPress/100;//實時壓力的百位上的數(shù)值

else real_press[0]=0x20;//百位無值用空格代替,空格的ascii碼為32 if(realPress>=10) real_press[1]=0x30+realPress/10%10;//實時壓力的十位上的數(shù)值

else real_press[1]=0x20; //無值則空格表示

real_press[2]=0x30+realPress%10; //個位上的數(shù)值

real_press[4]=0x30+((digtal*interval*2)/51)%10; //小數(shù)點后一位上的數(shù)值}/********************************************上下限以及壓力最大最小值的存儲轉(zhuǎn)換***********************************************/voidConvert(uchart){ if(t>=100) press[0]=0x30+t/100; //百位上的數(shù)值

else press[0]=0x20; //無值用空格表示

if(t>=10) press[1]=0x30+t/10%10; //十位上的數(shù)值

else press[1]=0x20; press[2]=0x30+t%10; //個位上的數(shù)值}/*****************************************************保存鍵處理函數(shù):入口參數(shù)為key_temp即當(dāng)前顯示狀態(tài)******************************************************/voidSAVE_Key_Deal(uchartemp){ write_dat[0]=h_limit; //保存上限值

write_dat[1]=l_limit; //保存下限值

write_dat[2]=h_range; //保存壓力最大值

write_dat[3]=l_range; //保存壓力最小值

I2C_Write_NByte(0,0,write_dat,4);//寫入存儲器}/*******************************************************加鍵處理函數(shù):入口參數(shù)為key_temp即當(dāng)前顯示狀態(tài)********************************************************/voidADD_Key_Deal(uchartemp){ switch(temp) { case1: h_limit++; //上限值加1 break; case2: l_limit++; //下限值加1 break; case3: h_range++; //壓力最大值加1 break; case4: l_range++; //壓力量最小值加1 break; default: break; } }/****************************************************減鍵處理函數(shù):入口參數(shù)為key_temp即當(dāng)前顯示狀態(tài)****************************************************/voidDEL_Key_Deal(uchartemp){ switch(temp) { case1: h_limit--; //上限值減1 break; case2: l_limit--; //下限值減1 break; case3: h_range--; //壓力最大值減1 break; case4: l_range--; //壓力最小值減1 break; default: break; } }/******************************************************屏幕顯示的對應(yīng)數(shù)據(jù)處理函數(shù):入口參數(shù)為key_temp*******************************************************/voidDeal(uchartemp){ switch(temp) { case1: Convert(h_limit); //轉(zhuǎn)換上限值屏顯格式

break; case2: Convert(l_limit); //轉(zhuǎn)換下限值屏顯格式

break; case3: Convert(h_range);//壓力最大值轉(zhuǎn)換成屏顯格式

break; case4: Convert(l_range); //壓力最小值轉(zhuǎn)換成屏顯格式

break; default: break; } }voidmain(){ ucharchannel=0x02; //選擇通道0 uintcount=0; //計數(shù)器

Lcd_Init(); while(1) { switch(Key_Scan()) //按鍵掃描

{ caseSET: //轉(zhuǎn)換鍵

write_com(0x01);//顯示清屏 count=0; if(key_temp>=4)//狀態(tài)切換

key_temp=0; else key_temp++; break; caseADD: //加鍵

ADD_Key_Deal(key_temp); count=0; break; caseDEL: //減鍵

DEL_Key_Deal(key_temp); count=0; break; caseSAVE: //保存鍵

count=0; SAVE_Key_Deal(); break; caseNULL: Convert_Value(ADConvert(channel),h_range,l_range); //工程量轉(zhuǎn)換

count++; if(count>100) //判斷一定時間內(nèi)無鍵按下,則跳轉(zhuǎn)至實時壓力顯示

key_temp=0; break; } Judge_Limit(h_limit,l_limit,realPress); //判斷越限

Deal(key_temp); //數(shù)據(jù)格式轉(zhuǎn)換

Lcd_Display(key_temp,real_press,press); //刷新屏幕顯示數(shù)據(jù)

} }(2)adc.h:實現(xiàn)ADC的初始化以及模擬量與數(shù)字量的轉(zhuǎn)換ucharADConvert(ucharChannel){ uchari,adval=0,test=0; //定義局部變量并初始化

CLK=0; DI=1; //DI初始高電平在第一個時鐘脈沖的下降沿前保持高電平,表示啟動信號

_nop_(); CS=0; //片選使能

_nop_(); CLK=1; //CLK上升沿,起始位寫入

_nop_(); CLK=0; _nop_(); DI=(bit)(0x02&Channel);//設(shè)定通道的第一位數(shù)據(jù)

CLK=1; _nop_(); CLK=0; _nop_(); DI=(bit)(0x01&Channel);//設(shè)定通道模式的第二位數(shù)據(jù)

CLK=1; //AD轉(zhuǎn)化初始化完成

_nop_(); CLK=0; DI=1; for(i=0;i<8;i++) //從高位向低位讀取八位AD值

{ CLK=1; _nop_(); CLK=0; if(DO)adval|=0x80>>i; _nop_(); } for(i=0;i<8;i++) //從低位向高位讀取八位AD值

{ if(DO)test|=0x01<<i; _nop_(); CLK=1; _nop_(); CLK=0; _nop_(); } CS=1; //數(shù)據(jù)讀取完成,釋放所有的數(shù)據(jù)線

DI=1; _nop_(); CLK=1; if(adval==test) returnadval; //判斷兩個讀取值是否相等,相等就把讀取的數(shù)賦值給DAT} (3)key.h:鍵盤掃描,用來判斷是否有鍵按下#defineSET0x01#defineADD0x02#defineDEL0x03#defineSAVE 0x04#defineNULL 0x05voidDelay(uinti) //延遲{ while(i--);}ucharKey_Scan()//鍵盤掃描函數(shù){ if((P0&0xf0)!=0xf0) //判斷有沒有鍵按下

{ Delay(12000); //消除抖動

if((P0&0xf0)!=0xf0) //再次判斷有沒有鍵按下

{ switch(P0&0xf0) { case0x70:returnSET; //轉(zhuǎn)換鍵按下

case0xE0:returnADD; //加鍵按下

case0xd0:returnDEL; //減鍵按下

case0xb0:returnSAVE; //保存鍵按下

default: returnNULL; } } } returnNULL;}(4)lcd.h:在LCD液晶顯示器上顯示不同的壓力數(shù)據(jù)voidwrite_com(ucharcom) //具體編程見6.5.4voidwrite_com(ucharcom)voidwrite_1(ucharadd,uchar*dat)//在LCD的第一行寫入數(shù)據(jù){uchari=0;write_com(0x80+add);while(dat[i]!='\0'){ write_data(dat[i]); i++;}}voidwrite_2(ucharadd,uchar*dat) //在LCD的第二行寫入數(shù)據(jù){uchari=0;write_com(0x80+0x40+add);while(dat[i]!='\0'){ write_data(dat[i]); i++;}}//LCD屏顯模式:根據(jù)不同的地址命令,顯示不同的數(shù)據(jù)信息voidLcd_Display_Model(ucharaddr,uchar*value,uchar*value1){ write_1(addr,value); write_2(4,value1);}//LCD屏幕顯示:調(diào)用LCD_Display_Model函數(shù)實現(xiàn)不同的數(shù)據(jù)顯示voidLcd_Display(uchartemp,uchar*real_press,uchar*press){ ucharstr[]="CURRENTPRESS:"; ucharstr1[]="H_LIMIT:"; ucharstr2[]="L_LIMIT:"; ucharstr3[]="H_range:"; ucharstr4[]="L_range:"; switch(temp) { case0: Lcd_Display_Model(1,str,real_press);//顯示實時壓力

break; case1: Lcd_Display_Model(4,str1,press); //顯示上限值

break; case2: Lcd_Display_Model(4,str2,press); //顯示下限值

break; case3: Lcd_Display_Model(4,str3,press); //顯示壓力最大值

break; cas

溫馨提示

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

評論

0/150

提交評論