




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年計(jì)算機(jī)二級(jí)MySQL考試經(jīng)典試題及答案
- 工勤人員法律試題及答案
- 富村銀行面試題目及答案
- 2025年MySQL考試準(zhǔn)備流程試題及答案
- 深入MySQL數(shù)據(jù)完整性約束試題及答案
- 法律知識(shí)考試試題題庫及答案
- C++語言的歷史與現(xiàn)狀試題及答案
- 法律文書試題及答案一
- 邏輯推理與財(cái)務(wù)模型設(shè)計(jì)的關(guān)系試題及答案
- 高效記憶MS Office知識(shí)要點(diǎn)試題及答案
- 租賃電瓶合同范文
- 空氣能合同模板
- 智能家居系統(tǒng)設(shè)計(jì)方案四篇
- 2025年醫(yī)院院感知識(shí)培訓(xùn)計(jì)劃
- 伊犁將軍府課件
- 中醫(yī)護(hù)理不良事件
- 2023版設(shè)備管理體系標(biāo)準(zhǔn)
- 《城市公園配套設(shè)施設(shè)計(jì)導(dǎo)則》
- 安徽省江南十校2023-2024學(xué)年高二下學(xué)期5月階段聯(lián)考化學(xué)A試題
- 第六單元 資本主義制度的初步確立 復(fù)習(xí)課件 2024-2025學(xué)年統(tǒng)編版九年級(jí)歷史上冊(cè)
- 弘揚(yáng)偉大長(zhǎng)征精神-走好今天的長(zhǎng)征路課件
評(píng)論
0/150
提交評(píng)論