畢業(yè)設(shè)計(jì)(論文)基于at89s52單片機(jī)的智能家居設(shè)計(jì)_第1頁
畢業(yè)設(shè)計(jì)(論文)基于at89s52單片機(jī)的智能家居設(shè)計(jì)_第2頁
畢業(yè)設(shè)計(jì)(論文)基于at89s52單片機(jī)的智能家居設(shè)計(jì)_第3頁
畢業(yè)設(shè)計(jì)(論文)基于at89s52單片機(jī)的智能家居設(shè)計(jì)_第4頁
畢業(yè)設(shè)計(jì)(論文)基于at89s52單片機(jī)的智能家居設(shè)計(jì)_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

摘要隨著國民經(jīng)濟(jì)和科學(xué)技術(shù)水平的提高,特別是計(jì)算機(jī)技術(shù)、通信技術(shù)、網(wǎng)絡(luò)技術(shù)、控制技術(shù)的迅猛發(fā)展與提高,促使家庭實(shí)現(xiàn)了現(xiàn)代化、居住環(huán)境舒適化、安全化。這些高科技已經(jīng)影響到人們生活的方方面面,改變了人們生活習(xí)慣,提高了人們生活質(zhì)量,智能家居就是在這種形勢下應(yīng)運(yùn)而生。而且隨著作為智能家居控制器的電子產(chǎn)品向智能化和微型化的不斷發(fā)展,單片機(jī)已經(jīng)成為電子產(chǎn)品研制和開發(fā)中首先選擇的控制器。基于以上思路,使用ATMEL公司的AT89S52實(shí)現(xiàn)基于單片機(jī)的智能家居的設(shè)計(jì),其主要具有如下功能:紅外遙控選擇功能,按下相應(yīng)的按鍵選擇進(jìn)入相應(yīng)的功能。密碼鎖設(shè)置有6位密碼,密碼通過矩陣鍵盤輸入,輸入過程中發(fā)現(xiàn)錯(cuò)誤可進(jìn)行逐個(gè)刪除的操作。若密碼正確,則LED液晶屏顯示鎖開,否則會(huì)有錯(cuò)誤提示,三次輸入錯(cuò)誤則鎖關(guān)且伴隨蜂鳴器發(fā)出警告。此外,在密碼正確的情況下可以進(jìn)行更改密碼操作。步進(jìn)電機(jī)實(shí)現(xiàn)正轉(zhuǎn)和反轉(zhuǎn)運(yùn)行,并延時(shí)3秒。溫度感應(yīng)裝置,可以在數(shù)碼管顯示當(dāng)前溫度。當(dāng)超過一定溫度時(shí),蜂鳴器發(fā)出聲響予以警告。本次設(shè)計(jì)以ATMEL公司的單片機(jī)AT89S52為核心控制器件,選用上海浩豚電子科技公司開發(fā)的MINI80開發(fā)板模擬智能家居環(huán)境。同時(shí)使用KeviluVision3軟件來編寫單片機(jī)的C語言程序,繼而完成軟件調(diào)試,然后下載到開發(fā)板進(jìn)行硬件調(diào)試。最后聯(lián)合軟、硬件調(diào)試電路板,完成本次畢業(yè)設(shè)計(jì)。關(guān)鍵詞:智能家居,單片機(jī),AT89S52,紅外遙控ABSTRACTAsthenationaleconomyandraisethelevelofscienceandtechnology,especiallytherapiddevelopmentofthecomputertechnology,communicationtechnology,networktechnology,controltechnologyandtheimprovementofthefamilytorealizethemodernization,tolivingenvironmentcomfortablechange,secure.Thesehigh-techhasaffectallaspectsofpeople'slives,changedpeoplelivinghabits,improvedpeoplelifequality,SmartHomeisalsothissituationarisesatthehistoricmoment.Andasintelligenthouseholdcontrollerelectronicproductstointelligentandthecontinuousdevelopmentofminiaturization,microcontrolunit(MCU)havebecomethefirstchoiceforcontrollersinthedevelopmentofelectronicproducts.BaseonthethinkingofSmartHome,thisdesignusesAT89S52ofATMELcompany.tocarryoutthedesignoftheSmartHome,itsmainfunctionasfollow:1.ThecorrespondingfunctionofIRremotecontrol.whenpressthebuttoncanenterrelevantfunctionrespectively.2.Codelockissetsixpasswords,andpasswordsareinputthroughthekeyboard.Whenfounderrorsintheprocessofiuputing,youcanrunaoperationofdeletingeachpassword.Ifthecorrectpassword,thenLCDscreendisplaythelockopen,otherwisetherewillbeerror.Andthreetimesrelistedandinputerrorsarelockedwithbuzzerwarned.Inaddition,inthecorrect,itcanchangethepassword.3.Stepmotorcanundertakeareturningandreverse,anddelaythreeseconds.4.Temperaturesensingdevice,canbeindigitaltubedisplaythecurrenttemperature.Whenmorethanacertaintemperature,italarmstobuzzertips.ThisdesignselectsAT89S52ofATMELcompanyanduseMINI80developmentboardofShanghaiHaoTunelectronictechnologydevelopmentcompanyasenvironmentsimulationoftheSmartHomeandcompilewithsoftwareofkeiluVision3.Andthendowanloadtheprogramtothedevelopmentboard.Last,testthecircuitboardwithedthesoftwareandhardwaretofinishthedesign.KEYWORDS:SmartHome,MCU,AT89S52,IRRemote目錄TOC\o"1-2"\h\z\u第1章緒論 1第2章智能家居系統(tǒng)總體設(shè)計(jì) 22.1系統(tǒng)設(shè)計(jì)任務(wù)和要求 22.2課題分析 22.3系統(tǒng)可行性分析 22.4設(shè)計(jì)原理 42.5系統(tǒng)組成 5第3章智能家居系統(tǒng)的硬件電路設(shè)計(jì) 63.1單片機(jī)AT89S52簡介 63.2紅外遙控簡介 83.34×4矩陣鍵盤 103.4步進(jìn)電機(jī) 113.5LCD1602顯示器 133.6DS18B20數(shù)字溫度傳感器 163.7數(shù)碼管顯示電路 193.8復(fù)位電路 203.9振蕩電路 213.10蜂鳴器 21第4章軟件程序設(shè)計(jì) 234.1軟件設(shè)計(jì) 234.2C語言的特點(diǎn) 234.3具體軟件模塊實(shí)現(xiàn) 24軟件抗干擾技術(shù) 29第5章系統(tǒng)調(diào)試 31部分模塊電路調(diào)試 315.2調(diào)試分析 325.3故障分析 32結(jié)論 33致謝 34參考文獻(xiàn) 35附錄1:部分系統(tǒng)程序清單 36附錄2:系統(tǒng)實(shí)物照片 43第1章緒論20世紀(jì)八十年代初,20世紀(jì)八十年代初,隨著大量采用電子技術(shù)的家用電器面市,住宅電子化出現(xiàn),80年代中期,將家用電器、通信設(shè)備與安全防范設(shè)備各自獨(dú)立的功能綜合為一體后,形成了住宅自動(dòng)化概念。80年代末,通信與信息技術(shù)的發(fā)展,出現(xiàn)了通過總線技術(shù)對(duì)住宅中各種通信、家電、安防設(shè)備進(jìn)行監(jiān)控與管理的商用系統(tǒng),這在美國稱為SmartHome,也就是現(xiàn)在智能家居的原型。智能家居最初的定義是這樣的,將家庭中各種與信息相關(guān)的通信設(shè)備、家用電器和家庭安防裝置,通過家庭總線技術(shù)HBS(HomeBusSystem)連接到一個(gè)家庭智能系統(tǒng)上,進(jìn)行集中或異地監(jiān)視、控制和家庭事務(wù)性管理,并保持這些家庭設(shè)施與住宅環(huán)境的和諧與協(xié)調(diào),HBS是智能住宅的基本單元也是智能住宅的核心。目前通常把智能家居被定義為利用電腦、網(wǎng)絡(luò)和綜合布線技術(shù),通過家庭信息管理平臺(tái)將與家居生活有關(guān)的各種子系統(tǒng)有機(jī)地結(jié)合的一個(gè)系統(tǒng)。也就是說,首先,它們都要在一個(gè)家居中建立一個(gè)通訊網(wǎng)絡(luò),為家庭信息提供必要的通路,在家庭網(wǎng)絡(luò)的操作系統(tǒng)的控制下,通過相應(yīng)的硬件和執(zhí)行機(jī)構(gòu),實(shí)現(xiàn)對(duì)所有家庭網(wǎng)絡(luò)上的家電和設(shè)備的控制和監(jiān)測。其次,它們都要通過一定的媒介平臺(tái),構(gòu)成與外界的通訊通道,以實(shí)現(xiàn)與家庭以外的世界溝通信息,滿足遠(yuǎn)程控制監(jiān)測和交換信息的需求。最后,它們的最終目的都是為滿足人們對(duì)安全、舒適、方便和符合綠色環(huán)境保護(hù)的需求。由此可見,智能家居是一個(gè)系統(tǒng)層次概念,它涵蓋了在建筑環(huán)境層次能夠影響人們生活的諸多方面,就實(shí)際應(yīng)用而言往往有以下系統(tǒng):可視對(duì)講系統(tǒng),家庭安防系統(tǒng),網(wǎng)絡(luò)通訊系統(tǒng),家電控制系統(tǒng)等等。目前,雖然智能家居有一定的發(fā)展,出現(xiàn)了一定數(shù)量的研究機(jī)構(gòu)和公司,尤其是經(jīng)歷了2000年的智能家居概念炒作之后,智能家居得到空前的發(fā)展。但智能家居在中國還處于初始階段,缺乏統(tǒng)一的標(biāo)準(zhǔn)和權(quán)威的產(chǎn)品。本人想設(shè)計(jì)一款基于MCS-51單片機(jī)的智能家居系統(tǒng)。該系統(tǒng)由密碼鎖模塊、紅外線遙控系統(tǒng)、步進(jìn)電機(jī),溫控系統(tǒng)構(gòu)成。該系統(tǒng)的安裝無需改變家庭原有的布線,只對(duì)原有布線稍加修改即可,可有效的解決單個(gè)家庭對(duì)智能家居產(chǎn)品的需求,且成本小、安裝周期短,在國內(nèi)有很大的市場潛能。但是由于本人能力,時(shí)間以及芯片內(nèi)存的限制,要做整個(gè)系統(tǒng)顯然是不可能的。對(duì)整個(gè)分系統(tǒng)而言,可以發(fā)現(xiàn)有很明顯的相似性,只是在某些細(xì)節(jié)上需要做不同的分析。故而做好其中一個(gè)便可觸類旁推。基于此,本設(shè)計(jì)僅對(duì)僅對(duì)一部分智能控制系統(tǒng)做簡要設(shè)計(jì)。該智能家電可以進(jìn)一步進(jìn)行拓展,可以通過GSM網(wǎng)絡(luò)完成與控制系統(tǒng)間的信息交換,進(jìn)而傳遞控制信息;可以再室內(nèi)安裝光控系統(tǒng)自動(dòng)控制窗簾的開閉;也可以通過ARM嵌入式的控制實(shí)現(xiàn)一鍵遙控多個(gè)電器的功能等等。本設(shè)計(jì)第二章介紹了本系統(tǒng)的設(shè)計(jì)原理,第三章為系統(tǒng)硬件設(shè)計(jì),第四章系統(tǒng)軟件設(shè)計(jì)。第2章智能家居系統(tǒng)總體設(shè)計(jì)2.1系統(tǒng)設(shè)計(jì)任務(wù)和要求本系統(tǒng)由單片機(jī)控制,使用無線紅外遙控技術(shù)進(jìn)行一定距離的數(shù)據(jù)傳輸,電子密碼鎖的鍵盤輸入及LCD顯示,步進(jìn)電機(jī)的定時(shí)轉(zhuǎn)動(dòng),溫度傳感器數(shù)碼管顯示實(shí)時(shí)溫度并高溫警告。測量溫度范圍:-40℃~+125℃;傳輸距離:大約為1-3米2.2課題分析首先,對(duì)于智能家居系統(tǒng),基礎(chǔ)的功能是必須滿足的,同時(shí)還要滿足易于控制的條件,但單片機(jī)的內(nèi)存是有一定的限度的。因此選擇合適的內(nèi)存的單片機(jī)控制成為本次設(shè)計(jì)的重中之重。再次,對(duì)于每一個(gè)獨(dú)立的功能,都需要做到最大可能的精確定時(shí),這就要求用到定時(shí)器。每一個(gè)功能選用合適的定時(shí)器而且不會(huì)和其他功能的定時(shí)器產(chǎn)生沖突,也是一個(gè)需要認(rèn)真考慮的地方。2.3系統(tǒng)可行性分析兩種設(shè)計(jì)方案方案一:以AT89S52為核心的單片機(jī)控制方案。利用單片機(jī)靈活的編程設(shè)計(jì)和豐富的I/O端口,及其控制的準(zhǔn)確性,來設(shè)計(jì)實(shí)現(xiàn)基本的密碼鎖功能。在單片機(jī)的外圍電路上接輸入鍵盤用于密碼的輸入和一些功能的控制,可以使用紅外進(jìn)行短距離的無線遙控,接LCD1602顯示器用于顯示作用,以及接其他設(shè)備。方案二:以74LS112雙JK觸發(fā)器構(gòu)成的數(shù)字邏輯電路控制方案。由兩塊74LS112雙JK觸發(fā)器組成的邏輯電路,采用分立元件組成電子密碼鎖,其構(gòu)造簡單,可以方便的實(shí)現(xiàn)密碼控制和報(bào)警電路控制等功能。但采用該方案使用的元件數(shù)量會(huì)過多,不僅不易進(jìn)行修改設(shè)置,無法根據(jù)環(huán)境的改變而適時(shí)修改功能,而且升級(jí)能力不夠強(qiáng)大,當(dāng)板制成后只能固定的實(shí)現(xiàn)一種特定功能??紤]到數(shù)字電路方案原理過于簡單,而且不能滿足現(xiàn)實(shí)的安全需求,而采用單片機(jī)控制的智能家居系統(tǒng)不僅升級(jí)方便,而且程序修改簡單,所以本系統(tǒng)采用方案一完成電子密碼鎖的功能。鍵盤的選擇方案一:采用獨(dú)立式按鍵來控制使用獨(dú)立式按鍵來控制液晶的顯示需要很多的按鍵。該方案每一個(gè)按鍵實(shí)現(xiàn)一個(gè)功能,有易于控制,程序編寫簡單的優(yōu)點(diǎn),但是每個(gè)按鍵都需要接上拉電阻,這樣占用了單片機(jī)大量的I/O接口資源,不僅要對(duì)單片機(jī)外擴(kuò)I/O口,并且在電路焊接方面很不方便,浪費(fèi)了大量的資源,提高了系統(tǒng)成本。方案二:采用矩陣式按鍵來控制矩陣式鍵盤用于按鍵數(shù)目較多的場合,它由行線和列線組成,按鍵位于行、列的交叉點(diǎn)上。把按鍵按行、列組成矩陣,在行列交點(diǎn)上都對(duì)應(yīng)有一個(gè)鍵,這樣使用的按鍵要少,這種判定有無鍵被按下以及確定被按鍵的位置的方法稱為鍵掃描法。該方案雖然提高了編程的難度,但是節(jié)約了單片機(jī)大量的I/O口資源,免去了為焊接上拉電阻帶來了麻煩,提高了整塊電路板的美觀度。基于實(shí)際考慮,本系統(tǒng)選擇方案二來設(shè)計(jì)按鍵。單片機(jī)的選擇方案一:采用AT89C51單片機(jī)AT89C51單片機(jī)是一種低電壓、高性能CMOS8位微處理器,可以與其它51系列的單片機(jī)兼容,其內(nèi)部ROM全部采用FLASH,ROM最高時(shí)鐘頻率可以達(dá)到24MHz,且能以3V的超低電壓工作。但AT89C51內(nèi)部ROM僅為4KB,不利于功能的擴(kuò)展。方案二:采用AT89S52單片機(jī)AT89S52單片機(jī)具有AT89C51的全部功能,最高外接晶振可達(dá)33MHz,而且內(nèi)部ROM為8KB,有利于功能的擴(kuò)展?;趯?shí)際考慮,本系統(tǒng)選擇方案二來設(shè)計(jì)單片機(jī)。報(bào)警模塊的選擇方案一:采用語音報(bào)警采用語音報(bào)警,雖然可以使整個(gè)系統(tǒng)更加完美,但是會(huì)使程序更加復(fù)雜,而且提高了整個(gè)系統(tǒng)的造價(jià)。方案二:采用發(fā)光二極管和蜂鳴器來報(bào)警采用發(fā)光二極管和蜂鳴器來報(bào)警,可以發(fā)出聲光報(bào)警,降低了成本。基于實(shí)際考慮,本系統(tǒng)選擇方案二來設(shè)計(jì)密碼鎖。電源模塊的選擇方案一:采用干電池作為系統(tǒng)的電源采用干電池作為單片機(jī)電子密碼鎖的電源,由于調(diào)試時(shí)間較長,干電池需要經(jīng)常更換,不符合節(jié)約社會(huì)資源的要求,并且?guī)Х桨感枰幸粋€(gè)硬件將3節(jié)電池串聯(lián)在一起以產(chǎn)生足夠的電壓,若如此,將造成攜帶的不便。方案二:采用5V直流穩(wěn)壓電源作為系統(tǒng)電源采用5V直流穩(wěn)壓電源作為系統(tǒng)電源,不僅功率上可以滿足系統(tǒng)需要,而且不需要更換電源,比較輕便,使用更加安全可靠?;谝陨戏治?,我們決定采用方案二。2.4設(shè)計(jì)原理結(jié)合整個(gè)系統(tǒng)的功能、成本、美觀度等方面的綜合考慮,本系統(tǒng)主要由單片機(jī)、矩陣鍵盤、液晶顯示器和密碼存儲(chǔ)、紅外遙控等部分組成。其中紅外遙控部分用于系統(tǒng)啟動(dòng)時(shí)的功能選擇;矩陣鍵盤用于輸入數(shù)字密碼和一些功能的實(shí)現(xiàn)。用戶通過連接在單片機(jī)的矩陣鍵盤輸入密碼,單片機(jī)接收鍵入的代碼,并與存貯在ROM中的密碼進(jìn)行比較,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報(bào)警電路控制開鎖還是報(bào)警。如果密碼正確,則開鎖;如果密碼不正確,則允許操作人員重新輸入密碼,并且報(bào)警提示,對(duì)于信息,則通過LCD顯示器及發(fā)出聲光報(bào)警來顯示;步進(jìn)電機(jī)可以進(jìn)行定時(shí)的正轉(zhuǎn)和發(fā)轉(zhuǎn);數(shù)碼管則可以根據(jù)數(shù)碼采集模塊顯示當(dāng)前的溫度,并且在高于一定溫度值是予以警示。系統(tǒng)共有兩部分構(gòu)成,即硬件部分與軟件部分。其中硬件部分由電源輸入部分、鍵盤輸入部分、紅外遙控部分、復(fù)位部分、晶振部分、蜂鳴器報(bào)警部分、LCD顯示部分、步進(jìn)電機(jī)部分、溫度采集部分、數(shù)碼管顯示部分組成。軟件部分對(duì)應(yīng)的由主程序、初始化程序、LCD顯示程序、鍵盤掃描程序、鍵功能程序、延時(shí)程序、溫度采集程序、數(shù)碼管顯示程序、步進(jìn)電機(jī)驅(qū)動(dòng)程序、紅外遙控程序等組成。其原理框圖如圖2-1所示。Lcd顯示電路復(fù)位電路Lcd顯示電路復(fù)位電路數(shù)碼管顯示電路紅外遙控電路數(shù)碼管顯示電路紅外遙控電路步進(jìn)電機(jī)電路步進(jìn)電機(jī)電路鍵盤掃描電路AT89S52鍵盤掃描電路AT89S52報(bào)警電路晶振電路報(bào)警電路晶振電路電源電路溫度采集電路電源電路溫度采集電路圖2-1智能家居系統(tǒng)原理框圖2.5系統(tǒng)組成 在確定了選用什么型號(hào)的單片機(jī)后,就要確定外圍電路。其外圍電路包括電源輸入部分、紅外遙控、鍵盤輸入部分、復(fù)位部分、晶振部分、溫度采集部分、數(shù)碼管顯示部分、步進(jìn)電機(jī)部分、報(bào)警部分、LCD部分,根據(jù)實(shí)際情況,鍵盤輸入部分選擇4*4矩陣鍵盤,顯示部分選擇液晶顯示LCD1602,步進(jìn)電機(jī)采用MP28GA,溫度采集使用DS18B20數(shù)字溫度傳感器。根據(jù)以上器件,選取了上海浩豚電子科技公司生產(chǎn)的MINI80單片機(jī)開發(fā)板作為基本的模擬環(huán)境。該開發(fā)板器件優(yōu)良,做工精細(xì),完全可以滿足本次設(shè)計(jì)需求。其原理圖如圖2-2所示。圖2-2開發(fā)板硬件電路原理圖第3章智能家居系統(tǒng)的硬件電路設(shè)計(jì) 3.1單片機(jī)AT89S52簡介主要特性AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K

在系統(tǒng)可編程Flash

存儲(chǔ)器。使用Atmel

公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51

產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8

位CPU

和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。

AT89S52具有以下標(biāo)準(zhǔn)功能:

8k字節(jié)Flash,256字節(jié)RAM,32

位I/O

口線,看門狗定時(shí)器,2

個(gè)數(shù)據(jù)指針,三個(gè)16

位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52

可降至0Hz

靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。主要性能1.與MCS-51單片機(jī)產(chǎn)品兼容;2.8K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器;3.1000次擦寫周期;4.全靜態(tài)操作:0Hz-33MHz;5.三級(jí)加密程序存儲(chǔ)器;6.32個(gè)可編程I/O口線;7.三個(gè)16位定時(shí)器/計(jì)數(shù)器;8.六個(gè)中斷源;9.全雙工UART串行通道;10.低功耗空閑和掉電模式;11.掉電后中斷可喚醒;12.看門狗定時(shí)器;13.雙數(shù)據(jù)指針;14.掉電標(biāo)識(shí)符。管腳說明管腳如圖3-1所示。圖3-1AT89S52管腳圖P0口:一個(gè)8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0端口寫“1”時(shí),引腳用作高阻抗輸入,當(dāng)訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0不具有內(nèi)部上拉電阻。在flash編程時(shí),P0口也用來接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。P1口:一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,p1輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P1端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.1分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和定時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(P1.1/T2EX)。在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。引腳號(hào)第二功能:P1.0T2(定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時(shí)鐘輸出;P1.1T2EX(定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號(hào)和方向控制);P1.5MOSI(在系統(tǒng)編程用);P1.6MISO(在系統(tǒng)編程用);P1.7SCK(在系統(tǒng)編程用);P2口:一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動(dòng)。P3口:一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P3輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對(duì)P2端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口送出高八位地址。在這種應(yīng)用中,P2口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8位地址訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號(hào)。端口引腳第二功能:P3.0RXD(串行輸入口);P3.1TXD(串行輸出口);P3.2INTO(外中斷0);P3.3INT1(外中斷1);P3.4TO(定時(shí)/計(jì)數(shù)器0);P3.5T1(定時(shí)/計(jì)數(shù)器1);P3.6WR(外部數(shù)據(jù)存儲(chǔ)器寫選通);P3.7RD(外部數(shù)據(jù)存儲(chǔ)器讀選通);此外,P3口還接收一些用于FLASH閃存編程和程序校驗(yàn)的控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將是單片機(jī)復(fù)位。ALE/PROG:當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。對(duì)FLASH存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE禁止位無效。SEN:程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89S52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,將跳過兩次PSEN信號(hào)。EA/VPP:外部訪問允許,欲使CPU僅訪問外部程序存儲(chǔ)器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器的指令。FLASH存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。XTAL1:振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。XTAL2:振蕩器反相放大器的輸出端。3.2紅外遙控簡介紅外遙控使用方便,功能多.目前已廣泛應(yīng)用在電視機(jī)、VCD、DVD、空調(diào)等各種家用電器中,且價(jià)格便宜,市場上非常容易買到。如果能將遙控器上許多的按鍵解碼出來.用作單片機(jī)系統(tǒng)的輸入.則解決了常規(guī)矩陣鍵盤線路板過大、布線復(fù)雜、占用I/O口過多的弊病。而且通過使用遙控器,操作時(shí)可實(shí)現(xiàn)人與設(shè)備的分離,從而更加方便使用。本設(shè)計(jì)采用TC9012為編碼芯片的遙控器。編碼格式1.0和1的編碼遙控器發(fā)射的信號(hào)由一串0和1的二進(jìn)制代碼組成.不同的芯片對(duì)0和1的編碼有所不同。通常有曼徹斯特編碼和脈沖寬度編碼。TC9012的0和1采用PWM方法編碼,即脈沖寬度調(diào)制。0碼由0.56ms低電平和0.56ms高電平組合而成.脈沖寬度為1.12ms.1碼由0.56ms低電平和1.69ms高電平組合而成.脈沖寬度為2.25ms。在編寫解碼程序時(shí).通過判斷脈沖的寬度,即可得到0或1。2.按鍵的編碼當(dāng)我們按下遙控器的按鍵時(shí),遙控器將發(fā)出一串二進(jìn)制代碼,我們稱它為一幀數(shù)據(jù)。根據(jù)各部分的功能。可將它們分為5部分,分別為引導(dǎo)碼、地址碼、地址碼、數(shù)據(jù)碼、數(shù)據(jù)反碼。遙控器發(fā)射代碼時(shí).均是低位在前。高位在后。由分析可以得到,引導(dǎo)碼高電平為4.5ms,低電平為4.5ms。當(dāng)接收到此碼時(shí),表示一幀數(shù)據(jù)的開始。單片機(jī)可以準(zhǔn)備接收下面的數(shù)據(jù)。地址碼由8位二進(jìn)制組成,共256種。圖中地址碼重發(fā)了一次。主要是加強(qiáng)遙控器的可靠性。如果兩次地址碼不相同,則說明本幀數(shù)據(jù)有錯(cuò),應(yīng)丟棄。不同的設(shè)備可以擁有不同的地址碼。因此,同種編碼的遙控器只要設(shè)置地址碼不同,也不會(huì)相互干擾。圖中的地址碼為十六進(jìn)制的0EH(注意低位在前)。在同一個(gè)遙控器中.所有按鍵發(fā)出的地址碼都是相同的。數(shù)據(jù)碼為8位,可編碼256種狀態(tài),代表實(shí)際所按下的鍵。數(shù)據(jù)反碼是數(shù)據(jù)碼的各位求反,通過比較數(shù)據(jù)碼與數(shù)據(jù)反碼.可判斷接收到的數(shù)據(jù)是否正確。如果數(shù)據(jù)碼與數(shù)據(jù)反碼之間的關(guān)系不滿足相反的關(guān)系.則本次遙控接收有誤,數(shù)據(jù)應(yīng)丟棄。在同一個(gè)遙控器上.所有按鍵的數(shù)據(jù)碼均不相同。數(shù)據(jù)碼為十六進(jìn)制的0CH,數(shù)據(jù)反碼為十六進(jìn)制的0F3H(注意低位在前),兩者之和應(yīng)為0FFH。遙控信號(hào)的解碼算法及程序編制當(dāng)遙控器無鍵按下。紅外發(fā)射二極管不發(fā)出信號(hào),遙控接收頭輸出信號(hào)1。有鍵按下時(shí),0和1編碼的高電平經(jīng)遙控頭倒相后會(huì)輸出信號(hào)0。由于與單片機(jī)的中斷腳相連,將會(huì)引起單片機(jī)中斷(單片機(jī)預(yù)先設(shè)定為下降沿產(chǎn)生中斷)。單片機(jī)在中斷時(shí)使用定時(shí)器0或定時(shí)器1開始計(jì)時(shí),到下一個(gè)脈沖到來時(shí),即再次產(chǎn)生中斷時(shí),先將計(jì)時(shí)值取出。清零計(jì)時(shí)值后再開始計(jì)時(shí),通過判斷每次中斷與上一次中斷之間的時(shí)間間隔。便可知接收到的是引導(dǎo)碼還是0和1。如果計(jì)時(shí)值為9ms。接收到的是引導(dǎo)碼,如果計(jì)時(shí)值等于1.12ms,接收到的是編碼0。如果計(jì)時(shí)值等于2.25ms.接收到的是編碼1。在判斷時(shí)間時(shí),應(yīng)考慮一定的誤差值。因?yàn)椴煌倪b控器由于晶振參數(shù)等原因,發(fā)射及接收到的時(shí)間也會(huì)有很小的誤差。在本設(shè)計(jì)中我們采用紅外一體化接收頭HS0038,紅外發(fā)射的信號(hào)編碼如圖3-2所示。圖3-2紅外發(fā)射編碼示意圖由圖3-2可以看出,紅外發(fā)射出的碼通過38K載波,一體化的接收頭信號(hào)端出的碼則通過內(nèi)部電路解調(diào)并整形,輸出的則是數(shù)據(jù)波形。利用這種性能可以做出紅外遙控器解碼。解碼方法如下:(1)設(shè)外部中斷0(或者1)為下降沿中斷,定時(shí)器0(或者1)為16位計(jì)時(shí)器.初始值為0。(2)第一次進(jìn)入遙控中斷后,開始計(jì)。(3)從第二次進(jìn)入遙控中斷起,先停止計(jì)時(shí)。并將計(jì)時(shí)值保存后,再重新計(jì)時(shí)。如果計(jì)時(shí)值等于前導(dǎo)碼的時(shí)間,設(shè)立前導(dǎo)碼標(biāo)志。準(zhǔn)備接收下面的一幀遙控?cái)?shù)據(jù),如果計(jì)時(shí)值不等于前導(dǎo)碼的時(shí)間,但前面已接收到前導(dǎo)碼,則判斷是遙控?cái)?shù)據(jù)的0還是1。(4)繼續(xù)接收下面的地址碼、數(shù)據(jù)碼、數(shù)據(jù)反碼。(5)當(dāng)接收到32位數(shù)據(jù)時(shí),說明一幀數(shù)據(jù)接收完畢。此時(shí)可停止定時(shí)器的計(jì)時(shí),并判斷本次接收是否有效.如果兩次地址碼相同且等于本系統(tǒng)的地址,數(shù)據(jù)碼與數(shù)據(jù)反碼之和等0FFH,則接收的本幀數(shù)據(jù)碼有效。否則丟棄本次接收到的數(shù)據(jù)。(6)接收完畢,初始化本次接收的數(shù)據(jù),準(zhǔn)備下一次遙控接收。3.34×4矩陣鍵盤由于本系統(tǒng)所用到的按鍵數(shù)量較多而不適合用獨(dú)立按鍵式鍵盤,采用的是矩陣式按鍵鍵盤。它由行線和列線組成,也稱行列式鍵盤,按鍵位于行列的交叉點(diǎn)上,密碼鎖的密碼由鍵盤輸入完成,與獨(dú)立式按鍵鍵盤相比,要節(jié)省很多I/O口。每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過一個(gè)按鍵來連通,利用這種行列式矩陣結(jié)構(gòu)只需要N條行線和M條列線,即可組成具有N×M個(gè)按鍵的鍵盤。首先辨別鍵盤中有無按鍵按下,通過單片機(jī)I/O口向鍵盤送全掃描字,然后讀入行線狀態(tài)來判斷。方法是:向行線輸出全掃描字FFH,把全部列線置為低電平,然后將列線的電平狀態(tài)讀入累加器A中。如果有按鍵按下,總會(huì)有一根行線電平被拉至低電平從而使行線不全為1。判斷鍵盤中哪一個(gè)鍵被按下是通過將列線逐列置低電平后,檢查行輸入狀態(tài)來實(shí)現(xiàn)的。方法是:依次給列線送低電平,然后查所有行線狀態(tài),如果全為1,則所按下的鍵不在此列;如果不全為1,則所按下的鍵必在此列,而且是在與零電平行線相交的交點(diǎn)上的那個(gè)鍵。接線如圖3-3。圖3-3行列式矩陣鍵盤電路示意圖本設(shè)計(jì)中使用的這個(gè)4*4鍵盤不但能完成密碼的輸入還能作特別功能鍵使用。按鍵的操作面板如表3-1所示。表3-1按鍵操作面板示意表048159修改26刪除37確定3.4步進(jìn)電機(jī)步進(jìn)電機(jī)作為執(zhí)行元件,是機(jī)電一體化的關(guān)鍵產(chǎn)品之一,廣泛應(yīng)用在各種自動(dòng)化控制系統(tǒng)中。隨著微電子和計(jì)算機(jī)技術(shù)的發(fā)展,步進(jìn)電機(jī)的需求量與日俱增,在各個(gè)國民經(jīng)濟(jì)領(lǐng)域都有應(yīng)用。步進(jìn)電機(jī)是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機(jī)構(gòu)。當(dāng)步進(jìn)驅(qū)動(dòng)器接收到一個(gè)脈沖信號(hào),它就驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度(稱為“步距角”),它的旋轉(zhuǎn)是以固定的角度一步一步運(yùn)行的??梢酝ㄟ^控制脈沖個(gè)數(shù)來控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時(shí)可以通過控制脈沖頻率來控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,從而達(dá)到調(diào)速的目的。步進(jìn)電機(jī)可以作為一種控制用的特種電機(jī),利用其沒有積累誤差(精度為100%)的特點(diǎn),廣泛應(yīng)用于各種開環(huán)控制?,F(xiàn)在比較常用的步進(jìn)電機(jī)包括反應(yīng)式步進(jìn)電機(jī)(vr)、永磁式步進(jìn)電機(jī)(pm)、混合式步進(jìn)電機(jī)(hb)和單相式步進(jìn)電機(jī)等。本次設(shè)計(jì)選用的是感應(yīng)子式四向四拍步進(jìn)電機(jī)。反應(yīng)式步進(jìn)電機(jī)原理下面通過三相反應(yīng)式步進(jìn)電機(jī)原理來了解步進(jìn)電機(jī)的一般工作原理。(1)結(jié)構(gòu)如圖3-4所示。電機(jī)轉(zhuǎn)子均勻分布著很多小齒,定子齒有三個(gè)勵(lì)磁繞阻,其幾何軸線依次分別與轉(zhuǎn)子齒軸線錯(cuò)開。0、1/3て、2/3て,(相鄰兩轉(zhuǎn)子齒軸線間的距離為齒距以て表示),即A與齒1相對(duì)齊,B與齒2向右錯(cuò)開1/3て,C與齒3向右錯(cuò)開2/3て,A’與齒5相對(duì)齊,(A’就是A,齒5就是齒1)圖3-4反應(yīng)時(shí)步進(jìn)電機(jī)結(jié)構(gòu)(2)旋轉(zhuǎn)如A相通電,B,C相不通電時(shí),由于磁場作用,齒1與A對(duì)齊,(轉(zhuǎn)子不受任何力以下均同)。如B相通電,A,C相不通電時(shí),齒2應(yīng)與B對(duì)齊,此時(shí)轉(zhuǎn)子向右移過1/3て,此時(shí)齒3與C偏移為1/3て,齒4與A偏移(て-1/3て)=2/3て。如C相通電,A,B相不通電,齒3應(yīng)與C對(duì)齊,此時(shí)轉(zhuǎn)子又向右移過1/3て,此時(shí)齒4與A偏移為1/3て對(duì)齊。如A相通電,B,C相不通電,齒4與A對(duì)齊,轉(zhuǎn)子又向右移過1/3て這樣經(jīng)過A、B、C、A分別通電狀態(tài),齒4(即齒1前一齒)移到A相,電機(jī)轉(zhuǎn)子向右轉(zhuǎn)過一個(gè)齒距,如果不斷地按A,B,C,A……通電,電機(jī)就每步(每脈沖)1/3て,向右旋轉(zhuǎn)。如按A,C,B,A……通電,電機(jī)就反轉(zhuǎn)。由此可見:電機(jī)的位置和速度由導(dǎo)電次數(shù)(脈沖數(shù))和頻率成一一對(duì)應(yīng)關(guān)系。而方向由導(dǎo)電順序決定。不過,出于對(duì)力矩、平穩(wěn)、噪音及減少角度等方面考慮。往往采用A-AB-B-BC-CCA-A這種導(dǎo)電狀態(tài),這樣將原來每步1/3て改變?yōu)?/6て。甚至于通過二相電流不同的組合,使其1/3て變?yōu)?/12て,1/24て,這就是電機(jī)細(xì)分驅(qū)動(dòng)的基本理論依據(jù)。不難推出:電機(jī)定子上有m相勵(lì)磁繞阻,其軸線分別與轉(zhuǎn)子齒軸線偏移1/m,2/m……(m-1)/m,1。并且導(dǎo)電按一定的相序電機(jī)就能正反轉(zhuǎn)被控制——這是步進(jìn)電機(jī)旋轉(zhuǎn)的物理?xiàng)l件。只要符合這一條件我們理論上可以制造任何相的步進(jìn)電機(jī),出于成本等多方面考慮,市場上一般以二、三、四、五相為多。(3)力矩電機(jī)一旦通電,在定轉(zhuǎn)子間將產(chǎn)生磁場(磁通量Ф)當(dāng)轉(zhuǎn)子與定子錯(cuò)開一定角度產(chǎn)生力F與(dФ/dθ)成正比S其磁通量Ф=Br*SBr為磁密,S為導(dǎo)磁面積F與L*D*Br成正比L為鐵芯有效長度,D為轉(zhuǎn)子直徑Br=N·I/RN·I為勵(lì)磁繞阻安匝數(shù)(電流乘匝數(shù))R為磁阻。力矩=力*半徑力矩與電機(jī)有效體積*安匝數(shù)*磁密成正比(只考慮線性狀態(tài))因此,電機(jī)有效體積越大,勵(lì)磁安匝數(shù)越大,定轉(zhuǎn)子間氣隙越小,電機(jī)力矩越大,反之亦然。感應(yīng)子式步進(jìn)電機(jī)特點(diǎn)感應(yīng)子式步進(jìn)電機(jī)與傳統(tǒng)的反應(yīng)式步進(jìn)電機(jī)相比,結(jié)構(gòu)上轉(zhuǎn)子加有永磁體,以提供軟磁材料的工作點(diǎn),而定子激磁只需提供變化的磁場而不必提供磁材料工作點(diǎn)的耗能,因此該電機(jī)效率高,電流小,發(fā)熱低。因永磁體的存在,該電機(jī)具有較強(qiáng)的反電勢,其自身阻尼作用比較好,使其在運(yùn)轉(zhuǎn)過程中比較平穩(wěn)、噪音低、低頻振動(dòng)小。感應(yīng)子式步進(jìn)電機(jī)某種程度上可以看作是低速同步電機(jī)。一個(gè)四相電機(jī)可以作四相運(yùn)行,也可以作二相運(yùn)行。(必須采用雙極電壓驅(qū)動(dòng)),而反應(yīng)式電機(jī)則不能如此。例如:四相,八相運(yùn)行(A-AB-B-BC-C-CD-D-DA-A)完全可以采用二相八拍運(yùn)行方式.不難發(fā)現(xiàn)其條件為C=,D=.一個(gè)二相電機(jī)的內(nèi)部繞組與四相電機(jī)完全一致,小功率電機(jī)一般直接接為二相,而功率大一點(diǎn)的電機(jī),為了方便使用,靈活改變電機(jī)的動(dòng)態(tài)特點(diǎn),往往將其外部接線為八根引線(四相),這樣使用時(shí),既可以作四相電機(jī)使用,可以作二相電機(jī)繞組串聯(lián)或并聯(lián)使用。感應(yīng)子式步進(jìn)電機(jī)分類感應(yīng)子式步進(jìn)電機(jī)以相數(shù)可分為:二相電機(jī)、三相電機(jī)、四相電機(jī)、五相電機(jī)等。以機(jī)座號(hào)(電機(jī)外徑)可分為:42BYG(BYG為感應(yīng)子式步進(jìn)電機(jī)代號(hào))、57BYG、86BYG、110BYG、(國際標(biāo)準(zhǔn)),而像70BYG、90BYG、130BYG等均為國內(nèi)標(biāo)準(zhǔn)。3.5LCD1602顯示器現(xiàn)在的字符型液晶模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件了。1602型LCD顯示模塊具有體積小,功耗低,顯示內(nèi)容豐富等特點(diǎn)。1602型LCD可以顯示2行16個(gè)字符,有8位數(shù)據(jù)總線D0~D7和RS,R/W,EN三個(gè)控制端口,工作電壓為5V,并且具有字符對(duì)比度調(diào)節(jié)和背光功能。LCD器件引腳如圖3-5所示。圖3-51602LCD引腳示意圖顯示地址如圖3-6所示。圖3-61602LCD顯示地址示意圖接口信號(hào)說明1602型LCD的接口信號(hào)說明如表3-2所示。表3-21602型LCD的接口信號(hào)說明編號(hào)符號(hào)引腳說明編號(hào)符號(hào)引腳說明1VSS電源地9D2DataI/O2VDD電源正極10D3DataI/O3V0液晶顯示偏壓信號(hào)11D4DataI/O4RS數(shù)據(jù)/命令選擇端(H/L)12D5DataI/O5R/W讀寫選擇端(H/L)13D6DataI/O6E使能信號(hào)14D7DataI/O7D0DataI/O15BLA背光源正極8D1DataI/O16BLK背光源負(fù)極主要技術(shù)參數(shù)1602型LCD的主要技術(shù)參數(shù)如表3-3所示所示。表3-31602型LCD的主要技術(shù)參數(shù)顯示容量16X2個(gè)字符芯片工作電壓工作電流2.0mA(5.0V)模塊最佳工作電壓字符尺寸2.95X4.35(WXH)mm基本操作程序讀狀態(tài):輸入:RS=L,RW=L,E=H 輸出:D0~D7=狀態(tài)字讀數(shù)據(jù):輸入:RS=H,RW=H,E=H 輸出:無寫指令:輸入:RS=L,RW=L,D0~D7=指令碼,E=高脈沖輸出:D0~D7=數(shù)據(jù)寫數(shù)據(jù):輸入:RS=H,RW=L,D0~D7=數(shù)據(jù),E=高脈沖輸出:無RAM地址映射圖控制器內(nèi)部帶有80B的RAM緩沖區(qū),對(duì)應(yīng)關(guān)系如圖3-7所示:圖3-71602RAM地址映射當(dāng)我們向圖中的00~0F、40~4F地址中的任一處寫入顯示數(shù)據(jù)時(shí),液晶都可以立即顯示出來,當(dāng)寫入到10~27或50~67地址處時(shí),必須通過移屏指令將它們移入可顯示區(qū)域方可正常顯示。狀態(tài)字說明如圖3-8所示:圖3-8狀態(tài)字注意:原則上每次對(duì)控制器進(jìn)行讀、寫操作之前,都必須進(jìn)行讀寫檢測,確保STA7為0。實(shí)際上,由于單片機(jī)的操作速度慢于液晶控制器的反應(yīng)速度,因此可以不進(jìn)行讀寫檢測,或只進(jìn)行簡短延時(shí)即可。初始化設(shè)置顯示模式設(shè)置如圖3-9所示。圖3-9顯示模式設(shè)置顯示開關(guān)及光標(biāo)設(shè)置如圖3-10所示。圖3-10顯示開關(guān)及光標(biāo)設(shè)置3.6DS18B20數(shù)字溫度傳感器本設(shè)計(jì)中采用的是Dallas半導(dǎo)體公司制造的數(shù)字化溫度傳感器DS18B20,它是世界上第一片支持"一線總線"接口的溫度傳感器。一線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。DS18B20"一線總線"數(shù)字化溫度傳感器同DS1820一樣,DS18B20也支持"一線總線"接口,測量溫度范圍為-55°C~+125°C,在-10~+85°C范圍內(nèi),精度為±0.5°C。DS1822的精度較差為±2°C.1(1)

可用數(shù)據(jù)線供電,電壓范圍:3.0~5.5V;(2)

測溫范圍:-55~+125℃,在-10~+85℃時(shí)精度為±0.5℃;(3)

可編程的分辨率為9~12位,對(duì)應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃;(4)

12位分辨率時(shí)最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字;(5)

負(fù)壓特性:電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。3.6.2DS18B20的外形和內(nèi)部結(jié)構(gòu)

DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列如圖3-11

圖3-11DS18B20外形圖引腳定義:(1)

DQ為數(shù)字信號(hào)輸入/輸出端;(2)

GND為電源地;(3)

VDD為外接供電電源輸入端(在寄生電源接線方式時(shí)接地)。內(nèi)部結(jié)構(gòu)如圖3-12所示。圖

3-12

DS18B20內(nèi)部結(jié)構(gòu)圖.3

(1)光刻ROM中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產(chǎn)品類型標(biāo)號(hào),接著的48位是該DS18B20自身的序列號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的。(2)

DS18B20中的溫度傳感器可完成對(duì)溫度的測量,以12位轉(zhuǎn)化為例:用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號(hào)位。如圖3-13所示。

圖3-13DS18B20溫度值格式表

這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在18B20的兩個(gè)8比特的RAM中,二進(jìn)制中的前面5位是符號(hào)位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。(3)DS18B20溫度傳感器的存儲(chǔ)器DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。(4)配置寄存器該字節(jié)各位的意義如表3-4所示。表3-4配置寄存器結(jié)構(gòu)TMR1R011111

低五位一直都是1,TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng)。R1和R0用來設(shè)置分辨率,如下表所示:(DS18B20出廠時(shí)被設(shè)置為12位)

分辨率設(shè)置如表3-5所示。表3-5溫度值分辨率設(shè)置表R1R0分辨率溫度最大轉(zhuǎn)換時(shí)間009位0110位1011位375ms1112位750ms3.7數(shù)碼管顯示電路本設(shè)計(jì)中溫度采用共陰極數(shù)碼管顯示。數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本單元是發(fā)光二極管。數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按能顯示多少個(gè)“8”可分為1位、2位、4位等等數(shù)碼管。一支七段數(shù)碼管實(shí)際由8個(gè)發(fā)光二極管構(gòu)成,其中7個(gè)組形構(gòu)成數(shù)字8的七段筆畫,所以稱為七段數(shù)碼管,而余下的1個(gè)發(fā)光二極管作為小數(shù)點(diǎn)。通常分別給8個(gè)發(fā)光二極管標(biāo)上記號(hào):a,b,c,d,e,f,g,h。對(duì)應(yīng)8的頂上一畫,按順時(shí)針方向排,中間一畫為g,小數(shù)點(diǎn)為h。如圖3-14所示。圖3-14數(shù)碼管示意圖我們通常又將各二極與一個(gè)字節(jié)的8位對(duì)應(yīng),a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相應(yīng)8個(gè)發(fā)光二極管正好與單片機(jī)一個(gè)端口Pn的8個(gè)引腳連接,這樣單片機(jī)就可以通過引腳輸出高低電平控制8個(gè)發(fā)光二極的亮與滅,從而顯示各種數(shù)字和符號(hào);對(duì)應(yīng)字節(jié),引腳接法為:a(Pn.0),b(Pn.1),c(Pn.2),d(Pn.3),e(Pn.4),f(Pn.5),g(Pn.6),h(Pn.7)。如果將8個(gè)發(fā)光二極管的負(fù)極(陰極)內(nèi)接在一起,作為數(shù)碼管的一個(gè)引腳,這種數(shù)碼管則被稱為共陰數(shù)碼管,共同的引腳則稱為共陰極,8個(gè)正極則為段極。否則,如果是將正極(陽極)內(nèi)接在一起引出的,則稱為共陽數(shù)碼管,共同的引腳則稱為共陽極,8個(gè)負(fù)極則為段極。以單支共陰數(shù)碼管為例,可將段極接到某端口Pn,共陰極接GND,則可編寫出對(duì)應(yīng)十六進(jìn)制碼的七段碼表字節(jié)數(shù)據(jù)如圖3-15所示。圖3-15七段碼表字節(jié)數(shù)據(jù)3.8復(fù)位電路單片機(jī)復(fù)位是使CPU和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作,例如復(fù)位后PC=0000H,使單片機(jī)從第—個(gè)單元取指令。無論是在單片機(jī)剛開始接上電源時(shí),還是斷電后或者發(fā)生故障后都要復(fù)位。在復(fù)位期間(即RST為高電平期間),P0口為高組態(tài),P1-P3口輸出高電平;外部程序存儲(chǔ)器讀選通信號(hào)PSEN無效。地址鎖存信號(hào)ALE也為高電平。根據(jù)實(shí)際情況選擇如圖3-16所示的復(fù)位電路。該電路在最簡單的復(fù)位電路下增加了手動(dòng)復(fù)位按鍵,在接通電源瞬間,電容C1上的電壓很小,復(fù)位下拉電阻RST上的電壓接近電源電壓,即RST為高電平,在電容充電的過程中RST端電壓逐漸下降,EMBEDEquation.3當(dāng)RST端的電壓小于某一數(shù)值后,CPU脫離復(fù)位狀態(tài),由于電容C1足夠大,可以保證RST高電平有效時(shí)間大于24個(gè)振蕩周期,CPU能夠可靠復(fù)位。增加手動(dòng)復(fù)位按鍵是為了避免死機(jī)時(shí)無法可靠復(fù)位。當(dāng)復(fù)位按鍵按下后電容C1通過R放電。當(dāng)電容C1放電結(jié)束后,RST端的電位由R分壓比決定。RST為高電平,CPU處于復(fù)位狀態(tài),松手后,電容C1充電,RST端電位下降,CPU脫離復(fù)位狀態(tài)。圖3-16復(fù)位電路示意圖3.9振蕩電路 晶體振蕩器,簡稱晶振,其作用在于產(chǎn)生原始的時(shí)鐘頻率,這個(gè)頻率經(jīng)過頻率發(fā)生器的放大或縮小后就成了各種不同的總線頻率。石英晶體振蕩器是利用石英晶體(二氧化硅的結(jié)晶體)的壓電效應(yīng)制成的一種諧振器件,它的基本構(gòu)成大致是:從一塊石英晶體上按一定方位角切下薄片(簡稱為晶片,它可以是正方形、矩形或圓形等),在它的兩個(gè)對(duì)應(yīng)面上涂敷銀層作為電極,在每個(gè)電極上各焊一根引線接到管腳上,再加上封裝外殼就構(gòu)成了石英晶體諧振器,簡稱為石英晶體或晶體、晶振。其產(chǎn)品一般用金屬外殼封裝,也有用玻璃殼、陶瓷或塑料封裝的。只要在晶體振子板極上施加交變電壓,就會(huì)使晶片產(chǎn)生機(jī)械變形振動(dòng),此現(xiàn)象即所謂逆壓電效應(yīng)。當(dāng)外加電壓頻率等于晶體諧振器的固有頻率時(shí),就會(huì)發(fā)生壓電諧振,從而導(dǎo)致機(jī)械變形的振幅突然增大。單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,該高增益反相放大器的輸入端為引腳XTAL1,輸出端為引腳XTAL2。這兩個(gè)引腳跨接石英晶體振蕩器和微調(diào)電容C7、C9,按圖3-7所示方式連接。晶振、電容C7/C9及片內(nèi)與非門(作為反饋、放大元件)構(gòu)成了電容三點(diǎn)式振蕩器,振蕩信號(hào)頻率與晶振頻率及電容C7、C9的容量有關(guān),但主要由晶振頻率決定,范圍在1.2~12MHz之間,電容C7、C9取值范圍在5~30pF之間。根據(jù)實(shí)際情況,本設(shè)計(jì)中采用11MHZ做為系統(tǒng)的外部晶振。電容取值為30pF。其示意圖圖3-17所示。圖3-17震蕩電路示意圖3.10蜂鳴器 采用蜂鳴器來控制開鎖顯示,當(dāng)輸入密碼后,單片機(jī)向蜂鳴器送出低電平,驅(qū)動(dòng)蜂鳴器響鈴。采用蜂鳴器鬧鈴結(jié)構(gòu)簡單,只需要單路信號(hào)控制,發(fā)出的鬧鈴聲音可以根據(jù)響和不響的不同的軟件延時(shí)時(shí)間來控制。電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動(dòng)膜片及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻電流信號(hào)通過電磁線圈產(chǎn)生磁場。振動(dòng)膜片在電磁線圈和磁鐵的相互作用下,周期性地振動(dòng)發(fā)聲。開鎖聲音控制模塊如圖3-18所示。圖3-18蜂鳴器電路報(bào)警控制電路的功能是控制系統(tǒng)的報(bào)警裝置。報(bào)警是用單片機(jī)的P,由繼電器控制揚(yáng)聲器發(fā)出報(bào)警聲。第4章軟件程序設(shè)計(jì)4.1軟件設(shè)計(jì) 軟件設(shè)計(jì)(Programming)是指設(shè)計(jì)、編制、調(diào)試程序的方法和過程。它是目標(biāo)明確的智力活動(dòng)。由于程序是軟件的本體,軟件的質(zhì)量主要通過程序的質(zhì)量來體現(xiàn),在軟件研究中,程序設(shè)計(jì)的工作非常重要,內(nèi)容涉及到有關(guān)的基本概念、工具、方法以及方法學(xué)等。軟件設(shè)計(jì)通常分為問題建摸,算法設(shè)計(jì),編寫代碼和編譯調(diào)試四個(gè)階段。軟件設(shè)計(jì)一般根據(jù)系統(tǒng)中功能模塊進(jìn)行分割,首先應(yīng)確定主程序框圖,然后劃分軟件功能模塊。程序設(shè)計(jì)中應(yīng)實(shí)現(xiàn)模塊化,子程序化。所謂模塊化就是把一個(gè)完整的程序分解成完整的程序分解成若干個(gè)功能上相對(duì)獨(dú)立的較小程序塊,各小程序進(jìn)行單獨(dú)設(shè)計(jì)和調(diào)試,最后將各程序模塊連接起來進(jìn)行總調(diào)試。這種方法思路清楚,軟件故障容易排除,便于移植及修改。當(dāng)軟件各功能模塊分別調(diào)試完畢后,即可進(jìn)行主程序調(diào)試。主程序調(diào)試主要是排除各個(gè)功能模塊之間連接中可能出現(xiàn)的問題,如各個(gè)功能使用的RAM區(qū)域有否重疊現(xiàn)象,寄存器有否發(fā)生沖突,堆棧區(qū)域有否溢出等等。系統(tǒng)的應(yīng)用軟件是根據(jù)系統(tǒng)功能要求設(shè)計(jì)的。一般地講,軟件的功能可分為兩大類。一類是執(zhí)行軟件,它能完成各種實(shí)質(zhì)性的功能,如測量、計(jì)算、顯示、打印、輸出控制等;另一類是監(jiān)控軟件,它是專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色。設(shè)計(jì)人員在進(jìn)行程序設(shè)計(jì)時(shí)應(yīng)從以下幾個(gè)方面加以考慮:(1)根據(jù)軟件功能要求,將系統(tǒng)軟件分成如干個(gè)相對(duì)獨(dú)立的部分。設(shè)計(jì)出合理的軟件總體結(jié)構(gòu),使其清晰、簡潔、流程合理。(2)各功能程序?qū)嵭心K化、子程序化。既便于調(diào)試、鏈接,又便于移植、修改。(3)在編寫應(yīng)用軟件之前,應(yīng)繪制出流程圖。這不僅是程序設(shè)計(jì)的一個(gè)重要組成部分,而且是決定成敗的關(guān)鍵部分。從某種意義上講,多花一份時(shí)間來設(shè)計(jì)流程圖,就可以節(jié)約幾倍源程序的編輯調(diào)試時(shí)間。(4)要合理分配系統(tǒng)資源,包括ROM、RAM、定時(shí)器/計(jì)數(shù)器、中斷源等。其中最關(guān)鍵的是片內(nèi)RAM分配。4.2C語言的特點(diǎn)C是中級(jí)語言。它把高級(jí)語言的基本結(jié)構(gòu)和語句與低級(jí)語言的實(shí)用性結(jié)合起來。C語言可以像匯編語言一樣對(duì)位、字節(jié)和地址進(jìn)行操作。并且是結(jié)構(gòu)式語言。結(jié)構(gòu)式語言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、維護(hù)以及調(diào)試。C語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。.C語言功能齊全。具有各種各樣的數(shù)據(jù)類型。4.3具體軟件模塊實(shí)現(xiàn)在本系統(tǒng)中,軟件結(jié)構(gòu)應(yīng)采用模塊化設(shè)計(jì)方法,主要包括主程序,紅外遙控選擇,密碼鎖輸入程序,步進(jìn)電機(jī)程序,溫控顯示程序等等。上電復(fù)位后,初始化各端口,標(biāo)志位和有關(guān)寄存器,接著開始檢測遙控器是否有輸入,如沒有就不斷檢測,如果有輸入就轉(zhuǎn)到相應(yīng)處理程序。.1主程序主要完成初始化、設(shè)置中斷向量、檢查遙控器有無按鍵按下以及調(diào)用紅外遙控選擇等等。流程圖如圖4-1所示。4-1主程序流程圖開發(fā)板上電后,系統(tǒng)開始工作,首先是對(duì)系統(tǒng)的初始化,包括定時(shí)器0的初始化和允許中斷控制,由于TMOD=0x02,表示采用定時(shí)器0工作方式2,TH0是重裝值,TL0是初值,TL=0x00表示初值為0。.然后開始檢測是否接收到紅外信號(hào),接收到紅外信號(hào)的標(biāo)志是irok,用irtime來計(jì)數(shù)2個(gè)下降沿之間的時(shí)間,irtime<42&&irtime>=33表示,TC9012從9ms時(shí)開始記錄引導(dǎo)碼即TC9012的頭碼,因?yàn)榧t外接收頭默認(rèn)為高電平,TC9012在載波頭碼前還有一段9ms的低電平,所以會(huì)產(chǎn)生一次中斷,載波頭碼發(fā)送完ms。而定時(shí)是根據(jù)(2^n+初值)*12*周期得出的。接下來用irdata[]表示一次行存儲(chǔ)32位電平寬度,其中irdata[0]中存放的是引導(dǎo)碼的時(shí)間長度,所以下面的程序從irdata[1]開始判斷,接收完畢后,irok置1,進(jìn)入碼值處理程序Ircordpro(),碼值處理是將剩下的4個(gè)字節(jié)分別處理,然后將每個(gè)字節(jié)的8位分別處理,cord>7表示大于某值為1即時(shí)間大于1.792ms認(rèn)為發(fā)射的是1,因?yàn)樵赥C9ms的當(dāng)做是0,考慮一定的誤差,將cord設(shè)為7。value=value|0x80說明是1,value=value說明是0,value=value>>1表示將數(shù)據(jù)右移一位,因?yàn)橄冉邮艿降脮r(shí)數(shù)據(jù)的低字節(jié)位,然后將得到的value即1或0裝入按鍵記錄IRcord[]中,處理完畢標(biāo)志位irpro_ok置1,轉(zhuǎn)入紅外鍵值散轉(zhuǎn)程序Ir_work()中,判斷第三個(gè)數(shù)碼值,因?yàn)樘幚砗?,IRcord[0]、IRcord[1]中存放是地址碼,IRdata[2]中存放數(shù)據(jù)。根據(jù)按鍵,系統(tǒng)會(huì)算出鍵值,轉(zhuǎn)入相應(yīng)的程序當(dāng)中。其中最為重要的紅外遙控解碼程序如下所示?!璮or(i=0;i<4;i++)//處理4個(gè)字節(jié),即一幀32位數(shù)據(jù){for(j=1;j<=8;j++)//處理1個(gè)字節(jié)8位{cord=irdata[k];//irdata[k]為一次存儲(chǔ)32位數(shù)據(jù)的電平寬度if(cord>7)//大于某值為1 {value=value|0x80; }else {value=value; }if(j<8) { value=value>>1; }k++;}IRcord[i]=value;//記錄按鍵值value=0;…….2鍵盤采用查詢的方式,放在主程序中,當(dāng)沒有按鍵按下的時(shí)候,單片機(jī)循環(huán)主程序,一旦有按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。并在LCD液晶屏顯示。流程圖如圖4-2所示。4-2密碼鎖流程圖當(dāng)用戶按鍵選擇進(jìn)入密碼鎖功能時(shí),首先對(duì)于密碼鎖功能進(jìn)行初始化,主要是對(duì)LCD1602的初始化,接下來進(jìn)入鍵盤掃描函數(shù),要求用戶輸入開鎖密碼,當(dāng)則判斷是否為確認(rèn)鍵,按下確認(rèn)鍵后進(jìn)入對(duì)比密碼,密碼正確則LCD會(huì)予以提示,不正確則要求重新輸入,三次輸入不成功則報(bào)警提示。在此過程中可選擇修改和刪除,便可對(duì)密碼進(jìn)行相應(yīng)的修改和刪除。其刪除代碼部分如下所示?!璿oiddelete(){ ucharw=0;//局部變量很重要 init(); for(r=0;r<9;r++) { delayms(5); write_data(table10[r]); } do { flag=0;//按鍵標(biāo)志 keyscan(); write_com(0x80+9+w); if(flag==1&&num<=9) { pswd[w]=num; write_data(table3[w]);//輸入密碼時(shí)用“*”代替 w++; if(w==6) write_com(0x0c); } if(flag==1&&num==14) //刪除鍵則刪除誤輸入的密碼,即返回上一步. { w--; if(w==255) w=w+1; write_com(0x80+9+w); write_data(table13[w+1]); if(flag==1&&num<=9) { pswd[w]=num; write_data(table3[w]); } }} while(w<=5);}…….3遙控器選定步進(jìn)電機(jī)程序,步進(jìn)電機(jī)會(huì)根據(jù)按鍵選擇的功能進(jìn)行正轉(zhuǎn)和反轉(zhuǎn)。根據(jù)其硬件特性,四相步進(jìn)電機(jī)正轉(zhuǎn)和反轉(zhuǎn)均為通過依次調(diào)用數(shù)組中的值便可實(shí)現(xiàn)。其中正轉(zhuǎn)表格為{0x02,0x04,0x08,0x10},反轉(zhuǎn)表格為{0x10,0x08,0x04,0x02}。其控制程序如下所示?!璮or(j=0;j<12*n;j++){for(i=0;i<4;i++){P1=B_Rotation[i];delayms(15);//改變這個(gè)參數(shù)可以調(diào)整電機(jī)轉(zhuǎn)速…….4遙控器選擇溫控程序,DS18B20溫度傳感器根據(jù)外界溫度,把數(shù)據(jù)寫入RAM中,然后調(diào)用溫控?cái)?shù)字轉(zhuǎn)換子程序,將傳感器讀入的溫度數(shù)據(jù)轉(zhuǎn)換成數(shù)字并在數(shù)碼管顯示出來。控制程序代碼主要如下。流程圖如4-3所示。圖4-318B20溫度傳感器流程圖……read_temp(){ow_reset();//總線復(fù)位delay(200);write_byte(0xcc);//發(fā)命令write_byte(0x44);//發(fā)轉(zhuǎn)換命令ow_reset();delay(1);write_byte(0xcc);//發(fā)命令write_byte(0xbe);temp_data[0]=read_byte();//讀溫度值的第字節(jié)temp_data[1]=read_byte();//讀溫度值的高字節(jié)temp=temp_data[1];temp<<=8;temp=temp|temp_data[0];//兩字節(jié)合成一個(gè)整型變量。returntemp;//返回溫度值}/****************溫度數(shù)據(jù)處理函數(shù)************************///二進(jìn)制高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié),這個(gè)//字節(jié)的二進(jìn)制轉(zhuǎn)換為十進(jìn)制后,就是溫度值的十、個(gè)位值,而剩//下的低字節(jié)的低半字節(jié)轉(zhuǎn)化成十進(jìn)制后,就是溫度值的小數(shù)部分/********************************************************/work_temp(uinttem){ucharn=0;if(tem>6348)//溫度值正負(fù)判斷{tem=65536-tem;n=1;}//負(fù)溫度求補(bǔ)碼,標(biāo)志位置1display[4]=tem&0x0f;//取小數(shù)部分的值display[0]=ditab[display[4]];//存入小數(shù)部分顯示值display[4]=tem>>4;//取中間八位,即整數(shù)部分的值display[3]=display[4]/100;//取百位數(shù)據(jù)暫存display[1]=display[4]%100;//取后兩位數(shù)據(jù)暫存display[2]=display[1]/10;//取十位數(shù)據(jù)暫存display[1]=display[1]%10;/******************符號(hào)位顯示判斷************************/if(!display[3]){display[3]=0x0a;//最高位為0時(shí)不顯示if(!display[2]){display[2]=0x0a;//次高位為0時(shí)不顯示}}if(n){display[3]=0x0b;}//負(fù)溫度時(shí)最高位顯示"-"if(display[4]==4){beep();//當(dāng)溫度高于40°時(shí)開始報(bào)警}}在軟件設(shè)計(jì)時(shí)采用如下措施可以有效提高系統(tǒng)的抗干擾能力。增加系統(tǒng)信息管理模塊。與硬件相配合,對(duì)系統(tǒng)信息進(jìn)行保護(hù)。其中包括防止信息被破壞,出故障時(shí)保護(hù)信息,故障排除之后恢復(fù)信息等。提高軟件自身的可靠性。通常要編制一個(gè)可靠運(yùn)行的應(yīng)用軟件,應(yīng)考慮采用以下幾項(xiàng)措施。程序設(shè)計(jì)時(shí),將程序分成若干個(gè)具有獨(dú)立功能的子程序模塊。各個(gè)程序模塊可以單獨(dú)使用,也可與其他程序模塊共同使用。各程序模塊之間可通過固定的通信區(qū)和一些指定的單片進(jìn)行信息傳遞。每個(gè)程序模塊都可單獨(dú)進(jìn)行調(diào)整和修改,不會(huì)影響其他程序模塊。采用可測試性設(shè)計(jì)。軟件抗干擾以其設(shè)計(jì)靈活、節(jié)省硬件資源、降低成本等優(yōu)勢越來越得到廣泛采用。軟件抗干擾技術(shù)主要有“軟件陷阱技術(shù)”和“軟件看門狗技術(shù)”。軟件調(diào)試由于系統(tǒng)干擾可能破壞程序指針一旦失控程序就會(huì)“亂飛”,可能進(jìn)入非程序,造成系統(tǒng)運(yùn)行錯(cuò)誤。設(shè)置軟件陷阱,可防止程序“亂飛”。設(shè)置軟件陷阱可以采用在ROM和RAM中,每隔一些指令,就把連續(xù)幾個(gè)單元設(shè)置成空操作(所謂陷阱)。當(dāng)失控的程序掉入“陷阱”,連續(xù)執(zhí)行幾個(gè)空操作后,程序自動(dòng)恢復(fù)正常,繼續(xù)執(zhí)行后面的程序。將程序芯片沒有被程序指令字節(jié)使用的部分全部置成空操作振蕩器返回指令代碼,一旦程序飛出到非程序區(qū),能夠順利跳回到程序初始狀態(tài),重新執(zhí)行程序,不至于因此造成死循環(huán)。軟件看門狗技術(shù)利用設(shè)置軟件陷阱雖在一定程序上解決了程序“亂飛”的失控問題,但在程序執(zhí)行過程中若進(jìn)入死循環(huán),無法撞上陷阱,就會(huì)使程序長時(shí)間運(yùn)行不正常。因此,設(shè)置陷阱的辦法并不能徹底有效地解決死循環(huán)問題。設(shè)置程序監(jiān)視器即看門狗可比較有效地解決死循環(huán)問題。程序監(jiān)視器系統(tǒng)有的采用軟件解決,大部分都是采用軟、硬件相結(jié)合的辦法。在程序地大循環(huán)中,一開始就啟動(dòng)定時(shí)器工作,在主程序中增設(shè)定時(shí)器賦值指令,使該定時(shí)器維持在非溢出工作狀態(tài)。定時(shí)時(shí)間要稍大于程序循環(huán)一次的執(zhí)行時(shí)間。程序正常循環(huán)執(zhí)行一次給定時(shí)器送一次初值,重新開始計(jì)數(shù)而不會(huì)產(chǎn)生溢出。但若程序失控,沒能按時(shí)給定時(shí)器賦初值,定時(shí)器就會(huì)產(chǎn)生溢出中斷,在中斷服務(wù)中使主程序回到初始狀態(tài)。第5章系統(tǒng)調(diào)試單片機(jī)系統(tǒng)經(jīng)過總體設(shè)計(jì),完成了硬件和軟件設(shè)計(jì)開發(fā)。元器件安裝后,在系統(tǒng)的程序存儲(chǔ)器中寫入編制好的應(yīng)用程序,系統(tǒng)即可運(yùn)行。但編制好的程序或焊接好的線路不能按預(yù)計(jì)的那樣正常工作是常見的事,多少會(huì)出現(xiàn)一些硬件、軟件上的錯(cuò)誤。這就需要通過調(diào)試來發(fā)現(xiàn)錯(cuò)誤并加以改正。調(diào)試可分為硬件調(diào)試和軟件調(diào)試。在允許的條件下,根據(jù)本設(shè)計(jì)系統(tǒng)的需求性首先采用在PC機(jī)上用模擬開發(fā)軟件進(jìn)行檢測和調(diào)試,然后進(jìn)行硬件的組裝與調(diào)試。在該設(shè)計(jì)中,由于本系統(tǒng)采用C語言編寫,所以利用Keil軟件對(duì)系統(tǒng)進(jìn)行調(diào)試。KeilC51是美國KeilSoftware公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng)。與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢。本設(shè)計(jì)采取分模塊調(diào)試,將每個(gè)子程序在調(diào)試成功后并在開發(fā)板上成功演示后,將三個(gè)模塊綜合起來調(diào)試。軟件調(diào)試軟件調(diào)試采用脫機(jī)調(diào)試的方法,即完全用仿真器軟件在PC機(jī)上對(duì)目標(biāo)電路原理圖和程序進(jìn)行檢測和調(diào)試。調(diào)試過程中單片機(jī)相應(yīng)輸入端由通用鍵盤和鼠標(biāo)設(shè)定,運(yùn)行狀態(tài)、各寄存器狀態(tài)、端口狀態(tài)等都可以在CRT指定的窗口區(qū)域顯示出來,以確定程序運(yùn)行有無錯(cuò)誤。按下列步驟進(jìn)行調(diào)試:(1)目標(biāo)程序糾錯(cuò)該階段工作通常在目標(biāo)程序編輯時(shí)就完成。一般來說,仿真器軟件能給用戶輸入的程序指令糾錯(cuò),包括書寫格式、標(biāo)號(hào)未定義或多重定義、轉(zhuǎn)移地址溢出等錯(cuò)誤。(2)子程序功能調(diào)試程序設(shè)計(jì)通常采用模塊程序設(shè)計(jì),調(diào)試時(shí)可對(duì)一個(gè)個(gè)子程序分別進(jìn)行調(diào)試,設(shè)置好入口條件,然后采用單步運(yùn)行或斷點(diǎn)運(yùn)行方式,檢查系統(tǒng)CPU現(xiàn)場、RAM和I/O口狀態(tài),看程序執(zhí)行結(jié)果是否符合設(shè)計(jì)要求。(3)整體程序綜合調(diào)試即把各子程序整體連起來進(jìn)入到綜合電路調(diào)試,看是否能實(shí)現(xiàn)預(yù)計(jì)的功能顯示。在這階段若發(fā)生故障,可以考慮各子程序在運(yùn)行時(shí)是否破壞現(xiàn)場,數(shù)據(jù)緩沖單元是否發(fā)生沖突,標(biāo)志位的建立和清除在設(shè)計(jì)上是否失誤,堆棧是否溢出,輸入輸出狀態(tài)是否正常等。用軟件模擬器調(diào)試不需任何在線仿真器,也不需要用

溫馨提示

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