版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
MCS-51單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)與設(shè)計(jì)單片機(jī)原理及接口技術(shù)單片機(jī)原理及接口技術(shù)目錄9.1單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)與設(shè)計(jì)9.2抗干擾技術(shù)9.3八路溫度巡檢儀控制系統(tǒng)設(shè)計(jì)9.4步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)9.5出租車計(jì)費(fèi)器控制系統(tǒng)設(shè)計(jì)單片機(jī)原理及接口技術(shù)9.1單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)與設(shè)計(jì)
根據(jù)工業(yè)測(cè)控系統(tǒng)或智能儀器儀表的設(shè)計(jì)要求,采用單片機(jī)為核心,配備一定的存儲(chǔ)器及電子元器件和相應(yīng)的軟件可構(gòu)成單片機(jī)應(yīng)用系統(tǒng)。系統(tǒng)設(shè)計(jì)既是一個(gè)理論問(wèn)題,又是一個(gè)實(shí)際工程問(wèn)題。它包括自動(dòng)控制理論、計(jì)算機(jī)技術(shù)、自動(dòng)檢測(cè)技術(shù)和電子技術(shù)等,是多學(xué)科知識(shí)的綜合運(yùn)用。單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)一般由硬件設(shè)計(jì)和軟件設(shè)計(jì)兩部分組成。硬件設(shè)計(jì)不僅包括單片機(jī)、存儲(chǔ)器及I/O接口,而且還包括鍵盤及開(kāi)關(guān)、檢測(cè)各種輸入量的傳感器、控制用的執(zhí)行裝置、通信接口、打印和顯示設(shè)備等。軟件設(shè)計(jì)要根據(jù)系統(tǒng)的要求,靈活地設(shè)計(jì)所需要的管理、監(jiān)控以及應(yīng)用程序。應(yīng)用程序主要有數(shù)據(jù)采集程序、A/D轉(zhuǎn)換程序、D/A轉(zhuǎn)換程序、數(shù)字濾波程序,以及各種控制算法及非線性補(bǔ)償程序等。
單片機(jī)原理及接口技術(shù)
整個(gè)系統(tǒng)的硬件配置和軟件設(shè)計(jì)是緊密的聯(lián)系在一起的,而且在某些場(chǎng)合,硬件和軟件具有一定的互換性。有些硬件電路的功能可用軟件來(lái)實(shí)現(xiàn),反之亦然。通常情況下,硬件實(shí)時(shí)性強(qiáng),但將使系統(tǒng)增加投資,且結(jié)構(gòu)復(fù)雜,容易受外界干擾;軟件可避免上述缺點(diǎn),但實(shí)時(shí)性較差。為保證系統(tǒng)能可靠工作,在軟、硬件的設(shè)計(jì)過(guò)程中還應(yīng)該包括系統(tǒng)的抗干擾設(shè)計(jì)。
單片機(jī)應(yīng)用系統(tǒng)的開(kāi)發(fā)步驟主要可分為明確任務(wù)、確定技術(shù)指標(biāo)、硬件電路設(shè)計(jì)、軟件程序編制、軟/硬件仿真調(diào)試、可靠性試驗(yàn)和產(chǎn)品化等幾個(gè)階段,但是各階段不是絕對(duì)分開(kāi)的,有時(shí)還需要交叉進(jìn)行,如圖9-1所示。單片機(jī)原理及接口技術(shù)圖9-1單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)步驟單片機(jī)原理及接口技術(shù)
9.1.1系統(tǒng)總體方案設(shè)計(jì)
確定單片機(jī)應(yīng)用系統(tǒng)總體方案,是進(jìn)行系統(tǒng)設(shè)計(jì)最重要、最關(guān)鍵的一步??傮w方案的好壞,直接影響整個(gè)應(yīng)用系統(tǒng)的投資、調(diào)節(jié)品質(zhì)及研發(fā)周期。在實(shí)際應(yīng)用中,被控對(duì)象多種多樣,工藝要求差別很大,系統(tǒng)完成的任務(wù)也千差萬(wàn)別,所以應(yīng)用系統(tǒng)的總體方案必須根據(jù)工藝要求,結(jié)合被控對(duì)象來(lái)制定。但總體方案的設(shè)計(jì)過(guò)程大相徑庭,主要從以下幾個(gè)方面考慮。單片機(jī)原理及接口技術(shù)
1.系統(tǒng)分析,明確任務(wù)
如同任何新產(chǎn)品的設(shè)計(jì)一樣,單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)是從確定目標(biāo)任務(wù)開(kāi)始的。不管是老產(chǎn)品的改造還是新產(chǎn)品的設(shè)計(jì),都應(yīng)對(duì)產(chǎn)品的可靠性、通用性、可維護(hù)性、先進(jìn)性及成本等因素進(jìn)行綜合的考慮。在著手進(jìn)行系統(tǒng)設(shè)計(jì)之前,需對(duì)市場(chǎng)進(jìn)行調(diào)研,了解國(guó)內(nèi)外市場(chǎng)上發(fā)展情況、進(jìn)展程度,是否有人進(jìn)行過(guò)類似的工作。若有,則可分析它人的結(jié)果,了解有什么優(yōu)缺點(diǎn),找出值得借鑒的部分;若沒(méi)有,則需要進(jìn)一步調(diào)研,此時(shí)的重點(diǎn)應(yīng)放在能否實(shí)現(xiàn)這個(gè)環(huán)節(jié),首先從理論上進(jìn)行分析,探討實(shí)現(xiàn)的可能性,所要求的指標(biāo)是否能滿足;其次對(duì)系統(tǒng)的工作環(huán)境準(zhǔn)確評(píng)估,了解存在哪些干擾因素,能否實(shí)現(xiàn)信號(hào)的采集、調(diào)節(jié)和控制等。單片機(jī)原理及接口技術(shù)
2.系統(tǒng)總體方案設(shè)計(jì)
在明確設(shè)計(jì)任務(wù)后,如果可以實(shí)施,必須確定系統(tǒng)是采用開(kāi)環(huán)系統(tǒng)還是閉環(huán)系統(tǒng),或者是數(shù)據(jù)處理系統(tǒng)。如果是閉環(huán)控制系統(tǒng),還須確定出整個(gè)系統(tǒng)是選用直接數(shù)字控制(DDC)、計(jì)算機(jī)監(jiān)督控制(SCC)、或者是選用分布式控制(DCS)等。工作的重點(diǎn)是在該項(xiàng)目的技術(shù)難度上,可參考這一方面更詳細(xì)、更具體的資料,根據(jù)系統(tǒng)的不同要求和要實(shí)現(xiàn)的不同功能,參考國(guó)內(nèi)外同類產(chǎn)品的性能,提出合理、詳盡的技術(shù)指標(biāo),編寫出設(shè)計(jì)任務(wù)書,確定性價(jià)比高的工程技術(shù)方案,并具有系統(tǒng)可靠、人機(jī)界面友好、適合非計(jì)算機(jī)人員操作和容錯(cuò)性能強(qiáng)等特點(diǎn)。單片機(jī)原理及接口技術(shù)
3.硬件和軟件的功能劃分
總體方案一旦確定,下一步的工作就是將該項(xiàng)目明確化,即明確哪些部分用硬件實(shí)現(xiàn),哪些部分用軟件實(shí)現(xiàn)。由于硬件結(jié)構(gòu)與軟件設(shè)計(jì)會(huì)相互影響,因此從簡(jiǎn)化電路結(jié)構(gòu)、降低成本、減少干擾、提高系統(tǒng)的靈活性與通用性方面考慮,提倡軟件能實(shí)現(xiàn)的功能盡可能由軟件來(lái)實(shí)現(xiàn)。但也應(yīng)考慮以軟件替代硬件后會(huì)降低系統(tǒng)的實(shí)時(shí)性、增加系統(tǒng)的處理時(shí)間,而且軟件設(shè)計(jì)費(fèi)用、研制周期也將增加。在一般情況下,如果所研制的產(chǎn)品生產(chǎn)批量較大,且在實(shí)時(shí)性要求允許的情況下,主張能夠用軟件實(shí)現(xiàn)的功能都由軟件來(lái)實(shí)現(xiàn),以便簡(jiǎn)化硬件結(jié)構(gòu)、降低生產(chǎn)成本。但在總體設(shè)計(jì)時(shí),必須權(quán)衡利弊,仔細(xì)劃分好硬件和軟件的功能。單片機(jī)原理及接口技術(shù)
9.1.2硬件設(shè)計(jì)
單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計(jì)主要包括兩部分內(nèi)容:一是單片機(jī)系統(tǒng)擴(kuò)展部分設(shè)計(jì),它包括存儲(chǔ)器擴(kuò)展和接口擴(kuò)展;二是各功能模塊的設(shè)計(jì),如信號(hào)檢測(cè)模塊、信號(hào)控制模塊、人機(jī)接口模塊、通信接口模塊等。并且根據(jù)系統(tǒng)功能要求還需配置相應(yīng)的A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器、鍵盤、顯示器、打印機(jī)等外圍設(shè)備。
所謂硬件電路的總體設(shè)計(jì),是為實(shí)現(xiàn)該項(xiàng)目全部功能所需要的所有硬件的電氣連線原理圖。因?yàn)殡娐返母鞑糠侄际蔷o密相關(guān)、互相協(xié)調(diào)的,任何一部分電路的考慮不充分,都會(huì)給其它部分帶來(lái)難以預(yù)料的影響,所以設(shè)計(jì)時(shí)不能急于求成,過(guò)于倉(cāng)促制板和調(diào)試。
單片機(jī)原理及接口技術(shù)
在進(jìn)行硬件的總體方案設(shè)計(jì)時(shí),所涉及的具體電路可借鑒它人在這方面進(jìn)行的工作。因?yàn)榻?jīng)過(guò)別人調(diào)試和實(shí)驗(yàn)過(guò)的電路往往具有一定的合理性。如果在此基礎(chǔ)上,結(jié)合自己的設(shè)計(jì)目的進(jìn)行一些修改,則是一種簡(jiǎn)便、快捷的做法。當(dāng)然,大部分電路需要自己設(shè)計(jì),完全照搬是不太可能的。
在參考別人的電路時(shí),需對(duì)其工作原理有較為透徹的分析和理解,根據(jù)其工作機(jī)理了解其適用范圍,從而確定
其移植的可能性和需要修改的部分。對(duì)于有些關(guān)鍵和尚不完全理解的電路,需要仔細(xì)分析,在設(shè)計(jì)之前先進(jìn)行試驗(yàn),以確定這部分電路的正確性,并檢驗(yàn)電路的可靠性和測(cè)量是否滿足精度要求。
硬件設(shè)計(jì)的任務(wù)是根據(jù)總體設(shè)計(jì)要求,在所選機(jī)型的基礎(chǔ)上,首先確定系統(tǒng)擴(kuò)展所要用的存儲(chǔ)器、I/O電路以及相關(guān)外圍電路等,然后再設(shè)計(jì)系統(tǒng)的電路原理圖。為使硬件設(shè)計(jì)盡可能合理,根據(jù)經(jīng)驗(yàn),系統(tǒng)的電路設(shè)計(jì)應(yīng)從以下幾個(gè)方面考慮。單片機(jī)原理及接口技術(shù)
1)應(yīng)根據(jù)系統(tǒng)的要求和各種單片機(jī)的性能,選擇最容易實(shí)現(xiàn)產(chǎn)品技術(shù)指標(biāo)的單片機(jī)機(jī)型,而且要求能夠達(dá)到較高的性價(jià)比。單片機(jī)的性能包括片內(nèi)的資源、擴(kuò)展能力、運(yùn)算速度、可靠性等幾個(gè)方面,應(yīng)盡可能地選擇標(biāo)準(zhǔn)化、模塊化的典型電路,提高設(shè)計(jì)的成功率和結(jié)構(gòu)的靈活性。2)在條件允許的情況下,應(yīng)盡可能地選用最新的、功能強(qiáng)和集成度高的電路或芯片。因?yàn)椴捎眉呻娐房梢詼p少元器件、接插件和相互連接線的數(shù)量,體積也會(huì)相應(yīng)減小,使系統(tǒng)可靠性增加,而且成本往往比用多個(gè)元件實(shí)現(xiàn)的電路要低。
3)在設(shè)計(jì)硬件系統(tǒng)總體結(jié)構(gòu)時(shí),要注意選擇通用性強(qiáng)、市場(chǎng)貨源充足的器件。盡可能的對(duì)系統(tǒng)采用模塊化設(shè)計(jì)方法,即將中央控制單元、輸入/輸出接口、人機(jī)接口等功能電路分成獨(dú)立模塊進(jìn)行設(shè)計(jì),然后采用一定的連接方式將其組合成一個(gè)完整的系統(tǒng)。通常情況下,系統(tǒng)選用已有的模塊,有時(shí)成本會(huì)偏高,但可大大縮短研制周期,提高工作效率。單片機(jī)原理及接口技術(shù)
4)系統(tǒng)的擴(kuò)展及各功能模塊的設(shè)計(jì)在滿足系統(tǒng)功能要求的基礎(chǔ)上,應(yīng)適當(dāng)留有余地,以備將來(lái)修改、擴(kuò)展之需。在進(jìn)行ROM和RAM擴(kuò)展時(shí),應(yīng)盡量選用較大容量芯片,這樣不僅將來(lái)升級(jí)方便,成本也會(huì)降低;在進(jìn)行I/O接口擴(kuò)展時(shí),也應(yīng)給出一定的裕量,這樣對(duì)臨時(shí)增加一些測(cè)量通道或被控對(duì)象就比較容易實(shí)現(xiàn)了。
5)在電路設(shè)計(jì)時(shí),要充分考慮應(yīng)用系統(tǒng)各部分的驅(qū)動(dòng)能力。MCS-51單片機(jī)的外部擴(kuò)展功能很強(qiáng),但4個(gè)8位并行口的負(fù)載能力是有限的。P0口能夠驅(qū)動(dòng)8個(gè)TTL電路,P1~P3口只能驅(qū)動(dòng)4個(gè)TTL電路。在實(shí)際應(yīng)用中,所有端口的負(fù)載不應(yīng)超過(guò)總負(fù)載能力的70%,以保證留有一定的裕量。在外接負(fù)載較多的情況下,如果負(fù)載是MOS芯片,因負(fù)載消耗電流很小,影響不是很大。如果負(fù)載是TTL電路,那么應(yīng)采用總線驅(qū)動(dòng)電路,以提高端口的驅(qū)動(dòng)能力和系統(tǒng)的抗干擾能力。單片機(jī)原理及接口技術(shù)
6)單片機(jī)應(yīng)用系統(tǒng)的可靠性是最重要、最基本的一項(xiàng)技術(shù)指標(biāo),也是在硬件設(shè)計(jì)時(shí)必須考慮的一個(gè)方面??煽啃酝ǔJ侵赶到y(tǒng)在一定的工作條件下以及時(shí)間內(nèi)完成系統(tǒng)功能的能力。工作條件主要包括環(huán)境溫度、濕度、振動(dòng)和供電條件等;時(shí)間一般指平均故障時(shí)間、平均無(wú)故障時(shí)間和連續(xù)正常運(yùn)轉(zhuǎn)時(shí)間等。系統(tǒng)在實(shí)際工作中,可能會(huì)受到來(lái)自內(nèi)部和外部的各種干擾,特別是測(cè)控系統(tǒng)常常工作在環(huán)境惡劣的工業(yè)現(xiàn)場(chǎng),容易受到電網(wǎng)電壓、電磁輻射、高頻干擾等因素的影響,使系統(tǒng)工作產(chǎn)生錯(cuò)誤或故障。為減少這種情況的發(fā)生,必須要采取各種措施提高硬件的可靠性。
7)工藝設(shè)計(jì)是一個(gè)系統(tǒng)設(shè)計(jì)人員容易疏忽但又十分重要的問(wèn)題,主要包括機(jī)箱、面板、配線、接插件等部分的設(shè)計(jì)。在設(shè)計(jì)時(shí)要充分考慮到安裝、調(diào)試和維修的方便。單片機(jī)原理及接口技術(shù)
在進(jìn)行系統(tǒng)的總體設(shè)計(jì)時(shí),軟件設(shè)計(jì)和硬件設(shè)計(jì)應(yīng)統(tǒng)一考慮。當(dāng)系統(tǒng)的電路設(shè)計(jì)定型后,軟件設(shè)計(jì)的任務(wù)也就明確了。
系統(tǒng)中的應(yīng)用軟件是根據(jù)系統(tǒng)功能要求設(shè)計(jì)的。一般來(lái)說(shuō),單片機(jī)中的軟件功能可分為兩大類:一類是監(jiān)控軟件,是用來(lái)協(xié)調(diào)各模塊和操作者之間的關(guān)系,充當(dāng)組織調(diào)度角色,也稱為Debug程序,是最基本的調(diào)試工具。另一類是執(zhí)行軟件,它用來(lái)完成各種具體的功能,如測(cè)量、計(jì)算、顯示、打印和輸出控制等。監(jiān)控程序功能不足會(huì)給應(yīng)用程序的開(kāi)發(fā)帶來(lái)麻煩,反之,用大量精力設(shè)計(jì)監(jiān)控程序會(huì)延長(zhǎng)軟件開(kāi)發(fā)周期。所以把監(jiān)控程序控制在適當(dāng)?shù)囊?guī)模是明智的。由于應(yīng)用系統(tǒng)種類繁多,程序編寫者風(fēng)格不一,因此應(yīng)用軟件因系統(tǒng)而異、因人而異。盡管如此,作為優(yōu)秀的應(yīng)用軟件還是有其共同特點(diǎn)和規(guī)律的。設(shè)計(jì)人員在進(jìn)行軟件設(shè)計(jì)時(shí)應(yīng)從以下幾個(gè)方面加以考慮。9.1.3軟件設(shè)計(jì)單片機(jī)原理及接口技術(shù)
1.初始化定義
初始化定義是指在軟件設(shè)計(jì)前,首先要明確軟件所要完成的任務(wù),確定輸入/輸出的形式,對(duì)輸入/輸出的數(shù)據(jù)和中間變量以及可能發(fā)生的錯(cuò)誤如何處理。主要有以下幾點(diǎn):
1)定義并說(shuō)明各輸入/輸出口的功能,是模擬信號(hào)還是數(shù)字信號(hào)以及電平范圍、與系統(tǒng)的接口方式、占用端口地址、讀取和輸入方式等。
2)要合理分配系統(tǒng)資源,包括ROM、RAM、定時(shí)/計(jì)數(shù)器、中斷源等。其中最關(guān)鍵的是片內(nèi)RAM的分配。例如對(duì)8031來(lái)講,片內(nèi)RAM是指00H~7FH單元,這128個(gè)字節(jié)的功能不完全相同,分配時(shí)應(yīng)充分發(fā)揮其特長(zhǎng)。在工作寄存器的8個(gè)單元中,R0和R1具有指針功能;20H~2FH這16個(gè)字節(jié)具有位尋址功能,可用來(lái)存放各種標(biāo)志位、狀態(tài)變量、邏輯變量等;單片機(jī)原理及接口技術(shù)
設(shè)置堆棧區(qū)時(shí)應(yīng)事先估算子程序的數(shù)量和中斷嵌套的級(jí)數(shù)以及程序中堆棧操作指令的使用情況,并留有一定的裕量。若系統(tǒng)中擴(kuò)展了RAM存儲(chǔ)器,應(yīng)把使用頻率最高的數(shù)據(jù)安排在片內(nèi)RAM中,以提高處理速度。當(dāng)RAM資源規(guī)劃好后,應(yīng)列出一張RAM資源詳細(xì)分配表,以備編程人員查用。3)鍵盤等控制輸入量的定義與軟件編制密切相關(guān),系統(tǒng)運(yùn)行過(guò)程和運(yùn)算結(jié)果的顯示、正常運(yùn)行和出錯(cuò)顯示等也都應(yīng)該由軟件編制,所以必須事先定義,作為編程的依據(jù)。單片機(jī)原理及接口技術(shù)
2.軟件結(jié)構(gòu)設(shè)計(jì)
合理的軟件結(jié)構(gòu)是設(shè)計(jì)出一個(gè)性能優(yōu)良的應(yīng)用系統(tǒng)軟件的基礎(chǔ)。整個(gè)系統(tǒng)可分解為幾個(gè)相對(duì)獨(dú)立的操作,根據(jù)這些操作的相互聯(lián)系的時(shí)間關(guān)系,設(shè)計(jì)出一個(gè)合理的軟件結(jié)構(gòu)。對(duì)于簡(jiǎn)單的單片機(jī)應(yīng)用系統(tǒng),通常采用順序程序設(shè)計(jì)方法,這種方法的軟件是由主程序和若干個(gè)中斷服務(wù)子程序構(gòu)成。主程序和中斷服務(wù)子程序之間的信息交換一般采用數(shù)據(jù)緩沖器和軟件標(biāo)志(置位或清“0”位尋址區(qū)的某一位)方法。根據(jù)系統(tǒng)各個(gè)操作的性質(zhì),指定哪些操作由中斷服務(wù)程序完成、哪些操作由主程序完成,并指定各個(gè)中斷的優(yōu)先級(jí)。
因?yàn)轫樞虺绦蛟O(shè)計(jì)方法容易被理解和掌握,也能滿足大多數(shù)簡(jiǎn)單的應(yīng)用系統(tǒng),所以是一種很常用的方法。順序程序設(shè)計(jì)的缺點(diǎn)是軟件的結(jié)構(gòu)不夠清晰、軟件的修改擴(kuò)充比較困難、實(shí)時(shí)性較差。這是因?yàn)楣δ軓?fù)雜時(shí),執(zhí)行中斷服務(wù)程序要花費(fèi)較多的時(shí)間,單片機(jī)原理及接口技術(shù)
CPU執(zhí)行中斷程序時(shí)不響應(yīng)低級(jí)或同級(jí)的中斷,這可能導(dǎo)致某些實(shí)時(shí)中斷請(qǐng)求得不到及時(shí)的響應(yīng),甚至?xí)G失中斷信息。這時(shí)只有在主程序里多設(shè)置一些緩沖器和標(biāo)志位,中斷服務(wù)程序只完成一些特定功能的操作,從而縮短中斷服務(wù)程序的執(zhí)行時(shí)間,這在一定程度上能夠提高系統(tǒng)的實(shí)時(shí)性。但是眾多的標(biāo)志會(huì)使軟件結(jié)構(gòu)變亂,很容易發(fā)生錯(cuò)誤,給調(diào)試帶來(lái)困難。針對(duì)以上情況,對(duì)于復(fù)雜的應(yīng)用系統(tǒng),可采用實(shí)時(shí)多任務(wù)操作系統(tǒng)。
3.模塊化程序設(shè)計(jì)
通常人們?cè)O(shè)計(jì)程序時(shí)習(xí)慣于自頂向下設(shè)計(jì),即先從主程序開(kāi)始設(shè)計(jì),子程序用符號(hào)來(lái)代替。主程序編好后再編制各個(gè)子程序,最后完成整個(gè)系統(tǒng)軟件的設(shè)計(jì)。程序調(diào)試也是按這個(gè)順序進(jìn)行。這種程序設(shè)計(jì)方法的優(yōu)點(diǎn)是:比較符合人們的日常思維,可以較早地發(fā)現(xiàn)程序錯(cuò)誤。其缺點(diǎn)是:上一級(jí)的程序錯(cuò)誤將對(duì)整個(gè)程序產(chǎn)生影響,前面程序的修單片機(jī)原理及接口技術(shù)
改可能會(huì)引起整個(gè)程序的修改。所以對(duì)于較為復(fù)雜的系統(tǒng),一般不主張這樣設(shè)計(jì),而提倡模塊化的程序設(shè)計(jì)方法。
模塊化的程序設(shè)計(jì)思想是根據(jù)軟件的功能要求,將系統(tǒng)軟件分成若干個(gè)相對(duì)獨(dú)立的部分。根據(jù)它們之間的聯(lián)系和時(shí)間上的關(guān)系,把一個(gè)功能完整的較長(zhǎng)的程序分解為若干個(gè)功能相對(duì)獨(dú)立的較小的程序模塊,各個(gè)程序模塊分別進(jìn)行設(shè)計(jì)、編制和調(diào)試,最后把各個(gè)調(diào)試好的程序模塊組合成一個(gè)大的程序。
模塊化程序設(shè)計(jì)的優(yōu)點(diǎn)是單個(gè)功能明確的程序模塊的設(shè)計(jì)和調(diào)試比較方便、容易完成,一個(gè)模塊可以為多個(gè)程序所共享,還可以利用已有的程序模塊(如各種已有的子程序)。既便于調(diào)試、鏈接,又便于移植、修改。缺點(diǎn)是各個(gè)模塊的連接有時(shí)有一定的困難。程序模塊的劃分沒(méi)有一定的標(biāo)準(zhǔn),但每個(gè)模塊不宜太大,各模塊之間界限明確,在邏輯上相對(duì)獨(dú)立,盡量利用已有的程序模塊。單片機(jī)原理及接口技術(shù)
4.程序設(shè)計(jì)在選擇好軟件結(jié)構(gòu)和所采用的程序設(shè)計(jì)技術(shù)后,便可著手進(jìn)行程序設(shè)計(jì),把問(wèn)題的定義轉(zhuǎn)化為具體的程序。1)建立數(shù)學(xué)模型
即根據(jù)系統(tǒng)功能要求,描述出各個(gè)輸入和輸出變量之間的數(shù)學(xué)關(guān)系,它是關(guān)系到系統(tǒng)性能好壞的重要因素。例如:在直接數(shù)字控制系統(tǒng)中,采用數(shù)字PID控制算法或其改進(jìn)形式,參數(shù)的整定是至關(guān)重要的。在測(cè)量應(yīng)用系統(tǒng)中,從模擬量輸入通道得到的溫度、流量、速度、加速度等現(xiàn)場(chǎng)信息與該信息對(duì)應(yīng)的物理量之間常常存在非線性關(guān)系,采用什么樣的公式來(lái)描述和修正這種關(guān)系,達(dá)到線性化處理的目的,這對(duì)儀器的測(cè)量精度是起決定性的作用。另外,為了削弱或消除干擾信號(hào)的影響,選用何種數(shù)字濾波方法等。單片機(jī)原理及接口技術(shù)
2)繪制程序流程圖
為提高軟件設(shè)計(jì)的總體效率,以簡(jiǎn)明、直觀的方法對(duì)任務(wù)進(jìn)行描述,在編寫應(yīng)用軟件之前,應(yīng)繪制出程序流程圖。這不僅是程序設(shè)計(jì)的一個(gè)重要組成部分,而且是決定成敗的關(guān)鍵部分,故對(duì)初學(xué)者來(lái)說(shuō)尤為重要。在設(shè)計(jì)過(guò)程中,先畫出簡(jiǎn)單的功能性流程圖(框圖),然后對(duì)功能流程圖進(jìn)行擴(kuò)充和具體化。對(duì)存儲(chǔ)器、寄存器、標(biāo)志位等工作單元作具體的分配和說(shuō)明,把功能流程圖中每一個(gè)具體的操作轉(zhuǎn)變?yōu)閷?duì)具體的存儲(chǔ)單元、工作寄存器或I/O口的操作,從而繪出詳細(xì)的程序流程圖。3)編寫程序
在完成了程序流程圖設(shè)計(jì)以后,接著便可編寫程序。單片機(jī)應(yīng)用程序大多用匯編語(yǔ)言編寫,如果有條件可以用高級(jí)語(yǔ)言編寫,如MBASIC51、PL/M51、C51等。編寫程序時(shí),應(yīng)采用標(biāo)準(zhǔn)的符號(hào)和格式書寫,必要時(shí)給出若干功能性注釋,提高程序的可讀性。單片機(jī)原理及接口技術(shù)
在完成了硬件設(shè)計(jì)和軟件設(shè)計(jì)以后,便進(jìn)入了系統(tǒng)的調(diào)試階段。其主要任務(wù)是排除系統(tǒng)的硬件故障,并完善其硬件結(jié)構(gòu),運(yùn)行所設(shè)計(jì)的程序,排除程序錯(cuò)誤,優(yōu)化程序結(jié)構(gòu),使系統(tǒng)達(dá)到期望的功能,進(jìn)而固化軟件,使其產(chǎn)品化??刂葡到y(tǒng)的調(diào)試步驟和方法基本上是相同的,但具體細(xì)節(jié)與所采用的開(kāi)發(fā)系統(tǒng)以及用戶所選用的單片機(jī)型號(hào)有關(guān)。1.硬件調(diào)試
單片機(jī)應(yīng)用系統(tǒng)的硬件調(diào)試和軟件調(diào)試是密不可分的,許多硬件故障是在軟件調(diào)試時(shí)才發(fā)現(xiàn)的,但通常情況是先排除系統(tǒng)中明顯的硬件故障后才與軟件結(jié)合起來(lái)調(diào)試。(1)常見(jiàn)的硬件故障9.1.4系統(tǒng)調(diào)試單片機(jī)原理及接口技術(shù)
1)邏輯錯(cuò)誤。邏輯錯(cuò)誤是由于設(shè)計(jì)錯(cuò)誤和加工過(guò)程中的工藝性錯(cuò)誤所造成的。這類錯(cuò)誤包括錯(cuò)線、相位錯(cuò)、開(kāi)路、短路等幾種,其中開(kāi)路常常是由于印制電路板的金屬孔質(zhì)量不好或接插件接觸不良引起的。短路是最常見(jiàn)也較難排除的故障。單片機(jī)應(yīng)用系統(tǒng)通常要求體積小,從而使印制電路板的布線密度高,往往會(huì)造成引線之間的短路。2)電源故障。若系統(tǒng)中存在電源故障,則加電后將造成器件損壞,因此電源必須單獨(dú)調(diào)試好以后才能加到系統(tǒng)的各個(gè)部件中。電源的故障主要包括:電壓、電流值不符合設(shè)計(jì)要求,紋波系數(shù)過(guò)大,不同電源之間的短路,變壓器功率不足,內(nèi)阻大,負(fù)載能力差等。單片機(jī)原理及接口技術(shù)
3)元器件失效。主要原因有兩個(gè)方面:一是由于組裝錯(cuò)誤造成的元器件失效,如電容、二極管、三極管的極性錯(cuò)誤和集成塊安裝的方向錯(cuò)誤等;二是器件本身已損壞或性能差,諸如電阻電容的型號(hào)、參數(shù)不正確,集成電路已損壞,器件的速度、功耗等技術(shù)指標(biāo)不符合要求等。4)可靠性差。系統(tǒng)不可靠的因素很多,如金屬孔、接插件接觸不良會(huì)造成系統(tǒng)時(shí)好時(shí)壞;內(nèi)部和外部的干擾、器件負(fù)載過(guò)大等會(huì)造成邏輯電平不穩(wěn)定。此外,走線和布局的不合理等也會(huì)引起系統(tǒng)的可靠性變差。單片機(jī)原理及接口技術(shù)
(2)硬件調(diào)試方法
硬件調(diào)試是指利用硬件開(kāi)發(fā)系統(tǒng)、基本測(cè)試儀器,通過(guò)執(zhí)行開(kāi)發(fā)系統(tǒng)有關(guān)命令或運(yùn)行適當(dāng)?shù)臏y(cè)試程序(也可以是與硬件有關(guān)的部分用戶程序段)來(lái)檢查系統(tǒng)硬件中存在的故障。硬件調(diào)試可分為靜態(tài)調(diào)試與動(dòng)態(tài)調(diào)試。1)靜態(tài)調(diào)試。首先,在上電之前,用萬(wàn)用表等工具,根據(jù)硬件電氣原理圖和裝配圖仔細(xì)檢查系統(tǒng)線路是否正確,并核對(duì)元器件的型號(hào)、規(guī)格。應(yīng)特別注意電源的走線,防止電源之間的短路和極性錯(cuò)誤,并重點(diǎn)檢查擴(kuò)展系統(tǒng)總線(數(shù)據(jù)總線、地址總線和控制總線)是否存在相互間的短路或與其它信號(hào)線之間的短路。
其次,上電后檢查各插件上引腳的電壓,仔細(xì)測(cè)量各點(diǎn)電壓是否正常,尤其應(yīng)注意單片機(jī)插座上的各點(diǎn)電壓。若有高壓,聯(lián)機(jī)時(shí)將會(huì)損壞仿真器。
最后,在斷電情況下,除單片機(jī)以外,插上所有的元器件,用仿真插頭將單片機(jī)插座和開(kāi)發(fā)工具的仿真接口相連。單片機(jī)原理及接口技術(shù)
2)動(dòng)態(tài)調(diào)試。在靜態(tài)調(diào)試中,只能對(duì)硬件進(jìn)行初步測(cè)試,排除一些明顯的硬件故障。其余故障只能靠聯(lián)機(jī)調(diào)試來(lái)排除。靜態(tài)調(diào)試完成后分別閉合整個(gè)系統(tǒng)和仿真器電源,就可以進(jìn)行動(dòng)態(tài)調(diào)試了。動(dòng)態(tài)調(diào)試是在系統(tǒng)工作的情況下發(fā)現(xiàn)和排除系統(tǒng)硬件中存在的器件內(nèi)部故障、器件之間連接邏輯錯(cuò)誤等的一種硬件檢查。由于單片機(jī)系統(tǒng)的硬件動(dòng)態(tài)調(diào)試是在開(kāi)放系統(tǒng)的支持下完成的,故又稱為聯(lián)機(jī)仿真或聯(lián)機(jī)調(diào)試。
動(dòng)態(tài)調(diào)試的一般方法是由近及遠(yuǎn)、由分到合,進(jìn)行分步、分層調(diào)試。
在有些情況下,由于功能要求較高或設(shè)備較復(fù)雜,使某些邏輯功能塊電路較為復(fù)雜龐大,給檢查排除故障帶來(lái)一定的難度。這時(shí)按照每塊電路信號(hào)的流向?yàn)榫€索,將信號(hào)流經(jīng)的各器件按照距離單片機(jī)的邏輯距離進(jìn)行由遠(yuǎn)及近的分層,然后分層進(jìn)行調(diào)試。調(diào)試時(shí)采用去掉無(wú)關(guān)器件的方法,逐層依次調(diào)試,從而將故障定位在具體器件或位置上。
單片機(jī)原理及接口技術(shù)
由分到合指的是首先按照邏輯功能將系統(tǒng)硬件電路分為若干塊,如程序存儲(chǔ)器電路、A/D轉(zhuǎn)換器電路、輸入/輸出控制電路,再分塊進(jìn)行調(diào)試。當(dāng)調(diào)試某電路時(shí),仍將與該電路無(wú)關(guān)的器件全部從系統(tǒng)中去掉,這樣可將故障范圍限定在某個(gè)局部的電路上。當(dāng)分塊電路調(diào)試無(wú)故障后,將各電路逐塊加入系統(tǒng)中,再對(duì)各塊電路及電路間可能存在的相互聯(lián)系進(jìn)行檢驗(yàn)。若此時(shí)出現(xiàn)故障,則最大的可能是電路協(xié)調(diào)關(guān)系上出了問(wèn)題,如相互間信息聯(lián)絡(luò)是否正確、時(shí)序是否達(dá)到要求等,直到所有電路加入系統(tǒng)后各部分的電路仍能正確工作為止。
動(dòng)態(tài)調(diào)試借助開(kāi)發(fā)系統(tǒng)資源(單片機(jī)、存儲(chǔ)器等)來(lái)調(diào)試用戶系統(tǒng)中單片機(jī)的外圍電路。利用開(kāi)發(fā)系統(tǒng)友好的人機(jī)界面,可以有效地對(duì)系統(tǒng)的各部分電路進(jìn)行訪問(wèn)、控制,使系統(tǒng)在運(yùn)行中暴露問(wèn)題,從而發(fā)現(xiàn)并排除故障。單片機(jī)原理及接口技術(shù)
2.軟件調(diào)試(1)常見(jiàn)的軟件錯(cuò)誤1)程序失控。這種錯(cuò)誤的現(xiàn)象是當(dāng)運(yùn)行程序時(shí),系統(tǒng)沒(méi)有按規(guī)定的功能進(jìn)行操作或什么結(jié)果也沒(méi)有,這是由于程序出現(xiàn)死循環(huán)或轉(zhuǎn)移到?jīng)]有預(yù)料到的地方所造成的。產(chǎn)生這類錯(cuò)誤的原因有:程序中轉(zhuǎn)移地址計(jì)算錯(cuò)誤、堆棧溢出、工作寄存器沖突等。在采用實(shí)時(shí)多任務(wù)操作系統(tǒng)時(shí),錯(cuò)誤可能在操作系統(tǒng)中,沒(méi)有完成正確的任務(wù)調(diào)度操作;也可能在高優(yōu)先級(jí)任務(wù)程序結(jié)束時(shí)沒(méi)有釋放處理器,使CPU在該任務(wù)中處于死循環(huán)狀態(tài)。2)中斷錯(cuò)誤。主要有兩種情況,一種是不響應(yīng)中斷,這種錯(cuò)誤的現(xiàn)象是連續(xù)運(yùn)行時(shí)不執(zhí)行中斷服務(wù)程序的規(guī)定操作。產(chǎn)生這類錯(cuò)誤的原因主要有:中斷控制寄存器(IE、IP)的初值設(shè)置不正確,使CPU沒(méi)有開(kāi)放中斷或不允許某個(gè)中斷源的請(qǐng)求;外部中斷源的硬件故障使外部設(shè)備無(wú)法申請(qǐng)中斷;對(duì)特殊功能寄存器和擴(kuò)展的I/O接口編程有錯(cuò)誤,造成單片機(jī)原理及接口技術(shù)
中斷不能被激活;中斷服務(wù)子程序沒(méi)有正確地返回到主程序,或者是CPU雖返回到主程序,但內(nèi)部中斷狀態(tài)寄存器沒(méi)有被清除,從而不響應(yīng)中斷。第二種是循環(huán)響應(yīng)中斷,這種錯(cuò)誤是CPU循環(huán)地響應(yīng)同一個(gè)中斷,使CPU不能正常地執(zhí)行主程序或其它中斷服務(wù)子程序,這種錯(cuò)誤大多發(fā)生在外部中斷中。若外部中斷(如INT0或INTl)以電平觸發(fā)方式請(qǐng)求中斷,當(dāng)中斷服務(wù)程序沒(méi)有有效清除外部中斷或硬件故障使中斷源一直有效時(shí),將會(huì)導(dǎo)致CPU一直響應(yīng)該中斷。3)輸入/輸出錯(cuò)誤。這類錯(cuò)誤包括輸入輸出結(jié)果不正確或根本不動(dòng)作,產(chǎn)生錯(cuò)誤的原因主要有:輸入/輸出程序沒(méi)有和I/O硬件協(xié)調(diào)好(如地址錯(cuò)誤、寫入的控制字和規(guī)定的I/O操作不一致等),時(shí)間上不同步,硬件中還存在故障等。單片機(jī)原理及接口技術(shù)
(2)軟件調(diào)試方法。
軟件調(diào)試是通過(guò)對(duì)用戶程序的匯編、連接、執(zhí)行來(lái)發(fā)現(xiàn)程序中存在的語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤并加以排除糾正的過(guò)程。軟件調(diào)試與所選用的軟件結(jié)構(gòu)和程序設(shè)計(jì)技術(shù)有關(guān)。如果選用實(shí)時(shí)多任務(wù)操作系統(tǒng),一般是逐個(gè)任務(wù)進(jìn)行調(diào)試。在調(diào)試某一個(gè)具體任務(wù)時(shí),同時(shí)也調(diào)試相關(guān)的子程序、中斷服務(wù)子程序和一些操作系統(tǒng)的程序。若采用模塊化程序設(shè)計(jì)技術(shù),則逐個(gè)模塊(子程序、中斷服務(wù)子程序、I/O程序等)進(jìn)行調(diào)試,再聯(lián)成一個(gè)完整的程序,然后進(jìn)行系統(tǒng)調(diào)試。軟件調(diào)試的一般方法是先獨(dú)立后聯(lián)機(jī)、先分塊后組合、先單步后連續(xù)。單片機(jī)原理及接口技術(shù)
1)計(jì)算程序的調(diào)試方法。計(jì)算程序的錯(cuò)誤是一種靜態(tài)和固定的錯(cuò)誤,因此主要采用單步或斷點(diǎn)運(yùn)行方式來(lái)調(diào)試。根據(jù)計(jì)算程序的功能,事先準(zhǔn)備好測(cè)試數(shù)據(jù),然后從計(jì)算程序開(kāi)始運(yùn)行到結(jié)束,將運(yùn)行的結(jié)果和準(zhǔn)備好的測(cè)試數(shù)據(jù)進(jìn)行比較。如果對(duì)所有的測(cè)試數(shù)據(jù)進(jìn)行測(cè)試,都沒(méi)有發(fā)現(xiàn)錯(cuò)誤,則該計(jì)算程序是正確的;如果發(fā)現(xiàn)結(jié)果不正確,就改用單步運(yùn)行方式,即可檢查出錯(cuò)誤所在的位置。2)I/O處理程序的調(diào)試。對(duì)于A/D轉(zhuǎn)換一類的I/O處理程序,要求實(shí)時(shí)性比較高,因此要采用全速斷點(diǎn)方式或連續(xù)運(yùn)行方式進(jìn)行調(diào)試。3)綜合調(diào)試。在完成了各個(gè)模塊程序(或各個(gè)任務(wù)程序)的調(diào)試工作以后,便可以進(jìn)行系統(tǒng)的綜合調(diào)試。綜合調(diào)試一般采用全速斷點(diǎn)運(yùn)行方式,這個(gè)階段的主要工作是排除系統(tǒng)單片機(jī)原理及接口技術(shù)
中遺留的錯(cuò)誤,以提高系統(tǒng)的動(dòng)態(tài)性能和精度。在綜合調(diào)試的最后階段,應(yīng)使系統(tǒng)的晶振電路工作,系統(tǒng)全速運(yùn)行。若都能實(shí)現(xiàn)預(yù)定的技術(shù)指標(biāo),便可將軟件固化,然后再運(yùn)行固化程序后的系統(tǒng),成功后意味著系統(tǒng)可脫機(jī)運(yùn)行。一般情況下,一個(gè)應(yīng)用系統(tǒng)就算研制成功了。如果脫機(jī)后出現(xiàn)了異常情況,大多是由于系統(tǒng)的復(fù)位電路中有故障,或上電復(fù)位電路中元器件參數(shù)有誤等引起的。3.運(yùn)行與維護(hù)
在進(jìn)行綜合調(diào)試后,還需進(jìn)行一段時(shí)間的試運(yùn)行。只有經(jīng)過(guò)試運(yùn)行,所設(shè)計(jì)的系統(tǒng)才可能會(huì)暴露出它的問(wèn)題和不足之處。在系統(tǒng)試運(yùn)行階段,設(shè)計(jì)者應(yīng)當(dāng)對(duì)系統(tǒng)進(jìn)行檢測(cè)和試驗(yàn),以驗(yàn)證系統(tǒng)功能是否滿足設(shè)計(jì)要求,是否達(dá)到預(yù)期效果。
系統(tǒng)經(jīng)過(guò)一段時(shí)間的烤機(jī)和試運(yùn)行后,就可投入正式運(yùn)行。在正式運(yùn)行中還需建立一套健全的維護(hù)制度,以確保系統(tǒng)的正常工作。單片機(jī)原理及接口技術(shù)9.1.5印制電路板設(shè)計(jì)
單片機(jī)應(yīng)用系統(tǒng)的硬件單元電路設(shè)計(jì)完成后,需要通過(guò)電路設(shè)計(jì)軟件在計(jì)算機(jī)上完成印制電路板圖的制作??梢圆捎玫碾娐钒鍒D設(shè)計(jì)軟件有很多種,如Altium、CAD等。但現(xiàn)在大部分電子設(shè)計(jì)者都采用Altium軟件輔助設(shè)計(jì)。首先,繪制電路原理圖,圖樣要整潔美觀大方;其次,根據(jù)原理圖繪制印制電路板圖。印制電路板一般分為2層板、4層板,8層板。層數(shù)越高,電路板的造價(jià)越高。1.電路板布局的基本原則1)遵循先難后易、先大后小的原則。2)布局可以參考硬件設(shè)計(jì)原理圖大致的布局,根據(jù)信號(hào)流向規(guī)律放置主要元器件。3)連線盡可能的短,關(guān)鍵信號(hào)線最短。4)模擬信號(hào)、數(shù)字信號(hào)分開(kāi)。5)強(qiáng)信號(hào)、弱信號(hào)、高電壓信號(hào)和弱電壓信號(hào)要完全分開(kāi)。單片機(jī)原理及接口技術(shù)
6)相同結(jié)構(gòu)的電路部分應(yīng)盡可能采取對(duì)稱布局。7)按照均勻分布、重心平衡、版面美觀的標(biāo)準(zhǔn)來(lái)優(yōu)化布局。8)雙列直插式元器件相互的距離要大于2mm。9)元器件的放置要便于調(diào)試和維修。大元器件邊上不能放置小元件;需要調(diào)試的元器件周圍應(yīng)有足夠的空間;發(fā)熱元器件應(yīng)有
足夠的空間以利于散熱;熱敏元器件應(yīng)遠(yuǎn)離發(fā)熱元器件。10)旁路電容應(yīng)均勻地分布在集成電路周圍。單片機(jī)原理及接口技術(shù)
11)集成電路的去耦電容應(yīng)盡量靠近芯片的電源腳,使之與電源和地之間形成的回路最短。12)用于阻抗匹配目的的阻容元器件的放置,應(yīng)根據(jù)其屬性合理布局。13)匹配電阻在布局時(shí)要靠近該信號(hào)的驅(qū)動(dòng)端,距離一般不超過(guò)500mil。14)匹配電容、電阻的布局要分清楚其用法,對(duì)于多負(fù)載的終端匹配一定要放在信號(hào)的最遠(yuǎn)端進(jìn)行匹配。單片機(jī)原理及接口技術(shù)
2.板層的設(shè)置規(guī)則1)在印制電路板內(nèi)分配電源層與地層,且盡量相互鄰近,這樣可以很好地抑制印制電路板上固有的共模RF干擾,并且能減少高頻電源的分布阻抗。一般接地平面應(yīng)在電源平面之上,這樣可以利用兩金屬平板間的電容做電源的平滑電容,同時(shí)接地平面還可以對(duì)電源平面上分布的輻射電流起到屏蔽作用。2)在多層印制電路板中,電源平面和接地平面上的分布電阻為最小。這是由于電源平面與接地平面中充滿了電磁輻射頻段的浪涌,可能會(huì)引起邏輯混亂、瞬間短路、總線上信號(hào)過(guò)載等現(xiàn)象。而且由于不同邏輯部件的導(dǎo)通和截止電流比是不同的,分布電阻小就能使信號(hào)線平面與接地平面間的電磁干擾通量比信號(hào)線平面與電源平面的通量要小得多。信號(hào)平面鄰近電源平面時(shí)將會(huì)引起信號(hào)相移、產(chǎn)生大的電感和變化的噪聲。單片機(jī)原理及接口技術(shù)
3)把模擬電路單元與數(shù)字電路單元分開(kāi),模擬電源與數(shù)字電源要絕對(duì)分開(kāi)、不能混用。4)對(duì)于多層印制電路板中有多個(gè)接地平面時(shí),其中高速信號(hào)的布線平面應(yīng)該靠近接地平面,這是由于當(dāng)高頻信號(hào)的布線平面接近接地平面就能迅速將高頻干擾信號(hào)泄放到結(jié)構(gòu)大地,而如果布線平面接近電源平面時(shí)就會(huì)干擾電源而影響其它電路工作。5)電子系統(tǒng)設(shè)備中的時(shí)鐘電路和高頻電路是主要的干擾和輻射源,所以必須進(jìn)行分區(qū),單獨(dú)安排。一般采用空間分離技術(shù),使此類電路遠(yuǎn)離其它敏感電路以避免對(duì)其形成干擾。3.走線的基本規(guī)則1)信號(hào)走線盡量粗細(xì)一致,有利于阻抗的匹配,一般為0.2~0.3mm,對(duì)于電源線和地線應(yīng)盡可能加大,地線排在印制板的四周對(duì)電路防護(hù)有利。盡量減小信號(hào)電流環(huán)路的面積,尤其是減小高頻信號(hào)的電流環(huán)路面積。還要注意整體外觀形象。單片機(jī)原理及接口技術(shù)
2)作為高速數(shù)字電路的輸入端和輸出端,應(yīng)避免相鄰平行布線。必要時(shí),在這些導(dǎo)線之間要加接地線。3)仔細(xì)選擇接地點(diǎn)以使環(huán)路電流、接地電阻及電路的公共阻抗最小。4)時(shí)鐘芯片的上拉或下拉電阻應(yīng)盡量靠近時(shí)鐘芯片。對(duì)于時(shí)鐘頻率大于等于66MHz的時(shí)鐘線,每條線的過(guò)孔數(shù)不要超過(guò)2個(gè),平均不得超過(guò)1.5個(gè);時(shí)鐘頻率小于66MHz的時(shí)鐘線,每條線的過(guò)孔數(shù)不要超過(guò)3個(gè),平均不得超過(guò)2.5個(gè);長(zhǎng)度超過(guò)12inch的時(shí)鐘線,如果頻率大于20MHz,過(guò)孔數(shù)不得超過(guò)2個(gè)。時(shí)鐘線要遠(yuǎn)離I/O一側(cè)板邊500mil以上,并且不要和I/O線并行布線。整板設(shè)計(jì)完成后,要及時(shí)檢查信號(hào)走線和連接是否符合設(shè)計(jì)標(biāo)準(zhǔn),器件標(biāo)注是否正確完整,同時(shí)還要注意整體外觀形象。單片機(jī)原理及接口技術(shù)9.2抗干擾技術(shù)
計(jì)算機(jī)控制系統(tǒng)大多用于工業(yè)現(xiàn)場(chǎng),而工業(yè)現(xiàn)場(chǎng)情況復(fù)雜,環(huán)境較為惡劣,且有很多種干擾。干擾嚴(yán)重影響著控制系統(tǒng)的穩(wěn)定性和可靠性。在工業(yè)現(xiàn)場(chǎng)特殊的環(huán)境中,要求計(jì)算機(jī)控制系統(tǒng)要有足夠高的抗干擾能力。干擾的產(chǎn)生是由多種因素決定的,所以根據(jù)現(xiàn)場(chǎng)的情況,分析干擾的來(lái)源,常采用硬件和軟件相結(jié)合的有效措施來(lái)抑制或消除干擾。1.干擾的來(lái)源
干擾又稱為噪聲,是指有用信號(hào)以外的信號(hào)或在信號(hào)輸入、傳輸和輸出過(guò)程中出現(xiàn)的一些有害的電氣變化現(xiàn)象。這些噪聲或變化迫使信號(hào)的傳輸值、指示值或輸出值出現(xiàn)誤差,出現(xiàn)假像。干擾對(duì)電路的影響,輕則降低信號(hào)的質(zhì)量,影響系統(tǒng)的穩(wěn)定性;重則破壞電路的正常功能,造成邏輯關(guān)系混亂、控制失靈。常見(jiàn)的干擾主要表現(xiàn)在以下幾個(gè)方面。9.2.1干擾源及其分類單片機(jī)原理及接口技術(shù)
(1)電源噪聲
工業(yè)現(xiàn)場(chǎng)動(dòng)力設(shè)備多,功率大、類型復(fù)雜、操作頻繁。大功率設(shè)備的啟停,特別是大感性負(fù)載的啟停會(huì)造成電網(wǎng)電壓大幅度漲落。這些都會(huì)嚴(yán)重影響計(jì)算機(jī)控制系統(tǒng)的正常工作。(2)接地不良引起的干擾
地線與所有的設(shè)備都有聯(lián)系,良好的接地可以消除部分干擾。如果接地不良,會(huì)產(chǎn)生接地電位差,從而進(jìn)入地線,就會(huì)傳遞到所有設(shè)備,從而導(dǎo)致設(shè)備不能正常工作。(3)其它干擾
工業(yè)環(huán)境的溫度、濕度、震動(dòng)、灰塵、腐蝕性氣體等,還有電路感應(yīng)產(chǎn)生的干擾都會(huì)影響計(jì)算機(jī)控制系統(tǒng)的正常工作。單片機(jī)原理及接口技術(shù)
2.干擾源的分類(1)從干擾的來(lái)源劃分1)內(nèi)部干擾
內(nèi)部干擾是應(yīng)用系統(tǒng)本身引起的干擾,包括固定干擾和過(guò)渡干擾兩種。固定干擾是指信號(hào)間的相互串?dāng)_、長(zhǎng)線傳輸阻抗不匹配時(shí)的反射噪聲、負(fù)載突變?cè)肼曇约梆侂娤到y(tǒng)的浪涌噪聲等。過(guò)渡干擾是指電路在工作時(shí)引起的干擾。2)外部干擾
外部干擾是由系統(tǒng)外部竄入到系統(tǒng)內(nèi)部的各種干擾。包括某些自然現(xiàn)象(如閃電、雷擊、地球或宇宙輻射等)引起的自然干擾和人為干擾(如電臺(tái)、車輛、家用電器、電器設(shè)備等發(fā)出的電磁干擾,以及電源的干擾)。一般來(lái)說(shuō),自然干擾對(duì)系統(tǒng)影響不大,單片機(jī)原理及接口技術(shù)
而人為干擾則是外部干擾的關(guān)鍵。(2)從干擾與輸入信號(hào)的關(guān)系劃分1)串模干擾
串模干擾就是串聯(lián)在被測(cè)信號(hào)回路上的干擾,如圖9-2a)所示。圖中Us為信號(hào)電壓,Un為串模干擾電壓,Un既可以來(lái)自干擾源,也可以由信號(hào)源本身產(chǎn)生。產(chǎn)生串模干擾的原因主要有分布電容的靜電耦合、長(zhǎng)線傳輸?shù)幕ジ?、空間電磁場(chǎng)引起的磁場(chǎng)耦合和工頻電壓干擾等。2)共模干擾
共模干擾就是指模擬量輸入通道的A/D轉(zhuǎn)換器的兩個(gè)輸入端上共有的干擾電壓。單片機(jī)原理及接口技術(shù)
在計(jì)算機(jī)控制系統(tǒng)中,由于控制器和被控被測(cè)的參量相距較遠(yuǎn),這樣被測(cè)信號(hào)Ui的參考地(模擬地)和控制器輸入信號(hào)的參考地(模擬地)之間往往存在一定的電位差Uc,如圖9-2b)所示。圖中Uc就是共模干擾電壓。它可能是交流電壓,也可能是直流電壓,其數(shù)值可達(dá)幾伏甚至幾百伏,主要取決于控制器和其它設(shè)備的接地情況以及現(xiàn)場(chǎng)產(chǎn)生干擾的因素。(a)串模干擾(b)共模干擾圖9-2干擾示意圖單片機(jī)原理及接口技術(shù)
抗干擾是指把對(duì)計(jì)算機(jī)控制系統(tǒng)的干擾(噪聲)消除或者減小到最小,以保證系統(tǒng)能夠正常工作。抗干擾主要從以下幾個(gè)方面進(jìn)行考慮。(1)消除干擾源
有些干擾,可以采取一些合理的方法予以消除。比如通過(guò)合理布線,可以消除或減少分布電容和線間感應(yīng);在集成電路的電源和地線之間連接去耦電容,可以抑制傳輸線的反射,消除信號(hào)波形的毛刺和臺(tái)階;集成電路的閑置端不要懸空;改進(jìn)制造工藝和焊接技術(shù),也可以消除部分干擾;采用屏蔽措施,把干擾源或控制系統(tǒng)屏蔽起來(lái),也是一種消除干擾源的有效措施。9.2.2硬件抗干擾技術(shù)單片機(jī)原理及接口技術(shù)
(2)遠(yuǎn)離干擾源
離干擾源越遠(yuǎn),干擾就會(huì)衰減的越小。計(jì)算機(jī)控制系統(tǒng)、計(jì)算機(jī)房、包括有終端設(shè)備的操作室都應(yīng)該盡可能地遠(yuǎn)離干擾源,比如遠(yuǎn)離具有強(qiáng)磁場(chǎng)、強(qiáng)電場(chǎng)的地方。(3)防止干擾的竄入
干擾都是通過(guò)一定的途徑進(jìn)入計(jì)算機(jī)控制系統(tǒng)中的。如果能在干擾進(jìn)入途徑上采取有效的措施,就可以避免干擾對(duì)計(jì)算機(jī)控制系統(tǒng)的入侵。1.電源系統(tǒng)的抗干擾措施
實(shí)踐表明,電源系統(tǒng)的干擾是計(jì)算機(jī)控制系統(tǒng)的主要干擾,必須給予足夠的重視。電源系統(tǒng)可分為交流電源和直流電源系統(tǒng)。9.2.2硬件抗干擾技術(shù)單片機(jī)原理及接口技術(shù)
(1)交流電源系統(tǒng)的抗干擾措施1)選用供電比較穩(wěn)定的進(jìn)線電源;2)對(duì)電源變壓器設(shè)置合理的屏蔽;3)為了克服電網(wǎng)電壓波動(dòng)對(duì)控制系統(tǒng)的影響,在電源輸入端接一個(gè)交流穩(wěn)壓器;4)為了消除頻率高于50Hz的高次諧波干擾信號(hào),在電源輸入端接一個(gè)低通濾波器;5)對(duì)于要求很高的控制系統(tǒng)可利用不間斷電源(UPS)供電,從而消除惡性干擾。9.2.2硬件抗干擾技術(shù)單片機(jī)原理及接口技術(shù)
(2)直流電源系統(tǒng)的抗干擾措施1)采用直流開(kāi)關(guān)電源;2)如果系統(tǒng)供電網(wǎng)絡(luò)電壓波動(dòng)較大,或者對(duì)直流電源的精度要求較高,可采用DC-DC變換器;3)對(duì)系統(tǒng)的各個(gè)模塊采用分散獨(dú)立的電源供電。2.過(guò)程通道干擾的抑制
過(guò)程通道是I/O接口與主機(jī)之間進(jìn)行信息傳輸?shù)耐緩?,在過(guò)程通道中干擾信號(hào)通過(guò)輸入線竄入計(jì)算機(jī)控制系統(tǒng)。過(guò)程通道干擾主要從I/O接口和傳輸線兩個(gè)方面考慮。(1)I/O接口的抗干擾措施單片機(jī)原理及接口技術(shù)
1)在信號(hào)加到輸入通道之前,可以外加硬件濾波器濾除交流干擾。如果干擾信號(hào)頻率比信號(hào)頻率高,選用低通濾波器;如果干擾信號(hào)頻率比信號(hào)頻率低,選用高通濾波器;當(dāng)干擾信號(hào)頻率在信號(hào)頻率的兩側(cè)時(shí),選用帶通濾波器。使用濾波器是抑制串模干擾的常用方法;2)由于差動(dòng)放大器只對(duì)差動(dòng)信號(hào)起放大作用,而對(duì)共模電壓不起放大作用,因此可以利用差動(dòng)方式傳輸和接收信號(hào),從而抑制共模干擾;3)為了避免輸入端對(duì)輸出端的干擾或輸出端對(duì)輸入端的反饋干擾,可以采用光電耦合器進(jìn)行光電隔離,光電耦合器采用了電-光-電的信號(hào)傳遞方式,具有很高的絕緣性;4)利用變壓器將模擬電路和數(shù)字電路隔離開(kāi)來(lái),使共模干擾電壓不能形成回路,從而抑制共模干擾。單片機(jī)原理及接口技術(shù)
(2)I/O傳輸線的抗干擾措施1)由于雙絞線是一對(duì)導(dǎo)線按照設(shè)定行波的長(zhǎng)度對(duì)絞,每一個(gè)小環(huán)路上感應(yīng)的電勢(shì)會(huì)互相抵消,所以傳輸線采用雙絞線;2)在干擾嚴(yán)重、精度要求很高的場(chǎng)合,應(yīng)當(dāng)采用屏蔽信號(hào)線。屏蔽信號(hào)線可以防止外部干擾竄入;3)光纖是利用光傳輸信號(hào),可以不受任何形式的電磁干擾影響,傳輸損耗很小。因此在周圍環(huán)境電磁干擾大,傳輸距離較遠(yuǎn)的場(chǎng)合,可以使用光纖傳輸;4)長(zhǎng)線傳輸除了會(huì)受到外部干擾,還可能產(chǎn)生波的反射。如果傳輸線的終端阻抗和傳輸線的波阻抗不匹配,入射波到達(dá)終端時(shí)會(huì)引起反射,反射波到達(dá)始端后,如果始端阻抗不匹配,又會(huì)引起新的反射。如此反復(fù),會(huì)在信號(hào)中引起很多干擾。因此對(duì)長(zhǎng)線可采用阻抗匹配的辦法抑制干擾。單片機(jī)原理及接口技術(shù)
3.接地技術(shù)
單片機(jī)應(yīng)用系統(tǒng)中存在的地線有數(shù)字地、模擬地、功率地、信號(hào)地和屏蔽地。數(shù)字地與模擬地應(yīng)分開(kāi),最后單點(diǎn)相連。一般高頻電路應(yīng)就近多點(diǎn)接地,在高頻電路中,地線上具有電感,從而增加了地線阻抗,而且地線變成了天線,向外輻射噪聲信號(hào),因此要多點(diǎn)就近接地。低頻電路應(yīng)一點(diǎn)接地,在低頻電路中,接地電路若形成環(huán)路,對(duì)系統(tǒng)影響很大,因此應(yīng)一點(diǎn)接地。交流地、功率地與信號(hào)地不能共用。流過(guò)交流地和功率地的電流較大,會(huì)產(chǎn)生幾毫伏、甚至幾伏電壓,這會(huì)嚴(yán)重地干擾低電平信號(hào)的單片機(jī)原理及接口技術(shù)
電路,因此交流地、功率地與信號(hào)地要絕對(duì)分開(kāi)。信號(hào)地與屏蔽地的連接不能形成死循環(huán)回路,否則會(huì)感生出電壓,形成干擾信號(hào)。
用金屬外殼將部分元器件或整機(jī)包圍起來(lái),再將金屬外殼接地,就能起到屏蔽的作用,可以抑制各種通過(guò)電磁感應(yīng)引起的干擾。屏蔽外殼的接地點(diǎn)要與系統(tǒng)的信號(hào)參考點(diǎn)相接,而且只能單點(diǎn)接地。若要有引出線,應(yīng)采用屏蔽線,其屏蔽層應(yīng)和外殼的接地點(diǎn)接同一系統(tǒng)參考點(diǎn)。參考點(diǎn)不同的系統(tǒng)應(yīng)分別屏蔽,不可共處一個(gè)屏蔽盒內(nèi)。單片機(jī)原理及接口技術(shù)
為了有效地抑制干擾,僅僅采取硬件措施是不夠的,還必須采取軟件措施。適當(dāng)采用軟、硬件相結(jié)合的方法,可以獲得較理想的抗干擾效果。軟件抗干擾措施主要有:1.指令冗余
在實(shí)際應(yīng)用中,根據(jù)系統(tǒng)要求,規(guī)定了程序運(yùn)行的唯一途徑。但當(dāng)干擾嚴(yán)重時(shí),會(huì)使程序偏離正常的運(yùn)行途徑,出現(xiàn)改變操作數(shù)數(shù)值以及將操作數(shù)誤認(rèn)為操作碼等問(wèn)題,即通常所說(shuō)的程序“跑飛”或“死機(jī)”。發(fā)生程序“跑飛”是因?yàn)槌绦蛑杏卸嘧止?jié)指令。此時(shí)的首要工作,就是盡快將程序納入正常路徑。所謂“指令冗余”就是在一些關(guān)鍵的地方將有效單字節(jié)指令重復(fù)書寫或插入一些單字節(jié)的空操作指令(NOP)。當(dāng)程序“跑飛”到某條NOP指令之上時(shí),不會(huì)9.2.3軟件抗干擾技術(shù)單片機(jī)原理及接口技術(shù)
發(fā)生把操作數(shù)作為指令碼執(zhí)行的錯(cuò)誤。但在程序中加入太多的冗余指令會(huì)降低程序正常運(yùn)行的效率。因此,通常僅僅在一些對(duì)程序流向起決定作用的指令的前面插入兩條NOP指令,以保證“跑飛”的程序迅速恢復(fù)正常運(yùn)行。2.軟件陷阱
指令冗余使“跑飛”的程序恢復(fù)正常運(yùn)行有兩個(gè)條件,一是“跑飛”的程序必須落到程序區(qū),二是必須執(zhí)行所設(shè)置的冗余指令。如果“跑飛”的程序落到非程序區(qū)(如EPROM中未使用的空間或某些數(shù)據(jù)表格等)時(shí),或者當(dāng)“跑飛”的程序在沒(méi)有碰到冗余指令之前,已經(jīng)不能正常運(yùn)行,可采用設(shè)置軟件陷阱的方法,引導(dǎo)“跑飛”的程序進(jìn)入指定的指令操作。9.2.3軟件抗干擾技術(shù)單片機(jī)原理及接口技術(shù)
所謂“軟件陷阱”,就是利用一條引導(dǎo)指令,強(qiáng)行將掉到陷阱中的程序引向一個(gè)指定的地址,在那里有程序運(yùn)行出錯(cuò)處理程序,會(huì)將程序納入正軌。根據(jù)“跑飛”的程序落入陷阱區(qū)的位置不同,可將軟件陷阱設(shè)置在以下區(qū)域:1)未使用的中斷區(qū)。當(dāng)未使用的中斷因干擾而開(kāi)放時(shí),在對(duì)應(yīng)的中斷服務(wù)程序中設(shè)置軟件陷阱,以及時(shí)捕捉錯(cuò)誤的中斷,從而返回到正常路徑。2)未使用的EPROM空間。EPROM的存儲(chǔ)空間很少全部用完,可在空白處插入軟件陷阱指令。軟件陷阱指令為L(zhǎng)JMP0000H,機(jī)器碼為020000H。當(dāng)程序“跑飛”時(shí),PC指針指向02H操作碼,失控程序?qū)⑥D(zhuǎn)向復(fù)位入口地址0000H。3)運(yùn)行程序區(qū)。將陷阱指令組分散放置在用戶程序各模塊之間的空余單元里。在正常單片機(jī)原理及接口技術(shù)
程序中不執(zhí)行這些指令,不會(huì)影響程序執(zhí)行的效率。在當(dāng)前EPROM容量不成問(wèn)題的條件下,“軟件陷阱”應(yīng)多設(shè)置一些為好,“跑飛”的程序一旦落入此區(qū),便迅速拉到正常路徑。4)中斷服務(wù)程序區(qū)。設(shè)用戶主程序運(yùn)行區(qū)間為CODE1~CODE,并設(shè)定時(shí)器T0產(chǎn)生10ms定時(shí)中斷??稍谥袛喾?wù)程序中判斷中斷斷點(diǎn)地址CODEx,若CODEx<CODE1或CODEx>CODE2,說(shuō)明發(fā)生了程序“跑飛”,則應(yīng)使程序返回到復(fù)位地址0000H,將“跑飛”程序拉到正常路徑。5)外部RAM寫保護(hù)。單片機(jī)外部RAM中保存了大量數(shù)據(jù),其寫入指令為MOVX@DPTR,A。當(dāng)CPU受到干擾而非法執(zhí)行該指令時(shí),會(huì)改寫RAM中的數(shù)據(jù)。為減小RAM中數(shù)據(jù)丟失或被改寫的可能性,可在對(duì)RAM寫操作之前加入條件陷阱指令,不滿足條件時(shí)不允許寫,并進(jìn)入陷阱,形成死循環(huán)。單片機(jī)原理及接口技術(shù)
3.程序運(yùn)行監(jiān)控
在計(jì)算機(jī)控制系統(tǒng)中,即使采用了上述的抗干擾措施,但當(dāng)程序“跑飛”到一個(gè)冗余指令和“軟件陷阱”都無(wú)能為力的死循環(huán)中時(shí),系統(tǒng)就會(huì)癱瘓。此時(shí)只能依靠本身不依賴于CPU而獨(dú)立工作的程序運(yùn)行監(jiān)視器Watchdog(看門狗)來(lái)解決程序“跑飛”問(wèn)題。Watchdog可以做成硬件電路,也可以由軟件設(shè)計(jì),但軟件的可靠性不如硬件電路,也可由兩者結(jié)合起來(lái)實(shí)現(xiàn)。
Watchdog是利用CPU在一定的時(shí)間間隔(根據(jù)程序運(yùn)行要求而定)內(nèi)發(fā)出正常信號(hào)的條件工作的,當(dāng)CPU進(jìn)入死循環(huán)后,可以及時(shí)發(fā)現(xiàn)并使系統(tǒng)復(fù)位。
單片機(jī)原理及接口技術(shù)
3.程序運(yùn)行監(jiān)控
軟件看門狗基本思路是:在主程序中對(duì)T0中斷服務(wù)程序進(jìn)行監(jiān)視;在T1中斷服務(wù)程序中對(duì)主程序進(jìn)行監(jiān)視;T0中斷又監(jiān)視T1中斷。這種相互依存、相互制約的抗干擾措施將使系統(tǒng)的可靠性大大提高。
Watchdog的硬件電路可以由單穩(wěn)態(tài)電路構(gòu)成,也可以使用集成電路uP監(jiān)控電路。uP監(jiān)控電路有多種規(guī)格和種類,有的除了具有看門狗功能,還具有上電復(fù)位、監(jiān)控電壓變化、片使能WDO和備份電源切換開(kāi)關(guān)等功能。
單片機(jī)原理及接口技術(shù)9.3.1設(shè)計(jì)任務(wù)及硬件電路設(shè)計(jì)1.設(shè)計(jì)任務(wù)
設(shè)計(jì)一個(gè)八路溫度巡檢儀控制系統(tǒng),測(cè)量范圍為0~300oC,要求8路輸入溫度值,能在4位LED數(shù)碼管上輪流顯示,其中最高位顯示通道數(shù)。2.系統(tǒng)硬件電路設(shè)計(jì)
要對(duì)8路溫度進(jìn)行采集并顯示,電路主要由A/D轉(zhuǎn)換模塊,多路數(shù)據(jù)選擇模塊,數(shù)據(jù)處理及顯示控制模塊組成。A/D轉(zhuǎn)換模塊由集成電路AD7705組成,數(shù)據(jù)選擇開(kāi)關(guān)由多路選擇開(kāi)關(guān)CD4051組成,地址線決定對(duì)哪一路進(jìn)行數(shù)據(jù)轉(zhuǎn)換。外圍擴(kuò)展的芯片采用串行接口芯片,使整個(gè)系統(tǒng)體積小、功耗低,具有良好的可維護(hù)性和較強(qiáng)的抗干擾性能。單片機(jī)選用AT89C51,晶振為12MHz,AD7705的時(shí)鐘線接單片機(jī)的ALE9.3八路溫度巡檢儀控制系統(tǒng)設(shè)計(jì)單片機(jī)原理及接口技術(shù)端,它將產(chǎn)生2MHz的時(shí)鐘信號(hào)。單片機(jī)的P0口接數(shù)碼管的段碼,P2口接位選。P3.0為A/D數(shù)據(jù)輸入端,采用串行通信方式0進(jìn)行數(shù)據(jù)的讀入。(1)A/D采樣模塊
在這一部分電路中,AD7705是用于低頻測(cè)量系統(tǒng)的前端器件,它分辨率高,且有節(jié)電模式,能夠滿足高精度和低功耗的要求。此外,AD7705片內(nèi)還有數(shù)字濾波電路、校準(zhǔn)電路和補(bǔ)償電路,因而能更好地保證高精度溫度測(cè)量的實(shí)現(xiàn)。
AD7705有兩個(gè)模擬差分輸入通道,電源電壓為+5V、參考電壓為+3.3V。AD7705可直接接收傳感器產(chǎn)生的信號(hào)以進(jìn)行A/D轉(zhuǎn)換并輸出串行數(shù)字信號(hào)。它采用Σ-Δ技術(shù)來(lái)實(shí)現(xiàn)16位A/D轉(zhuǎn)換。采樣速率由MCLKIN端的主時(shí)鐘和放大器的可變?cè)鲆鎭?lái)
單片機(jī)原理及接口技術(shù)決定。實(shí)際上,AD7705同時(shí)可以對(duì)輸入信號(hào)進(jìn)行片內(nèi)放大、調(diào)制轉(zhuǎn)換和數(shù)字濾波處理。其數(shù)字濾波器的阻帶可通過(guò)編程控制,以便調(diào)節(jié)濾波器的截止頻率和輸出數(shù)據(jù)的更新速率。
關(guān)于AD7705基準(zhǔn)電壓的選擇,為了保證測(cè)量精度,沒(méi)有直接將電源電壓作為基準(zhǔn)電壓,而是選用專門的穩(wěn)壓集成芯片ASM1117,并且進(jìn)行了去耦處理。該模塊的電路如圖9-3所示。
單片機(jī)原理及接口技術(shù)圖9-3AD采樣電路圖單片機(jī)原理及接口技術(shù)
(2)多路數(shù)據(jù)選擇模塊:
CD4051相當(dāng)于一個(gè)單刀八擲開(kāi)關(guān),開(kāi)關(guān)接通哪一通道,由輸入的3位地址碼ABC來(lái)決定?!?EN”是禁止端,當(dāng)/EN=1時(shí),各通道均不接通。此外,CD4051還設(shè)有另外一個(gè)電源端VEE,以作為電平位移時(shí)使用,從而使在單組電源供電情況下工作的CMOS電路所提供的數(shù)字信號(hào)能直接控制多路開(kāi)關(guān),并使多路開(kāi)關(guān)可傳輸峰-峰值達(dá)15V的交流信號(hào)。例如,若模擬開(kāi)關(guān)的供電電源VDD=+5V,VSS=0V,當(dāng)VEE=-5V時(shí),只要對(duì)此模擬開(kāi)關(guān)施加0~5V的數(shù)字控制信號(hào),就可控制幅度范圍為-5V~+5V的模擬信號(hào)。單片機(jī)原理及接口技術(shù)
圖9-4差分信號(hào)多路選擇開(kāi)關(guān)單片機(jī)原理及接口技術(shù)
由于A/D7705的模擬輸入是以差分信號(hào)的方式輸入,所以系統(tǒng)選用兩片CD4051作八通道的選擇控制,將兩片CD4051的地址線(A、B、C)分別連到一起,使輸入的差分信號(hào)同時(shí)選通。如圖9-4所示U3與U4的第3管腳分別接AD7705的模擬輸入端。在實(shí)際應(yīng)用中,為了使得它們的導(dǎo)通特性相同,應(yīng)盡量選擇同一型號(hào)的CD4051。(3)數(shù)碼管顯示模塊:
該系統(tǒng)采用動(dòng)態(tài)掃描的方式進(jìn)行顯示。在硬件設(shè)計(jì)中將所有位數(shù)碼管的段選線并聯(lián)在一起,由位選線控制是哪一位數(shù)碼管有效。動(dòng)態(tài)掃描顯示的原理是輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選信號(hào),利用發(fā)光管的余輝和人眼視覺(jué)暫留作用,使人的感覺(jué)好像各位數(shù)碼管同時(shí)都在顯示。動(dòng)態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時(shí)應(yīng)略小于靜態(tài)顯示電路中的限流電阻。該方案與靜態(tài)顯示相比,硬件電路比較簡(jiǎn)單,成本較低。動(dòng)態(tài)顯示模塊電路如圖9-5所示。單片機(jī)原理及接口技術(shù)
圖9-5動(dòng)態(tài)LED顯示電路單片機(jī)原理及接口技術(shù)
在該電路中選用限流電阻為330Ω,因?yàn)槊恳粋€(gè)段碼的發(fā)光二極管所能承受的最大電流為10mA~20mA。在電源電壓為+5V時(shí),如果不加限流電阻,則流過(guò)發(fā)光二極管的電流將達(dá)到幾百毫安,這樣會(huì)燒壞發(fā)光二極管。
需要說(shuō)明的一點(diǎn)是,該系統(tǒng)選用共陽(yáng)極數(shù)碼管,這樣在段碼控制端口(P0口)為低電平時(shí)數(shù)碼管導(dǎo)通點(diǎn)亮。在MCS-51單片機(jī)或者是其它的一些集成電路中,灌電流要大于其輸出電流,所以選用共陽(yáng)極數(shù)碼管,讓P0口以灌電流的方式提供驅(qū)動(dòng)電流,以提高驅(qū)動(dòng)能力。還需要特別說(shuō)明的一點(diǎn)是,所用端口不能直接去驅(qū)動(dòng)每個(gè)數(shù)碼管的位選端口,因?yàn)镸CS-51單片機(jī)的每個(gè)端口只能提供20mA的電流,如果去驅(qū)動(dòng)的話,可能會(huì)燒壞單片機(jī)的端口。
八路溫度巡檢儀控制系統(tǒng)的硬件連接如圖9-6所示。單片機(jī)原理及接口技術(shù)
圖9-6
8路巡檢儀系統(tǒng)原理圖單片機(jī)原理及接口技術(shù)
首先上電復(fù)位AD7705,配置AT89C51單片機(jī)的串行接口,然后將AD7705的通道1初始化。查詢DRDY引腳,若為低電平,則讀數(shù)據(jù)寄存器,把數(shù)據(jù)轉(zhuǎn)化為溫度值,再調(diào)用顯示子程序及延時(shí)子程序,之后返回繼續(xù)采集數(shù)據(jù),查詢DRDY并顯示,直到結(jié)束。(1)主程序設(shè)計(jì)
系統(tǒng)上電后,對(duì)AD7705進(jìn)行初始化。然后調(diào)用顯示子函數(shù)和A/D轉(zhuǎn)換測(cè)量子函數(shù)進(jìn)入循環(huán),系統(tǒng)默認(rèn)依次循環(huán)顯示8個(gè)通道的電壓值,每個(gè)通道的數(shù)據(jù)顯示時(shí)間在0.5s,溫度測(cè)量的周期為4s。主程序流程如圖9-7所示。9.3.2系統(tǒng)軟件設(shè)計(jì)單片機(jī)原理及接口技術(shù)
(2)顯示子函數(shù)
顯示程序采用動(dòng)態(tài)掃描法實(shí)現(xiàn)4位數(shù)碼管的數(shù)值顯示。測(cè)量所得的A/D轉(zhuǎn)換數(shù)據(jù)放在8個(gè)事先定義的ad_data[8]內(nèi)存單元中,測(cè)量所得的A/D數(shù)據(jù)在在顯示時(shí)需經(jīng)過(guò)轉(zhuǎn)換變成十進(jìn)制BCD碼。列掃描采用掃描字代碼,每位LED顯示時(shí)間為1ms,每路溫度數(shù)據(jù)顯示時(shí)間為0.5秒。(3)模/數(shù)轉(zhuǎn)換測(cè)量子函數(shù)
模/數(shù)(A/D)轉(zhuǎn)換測(cè)量子函數(shù)用來(lái)控制對(duì)AD7705和CD4051的八路模擬輸入的微小信號(hào)進(jìn)行A/D轉(zhuǎn)換,并將對(duì)應(yīng)的數(shù)值存入內(nèi)存單元。程序流程如圖9-8所示。單片機(jī)原理及接口技術(shù)
圖9-7主程序流程圖圖9-8A/D轉(zhuǎn)換測(cè)量子程序流程圖單片機(jī)原理及接口技術(shù)
整個(gè)系統(tǒng)的參考程序如下:#include<reg51.h>#defineAddr_channelP1 /*八路通道地址端口*/typedefunsignedcharuchar; /*用關(guān)鍵字宏定義,其效率高*/typedefunsignedintuint;sbitDRDY=P3^2;sbitDP=P0^7;/***********內(nèi)存單元定義*************//*code以節(jié)省內(nèi)存單元*/ucharcodeseg7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};/*0~9段碼譯碼數(shù)組*/ucharcodescan_con[4]={0xf7,0xfb,0xfd,0xfe}; /*4位列掃描控制字0xf7,0xfb,0xfd,0xfe*/uintdataad_data[8]={0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000};/*8個(gè)通道AD數(shù)據(jù)內(nèi)存單元*/單片機(jī)原理及接口技術(shù)
uint_dataad_data_buff[3]={0x0000,0x0000,0x0000};uchardatadis[4]={0x00,0x00,0x00,0x00};/*3個(gè)顯示單元和1個(gè)數(shù)據(jù)存儲(chǔ)單元*//************延時(shí)1ms函數(shù)*******************//*減運(yùn)算以節(jié)省代碼存儲(chǔ)空間*/voiddelay1ms(uintt){ uinti,j;
for(i=t;i>0;i--)
for(j=120;j>0;j--);}/*******對(duì)8位數(shù)據(jù)進(jìn)行倒序處理函數(shù)*******/ucharreverse_order(ucharold_dat){
uchari,new_dat;
new_dat=old_dat&0x01; /*取要轉(zhuǎn)換數(shù)據(jù)最低位*/單片機(jī)原理及接口技術(shù)
for(i=0;i<7;i++)
{ new_dat<<=1; /*將最低位左移一次*/ old_dat>>=1; /*數(shù)據(jù)的第二位移到最低位*/ new_dat|=(old_dat&0x01);
}
returnnew_dat; }/***********向AD7705寫一個(gè)字節(jié)的數(shù)據(jù)******************/voidWrite_AD_reg(uchardat){
SBUF=dat;
while(!TI); /*等待發(fā)送完成*/
TI=0; }/********從AD7705讀出兩個(gè)字節(jié)的數(shù)據(jù),AD轉(zhuǎn)換值*******//*返回值為unsignedint類型*/單片機(jī)原理及接口技術(shù)
uintRead_AD_reg(){ucharlow8,high8;uintAD_out;SCON=0x00;Write_AD_reg(0x1c); /*讀數(shù)據(jù)通道0x38*/while(DRDY); /*為低電平時(shí)讀取數(shù)據(jù)*/REN=1; /*接收使能*/while(!RI); /*等待接收完*/RI=0;high8=SBUF; while(!RI);RI=0;low8=SBUF;REN=0;high8=reverse_order(high8); /*對(duì)讀回的高8位倒序*/low8=reverse_order(low8);AD_out=high8;單片機(jī)原理及接口技術(shù)
AD_out<<=8;AD_out|=low8;returnAD_out; }/************對(duì)AD7705初始化*****************/voidAD_Init(void) /*用串行數(shù)據(jù)輸入時(shí)一定要將數(shù)據(jù)進(jìn)行倒序處理*/{
Write_AD_reg(0x04);
/*寫0x20到通信寄存器,選擇通道ANI(+)和ANI(-),下一個(gè)
寄存器指向時(shí)鐘寄存器。倒序:0x04*/
Write_AD_reg(0x30); /*寫0x0c到時(shí)鐘寄存器,接2MHz時(shí)鐘,時(shí)鐘二分頻,輸出更
新率為50Hz。倒序:0x30*/
Write_AD_reg(0x08); /*寫0x10到通信寄存器,到通信寄存器,下一個(gè)寄存器指向
設(shè)置寄存器。倒序:0x08*/
Write_AD_reg(0x62); /*寫0x46到設(shè)置寄存器,自動(dòng)校準(zhǔn),單極性,gain=1;緩沖
模式FASYNC=0。倒序:0x62*/單片機(jī)原理及接口技術(shù)
Write_AD_reg(0x6e); /*寫0x76到設(shè)置寄存器,自動(dòng)校準(zhǔn),單極性,
gain=64;緩沖模式,F(xiàn)ASYNC=0。倒序:0x6e*/
Write_AD_reg(0x76); /*寫0x6e到設(shè)置寄存器,自動(dòng)校準(zhǔn),單極性,
gain=32;緩沖模式,F(xiàn)ASYNC=0。倒序:0x76*/}/************溫度采樣函數(shù)*****************/voidAD_samp(void){uchari,m,n;ucharj=0;intk;Addr_channel=j;for(i=0;i<8;i++)
{ad_data_buff[0]=Read_AD_reg();/*在此也可以做中值濾波處理*/單片機(jī)原理及接口技術(shù)
ad_data_buff[1]=Read_AD_reg();ad_data_buff[2]=Read_AD_reg();for(m=0;m<3;m++)
{
for(n=0;n<3-m;n++)
if(ad_data_buff[n]>value_buf[n+1])
{
k=ad_data_buff[n];
ad_data_buff[n]=ad_data_buff[n+1];
value_buf[n+1]=k;
}
} ad_data[i]=ad_data_buff[1];
/*使模擬開(kāi)關(guān)選通可靠,起延時(shí)的作用*/
j++; Addr_channel=j;
}
單片機(jī)原理及接口技術(shù)
Addr_channel=0x00;}/************顯示處理函數(shù)*****************/voiddisplay(void){ucharm,n;floath;uinta,k,d;dis[3]=0x01; /*通道初值為1*/for(m=0;m<8;m++)
{ h=ad_data[m]/65535.0; k=h*300; dis[2]=k/100; /*對(duì)溫度值取百位數(shù)*/ dis[1]=k/10%10; /*對(duì)溫度值取十位數(shù)*/ dis[0]=k%10; /*對(duì)溫度值取個(gè)位數(shù)*/ for(a=0;a<50;a++) {
單片機(jī)原理及接口技術(shù)
for(n=0;n<4;n++) {
P0=seg7[dis[n]]; /*P0為數(shù)碼管段選端口*/
P2=scan_con[n];
delay1ms(5); /*穩(wěn)定顯示*/
P2=0xff; /*確保下次寫數(shù)據(jù)正確*/ }
} /*通道加1*/ dis[3]++;
}}單片機(jī)原理及接口技術(shù)
voidmain(void){
Addr_channel=0x00; /*通道地址初始為0*/
AD_Init();
SCON=0x00;/*串口初始化*/
while(1)
{ AD_samp(); display();
} }單片機(jī)原理及接口技術(shù)
9.4步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)1.設(shè)計(jì)任務(wù)
利用單片機(jī)控制步進(jìn)電機(jī)實(shí)現(xiàn)兩種工作方式。方式1:通過(guò)T2自動(dòng)送出控制脈沖,使步進(jìn)電機(jī)以某一速度恒定轉(zhuǎn)動(dòng),同時(shí)利用數(shù)碼管顯示脈沖頻率;方式2:通過(guò)向外部中斷0(P3.2)送入脈沖控制步進(jìn)電機(jī),每輸入一個(gè)脈沖,步進(jìn)電機(jī)步進(jìn)一次。2.硬件電路設(shè)計(jì)
步進(jìn)電機(jī)是一種將電脈沖信號(hào)轉(zhuǎn)換成角位移或線位移的機(jī)電元件。步進(jìn)電機(jī)的輸入量是脈沖序列,輸出量則為相應(yīng)的增量位移或步進(jìn)運(yùn)動(dòng)。正常運(yùn)動(dòng)情況下,它每轉(zhuǎn)一周具有固定的步數(shù);做連續(xù)步進(jìn)運(yùn)動(dòng)時(shí),其旋轉(zhuǎn)轉(zhuǎn)速與輸入脈沖的頻率保持嚴(yán)格的對(duì)應(yīng)關(guān)9.4.1設(shè)計(jì)任務(wù)及硬件電路設(shè)計(jì)單片機(jī)原理及接口技術(shù)
系,不受電壓波動(dòng)和負(fù)載變化的影響。由于步進(jìn)電機(jī)能直接接受數(shù)字量的控制,所以特別適宜采用單片機(jī)進(jìn)行控制。
所采用步進(jìn)電機(jī)為四相六線制,當(dāng)通電時(shí)序?yàn)锳B-BC-CD-DA時(shí),步進(jìn)角為1.8度,通電時(shí)序?yàn)锳-AB-B-BC-C-CD-D-DA時(shí),步進(jìn)角為0.9度。
基本操作:方式1下K1、K2鍵控制T2的定時(shí)長(zhǎng)度,進(jìn)而控制送給步進(jìn)電機(jī)的脈沖頻率,同時(shí)數(shù)碼管顯示頻率,K3鍵控制方式1、2間的轉(zhuǎn)換。注:方式2下數(shù)碼管不再顯示。
要實(shí)現(xiàn)將單片機(jī)送出的控制脈沖經(jīng)功率放大以后驅(qū)動(dòng)步進(jìn)電機(jī),選用集成功放芯片L298作為驅(qū)動(dòng)電路。L298芯片是一種雙H橋式驅(qū)動(dòng)器,每一路輸出由標(biāo)準(zhǔn)的TTL邏輯電平信號(hào)控制,可用來(lái)驅(qū)動(dòng)電感性負(fù)載。H橋可承受46V電壓,相電流高達(dá)2.5A。
為了減小設(shè)計(jì)成本,選用數(shù)碼管動(dòng)態(tài)掃描方式顯示。系統(tǒng)硬件連接如圖9-9所示。 單片機(jī)原理及接口技術(shù)
圖9-9
步進(jìn)電機(jī)控制系統(tǒng)原理圖單片機(jī)原理及接口技術(shù)
9.4.2系統(tǒng)軟件設(shè)計(jì)根據(jù)硬件設(shè)計(jì)要求,編寫相應(yīng)參考程序如下:#include<reg52.h>#include<intrins.h>#defineucharunsignedchartypedefunsignedintuint;sfrT2MOD=0xc9;ucharcyc; /*定時(shí)器定時(shí)長(zhǎng)度,單位毫秒*/ucharstepcode; /*指向step_code中的某一數(shù)據(jù)*/ucharcodestep_code[]={0xf3,0xf6,0xfc,0xf9}; /*雙四拍*/ucharcodestep_code[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};/*單雙八拍*/ucharcodediscode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; /*數(shù)碼管段碼,0~9,off*/uchardis_buf[]={10,10,10,10,10,10,3,3}; /*顯示緩沖*/單片機(jī)原理及接口技術(shù)
ucharindex;
/*用于掃描時(shí)選通某一數(shù)碼管*/uchardigit; /*標(biāo)記本次掃描要選通那個(gè)數(shù)碼管*/sbitK1=P1^0;sbitK2=P1^1;sbi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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)價(jià)與發(fā)展計(jì)劃
- 2021年山東省泰安市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2023年內(nèi)蒙古自治區(qū)赤峰市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2024年山東省青島市公開(kāi)招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2024年增味劑項(xiàng)目資金申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2024年P(guān)CB高純化學(xué)品項(xiàng)目資金籌措計(jì)劃書代可行性研究報(bào)告
- 2025年無(wú)機(jī)礦物填充塑料項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模范
- 2025年盆景及園藝產(chǎn)品項(xiàng)目提案報(bào)告
- 2025年電池組配件項(xiàng)目申請(qǐng)報(bào)告范文
- 2025年監(jiān)控?cái)z像頭項(xiàng)目申請(qǐng)報(bào)告模稿
- 小學(xué)-英語(yǔ)-湘少版-01-Unit1-What-does-she-look-like課件
- 單證管理崗工作總結(jié)與計(jì)劃
- 規(guī)劃設(shè)計(jì)收費(fèi)標(biāo)準(zhǔn)
- 安全安全隱患整改通知單及回復(fù)
- 國(guó)有檢驗(yàn)檢測(cè)機(jī)構(gòu)員工激勵(lì)模式探索
- 采購(gòu)部年終總結(jié)計(jì)劃PPT模板
- CDI-EM60系列變頻調(diào)速器使用說(shuō)明書
- 【匯總】高二政治選擇性必修三(統(tǒng)編版) 重點(diǎn)知識(shí)點(diǎn)匯總
- 材料表面與界面考試必備
- 骨科重點(diǎn)專科省級(jí)市級(jí)申報(bào)材料
- 焦點(diǎn)CMS用戶手冊(cè)
評(píng)論
0/150
提交評(píng)論