單片機(jī)系統(tǒng)設(shè)計(jì)_第1頁
單片機(jī)系統(tǒng)設(shè)計(jì)_第2頁
單片機(jī)系統(tǒng)設(shè)計(jì)_第3頁
單片機(jī)系統(tǒng)設(shè)計(jì)_第4頁
單片機(jī)系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩159頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第11章

應(yīng)用系統(tǒng)設(shè)計(jì)

技術(shù)與實(shí)例

設(shè)計(jì)自己的單片機(jī)系統(tǒng)

第11章應(yīng)用系統(tǒng)設(shè)計(jì)技術(shù)與實(shí)例

?11.1單片機(jī)應(yīng)用系統(tǒng)開發(fā)流程)

,11.2抗干擾設(shè)計(jì)|

*11.3應(yīng)用舉例|

概述

本章從單片機(jī)應(yīng)用開發(fā)的一般步驟入手,著重介紹

總體設(shè)計(jì)、硬件設(shè)計(jì)、軟件設(shè)計(jì)、開發(fā)裝置的使用

與系統(tǒng)調(diào)試、編程器的使用與程序固化、產(chǎn)品驗(yàn)收

信鑫曹躺副支鎏蕭方需蒙胃酸靠菖鬻磕

開發(fā)實(shí)例以便模仿。

。內(nèi)容上貼近實(shí)際,注意對(duì)自上而下的任務(wù)逐級(jí)分解

過程的介紹,力圖按工程的要求,使開發(fā)進(jìn)程有條

不紊,有理有據(jù),文檔齊全。由于篇幅限制,許多

地方只能簡(jiǎn)略介紹。

11.1單片機(jī)應(yīng)用系統(tǒng)開發(fā)流程

單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的一般步驟可以分為以下幾個(gè)

階段:

?1.總體設(shè)計(jì);

2,硬件設(shè)計(jì);

3.軟件設(shè)計(jì);

4.可靠性設(shè)計(jì);

。5.保密性設(shè)計(jì);

6.軟硬件調(diào)試;

?:*7.文檔編制等。

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

1.用戶需求分析

對(duì)用戶提出的功能需求、技術(shù)指標(biāo)等,進(jìn)行必要的可行性論

證。明確設(shè)計(jì)任務(wù),并以書面形式確定以下幾方面的內(nèi)容,

經(jīng)用戶認(rèn)可,形成設(shè)計(jì)任務(wù)書。

(1)產(chǎn)品名稱;

(2)設(shè)計(jì)目的;

(3,系統(tǒng)功能要求

(4)系統(tǒng)性能指標(biāo)

(5,總體要求;

(6)設(shè)計(jì)周期;

(7)設(shè)計(jì)費(fèi)用;

(8)其他。

2.構(gòu)建系統(tǒng)總體架構(gòu)1

根據(jù)設(shè)計(jì)任務(wù)書的要求,在滿足功能、性能等用戶

需求的基礎(chǔ)上,初步提出可選技術(shù)路線,并對(duì)各方

案進(jìn)行必要的分析,充分聽取方方面面的意見,選

擇一種實(shí)施方案。

。實(shí)施方案中的系統(tǒng)總體架構(gòu)應(yīng)以用戶需求為出發(fā)點(diǎn)。

主要包括:選擇機(jī)型;根據(jù)需要確定擴(kuò)展;確定主

要的軟硬件功能;明確用戶界面(鍵盤、顯示、打印

等)的形式;確定系統(tǒng)的結(jié)構(gòu)(或建議,經(jīng)用戶確認(rèn));

單片機(jī)內(nèi)部資源分配及任務(wù)分解。

2.構(gòu)建系統(tǒng)總體架構(gòu)2

。在總體設(shè)計(jì)階段應(yīng)形成總體報(bào)告(實(shí)施方案)

和設(shè)計(jì)任務(wù)書。報(bào)告形成后,就可分成兩組

進(jìn)行同步設(shè)計(jì)了。第一組負(fù)責(zé)硬件,第二組

負(fù)責(zé)軟件,兩個(gè)組由項(xiàng)目負(fù)責(zé)人協(xié)調(diào)。有的

時(shí)候項(xiàng)目較小或者其它原因,只有一個(gè)人,就要

先設(shè)計(jì)硬件部分,然后交給線路板廠制版,在此

期間開始軟件設(shè)計(jì)。

2.構(gòu)建系統(tǒng)總體架構(gòu)3

硬件設(shè)計(jì)除了主要完成PCB線路板設(shè)計(jì)外,還應(yīng)考

慮可靠性和保密性,最終形成PCB圖、元器件清單、

網(wǎng)絡(luò)表、端口地址表等技術(shù)文檔;軟件設(shè)計(jì)主要完

成軟件功能模塊劃分、出口/入口參數(shù)定義、最終

形成程序(子程序)框圖、源程序清單等技術(shù)文檔。

。軟硬件調(diào)試必須由軟硬件設(shè)計(jì)人員共同參與,形成

調(diào)試報(bào)告。最后向用戶提交產(chǎn)品、產(chǎn)品說明書等。

焊接,

元件“

圖11-2新的產(chǎn)品開發(fā)流程圖

現(xiàn)在有了proteus軟件,不等做出電路板就可以

提前進(jìn)行功能測(cè)試,大大節(jié)省了時(shí)間和金錢成本,

其流程可以修改成如上。

11.1.2硬件設(shè)計(jì)和制作

。硬件設(shè)計(jì)是從總體報(bào)告和設(shè)計(jì)任務(wù)書出發(fā),設(shè)計(jì)任

務(wù)依次為:硬件原理圖繪制、PCB板圖繪制、印制板

測(cè)試與焊接三大塊。

硬件設(shè)計(jì)的任務(wù)是將在總體設(shè)計(jì)時(shí)明確的要求用具

體電路實(shí)現(xiàn),其中包括:系統(tǒng)擴(kuò)展、元件選擇(必要

時(shí)還要進(jìn)行局部電路的驗(yàn)證實(shí)驗(yàn))、設(shè)計(jì)原理圖、印

制板制作等。

硬件設(shè)計(jì)(包括硬件原理圖和PCB圖)目前基本上采用

計(jì)算機(jī)輔助設(shè)計(jì)(CAD,ComputerAidedDesign)o

常用的電子線路CAD軟件有Protel、Oread等,現(xiàn)在

有了proteus,單片機(jī)系統(tǒng)的設(shè)計(jì)就更加方便了。

11.1.2硬件設(shè)計(jì)和制作

。硬件原理設(shè)計(jì)是系統(tǒng)設(shè)計(jì)開始后最重要的第一步。

硬件原理設(shè)計(jì)中存在的缺陷將對(duì)整個(gè)設(shè)計(jì)產(chǎn)生影響,

所以原理設(shè)計(jì)要特別細(xì)心周到。

。原理設(shè)計(jì)完成后,將產(chǎn)生硬件原理圖、網(wǎng)絡(luò)表、元

件清單等重要文檔,這些文檔是后續(xù)工作的基礎(chǔ)。

在硬件原理圖基礎(chǔ)上,可以采用CAD自動(dòng)布局、自

動(dòng)布線來自動(dòng)地完成印制板繪制。通過印制板和原

理圖各自生成的網(wǎng)絡(luò)表,可以驗(yàn)證所繪制的線路板

與原理圖是否一致。網(wǎng)絡(luò)表還用于檢查生產(chǎn)出來的

印制板上線路的通斷。

11.1.2硬件設(shè)計(jì)和制作

。此外,硬件原理圖還是硬件調(diào)試(甚至軟硬件

聯(lián)調(diào))時(shí)查錯(cuò)、糾錯(cuò)、分析故障點(diǎn)的必不可少

的圖紙。正確的原理設(shè)計(jì)幾乎是硬件設(shè)計(jì)成

功的標(biāo)志。

。本節(jié)從技術(shù)角度出發(fā),將其細(xì)分為在設(shè)計(jì)中

應(yīng)重點(diǎn)考慮的六個(gè)方面的問題。

1硬件原理設(shè)計(jì)1

。硬件原理設(shè)計(jì)的任務(wù)是設(shè)計(jì)并繪制硬件原理圖,主

要應(yīng)從以下幾個(gè)方面考慮。

。(1).最小應(yīng)用系統(tǒng)設(shè)計(jì)

?包括微處理器的選擇、程序存儲(chǔ)器的選擇、晶振的

選擇、總線是否驅(qū)動(dòng)、復(fù)位電路的設(shè)計(jì)、內(nèi)部資源

(如定時(shí)、計(jì)數(shù)、中斷)的使用等。

。(2).I/O通道設(shè)計(jì)

。包括開關(guān)量I/O通道,接口電路、端口地址等問題,

模擬量I/O通道中A/D、D/A轉(zhuǎn)換芯片的選擇等。

(3).人機(jī)界面設(shè)計(jì)

。人機(jī)界面設(shè)計(jì)包括鍵盤、顯示和打印電路及其接口

設(shè)計(jì)。

1硬件原理設(shè)計(jì)2

(4).其他系統(tǒng)擴(kuò)展設(shè)計(jì)

。根據(jù)系統(tǒng)需要擴(kuò)展外部RAM、ROM、定時(shí)/計(jì)數(shù)、

中斷管理、串行口擴(kuò)展等。

。(5),電源設(shè)計(jì)

。根據(jù)系統(tǒng)的供電要求和使用環(huán)境,確定供電方案。

比如手持式設(shè)備往往需要電池供電;有的設(shè)備需要

備用電源等。交流供電也要設(shè)計(jì)變換電路,可以選

擇模擬穩(wěn)壓電源或開關(guān)穩(wěn)壓電源等。

(6).接插件定義

。確定線路板之間的數(shù)據(jù)通信形式,包括接插件的類

型,接插件管腳定義等。

2資源分配

。完成了原理設(shè)計(jì)之后,硬件資源就基本確定了,適

時(shí)地進(jìn)行資源分配,對(duì)后續(xù)工作能起到很好的限定

作用。止匕外,在資源分配時(shí)能及時(shí)發(fā)現(xiàn)資源的利用

情況,一方面減少資源浪費(fèi),另一方面發(fā)現(xiàn)資源不

足,及時(shí)修正原理設(shè)計(jì)中的潛在問題。

?資源分配的主要任務(wù)是對(duì)單片機(jī)內(nèi)部RAM、2(或

個(gè)定時(shí)/計(jì)數(shù)器、5(或6)個(gè)中斷源、1個(gè)全雙工異爰

串行口、4個(gè)并行I/O口哮單片機(jī)內(nèi)部資源及擴(kuò)展資

源逐個(gè)分析其用途、工作方式、工作起止時(shí)間和限

定條件,分配端口地址等。

3線路板圖繪制

。原理圖最終還要通過CAD軟件繪制出線路板

圖才能交付生產(chǎn),這個(gè)工作要在仿真實(shí)驗(yàn)完

成之后進(jìn)行,否則可能會(huì)白白浪費(fèi)時(shí)間和金

錢。在繪制線路板時(shí)一定要注意以下幾個(gè)問

題。

(1).器件的布局原則

。器件布局是指在線路板上布置元器件的位置。在電

路板設(shè)計(jì)時(shí)應(yīng)合理地分區(qū),如強(qiáng)、弱信號(hào),數(shù)字、

模擬信號(hào),輸入、輸出通道等安排在不同區(qū)域,盡

可能使干擾源(如電機(jī)、繼電器)與敏感元件(如單片

機(jī))遠(yuǎn)離,應(yīng)考慮走線的密度均衡、發(fā)熱均衡等因素。

除了按用戶要求的鍵盤、顯示等器件的位置已確定

外,其他器件最好是環(huán)繞CPU或在CPU引出的總線

兩側(cè)。

(2).布線原則1

①布線時(shí)應(yīng)注意大電流線路的線徑應(yīng)確??梢酝ㄟ^

該電流,并有一定余量,在可能的情況下盡量加大

線徑。

②走線要合理,地線構(gòu)成閉環(huán)多數(shù)情況下能明顯地

提高抗干擾能力。

③三總線分開,減少互感振蕩。.一■

。④模擬地與數(shù)字地分開走線,最后在一點(diǎn)處匯合(一

點(diǎn)接地)。

(2).布線原則2

?:?⑤單片機(jī)和大功率器件的地線要單獨(dú)接地,

以減少相互干擾。大功率器件盡可能放在電

路板邊緣。

。⑥有條件應(yīng)盡量采用四層以上印制板,中間

兩層為電源及地。

(2).布線原則3

。⑦當(dāng)大電流線寬到一定程度時(shí),由于占用線路板資

源太多,一般采用粗導(dǎo)線“跨接”的方法,這樣不

僅節(jié)省了線路板資源,而且避免了由于大電流導(dǎo)致

線路板被“加熱”。

。⑧走線應(yīng)避免出現(xiàn)直角或銳角,以減少高頻噪聲發(fā)

射。

。⑨注意晶振布線,晶振與單片機(jī)引腳盡量靠近,用

地線把時(shí)鐘區(qū)隔離起來,晶振外殼接地并固定。

(3).電路可靠性措施

。①減少多余的過孔,減少線路板不可靠因素。

。②在允許的范圍內(nèi)盡量加大線和線、線和盤(焊盤)、

孔(過孔)和盤的距離。

◎防止叁路板制作時(shí)的毛刺及阻焊材料不良造成的

諳接問施或隱患。

。④盡量采用獨(dú)立系統(tǒng)結(jié)構(gòu),減少接插件與連線,提

高可靠性,減少故障率。

⑤集成塊最好直接焊在印制板上,防止器件接觸不

良故障。必須用插座的集成塊與插座接觸要可靠,

如采用雙簧插座。

。⑥對(duì)于單片機(jī)閑置的口,不要懸空,根據(jù)要求上

拉至高電平或下拉至I低/O電平,有囪可以直接接地或

接電源,其他I/O的閑置端在不改變系統(tǒng)邏輯的情況

下也要如此處理。

4.可靠性設(shè)計(jì)

單片機(jī)應(yīng)用系統(tǒng)的可靠性是指在指定的應(yīng)用環(huán)境和

條件下,系統(tǒng)穩(wěn)定工作的能力。

單片機(jī)應(yīng)用系統(tǒng)由于具有很高的性能價(jià)格比,已逐

步深入到各個(gè)領(lǐng)域,對(duì)單片機(jī)系統(tǒng)工作的可靠性也

就提出了越來越高的要求。因?yàn)橄到y(tǒng)一旦出現(xiàn)問題,

將帶來一系列損失,產(chǎn)生嚴(yán)重的后果。

提高系統(tǒng)的可靠性可以從兩方面入手,一方面從硬

件設(shè)計(jì)角度提高系統(tǒng)抗干擾能力,另一方面從軟件

角度提高系統(tǒng)的可靠性。具體措施在下一節(jié)詳述。

5保密性設(shè)計(jì)

:單片機(jī)應(yīng)用產(chǎn)品多數(shù)采用雙面板,線路板上走線一

目了然,很容易將線路板測(cè)繪出來。保密設(shè)計(jì)多采

用以下兩種方法:

。(1).程序加密:將程序固化在單片機(jī)內(nèi)部的方法。選

用內(nèi)含程序存儲(chǔ)器帶“加密”位的單片機(jī),這樣做

的結(jié)果是使得解密變得麻煩,提高解密成本。

(2),可編程邏輯陣列加密:PAL、GAL等小規(guī)??删?/p>

程邏輯陣列在單片機(jī)應(yīng)用系統(tǒng)中很實(shí)用,可以直接

取代TTL組合邏輯,且多數(shù)PAL、GAL器件可以設(shè)

置加密(不可讀),使“仿制”者不能輕易得手。

6硬件線路板的焊接與測(cè)試

。⑴.線路測(cè)試

?:*PCB板生產(chǎn)出來后,首先要目測(cè),觀察線路

板有無斷線、毛刺、焊盤/過孔偏心、線路

搭接等問題(一般的線路板生產(chǎn)廠在出廠前均

作過檢查);其次根據(jù)打印出的網(wǎng)絡(luò)表逐個(gè)檢

查每個(gè)網(wǎng)絡(luò)是否導(dǎo)通。

Q提示:由于一般情況下都不會(huì)有問題,很多

開發(fā)者都不愿做上述煩瑣的工作。但是將元

件焊上后,一旦發(fā)現(xiàn)問題再查線路時(shí),由于

在板元件的影響,檢查難度很大。

6硬件線路板的焊接與測(cè)試

.:.(2),元件焊接

?:?對(duì)于產(chǎn)品開發(fā),IC多采用焊IC座的方法,便于線路

修改。如果是批量生產(chǎn)的產(chǎn)品,除了易損壞的IC之

外,為了確保硬件線路的可靠性,應(yīng)把IC直接焊在

線路板上。在元件焊接時(shí),要注意避免漏焊、錯(cuò)焊

禾口及旱

。思善:。手工焊接水平的提高需要很好的訓(xùn)練。

.:?(3).局部線路測(cè)試

*局部線路測(cè)試是通過編寫測(cè)試程序,檢查局部硬件

線路能否正常工作。如果不能正常工作需查找問題

笄解決。

11.1.3軟件設(shè)計(jì)

?:?軟件設(shè)計(jì)是對(duì)我們耐心和毅力的考驗(yàn),許多

細(xì)節(jié)問題是比較繁瑣的。首先要進(jìn)行軟件任

務(wù)劃分,數(shù)據(jù)類型規(guī)劃,資源使用約定,模

塊功能定義以及模塊接口定義等軟件總體設(shè)

計(jì)工作。軟件的開發(fā)過程可以套用軟件工程

的要求。除此之外,還有一些單片機(jī)系統(tǒng)開

發(fā)的特殊性。

1軟件設(shè)計(jì)的前期準(zhǔn)備

?(1).模塊功能定義

主要是根據(jù)項(xiàng)目的功能要求來確定整個(gè)程序的功能,

并將這些功能分解成若干子功能,確定完成這些功

能的程序模塊,還要確定各個(gè)模塊之間的關(guān)系和數(shù)

據(jù)傳遞方式等,使其成為一人有機(jī)的整體。模塊功

能定義包括:?jiǎn)纹瑱C(jī)的初始化模塊、主控程序模塊、

程序中使用的一些模塊/子程序/中斷月修子程序

母。規(guī)定其執(zhí)行(觸發(fā))條件、入口/出口頭數(shù)、子

程序完成的具體功能等。這些計(jì)劃在具體編程的過

程中還有可能進(jìn)行局部修改。

1軟件設(shè)計(jì)的前期準(zhǔn)備

*(2).規(guī)劃數(shù)據(jù)類型并形成數(shù)據(jù)類型字典

?規(guī)劃數(shù)據(jù)類型是為了保證數(shù)據(jù)類型的一致性。數(shù)據(jù)類型可以

分為邏輯型和數(shù)值型,邏輯型數(shù)據(jù)通常歸入軟件標(biāo)志,數(shù)值

類型可分為定點(diǎn)數(shù)和浮點(diǎn)數(shù)。使用定點(diǎn)數(shù)的優(yōu)點(diǎn)是直觀、編

程簡(jiǎn)單,缺點(diǎn)是數(shù)值范圍小。浮點(diǎn)數(shù)則相反。還要進(jìn)一步規(guī)

定數(shù)據(jù)是二進(jìn)制還是BCD碼或壓縮BCD碼。如果是定點(diǎn)數(shù)還

要指明是定點(diǎn)整數(shù)還是定點(diǎn)小數(shù)。參數(shù)的數(shù)據(jù)類型確定了以

后,需形成數(shù)據(jù)類型字典,供編程時(shí)查閱。制定規(guī)劃還要留

有一定的余地,以便編程過程中根據(jù)需要來增減。

1軟件設(shè)計(jì)的前期準(zhǔn)備

*(3).內(nèi)存資源分配的確認(rèn)

?:?硬件設(shè)計(jì)中已經(jīng)將單片機(jī)的資源基本分配完畢,軟件設(shè)計(jì)中

的資源分配主要是將還未具體分配的各RAM單元進(jìn)行合理分

配,尤其是片內(nèi)RAM。例如,規(guī)定工作寄存器的使用。規(guī)定

需要使用哪些標(biāo)志,占用從20H開始的幾個(gè)字節(jié)用來存放這

些標(biāo)志位。其余RAM單元可以存放字節(jié)信息(包括20H到2FH

單元未被用于標(biāo)志的單元),這些單元的使用還要扣除堆棧

區(qū)。單片機(jī)內(nèi)部其他RAM單元對(duì)多數(shù)開發(fā)應(yīng)用來說是夠用的。

51子系列內(nèi)部RAM單元不夠用可以用52子系列,應(yīng)確保單

片機(jī)內(nèi)部RAM均被用于存放最常用的變量。

1軟件設(shè)計(jì)的前期準(zhǔn)備

。RAM資源初步劃定后,工作進(jìn)程中可能發(fā)現(xiàn)

某些資源分配不盡合理,需要局部改動(dòng)或增

減。RAM資源的管理最好通過偽指令定位的

方法,避免使用直接地址,這樣,可以很方

便地進(jìn)行修改。

?:?程序規(guī)模的估計(jì),因?yàn)閱纹瑱C(jī)的存儲(chǔ)器數(shù)量

有限,再好的程序沒有地方存放也是不行的。

2系統(tǒng)監(jiān)控程序設(shè)計(jì)

.:.監(jiān)控程序其實(shí)就是主程序,監(jiān)控的任務(wù)簡(jiǎn)單地說主要

是調(diào)度:根據(jù)當(dāng)前單片機(jī)內(nèi)、外部的狀態(tài)或發(fā)生的

“事件”,適時(shí)決策,執(zhí)行相應(yīng)的模塊,完成指定

的作業(yè)。

。監(jiān)控程序的結(jié)構(gòu)一般有作業(yè)順序調(diào)度、鍵盤驅(qū)動(dòng)調(diào)

度等方法。前者適用于順序控制類應(yīng)用場(chǎng)合,后者

適用于鍵盤指令型開發(fā)場(chǎng)合。

監(jiān)控程序的設(shè)計(jì)方法常見的有狀態(tài)分析法、狀態(tài)轉(zhuǎn)

移法和事件驅(qū)動(dòng)法等。

3中斷與子程序設(shè)計(jì)

(1).中斷

。在軟件總體設(shè)計(jì)時(shí),合理分配任務(wù),確定哪

些任務(wù)在主程序中實(shí)現(xiàn),哪些任務(wù)在中斷服

務(wù)程序中實(shí)現(xiàn),依據(jù)已定義的功能完成中斷

服務(wù)程序的編寫。在中斷程序中設(shè)置一些處

理標(biāo)志,主程序根據(jù)標(biāo)志進(jìn)行處理,防止中

斷服務(wù)未結(jié)束之前,下一中斷請(qǐng)求又到來,

同級(jí)中斷得不到及時(shí)響應(yīng)。

。中斷服務(wù)程序設(shè)計(jì)時(shí)應(yīng)注意以下三個(gè)問題。

3中斷與子程序設(shè)計(jì)

1(1).中斷

。①現(xiàn)場(chǎng)保護(hù)

。由于中斷服務(wù)程序執(zhí)行時(shí)刻的不確定性,如

果不保護(hù)現(xiàn)場(chǎng)就可能出現(xiàn)中斷返回后其他程

序的執(zhí)行受到“莫名其妙”的影響。設(shè)計(jì)時(shí)

可以先不考慮現(xiàn)場(chǎng)保護(hù),待中斷服務(wù)程序編

寫完成后,列出所有目的操作數(shù),將其中全

局變量扣除,其余均需保護(hù)和恢復(fù)。特殊的

工作寄存器要注意“換區(qū)”的操作,避免

R0?R7的沖突。

3中斷與子程序設(shè)計(jì)

(1).中斷

。②及時(shí)返回,釋放資源

中斷服務(wù)子程序有時(shí)不可能“一步到位”,

以免長(zhǎng)時(shí)間資源獨(dú)占。中斷的目的之一就是

提高響應(yīng)的實(shí)時(shí)性。很多工作可以在主程序

中排隊(duì)處理,中斷服務(wù)程序只需要設(shè)置一個(gè)

任務(wù)標(biāo)志,并將該任務(wù)列入主程序任務(wù)處理

隊(duì)列,及時(shí)釋放中斷資源。這種方式可以理

解為事件驅(qū)動(dòng)程序流程。

3中斷與子程序設(shè)計(jì)

(1).中斷

?:?③避免中斷重入

。在MCS-51系統(tǒng)中,處理器完全依據(jù)IEO、TFO、舊、

TFI、RI和TI這些標(biāo)志位是否為1,觸發(fā)中斷響應(yīng)。

如果用戶在中斷返回前不清除中斷標(biāo)志,就會(huì)造成

中斷重入,即一次中斷請(qǐng)求造成多次、甚至是無休

止的中斷服務(wù),使中斷服務(wù)子程序反復(fù)執(zhí)行而導(dǎo)致

錯(cuò)誤的結(jié)果,另一方面也使其他正常的程序執(zhí)行

“舉步維艱”(每執(zhí)行一條指令后就要被中斷一次)。

?:.避免中斷重入的具體方法可見第五章。

(2).子程序設(shè)計(jì)與子程序調(diào)用

子程序是在功能模塊劃分完成后,進(jìn)一步細(xì)化分解

出來,完成某些功能的程序塊。子程序不是在軟件

總體設(shè)計(jì)時(shí)能夠確定下來的。各個(gè)軟件設(shè)計(jì)組采用

結(jié)構(gòu)化程序設(shè)計(jì)方法時(shí),可以形成各自軟件框圖,

將重疊部分以子程序的形式提取出來,共同約定其

入口、出口參數(shù),這是一種方法。另一種方法是全

部程序編制完成后,在優(yōu)化程序時(shí),將所有可能合

并的程序段或子程序合并成一個(gè)子程序。

(2).子程序設(shè)計(jì)與子程序調(diào)用

由于子程序可能在不同的場(chǎng)合被不同的程序段調(diào)用,

所以子程序的編寫要規(guī)范,程序結(jié)構(gòu)合理、易讀,

不能有漏洞(例如某些場(chǎng)合正常,而另一些場(chǎng)合卻出

錯(cuò)),盡可能少地占用資源。尤其避免制造垃圾,中

間變量(用于暫存的寄存器)盡量使用工作寄存器,

避免占用直接地址單元。

提示:子程序采用何種方式傳遞參數(shù)很重要,需要認(rèn)

真考慮確定。

4軟件抗干擾措施

。與硬件的抗干擾措施一樣,軟件的抗干擾措

施也非常重要,主要包括:軟件陷阱、數(shù)字

濾波等,軟件陷阱在下一節(jié)說明。

5程序調(diào)試

。程序編寫完成后,在軟硬件調(diào)試之前,應(yīng)首先進(jìn)行

程序測(cè)試,確保程序正常運(yùn)行。在軟硬件聯(lián)調(diào)時(shí),

減少故障點(diǎn)的檢出時(shí)間,提高聯(lián)調(diào)效率。

。程序設(shè)計(jì)的全過程分為分析問題、畫流程圖、編輯

程序、程序測(cè)試四個(gè)步驟。前三步只占總工作量的

40%左右,60%以上工作量在調(diào)試上,所以一定要

有充分的思想準(zhǔn)備。

。程序測(cè)試的方法與軟件工程中所述方法是一致的,

可以采用白盒測(cè)試法、黑盒測(cè)試法。

5程序調(diào)試

單片機(jī)的程序調(diào)試工具,主要是使用軟件仿真器。

在軟件仿真器上調(diào)試通過之后,再進(jìn)行與硬件聯(lián)合

調(diào)試。

。程序調(diào)試的有力工具可以說就是PROTEUS。有很

多問題可以在PROTEUS仿真下得以發(fā)現(xiàn)和解決。

提示:由于程序調(diào)試的復(fù)雜性,在多數(shù)情況下,A

們往往滿足于能用即可,滿足于一時(shí)能正常運(yùn)行,

對(duì)偶爾的不正常往往不深追細(xì)究,這樣的產(chǎn)品經(jīng)不

起時(shí)間和條件的考驗(yàn),因而是不可取的。

11.1.4系統(tǒng)調(diào)試

。系統(tǒng)調(diào)試一般是指,在軟件和硬件調(diào)試完成

之后,把二者組合在一起,對(duì)整個(gè)單片機(jī)系

統(tǒng)進(jìn)行調(diào)試。

。這個(gè)過程就是我們的單片機(jī)系統(tǒng)設(shè)計(jì)制作的

最后一步。最終提供給用戶的產(chǎn)品就是在系

統(tǒng)調(diào)試之后定型的。

1一般調(diào)試方法

?:?開發(fā)單片機(jī)產(chǎn)品,往往要使用仿真器,也有的稱為

技客機(jī)或開卷系統(tǒng)。仿真器通過仿真線,連在用戶

板的CPU插座上,可以通俗地理解為仿真器將其

CPU、程序存儲(chǔ)器等資源全部“租借”給了用戶系

統(tǒng)。用戶可以在PC機(jī)上編寫源程序,通過匯編或編

譯程序?qū)⒃闯绦蚍g成機(jī)器碼,通過PC機(jī)接口將機(jī)

番碼佳真錯(cuò)質(zhì)用戶仍皿以指定程序運(yùn)行到哪

里,并通過PC機(jī)的顯示器觀察單片機(jī)內(nèi)部資源的變

化情況(外部情況通過用戶板上的數(shù)碼管、LED可以

觀察到)。

1一般調(diào)試方法

。仿真器也可以不連用戶板,僅進(jìn)行軟件運(yùn)行

測(cè)試。通過設(shè)置斷點(diǎn)運(yùn)行、單步運(yùn)行等方式,

可以“跟蹤”程序的執(zhí)行。仿真器將執(zhí)行結(jié)

果通過串行口回送PC機(jī),在顯示器上,用戶

可以很明了地看到程序運(yùn)行的結(jié)果(甚至每一

步執(zhí)行的結(jié)果),大大地方便了程序的查錯(cuò)、

糾錯(cuò)。圖11?3是一種典型的仿真器與用戶系

統(tǒng)連接示意圖。

圖11-3單片機(jī)開發(fā)系統(tǒng)與用戶系統(tǒng)連接方法

單片機(jī)開發(fā)系統(tǒng)用戶系統(tǒng)

仿

顯示器8w

真o

0x

芯電纜插

340d

頭u

____L_RS2321

—T-I接口

CPU

W

到PC機(jī)器

O插座

H

鍵盤d

B

單片機(jī)開發(fā)系統(tǒng)與用戶系統(tǒng)連接方法

2系統(tǒng)聯(lián)調(diào)

?:?雖然軟硬件均已經(jīng)獨(dú)自完成了各自的測(cè)試,

系統(tǒng)聯(lián)調(diào)問題相對(duì)少得多,但仍不能以為萬

事大吉,調(diào)試的任務(wù)仍很艱巨。

。一般是在仿真器的控制下運(yùn)行用戶程序,測(cè)

試用戶系統(tǒng)的各項(xiàng)功能。系統(tǒng)聯(lián)調(diào)的常見方

法有如下兩種。

2系統(tǒng)聯(lián)調(diào)

?(1).由頂向下的系統(tǒng)聯(lián)調(diào)

。該方法是進(jìn)行整個(gè)系統(tǒng)的全速仿真運(yùn)行,未

出現(xiàn)問題,完成任務(wù);出現(xiàn)問題時(shí),分析問

題可能出現(xiàn)在哪里。分析問題主要側(cè)重于軟

硬件配合時(shí)可能引起的問題,如硬件中斷等。

根據(jù)分析,提出解決方案,著手解決問題。

2系統(tǒng)聯(lián)調(diào)

。(2).自底向上的系統(tǒng)聯(lián)調(diào)

。該方法是分模塊進(jìn)行局部的仿真運(yùn)行,排除

了局部故障點(diǎn)后,再進(jìn)行系統(tǒng)全速仿真運(yùn)行,

直到符合要求為止。

提示:系統(tǒng)調(diào)試是研制工作的最后關(guān)口,必須保

證所有功能都正確可靠.

11.1.5程序固化

。在仿真完成后,需要將程序固化在單片機(jī)片

外或片內(nèi)。這時(shí)候就需要使用編程器了,它的

型號(hào)很多,檔次差別也很大,具體用法請(qǐng)查閱編

程器附帶的使用說明書.

1、程序固化在片外

。如果采用EPR0MQ7系列)芯片,一般需要使

用EPROM擦除器將原來的內(nèi)容擦除掉,然后

用編程器對(duì)EPROM編程。一般EPROM芯片

的擦除次數(shù)在10次左右。

?:?現(xiàn)在有很多EEPROM芯片可以選用,使用方

便,可擦寫次數(shù)大多在1000次以上。

2、程序固化在片內(nèi)

。如果單片機(jī)是EPROM類型的,同樣需要進(jìn)行

前述的“擦除”。

《?FLASH型器件擦除就簡(jiǎn)單得多了,可以直接

在編程器上“擦除”,這也是FLASH型器件

被廣泛應(yīng)用的原因之一。

2、程序固化在片內(nèi)

由上可知27系列EPROM使用極不方便且無法加密,

壽命又短,所以應(yīng)用越來越少,而片內(nèi)具有Flash存

儲(chǔ)器的單片機(jī)得到越來越廣泛的使用,本書經(jīng)常使

用的AT89c51就是這種。

。最近幾年新推出的AT89s51還可以在系統(tǒng)編程,使

用非常簡(jiǎn)單的下載線就可以完成擦除、寫入等工作。

。順便提一下,最近幾年還有的單片機(jī)帶有JTAG接

口,不但可以在系統(tǒng)編程,還可以在系統(tǒng)調(diào)試。

11.1.6產(chǎn)品驗(yàn)收與交付使用

。固化好的程序在集成電路芯片里,將電路插

到用戶板,通電運(yùn)行,如果沒有問題,就大

功告成;如果有問題,可能就是大問題,必須

要找到原因徹底解決,直到?jīng)]有問題為止。

。到現(xiàn)場(chǎng)實(shí)際使用,沒有問題,就可以交付用

戶了。需要提起注意的一個(gè)問題是:有許多

行業(yè)的儀器設(shè)備是有標(biāo)準(zhǔn)的,包括行業(yè)標(biāo)準(zhǔn)、

國家標(biāo)準(zhǔn)、國際標(biāo)準(zhǔn)等。

11.1.6產(chǎn)品驗(yàn)收與交付使用

盡管并非所有的項(xiàng)目均要技術(shù)鑒定(取決于合同約定

等因素),但產(chǎn)品驗(yàn)收是必要的,驗(yàn)收表明了用戶對(duì)

開發(fā)方產(chǎn)品的認(rèn)可。如果說合同簽訂是任務(wù)的開始,

產(chǎn)品驗(yàn)收則標(biāo)志著任務(wù)的結(jié)束。在產(chǎn)品驗(yàn)收時(shí),應(yīng)

依據(jù)合同規(guī)定,逐條落實(shí),并最終向用戶交付產(chǎn)品

及產(chǎn)品使用說明書等有關(guān)文檔。

、忠告:產(chǎn)品開發(fā)初期的合同與交付使用時(shí)的驗(yàn)收?qǐng)?bào)

告,是供需雙方簽訂的非常重要的文件,對(duì)于解決

未來雙方可能產(chǎn)生的糾紛能起到很好的幫助作用。

11.2抗干擾設(shè)計(jì)

單片機(jī)應(yīng)用系統(tǒng)的可靠性是指在指定的應(yīng)用環(huán)境和

條件下,系統(tǒng)穩(wěn)定工作的能力。

單片機(jī)應(yīng)用系統(tǒng)由于具有很高的性能價(jià)格比,已逐

步深入到各個(gè)領(lǐng)域,對(duì)單片機(jī)系統(tǒng)工作的可靠性也

就提出了越來越高的要求。因?yàn)橄到y(tǒng)一旦出現(xiàn)問題,

將帶來一系列損失,產(chǎn)生嚴(yán)重的后果。

單片機(jī)應(yīng)用系統(tǒng)的工作環(huán)境(如溫度、濕度、電壓擾

動(dòng)、電磁干擾、機(jī)械振動(dòng)等)往往是很惡劣的,在系

統(tǒng)開發(fā)中,應(yīng)確保不受環(huán)境條件的影響。

形成干擾的基本要素有三個(gè):

.干擾源:指產(chǎn)生干擾的元件、設(shè)備或信號(hào),如雷

電、繼電器、可控硅、電機(jī)、高頻時(shí)鐘等都可能成

為干擾源。

。2.傳播路徑:指干擾從干擾源傳播到敏感器件的通

路或媒介。典型的干擾傳播路徑是通過空間的輻射、

導(dǎo)線的傳導(dǎo)和過程通道。

?:*3,敏感器件:指容易被干擾的對(duì)象,如A/D轉(zhuǎn)換器、

D/A轉(zhuǎn)換器、單片機(jī)、數(shù)字1C、弱信號(hào)放大器等。

11.2.1硬件抗干擾

。在硬件設(shè)計(jì)中,提高系統(tǒng)可靠性的主要措施

有:采用抗干擾措施,提高系統(tǒng)的環(huán)境適應(yīng)

能力;把好元件質(zhì)量關(guān),元器件經(jīng)篩選、老

化后使用;印制板設(shè)計(jì)應(yīng)充分考慮可靠性等。

。抑制干擾主要還是要從現(xiàn)場(chǎng)的環(huán)境實(shí)際出發(fā),

認(rèn)真分析可能的干擾,一定要深入現(xiàn)場(chǎng)考察

與分析,避免閉門造車,具體情況還要具體分

析。

1.供電系統(tǒng)■穩(wěn)壓電源

。在供電系統(tǒng)設(shè)計(jì)中,一般的應(yīng)用場(chǎng)合可以采

取同時(shí)使用工頻變壓器、全橋、三端穩(wěn)壓的

方法,電路如圖11—4所示。三端穩(wěn)壓器件由

3個(gè)引腳組成,分別為:電源輸入、穩(wěn)壓電源

輸出和地。三端穩(wěn)壓器件通常要求輸入電壓

要比穩(wěn)壓輸出電壓高2?3V以上,才能確保

輸出電壓穩(wěn)定。

圖11—4變壓、整流、穩(wěn)壓電路

MC7805T

-220V+5V

T.T

1.供電系統(tǒng)■穩(wěn)壓電路

。一般在三端穩(wěn)壓器件輸入、輸出端都要使用一個(gè)

0.01/pF的高頻瓷片電容和一個(gè)幾百微法或幾千

微法的電解電容,使用電解電容時(shí),應(yīng)注意選擇的

電容的耐壓值應(yīng)有1倍以上的富余量。

。采用上述方法電路簡(jiǎn)單、實(shí)用,輸出紋波小,但電

源效率比較低,對(duì)浪涌、過壓、欠壓等抑制效果比

較差。目前較廣泛地采用開關(guān)電源或電源模塊,如

AC-DC模塊、DC-DC模塊等方法。提醒一句,開關(guān)

電源的紋波系數(shù)比較大,特別精密的場(chǎng)合要注意。

?當(dāng)系統(tǒng)有多塊線路板組成時(shí),盡量采用每塊線路板

獨(dú)自穩(wěn)壓的方法。避免線路板電源間的相互干擾,

多板結(jié)構(gòu)獨(dú)自穩(wěn)壓原理如圖11—5所示。

圖11—5多板結(jié)構(gòu)獨(dú)自穩(wěn)壓原理

DC12V

1.供電系統(tǒng)■過壓欠壓保護(hù)

。供電系統(tǒng)過壓、欠壓的抑制方法可以采用穩(wěn)

壓器、電源調(diào)節(jié)器。對(duì)停電可以采用UPS(不

間斷電源)或用靜態(tài)RAM輔以可充電電池備份

重要運(yùn)行參數(shù),也有些系統(tǒng)采用E2PR0M保

存參數(shù)。

2.過程通道抗干擾■概述

。由于過程I/O通道是單片機(jī)與控制對(duì)象聯(lián)系的

紐帶,所以避免現(xiàn)場(chǎng)強(qiáng)信號(hào)對(duì)單片機(jī)系統(tǒng)弱

信號(hào)的干擾是成功開發(fā)單片機(jī)應(yīng)用系統(tǒng)的關(guān)

鍵。

。從干擾的分類來說,無外乎串模和共模干擾

兩種,解決過程I/O通道干擾可以從以下幾個(gè)

方面著手。

2.過程通道抗干擾■方法

?1.隔昌:

。目前很多的應(yīng)用場(chǎng)合均采用光耦實(shí)現(xiàn)電氣隔離。

2.屏蔽

。采用屏蔽的方法可以避免空間電磁干擾,注意屏蔽

縣應(yīng)接鈿。

。3.“地”的正確處理?

單片機(jī)應(yīng)用系統(tǒng)的“地線”有很多,應(yīng)仔細(xì)區(qū)分,

恰當(dāng)處理。

2.過程通道抗干擾■地線

?(1)數(shù)字地:也稱為邏輯地,為邏輯芯片如8031、8155等芯

片提供工作電源的零電位。

?(2)模擬地:A/D、D/A轉(zhuǎn)換模擬部分的地,如參考電壓、模

擬輸入等的零電位。

(3)功率地:大功率器件的零電位,如大繼電器(電流較大時(shí))、

接觸器等的零電位。

?(4)信號(hào)地:一般常指?jìng)鞲衅鞯牡亍?/p>

(5)交流地:50Hz交流電源的地線(對(duì)于三相交流電源來說就

是中線)。

(6?并敝地:屏敝層的接地端。

2.過程通道抗干擾■接地

。正確的接地能有效地保證少受干擾。例如,

數(shù)字地和模擬地應(yīng)分開走線,可以不共地,

共地時(shí),應(yīng)保證兩地線僅在一點(diǎn)處匯合(一點(diǎn)

接地),不能形成環(huán)路。交流地和信號(hào)地不能

共用。機(jī)殼可接地但不能形成地線環(huán)路。特

別注意,不良的接地方法可能使系統(tǒng)僅能在

實(shí)驗(yàn)室試驗(yàn)運(yùn)行,一到現(xiàn)場(chǎng)就無法工作。

2.過程通道抗干擾■信號(hào)傳輸

。在長(zhǎng)距離信號(hào)傳送時(shí),采用雙絞線方式傳送,或者

轉(zhuǎn)換成。?20mA電流傳輸方式,還可以使用屏蔽導(dǎo)

線,也可以改變信號(hào)的傳輸方式以避開強(qiáng)干擾信號(hào)

源等等。具體情況比較復(fù)雜,要根據(jù)情況分別對(duì)待,

或者采用采用幾種方法的綜合措施,最終必須達(dá)到

使用要求。

提示:這一方面的進(jìn)展很快,新技術(shù)、新方法、新

器件不斷出現(xiàn),我們要及時(shí)跟蹤最新進(jìn)展,采用先

進(jìn)技術(shù),使得我們的單片機(jī)系統(tǒng)性能更好,性價(jià)比

更高。

3.硬件抗干擾幾種常用手段(1)pP監(jiān)控

。常用TL7705電源監(jiān)視芯片來監(jiān)測(cè)電壓。

爭(zhēng)TL7705電源監(jiān)視如圖11—6所示,其中SENSE為

電源監(jiān)視端,當(dāng)SENSE上的電壓小于4.5V時(shí),

心釘輸出低電平(產(chǎn)生下降沿),向單片機(jī)申請(qǐng)中

斷,在中斷服務(wù)程序中進(jìn)行一些保護(hù)重要數(shù)據(jù)的工

作送后使單片機(jī)進(jìn)入休眠或掉電狀態(tài)。

?RESET:復(fù)位輸出,低電平有效,0C開路,需上

拉電阻。|

?RESIN:復(fù)位輸入端,輸入低電平時(shí),強(qiáng)制復(fù)位輸}

出端。!

3.硬件抗干擾幾種常用手段(1)kiP監(jiān)控

圖11—6TL7705電源監(jiān)視

3.硬件抗干擾幾種常用手段(1)pP監(jiān)控

。隨著芯片集成度不斷提高,工程技術(shù)人員往

往熱衷于既能提供IJP監(jiān)控,又能提供其他功

能的芯片。如MAXIM公司的MAX807,它將

電源監(jiān)視與看門狗集成到一起,提供定時(shí)、

電源切換等多種功能?,F(xiàn)在還有的芯片把監(jiān)

控和EEPROM集成在一起,性價(jià)比更高。比

如X2504系列芯片。

3.硬件抗干擾幾種常用手段(2)硬件看門狗

。使用硬件看門狗的主要目的是防止程序執(zhí)行受到干

擾,不能按正常的流程執(zhí)行的一種監(jiān)視芯片。所謂

“看門狗”,就是一個(gè)定時(shí)器,定時(shí)時(shí)間到,它就

輸出一個(gè)信號(hào),使單片機(jī)復(fù)位。

。所謂“喂狗”,就是把定時(shí)器的計(jì)數(shù)值清除。只要

按時(shí)喂狗,定時(shí)器就不會(huì)到達(dá)定時(shí)時(shí)間,單片機(jī)就

不會(huì)復(fù)位。如果程序“跑飛”,或者進(jìn)入死循環(huán),

不能按時(shí)喂狗,就會(huì)復(fù)位。使單片機(jī)重新開始正常

工作。

3.硬件抗干擾幾種常用手段(2)硬件看門狗

例如,XICOR公司的X25043/45就是將看門狗電

路與復(fù)位電路(含手動(dòng)/上電復(fù)位)以及4KB的串行

EEPROM集成在一起的芯片。X25045典型應(yīng)用如

圖11-7所不。

?:.美國DALLAS公司生產(chǎn)的“看門狗(WATCHDOG)”

集成電路DS1232具有性能可靠、使用簡(jiǎn)單、價(jià)格

低廉的特點(diǎn),應(yīng)用在單片機(jī)產(chǎn)品中能夠很好的提高

硬件的抗干擾能力,采用8腳DIP封裝。

3.硬件抗干擾幾種常用手段(2)硬件看門狗

%c

swJO-■RESET>

復(fù)位,X25045

按鍵

19SO■IPl.3>

-RESET

SIYPl.lI

10kI

SCK<Pl.2】

IVcc

―?CS<PIO

CWP

圖11—7X25045典型應(yīng)用

3.硬件抗干擾幾種常用手段(3)退(去)耦電容

。每個(gè)芯片電源進(jìn)線處盡可能接一個(gè)

104(0.1")或103(0.01")的退耦電容(可

以用陶瓷電容,目前使用較多的是獨(dú)石電容)。

每隔5個(gè)左右芯片安置一個(gè)1一10/pF的膽

(電解)電容,因?yàn)檫@種電容的高頻阻抗很小,

對(duì)噪聲抑制效果很好。

3.硬件抗干擾幾種常用手段(4),續(xù)流二極管

。在繼電器線圈兩端增加續(xù)流二極管,消除線

圈斷開時(shí)產(chǎn)生的反電動(dòng)勢(shì)干擾。僅加續(xù)流二

極管會(huì)使繼電器的斷開時(shí)間滯后,若再增加

穩(wěn)壓二極管,則可改善響應(yīng)速度,消除滯后

性。在繼電器觸點(diǎn)兩端應(yīng)并接火花抑制電路,

減小電火花影響。

3.硬件抗干擾幾種常用手段

(5).瞬態(tài)電壓抑制器TVS

瞬態(tài)電壓抑制器(TransientVoltage

Suppressor,簡(jiǎn)稱TVS),使用TVS二極管進(jìn)

行浪涌保護(hù)比使用壓敏電阻優(yōu)越得多,具有

響應(yīng)時(shí)間快,瞬態(tài)功率大,漏電流低,擊穿

電壓偏差小,箝位電壓易于控制,有效地保

護(hù)電子線路中的精密元器件,免受各種浪涌

脈沖對(duì)元器件造成的損壞。

11.2.2軟件抗干擾措施

。與硬件的抗干擾措施一樣,軟件的抗干擾措

施也非常重要,軟件設(shè)計(jì)中,可以通過增加

系統(tǒng)的自檢,重要參數(shù)備份,設(shè)置軟件陷阱,

模擬量輸入采用軟件濾波等手段提高系統(tǒng)的

可靠性。這里只對(duì)一些常用的方法加以討論。

1.軟件自檢■開機(jī)自檢

。軟件抗干擾還可以在上電復(fù)位后,調(diào)用自檢子程序,

檢測(cè)單片機(jī)內(nèi)部資源和外部擴(kuò)展電路能否正常工作,

自檢正常后才進(jìn)一步執(zhí)行其他程序,否則提示故障

點(diǎn)。這是檢查硬件的情況,需要硬件的配合,在硬

件設(shè)計(jì)的時(shí)候就要考慮到自檢的需要,以確保電路

能正常工作。這一部分比較麻煩,請(qǐng)自行參考有關(guān)

硬件資料,此不多述。

1.軟件自檢■數(shù)據(jù)備份

。由于單片機(jī)內(nèi)部RAM單元存放著重要的標(biāo)志和數(shù)據(jù),

一旦受擾引起標(biāo)志數(shù)據(jù)的改變,勢(shì)必造成系統(tǒng)運(yùn)行

異常。防止標(biāo)志位受擾可以采用定期檢查標(biāo)志合法

性的方法,發(fā)現(xiàn)干擾及時(shí)處理,例如發(fā)現(xiàn)不可能出

現(xiàn)的標(biāo)志組合及時(shí)處理。也可以采用標(biāo)志冗余的方

法,借助冗余標(biāo)志,進(jìn)行標(biāo)志位異常判定和糾錯(cuò)。

防止數(shù)據(jù)受擾可以采用熱備份的方法,適時(shí)比照、

判定并包錯(cuò)。

。在保護(hù)單片機(jī)內(nèi)部RAM時(shí)經(jīng)常使用雙重備份、表決

糾錯(cuò)的方法,將單片機(jī)內(nèi)部RAM單元數(shù)據(jù)作兩個(gè)熱

備份,一旦發(fā)現(xiàn)三個(gè)數(shù)不相同就采取表決的方式確

定正確的數(shù)據(jù)。

2.軟件陷阱

?電磁干擾除了會(huì)對(duì)測(cè)量物理量的結(jié)果產(chǎn)生影響之外,

還能直接影響程序的正常運(yùn)行。正常執(zhí)行程序時(shí),

CPU按照PC中的數(shù)值(地址)到ROM甲..去..取..指..令。

受到干擾時(shí),一般可能使程序計(jì)數(shù)器PC的數(shù)值改變,

或者其輸出的地址信號(hào)受到干擾而改變,到不該去

的地址取指令(稱為“跑飛”)o為了防止造成災(zāi)

難性的后果,在進(jìn)行系統(tǒng)設(shè)計(jì)時(shí),可以在硬件和軟

件方面分別加以考慮。硬件方面前已述及,現(xiàn)在介

紹一些軟件方面的方法。

。對(duì)于MCS-51系列單片機(jī),其程序存儲(chǔ)器的地址空

間為64K,通常只使用了部分地址空間存放程序代

碼利數(shù)據(jù),可以把64K的地址空間分為“空閑”和

“非空閑”ROMo

2.軟件陷阱⑴.空閑的ROM空間

。對(duì)于空閑的ROM空間,正常操作時(shí)是不會(huì)使用的。

但是在強(qiáng)干擾的情況下也可能到空閑的ROM空間去

取指令,即“跑飛”。故此應(yīng)該在空閑的ROM空間

存入適當(dāng)指令,在程序跑飛到那里時(shí)能夠回到正常

區(qū)域或者進(jìn)入錯(cuò)誤處理程序,這種方法稱為軟件陷

阱??梢蕴钊氲闹噶畲a有以下幾種形式:

①.填入000000000000.......

。這是空操作指令,進(jìn)入此區(qū)域時(shí)不進(jìn)行任何操作,

逐步執(zhí)行到FFFFH后,就會(huì)回到0000H,這是復(fù)位

入口地址,重新開始正常程序。

2.軟件陷阱⑴.空閑的ROM空間

.:.②.填入020000020000020000..............

。這是無條件長(zhǎng)轉(zhuǎn)移指令,會(huì)直接轉(zhuǎn)移到0000H,立

即進(jìn)入復(fù)位狀態(tài)。

③.填入020202020202020202..............

。這是無條件長(zhǎng)轉(zhuǎn)移指令,當(dāng)從此區(qū)域取指令時(shí),直

接轉(zhuǎn)移到0202H。在0202H單元,我們應(yīng)該編寫

“跑飛”處理程序,或者在此處放置一條轉(zhuǎn)移指令,

轉(zhuǎn)移到跑飛處理程序。如果正常程序用到0202H單

元,必須在0202H單元之前編寫轉(zhuǎn)移指令,越過

0202H即其以后的若干單元,留出作為“非常處理”

的程序入口。

2.軟件陷阱⑴.空閑的ROM空間

。如果程序“跑飛”到?jīng)]有安裝ROM芯片的地

址單元,取到的代碼將是FFH,這是指令

MOVR7,A繼續(xù)執(zhí)行的結(jié)果是,一段時(shí)

間后,回到0000H,進(jìn)入復(fù)位程序。

2.軟件陷阱(2).非空閑的ROM單元

。對(duì)于非空閑ROM單元,一般已經(jīng)存放了程序

代碼和數(shù)據(jù),處理起來比較困難。可以在關(guān)

鍵程序段中加入一些校驗(yàn)的程序段,檢查當(dāng)

前的外部環(huán)境狀態(tài),如果不是屬于本段程序

處理的范圍,就可能是程序跑飛到這里,應(yīng)

該轉(zhuǎn)移到處理跑飛的程序段。

2.軟件陷阱(2).非空閑的ROM單元

*另外,由于有些指令是2?3個(gè)字節(jié),當(dāng)PC內(nèi)數(shù)值跑

飛時(shí),也有可能把這種指令的一部分當(dāng)作完整的指

令來執(zhí)行,同理也有可能把數(shù)據(jù)部分當(dāng)作指令代碼

來執(zhí)行,這樣執(zhí)行起來,程序就面目全非了。當(dāng)我

們?cè)谌我獾刂穼?duì)機(jī)器代碼進(jìn)行反匯編時(shí),經(jīng)??梢?/p>

看到這種不可理解的現(xiàn)象。為了盡量減少這種現(xiàn)象

的發(fā)生,可以在指令中間加入一些NOP指令使CPU

取幾條指令以后,一般可以納入正軌,按照原來的

指令位置取指令。

3、重復(fù)輸出指令

一般單片機(jī)的掃描周期為幾個(gè)毫秒,萬一某個(gè)輸出

指令受到干擾出現(xiàn)錯(cuò)誤動(dòng)作,重復(fù)的輸出指令會(huì)在

短時(shí)間內(nèi)糾正這個(gè)錯(cuò)誤,一般的外設(shè)動(dòng)作速度比較

慢,可能是錯(cuò)誤的動(dòng)作還沒有執(zhí)行就被糾正了。這

種方法對(duì)于電磁類執(zhí)行機(jī)構(gòu)效果很好。

注意:使用任何一種抗干擾措施,都要與當(dāng)時(shí)的客

觀環(huán)境相適應(yīng),才會(huì)取得理想的結(jié)果,不可生搬硬

套。往往需要幾種方法綜合應(yīng)用會(huì)取得互補(bǔ)的作用。

11.3應(yīng)用舉例

。本節(jié)以自動(dòng)打鈴器為例,講解MCS—51系列單片機(jī)

的一個(gè)應(yīng)用項(xiàng)目的設(shè)計(jì)過程。這只是一個(gè)非常小的

應(yīng)用項(xiàng)目,電路比較簡(jiǎn)單,功能比較簡(jiǎn)單,程序規(guī)

模也不大,要求也不是很嚴(yán)格,工作環(huán)境也比較好,

所以設(shè)計(jì)起來也容易。但是,只要你能夠完成這個(gè)

簡(jiǎn)單的項(xiàng)目,就算是入門了,也就可以完成更復(fù)雜

的項(xiàng)目。這里給出的只是一個(gè)示例,并不一定是最

好的方案,更不是唯一的方案。

11.3.1用戶需求分析和總體設(shè)計(jì)

。大多單位都有比較固定的作息時(shí)間,尤其是學(xué)校,

要按時(shí)打鈴,以指揮師生員工上課、下課等統(tǒng)一行

動(dòng)?,F(xiàn)在我們可以利用單片機(jī)設(shè)計(jì)自動(dòng)打鈴器,在

預(yù)定侑時(shí)間打鈴。

。這項(xiàng)該計(jì)涉及到單片機(jī)的定時(shí)器、中斷、鍵盤蒯入、

LCD藪碼和字符顯示、12c總線、單總線、開夾量

輸出等內(nèi)容。

考慮實(shí)訓(xùn)時(shí)間和篇幅限制,這里只要求自動(dòng)打鈴。|

如果覺得內(nèi)容不夠,還可以增加環(huán)境溫度的測(cè)量、

顯示以及語音報(bào)時(shí)等等。

1、根據(jù)用戶要求確定設(shè)計(jì)任務(wù)書

根據(jù)實(shí)際情況,(經(jīng)過用戶認(rèn)可)我們確定的設(shè)計(jì)

任務(wù)書如下:

?:?產(chǎn)品名稱:自動(dòng)打鈴器

產(chǎn)品功能:

每天一次循環(huán),按照作息時(shí)間表自動(dòng)打鈴;

2、每次打鈴電鈴響十秒(最好可以修改);

?:.3、每天打鈴次數(shù)在32次以內(nèi);

?:*4、作息時(shí)間輸入修改要方便;

1、根據(jù)用戶要求確定設(shè)計(jì)任務(wù)書1

5、實(shí)時(shí)鐘對(duì)表和快慢調(diào)整;

6、實(shí)時(shí)顯示時(shí)分秒;

7、平時(shí)使用220V交流電,停電時(shí)要有備用電池保持時(shí)間和

作息時(shí)間表;

。8、輸出繼電器控制,最大控制電流5安培(220V交流);

9、臨時(shí)打鈴(手動(dòng))。

設(shè)計(jì)周期:2周

+設(shè)計(jì)費(fèi)用:

?其它:

2、總體設(shè)計(jì)

。總體設(shè)計(jì),其中最主要的就是原理設(shè)計(jì)。根

據(jù)設(shè)計(jì)任務(wù)書的要求和現(xiàn)有的技術(shù)條件,在

滿足功能、性能等用戶需求的基礎(chǔ)上,初步

提出可選技術(shù)路線,并對(duì)各方案進(jìn)行必要的

分析,充分聽取方方面面的意見,選擇一種

實(shí)施方案。,

本項(xiàng)目的實(shí)施方案如下:

2、總體設(shè)計(jì)1

?:?選用機(jī)型:AT89C51(可以使用簡(jiǎn)化版

AT89C2051)。這是美國ATMEL公司生產(chǎn)的與

INTEL公司的MCS—51系列全兼容的單片機(jī)產(chǎn)品,

指令兼容,引腳兼容,可以直接代換。其優(yōu)點(diǎn)是片

內(nèi)程序存儲(chǔ)器是電擦寫的,使用方便,耗電少,價(jià)

格低。

時(shí)間顯示:16位X2行的液晶顯示模塊1602,顯示

內(nèi)容比較多。并行口連接。

鍵盤輸入:4個(gè)獨(dú)立式按鍵,分別是對(duì)表、定時(shí)、

臨時(shí)打鈴和上、下、左、右調(diào)整鍵

2、總體設(shè)計(jì)2

。打鈴輸出:經(jīng)二級(jí)晶體管放大驅(qū)動(dòng)12V直流

繼電器,控制220V電源通、斷電鈴。

。系統(tǒng)擴(kuò)展:不需要擴(kuò)展RAM、ROM、和其它

I/O接口,只需要通過12c總線擴(kuò)展一片

24LC16B,用于保存打鈴時(shí)間,以保證掉電

不丟失,免得重新設(shè)置之麻煩。

2、總體設(shè)計(jì)3

電源部分:220V交流電經(jīng)降壓、整流、濾波、穩(wěn)壓,

提供+12V和+5V兩種直流電源,再加可充電電池

作備用電源,停電時(shí)保持時(shí)鐘和作息時(shí)間表。交流

供電時(shí)給電池充電。

。笳在,專用的日歷時(shí)鐘芯片很多,性能也很好,尤

其是精度可以很高,省電,使用方便。如果采用這

類芯片,程序會(huì)減少很多。但是考慮為了更好的熟

悉定時(shí)器的使用,我們還是利用單片機(jī)本身的定時(shí)

器來產(chǎn)生時(shí)間。

。本設(shè)計(jì)的仿真文件:自動(dòng)打鈴器.DSN

本設(shè)計(jì)的簡(jiǎn)要功能說明:

開機(jī)后自動(dòng)進(jìn)入走時(shí)狀態(tài),打鈴時(shí)間到自動(dòng)接

通電鈴電路10秒。

2、按K0鍵進(jìn)入對(duì)表狀態(tài),設(shè)置方法:

按向左或向右移動(dòng)光標(biāo)

?按增加或減少修改光標(biāo)處數(shù)值

。星期的數(shù)值1-7,7代表星期日

星期的英文字符不用修改

5秒鐘不操作自動(dòng)保存修改并返回

本設(shè)計(jì)的簡(jiǎn)要功能說明1:

。3、按K1鍵進(jìn)入定時(shí)打鈴時(shí)間設(shè)定狀態(tài):

001表示第一個(gè)設(shè)定打鈴時(shí)間,最多可以設(shè)置127個(gè)

時(shí)間。方面的星小時(shí)、分和啟用標(biāo)志z啟用標(biāo)志設(shè)

為1裝不時(shí)向有效,到時(shí)疔鈴,啟用標(biāo)志設(shè)為。蓑不

到達(dá)這個(gè)時(shí)間也不打鈴。每次時(shí)間到打鈴10秒,同

時(shí)蜂鳴器響。

。打鈴時(shí)間設(shè)置方法:

?:?按向左或向右移動(dòng)光標(biāo),按增加或減少修改光標(biāo)處

數(shù)值,啟用標(biāo)志的值大于1也算啟用,5秒鐘不操作

自動(dòng)保存修改并返回

11.3.2硬件設(shè)計(jì)

1、原理圖設(shè)計(jì)

。根據(jù)設(shè)計(jì)任務(wù)書和整體設(shè)計(jì)方案,經(jīng)過比較

和計(jì)算,設(shè)計(jì)原理圖如圖11—8直到圖11-11

所示。

?:?單片機(jī)選用AT89c51,DIP40封裝,內(nèi)部有

128字節(jié)的隨機(jī)存儲(chǔ)器,有4K字節(jié)的電擦寫

的程序存儲(chǔ)器,可以反復(fù)擦寫1000次。

圖11—8自動(dòng)打鈴器硬件原理圖(主機(jī)板)

LCD1FM1602

VCC

C1||10PF

U1AT89C51

X11939pQOajnu]--------------------------------------

I---1->XTAL1P0.0/AD038bgfS0UJC/)>OLCXJCO寸ID9Z

-?—6MHzP0.1/AD13(bg??>trorujOOOQOQO0

C2||10PF18P0.2/AD23b

XTAL2P0.3/AD3亞bod

P0.4/AD434加5

P0.5/AD5八

0.6kR1

9P0.6/AD632b"

八RSTP0.7/AD7

21p20R10

P2.0/A822■K11

問憶I_H

旦0產(chǎn)P2.1/A923022?

29P2.2/A1024謎3.

K4斫PSENP2.3/A1125謎4.

------OO—kALEP2.4/A12絲笆5?I—

EAP2.5/A13iffllbI—<>

BUZ12(慳6?

P2.6/A1428邊■

P2.7/A15<10k

1p-T10p3010k

FTI7p-T.OJP3.0/RXD

pTP3.1/IXD

BUZZER-2八

p-TP3.2/USUQU2

p-TP3.3/INT13

p-T.34P3.4/T0-7

vccpT1P3.5ZI1

p-QLJ3①

16P3.6/WRGND?

J1八7P3.7/RDSCK

01SDADS18B20

0WP

0

0

4一724LC16B

SIL-100-04

—阿T00UF

GND

圖11-9打鈴器按鍵

A????

gZLZ)

ODD

ddd

R410kJ=L_?K3向左移動(dòng)

OO~~

R5l0kK2向右移動(dòng)臨時(shí)打鈴

OOi>

-I=L-?K1向下減少定時(shí)設(shè)定

OO"n

RLlOk-l==L?KO向上增加對(duì)表

OO""H

圖11-10打鈴器電源(通用電源模塊)

圖打鈴器繼電器輸出

RL3

OMI-SH-212D

1k

2、原理圖設(shè)計(jì)說明

(1)電源:(如圖11-10)

。這是一個(gè)通用電源模塊,以前用在其它單片機(jī)測(cè)控

系統(tǒng)中,用在自動(dòng)打鈴器也很合適。自動(dòng)打鈴器消

耗電流最大的時(shí)候是打鈴時(shí)恂到,12V直流繼電器接

通同時(shí)打鈴指示LED亮和訊響器響,電流在100毫

安以下(約80毫安),不打鈴的時(shí)候消耗電流只有

十幾個(gè)毫安,給蓄電池充電的電流控制在50毫安以

下,選擇220V5W電源變壓器容量足夠,輸入220V

交流電,輸出12V交流。如果數(shù)碼顯示用LED數(shù)碼

管,則電源變壓器容量應(yīng)該選10W左右。

2、原理圖設(shè)計(jì)說明

(1)電源:(如圖

。整流濾波之后輸出電壓在13V左右,供給繼電器使-

用,木需要穩(wěn)壓。

。后備電源使用6V免維護(hù)鉛酸蓄電池,價(jià)格便宜容量

大,可以支持較長(zhǎng)的停電時(shí)間,只是重量大些。

。為了保護(hù)蓄電池,不使其過充和過放,分別加了保

護(hù)電監(jiān),當(dāng)電池電壓高于7V時(shí)停止充電,當(dāng)電池電

壓低于5V時(shí)停止放電。

。蓄電池的輸出直流電源(5-7V)經(jīng)三端穩(wěn)壓電路

7805后輸出5V經(jīng)二極管降壓后變成4.3V供給單片機(jī),

AT89S51的工作電壓在4V-5.5V之間。

2、原理圖設(shè)計(jì)說明

(2)輸出(如圖11-11)

。打鈴器的輸出由12V直流繼電器控制。繼電器既起

到功率放大的作用也起到強(qiáng)弱電隔離作用。與繼電

器線圈并聯(lián)的紅色LED起到打鈴指示作用,與線圈

反并聯(lián)的二極管是起續(xù)流作用。P1.1的輸出是低電

平有效,可以防止單片機(jī)復(fù)位時(shí)的高電平自動(dòng)響鈴。

P1.1的輸出經(jīng)2級(jí)晶體管放大驅(qū)動(dòng)直流繼電器工作。

?:?訊響器的工作電壓在3—5V,電流10mA左右,通電

就響。AT89c51的并行口可以直接驅(qū)動(dòng),低電平有

效。它的作用也是打鈴指示,同時(shí)它可以在停電的

時(shí)候也工作,提醒時(shí)間到。這就使得這個(gè)自動(dòng)打鈴

器在不接電鈴的時(shí)候成為鬧鐘。

2、原理圖設(shè)計(jì)說明

(3)按鈕(如圖11-9)

。從圖上看總共有5個(gè)按鈕,一個(gè)是復(fù)位按鈕,

手動(dòng)復(fù)位用;其余4個(gè)各占用一位I/O口線,

屬于獨(dú)立式鍵盤,按下是低電平,接在P

溫馨提示

  • 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)論