簡易家用電器遠程遙控器的設(shè)計_第1頁
簡易家用電器遠程遙控器的設(shè)計_第2頁
簡易家用電器遠程遙控器的設(shè)計_第3頁
簡易家用電器遠程遙控器的設(shè)計_第4頁
簡易家用電器遠程遙控器的設(shè)計_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

簡易家用電器遠程遙控器的設(shè)計(附電路圖及源程序)簡易家用電器遠程遙控器的設(shè)計(附電路圖及源程序)2011屆畢業(yè)生畢業(yè)論文題目:簡易家用電器遠程遙控器的設(shè)計院系名稱:信息科學(xué)與工程學(xué)院專業(yè)班級:電子信息科學(xué)與技術(shù)級班學(xué)生姓名:學(xué)號:指導(dǎo)教師:教師職稱:20年6月3日摘要隨著社會的發(fā)展和科技的進步,越來越多的家用電器進入了人們的生活,這些家用電器給人們的生活帶來了很多的方便和享受,同時隨著電話在家庭的普及,電話機的功能將進一步得到開發(fā)和利用。利用電話實現(xiàn)家用電器遙控是家電未來的發(fā)展方向之一。本文設(shè)計的是一種基于AT89C51單片機的遠程電話控制系統(tǒng)??刂葡到y(tǒng)是以單片機AT89C51為核心、基于電話網(wǎng)絡(luò)開發(fā)的家用智能電話控制電器。利用電話網(wǎng)傳輸數(shù)字和語音信息,遠程控制部分接收電話網(wǎng)發(fā)送來的DTMF信號,對其進行解碼,解碼后由中央處理器AT89C51根據(jù)解碼信息控制家用電器;本系統(tǒng)設(shè)計實用,功能靈活多樣,可靠性高,操作方便,可以廣泛地應(yīng)用于家庭或者其它場所的智能控制。該系統(tǒng)通過嵌入式的智能語音提示,突出的語音提示功能和密控制系統(tǒng),可使操作者根據(jù)各種提示音及時了解受控對象的有關(guān)信息。系統(tǒng)可實現(xiàn)通過發(fā)出語音命令用電話遠程控制多個家電,用戶可以查詢家電狀態(tài),提供密碼功能,只有輸入正確的密碼才能控制家電,從而提高了安全性。SummaryofhouseholdappliancesremotecontroltothedesignofthetextAbstractWiththedevelopmentofscientifictechnology,anincreasingnumberofhomeapplianceshavecomeintopeople'sdailylives.Thesehomeapplianceshavebroughtinmuchconvenienceandenjoymenttopeople'slife.Thefunctionoftelephoneswillbefurtherutilizedanddevelopedalongwiththepopularizationoftelephones.Homeapplianceswillprobablybecontrolledbythetelephoneusingtheremotecontroltechniqueinthefuture.ThearticledesignedtheremotetelephonecontrolsystemwhichbasedonmicrocontrollerAT89C51.Basingonthetelephonenet,thesystemwhichusesthecorecontrollerSingle-chipmicrocomputerAT89C51realizeslong-distancecontrolhouseholdappliances.Thetelephonecontrolsystem,whichusesthetelephonenetconvertandvoiceinformationreceivesDTMFcodefromthetelephonenet,andinterpretthecode,thecorecontrollerAT89C51controlsthestateofhouseholdappliancesrespondedtotheinterpretation.Thissystemispractical,andthefunctionisflexible,andtheoperationisconvenientwithhighreliability,whichcanbeusedextensiveinvariouskindsofcontrolequipmenttohomeandothersfield.Thedesigningofasystemoflong-distancecontrolbasedonsoundprocessingtechnologyandDTMFdecodingtechnologyispresentedinthispaper.Byusingsoundcommandsofsoundrecognitiontechnology,thissystemrealizesitscontrolofhouseholdelectricalappliancesthroughtelephonenetworksandsorealizestheintelligentlycontroloftheminresidence.Theembeddedandintelligentsoundindication,itsoutstandingsoundfunctionofpromptanditscodecontrolsystemenabletheoperatorstotimelyobtaintherelativeinformationofthecontrolledobjectsthroughindicatedsounds.Thesystemcanusetelephonetocontrolmanyhouseholdelectricalappliancesinlongdistancethroughutteringsoundcommandsandprovidesthecodesafeguardfunction.Onlythroughinputtingthecorrectpasswordtocontrolthem,theuserscancontroltheconditionofhouseholdelectricalequipment,Sothesystemsecuritycanbeimproved.Keywords:MCUTelephoneRemotecontrolDTMF目錄摘要IAbstractII緒論11.1課題背景11.2本設(shè)計的任務(wù)21.3系統(tǒng)總體設(shè)計2系統(tǒng)方案和主要芯片的選擇52.1系統(tǒng)整體方案52.2主要芯片選擇5系統(tǒng)硬件設(shè)計133.1振鈴檢測和模擬摘機133.2聲音監(jiān)聽和語音提示電路143.3單片機控制和密碼存儲電路153.4DTMF檢測電路163.5繼電器控制電路174.系統(tǒng)軟件設(shè)計194.1系統(tǒng)軟件設(shè)計基本思路194.2定時中斷子程序204.3MT8870中斷子程序215.系統(tǒng)的調(diào)試235.1整體系統(tǒng)調(diào)試235.2硬件及軟件調(diào)試23總結(jié)24致謝25參考文獻26附錄一:元器件清單27附錄二:電話遠程控制器原理圖28附錄三:電話遠程控制器PCB圖29附錄四:電話遠程控制器程序30緒論1.1課題背景20世紀(jì)90年代初,美國、歐洲等經(jīng)濟比較發(fā)達的國家先后提出了“智能住宅”的概念[1]?;舅枷胧?將家庭中各種與信息相關(guān)的通信設(shè)備家用電器和家庭保安裝置通過家庭總線技術(shù)連接到一個家庭智能化系統(tǒng)上,以進行集中的或異地的監(jiān)視控制和家庭事物性管理,并保持這些家庭設(shè)備與住宅環(huán)境的和諧及協(xié)調(diào)口。因此,住宅智能化即是通過家庭總線這個通信網(wǎng)絡(luò),把住宅的安全防范系統(tǒng),能源管理系統(tǒng),公共服務(wù)系統(tǒng),信息系統(tǒng)集成起來。且通訊線路高速發(fā)展,所以利用現(xiàn)有的通訊線路對家中的設(shè)備或電器進行控制,已成為未來家居自動化發(fā)展的趨勢。遠程電話控制有其優(yōu)越性,利用電話進行遠程控制不需要專門布線,不占用無線電頻率資源,不受距離和環(huán)境影響,可跨省市、甚至跨越國家進行遠程控制[]。所以設(shè)計一種遠距離電話控制的電路,必然給人們的生活帶來諸多方便。用手機遠距離控制家用電器智能化家庭信息中心平臺已成為國家“八六三”計劃重點課題口。目前家庭的網(wǎng)絡(luò)化是住宅的熱點[]。國外的同類產(chǎn)品的性能雖然很好,但是其價格很難讓中國百姓所接受,而國內(nèi)的系統(tǒng)開發(fā)商、房地產(chǎn)開發(fā)商只青睞于新建住宅,而對舊有住宅的網(wǎng)絡(luò)化需求關(guān)注不夠。問題的癥結(jié)在于住宅內(nèi)部及其與外界信息交換的通信網(wǎng)絡(luò)。電力線載波和無線通信可做為住宅內(nèi)部通信手段,但電力線載波通信的可靠性較差,無線通信的價格偏高,故應(yīng)用較少,目前主流產(chǎn)品均采用單獨布線的通信方式,但對已建住宅,不免會使重新布線困難重重。由于DTMF雙音多頻編碼通信技術(shù)的發(fā)展,使得借助低壓電力線進行數(shù)據(jù)通信成為可能[]。電話遠程控制器主要接收電話線上傳來的控制家電的信息,譯碼后經(jīng)并行通信向智能控制器發(fā)控制家電指令;接收由智能控制器傳來的報警或求援信息(經(jīng)并行通信),自動撥號(可由鍵盤預(yù)先設(shè)置)后,以語音形式將信息傳送給用戶或直接報警。都是在線調(diào)試,已經(jīng)在宿舍連接電話經(jīng)過真正的交換機實驗并且成功。本的各種電器接口、各項標(biāo)準(zhǔn)都嚴(yán)格遵循國家有關(guān)標(biāo)準(zhǔn),為以后的產(chǎn)品化提供了良好的基礎(chǔ)。家庭網(wǎng)絡(luò)系統(tǒng)主要由電話遠程控制器、智能控制器、一些功能模塊組成。電話遠程控制器主要接收電話線上傳來的控制家電的信息,譯碼后經(jīng)并行通信向智能控制器發(fā)控制家電指令;接收由智能控制器傳來的報警或求援信息(經(jīng)并行通信),自動撥號(可由鍵盤預(yù)先設(shè)置)后,以語音形式將信息傳送給用戶或直接報警。電話遠程智能遙控系統(tǒng)的具體設(shè)計要求:頻DTMF圖1.1系統(tǒng)總體框圖系統(tǒng)主要由AT89C51單片機、DTMF解碼芯片MT8870和語音芯片ISD2560組成。AT89C51單片機完成電話機振鈴信號次數(shù)的檢測、控制和加密。此系統(tǒng)具有以下單元功能模塊:由于采用PLC技術(shù)和Web服務(wù)器實現(xiàn)家電控制價格昂貴一般人承受不了,且用電話實現(xiàn)家電控制解決了電力線載波通信的可靠性較差,無線通信的價格偏高以及布線困難的問題,使得借助低壓電力線進行數(shù)據(jù)通信成為可能,而且開發(fā)周期短。所以我選擇利用電話實現(xiàn)家電控制。該系統(tǒng)利用遍及千家萬戶的電話線來傳輸信息,這是目前可以實現(xiàn)住宅內(nèi)與住宅外信息交換最有效的方法。主要應(yīng)用于電話遙控控制的家用電器,用戶在戶外可通過任意一部雙音多頻電話包括手機、電話分機,根據(jù)語音提示可以對各種電器(如電飯鍋、微波爐等電器)進行遠程控制,使人們的生活更加便捷與享受。該系統(tǒng)可以使用單片機配合新型的DTMF解碼芯片和語音電路來實現(xiàn)了電話對家用電器的遠程控制。在使用時只需先將電話線的進線插入本裝置,用戶使用本裝置時只要撥打家中的電話,裝置檢測到有鈴流可以設(shè)定30S以后還有鈴流,裝置發(fā)出模擬摘機信號,并控制語音處理電路提示用戶輸入密碼預(yù)先設(shè)定,用戶聽到這一提示音后就在自己所使用的雙音頻電話機或手機上按下密碼所對應(yīng)的數(shù)字鍵即可,密碼所對應(yīng)的雙音頻信號經(jīng)電話線傳給雙音頻接收發(fā)送電路,檢測譯碼,傳給主控單元,識別正確后,語音芯片再提示用戶進行控制家用電器的操作,最后,主控單元把控制家電的信息譯碼,經(jīng)并行通信傳給智能控制器,由控制器執(zhí)行控制家電的操作。電話智能遙控器由單片機構(gòu)成主控部分,進行主要的信息處理,接收外部操作指令形成各種控制信號,并完成對于各種信息的記錄;接口電路提供單片機與電話外線的接口。其中包括鈴流檢測、摘掛機控制、忙音檢測、雙音頻DTMF識別,及語音提示電路。單片機就是在一塊芯片上集成了CPU、RAM、ROMEPROM或EEPROM、時鐘、定時/計數(shù)器、多種功能的串行和并行I/O口。如Intel公司的8031系列等。除了以上基本功能外,有的還集成有A/D、D/A,如Intel公司的8098系列。概括起來說,單片機具有如下特點:具有位處理能力,強調(diào)控制和事務(wù)處理功能價格低廉。如低檔單片機價格只有人民幣幾元錢。開發(fā)環(huán)境完備,開發(fā)工具齊全,應(yīng)用資料眾多。后備人才充足。國內(nèi)大多數(shù)高校都開設(shè)了單片機課程和單片機實驗。本系統(tǒng)我們采用美國ATMEL公司生產(chǎn)的AT89C51。AT89C51的介紹AT89C51是美國ATMEL公司生產(chǎn)的低電壓、高性能CMOS8位單片機,片內(nèi)含4Kbytes的可反復(fù)擦寫的Flash只讀程序內(nèi)存和128bytes的隨機存取數(shù)據(jù)存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置用8位中央處理器和Flash存儲單元,功能強大的AT89C51單片機可以提供許多高性價比的應(yīng)用場合,可靈活應(yīng)用各種控制領(lǐng)域。其引腳如圖2.1所示。AT89C51主要性能參數(shù):1、 與MCS-51產(chǎn)品指令系統(tǒng)完全兼容;2、 4K字節(jié)可反復(fù)擦寫Flash閃速內(nèi)存;3、 1000次擦寫周期;4、 全靜態(tài)操作:0Hz,24Hz;5、 三級加密程序內(nèi)存;6、 128X8字節(jié)內(nèi)部RAM;7、 32個可編程I/O口線;8、 2個16位定時、計數(shù)器;9、 6個中斷源;10、 低功耗空閑和掉電模式。AT89C51是標(biāo)準(zhǔn)的40引腳雙列直插式集成電路芯片。它具有32個外部雙向輸入/輸出(I/O)端口,2個外部中斷口,2個16位可編程定時計數(shù)器,1個全雙工串行通信口。按其功能可分為電源、時鐘、控制和I/O接口四大部分:VCC:芯片主電源,外接+5V。GND:電源地線。XTAL1:振蕩器反相放大器的及內(nèi)部時鐘發(fā)生器的輸入端。XTAL2:振蕩器反相放大器的輸出端。ALE/:地址鎖存控制信號。當(dāng)訪問外部內(nèi)存時,地址鎖存允許輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。此時,ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。:外部程序內(nèi)存讀選信號。在由外部程序內(nèi)存取指期間,每個機器周期兩次有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的信號將不出現(xiàn)。/VPP:訪問程序內(nèi)存控制信號。當(dāng)信號為低電平時,只訪問片外程序內(nèi)存;而當(dāng)為高電平時,則對ROM的讀操作是從內(nèi)部程序內(nèi)存開始,并可延續(xù)至外部程序內(nèi)存。RST/VPD:復(fù)位/掉電保護信號輸入。當(dāng)輸入的復(fù)位信號延續(xù)2個機器周期以上高電平即為有效,用以完成單片機的復(fù)位操作。4、I/O引腳P0口(P0.0,P0.7):8位雙向并行I/O接口。擴展片外內(nèi)存或I/O口時,作為低8位地址和8位數(shù)據(jù)總線的分時復(fù)用接口,它為雙向三態(tài)。P0口可帶8個TTL負載電流。P0口作為I/O輸出口使用時,由于P0口為開漏輸出,必須外接上拉電阻才能有高電平輸出。P1口(P1.0,P1.7):8位準(zhǔn)雙向并行I/O接口。P1口每一位都可以獨立設(shè)置成輸入輸出位,P1口可以驅(qū)動4個TTL電路。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。P2口(P2.0,P2.7):8位準(zhǔn)雙向并行I/O接口。擴展外部數(shù)據(jù)、程序內(nèi)存時,作為高8位地址輸出端口。P2口可以驅(qū)動4個TTL電路。P3口(P3.0,P3.7):8位準(zhǔn)雙向接口并行I/O。除了與P1口有一樣的I/O功能外,每一個引腳還兼有第二功能。如表2-1所示。P3口的第二功能信號都是單片機的重要控制信號,因此,在實際使用時,先按需要選用第二功能信號,剩下的才以第一功能的身份作為數(shù)據(jù)位的I/O使用。P1、P2、P3口片內(nèi)均含有固定的上拉電阻,故稱為準(zhǔn)雙向并行I/O接口。P0口片內(nèi)無固定的上拉電阻,由兩個MOS管串接,既可開路輸出,又可處于高阻的“懸空”狀態(tài),故稱為雙向三態(tài)并行I/O接口。表2.1P3P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7RXDRXDT0T12.2.2DTMF芯片概述8870芯片它集成了陷波濾波器和數(shù)字解碼功能。在濾波器部分,使用了開關(guān)電容技術(shù);解碼部分,用數(shù)字計數(shù)的方法檢測所有16種DTMF音頻對,并將它們編成4bits的碼。通過在芯片上放置差分輸入放大器,時鐘晶振和可鎖存的三態(tài)輸出,可以使外圍元器件最少。本系統(tǒng)的解碼芯片我們采用MT8870OMT8870是一個完整的DTMF接收解碼電路。和其它電路,如LCD驅(qū)動電路一起,可實現(xiàn)CALLERID功能。它集成了陷波濾波器和數(shù)字解碼功能。在濾波器部分,使用了開關(guān)電容技術(shù);解碼部分,用數(shù)字計數(shù)的方法檢測所有16種DTMF音頻對,并將它們編成4bits的碼。通過在芯片上放置差分輸入放大器,時鐘晶振和可鎖存的三態(tài)輸出,可以使外圍元上件最少。信號經(jīng)過輸入放大,過濾掉噪聲,再被由6階高頻組帶通濾波器和8階低頻組帶通濾波器組成的陷波濾波器濾出DTMF信號,然后經(jīng)過平滑濾波,再由過零檢測器將模擬信號轉(zhuǎn)換成數(shù)字信號,進入數(shù)字部分。信號在數(shù)字部分分為兩路,一路直接送到頻率檢測部分,分別對信號進行高頻和低頻檢測。如果輸入信號頻率在預(yù)先設(shè)置的范圍內(nèi),則將檢測結(jié)果送到編碼部分進行編碼,并等待D觸發(fā)器的同步輸出信號;如果輸入信號頻率不在預(yù)先設(shè)置的范圍內(nèi),檢測結(jié)果維持為0不變。另一路則送到頻率平均算法部分,分別經(jīng)過4,8分頻,以初步檢測信號的持續(xù)時間,將諸如噪聲之類的干擾消除掉;同時,進一步設(shè)置更為嚴(yán)格的頻率檢測范圍。如果信號通過了檢測,就使ESt端輸出高電平,通過外圍RC回路對St端充電R,C的值可以根據(jù)不同的工業(yè)標(biāo)準(zhǔn)進行選擇,如果ESt端高電平持續(xù)時間足夠長,使充電后VcVtst2(35V,這是通過比較器比較,這就意味著所檢測的信號滿足DTMF的工作標(biāo)準(zhǔn),則使引導(dǎo)邏輯部分的輸出同步脈沖到編碼部分,使4位編碼輸出,經(jīng)過延遲單元,鎖存進三態(tài)輸出單元,輸出正確的碼;同時,引導(dǎo)邏輯部分產(chǎn)生StD端高電平信號,同時使GT維持兒高電下。如果充電時間不夠長,這就是說即使被檢測信號的頻率在DTMF頻率范圍內(nèi),但它的持續(xù)時間不足以滿足DTMF的工業(yè)標(biāo)準(zhǔn),輸出同步脈沖保持為0,編碼結(jié)果不輸出。本系統(tǒng)采用的是美國ISD公司的2500芯片,按錄放時間60秒。ISD2500系列和1400系列語音電路一樣,具有抗斷電、音質(zhì)好,使用方便等優(yōu)點。它的最大特點在于片內(nèi)E2PROM容量為480K1400系列為128K,所以錄放時間長;有10個地址輸入端1400系列僅為8個,尋址能力可達1024位;最多能分600段;設(shè)有OVF(溢出)端,便于多個器件級聯(lián)。對于存儲芯片的選擇,我們選擇AT24C02ATMEL公司的低功耗CMOS串行EEPROM°256X8位存儲空間,(2.55.5V)(10000次)(10ms)AT24C02的1、2、3腳是三條地址線,用于確定芯片的硬件地址。在AT89C51試驗開發(fā)板上它們都接地,第8腳和第4腳分別為正、負電源。第5腳SDA為串行數(shù)據(jù)輸入/輸出,數(shù)據(jù)通過這條雙向I2C總線串行傳送,在AT89C51試驗開發(fā)板上和單片機的P3.5連接。第6腳SCL為串行時鐘輸入線,在AT89C51試驗開發(fā)板上和單片機的P3.6連接。SDA和SCL都需要和正電源間各接一個5.1K的電阻上拉。第7腳需要接地。24C02中帶有片內(nèi)地址寄存器。每寫入或讀出一個數(shù)據(jù)字節(jié)后,該地址寄存器自動加1,以實現(xiàn)對下一個存儲單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時間,一次操作可寫入多達8個字節(jié)的數(shù)據(jù)。I2C總線是一種用于IC器件之間連接的二線制總線。它通過SDA(串行數(shù)據(jù)線)及SCL(串行時鐘線兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識別每個器件:不管是單片機、存儲器、LCD驅(qū)動器還是鍵盤接口。1(I2C總線的基本結(jié)構(gòu)采用I2C總線標(biāo)準(zhǔn)的單片機或IC器件,其內(nèi)部不僅有I2C接口電路,而且將內(nèi)部各單元電路按功能劃分為若干相對獨立的模塊,通過軟件尋址實現(xiàn)片選,減少了器件片選線的連接。CPU不僅能通過指令將某個功能單元電路掛靠或摘離總線,還可對該單元的工作狀況進行檢測,從而實現(xiàn)對硬件系統(tǒng)的既簡單又靈活的擴展與控制。2(雙向傳輸?shù)慕涌谔匦詡鹘y(tǒng)的單片機串行接口的發(fā)送和接收一般都各用一條線,如MCS51系列的TXD和RXD,而I2C總線則根據(jù)器件的功能通過軟件程序使其可工作于發(fā)送或接收方式。當(dāng)某個器件向總線上發(fā)送信息時,它就是發(fā)送器也叫主器件,而當(dāng)其從總線上接收信息時,又成為接收器也叫從器件。主器件用于啟動總線上傳送數(shù)據(jù)并產(chǎn)生時鐘以開放傳送的器件,此時任何被尋址的器件均被認(rèn)為是從器件°I2C總線的控制完全由掛接在總線上的主器件送出的地址和數(shù)據(jù)決定。在總線上,既沒有中心機,也沒有優(yōu)先機??偩€上主和從即發(fā)送和接收的關(guān)系不是一成不變的,而是取決于此時數(shù)據(jù)傳送的方向。SDA和SCL均為雙向I/O線,通過上拉電阻接正電源。當(dāng)總線空閑時,兩根線都是高電平。連接總線的器件的輸出級必須是集電極或漏極開路,以具有線“與”功能°I2C總線的數(shù)據(jù)傳送速率在標(biāo)準(zhǔn)工作方式下為100kbit/s,在快速方式下,最高傳送速率可達400kbit/s。3(I2C總線上的時鐘信號在I2C總線上傳送信息時的時鐘同步信號是由掛接在SCL時鐘線上的所有器件的邏輯“與”完成的。SCL線上由高電平到低電平的跳變將影響到這些器件,一旦某個器件的時鐘信號下跳為低電平,將使SCL線一直保持低電平,使SCL線上的所有器件開始低電平期。此時,低電平周期短的器件的時鐘由低至高的跳變并不能影響SCL線的狀態(tài),于是這些器件將進入高電平等待的狀態(tài)。當(dāng)所有器件的時鐘信號都上跳為高電平時,低電平期結(jié)束,SCL線被釋放返回高電平,即所有的器件都同時開始它們的高電平期。其后,第一個結(jié)束高電平期的器件又將SCL線拉成低電平。這樣就在SCL線上產(chǎn)生一個同步時鐘??梢?,時鐘低電平時間由時鐘低電平期最長的器件確定,而時鐘高電平時間由時鐘高電平期最短的器件確定。4(數(shù)據(jù)的傳送在數(shù)據(jù)傳送過程中,必須確認(rèn)數(shù)據(jù)傳送的開始和結(jié)束。在I2C總線技術(shù)規(guī)范中,開始和結(jié)束信號(也稱啟動和停止信號)的定義。當(dāng)時鐘線SCL為高電平時,數(shù)據(jù)線SDA由高電平跳變?yōu)榈碗娖蕉x為“開始”信號;當(dāng)SCL線為高電平時,SDA線發(fā)生低電平到高電平的跳變?yōu)椤敖Y(jié)束”信號。開始和結(jié)束信號都是由主器件產(chǎn)生。在開始信號以后,總線即被認(rèn)為處于忙狀態(tài);在結(jié)束信號以后的一段時間內(nèi),總線被認(rèn)為是空閑的。I2C總線的數(shù)據(jù)傳送格式是:在I2C總線開始信號后,送出的第一個字節(jié)數(shù)據(jù)是用來選擇從器件地址的,其中前7位為地址碼,第8位為方向位R/W。方向位為“0”表示發(fā)送,即主器件把信息寫到所選擇的從器件;方向位為“1”表示主器件將從從器件讀信息。開始信號后,系統(tǒng)中的各個器件將自己的地址和主器件送到總線上的地址進行比較,如果與主器件發(fā)送到總線上的地址一致,則該器件即為被主器件尋址的器件,其接收信息還是發(fā)送信息則由第8位R/W確定。在I2C總線上每次傳送的數(shù)據(jù)字節(jié)數(shù)不限,但每一個字節(jié)必須為8位,而且每個傳送的字節(jié)后面必須跟一個認(rèn)可位(第9位),也叫應(yīng)答位(ACK)。送過程如每次都是先傳最高位,通常從器件在接收到每個字節(jié)后都會作出響應(yīng),即釋放SCL線返回高電平,準(zhǔn)備接收下一個數(shù)據(jù)字節(jié),主器件可繼續(xù)傳送。如果從器件正在處理一個實時事件而不能接收數(shù)據(jù)時,(例如正在處理一個內(nèi)部中斷,在這個中斷處理完之前就不能接收I2C總線上的數(shù)據(jù)字節(jié))可以使時鐘SCL線保持低電平,從器件必須使SDA保持高電平,此時主器件產(chǎn)生1個結(jié)束信號,使傳送異常結(jié)束,迫使主器件處于等待狀態(tài)。當(dāng)從器件處理完畢時將釋放SCL線,主器件繼續(xù)傳送。當(dāng)主器件發(fā)送完一個字節(jié)的數(shù)據(jù)后,接著發(fā)出對應(yīng)于SCL線上的一個時鐘(ACK)認(rèn)可位,在此時鐘內(nèi)主器件釋放SDA線,一個字節(jié)傳送結(jié)束,而從器件的響應(yīng)信號將SDA線拉成低電平,使SDA在該時鐘的高電平期間為穩(wěn)定的低電平。從器件的響應(yīng)信號結(jié)束后,SDA線返回高電平,進入下一個傳送周期。I2C總線還具有廣播呼叫地址用于尋址總線上所有器件的功能。若一個器件不需要廣播呼叫尋址中所提供的任何數(shù)據(jù),則可以忽略該地址不作響應(yīng)。如果該器件需要廣播呼叫尋址中提供的數(shù)據(jù),則應(yīng)對地址作出響應(yīng),其表現(xiàn)為一個接收器。5(總線競爭的仲裁總線上可能掛接有多個器件,有時會發(fā)生兩個或多個主器件同時想占用總線的情況。例如,多單片機系統(tǒng)中,可能在某一時刻有兩個單片機要同時向總線發(fā)送數(shù)據(jù),這種情況叫做總線競爭°I2C總線具有多主控能力,可以對發(fā)生在SDA線上的總線競爭進行仲裁,其仲裁原則是這樣的:當(dāng)多個主器件同時想占用總線時,如果某個主器件發(fā)送高電平,而另一個主器件發(fā)送低電平,則發(fā)送電平與此時SDA總線電平不符的那個器件將自動關(guān)閉其輸出級??偩€競爭的仲裁是在兩個層次上進行的。首先是地址位的比較,如果主器件尋址同一個從器件,則進入數(shù)據(jù)位的比較,從而確保了競爭仲裁的可靠性。由于是利用I2C總線上的信息進行仲裁,因此不會造成信息的丟失。6.I2C總線接口器件目前在視頻處理、移動通信等領(lǐng)域采用I2C總線接口器件已經(jīng)比較普遍。另外,通用的I2C總線接口器件,如帶I2C總線的單片機、RAM、ROM、A/D、D/A、LCD驅(qū)動器等器件,也越來越多地應(yīng)用于計算機及自動控制系統(tǒng)。系統(tǒng)硬件設(shè)計本系統(tǒng)使用了大量的硬件電路完成部分功能模塊,其目的就是充分利用硬件電路的可靠性、穩(wěn)定性,使整體電路達到比較高的穩(wěn)定性。此電路主要包括電話線路摘機檢測和線路振鈴信號的檢測電路,語音提示電路,單片機控制和密碼存儲電路,DTMF檢測電路及電器驅(qū)動電路。振鈴檢測的功能是檢測有無鈴流,當(dāng)用戶被呼叫時,電話交換機發(fā)來鈴流信號。振鈴為25?3HZ的正弦波,諧鈴失真不大于10%,電壓有效值90?15V。振鈴信號以5秒為周期,即1秒送,4秒斷。振鈴檢測電路如圖3.1所示。P3.7是振鈴信號檢測端,根據(jù)振鈴信號電壓比較高的特點,可以先使用高壓穩(wěn)壓二極管進行降壓,然后輸入至光電耦合器。經(jīng)過RC回路進行濾波,輸入給光電耦合器的波形,經(jīng)過光電耦合器的隔離轉(zhuǎn)換輸出很標(biāo)準(zhǔn)的方波。方波信號就可以直接輸出至單片機的端口,完成整個振鈴音檢測和計數(shù)的過程。模擬摘機電路的功能是當(dāng)電話振鈴到一定時間后接通電話,其電路如圖3.1所示。如果電話線路上出現(xiàn)了振鈴信號,90VPP的振鈴電壓使得光電耦合器U2輸出端按振鈴頻率導(dǎo)通和截止,單片機在每次振鈴信號結(jié)束后進行振鈴次數(shù)計數(shù),并將單片機振鈴次數(shù)計數(shù)器中的數(shù)據(jù)與已經(jīng)設(shè)定的振鈴摘機數(shù)據(jù)比較,兩者相等P3.1下拉,光電耦合器U1導(dǎo)通,則Q1和Q2也導(dǎo)通,從而實現(xiàn)模擬摘機。圖3.1振鈴檢測與模擬摘機電路監(jiān)測電路是為了監(jiān)測電話機是否模擬摘機,電路如圖3.1所示。電路中的DW1、R2、R13、C6、Q3組成電話線路摘機檢測,平時電話線路電壓使得DW1擊穿,使Q3的基極電位為高,三極管導(dǎo)通,P3.0腳被下拉成低電平,此時單片機主要任務(wù)是監(jiān)測P3.0腳的電壓升高變化。當(dāng)該系統(tǒng)接收到振鈴信號,且達到規(guī)定的振鈴次數(shù)后模擬摘機,電話線路上電壓均由原來的48V下降到7-8V,此時DW1截止,P3.0被本身的上拉電阻上拉成高電平。單片機測試到P3.0腳的高電平后,開啟外部中斷0,單片機隨時接收MT8870發(fā)出的選通信號,單片機根據(jù)選通信號的到來及時接收MT8870數(shù)據(jù)端11-14腳上的雙音多頻信號數(shù)據(jù)。語音提示電路是此系統(tǒng)的重要組成部分,能提供給用戶直觀的的反饋信息,為了使系統(tǒng)更加人性化,語音提示直接采用了語音芯片,將一些操作規(guī)則事先存于芯片中,根據(jù)不同的DTMF信號產(chǎn)生不同的提示信息,從而來完成控制整個系統(tǒng)的目的,由于需要存儲的信息容量比較大,電路采用了ISD2560,此芯片可錄一分鐘的語音信息,對本系統(tǒng)以足夠使用,電路如圖3.2所示。聲音監(jiān)聽和語音提示都由P3.6控制,聲音信號是由MIC話筒產(chǎn)生的,而語音信號是由ISD2560語音芯片輸出的。當(dāng)P3.6為高電平時,三極管Q6截止,因此對聲音信號和語音信號沒有放大功能;當(dāng)P3.6為低電平時,三極管Q6導(dǎo)通,對信號有放大作用,此時可以監(jiān)聽聲音或者自動語音提示。語音提示電路包括語音芯片及外圍電路,語音放大反饋回路,反饋信息由單片機控制,2500系列最多可分為600段,只要在分段錄/放音操作前不少于300納秒,給地址A0~A9賦值,錄音及放音功能均從設(shè)定的起始地址開始,錄音結(jié)束由停止鍵操作決定,芯片內(nèi)部自動在該段的結(jié)束位置插入結(jié)束標(biāo)志(EOM);而放音時芯片遇到EOM標(biāo)志即自動停止放音。使用操作模式時需要注意兩點:1、 所有操作模式下的操作都是從0地址開始,以后的操作根據(jù)模式的不同,而從相應(yīng)的地址開始工作。當(dāng)電路中錄音轉(zhuǎn)放音或進入省電狀態(tài)時,地址計數(shù)器復(fù)位為0。2、 操作模式位不加鎖定,可以在MSB(A8、A9)地址位為高電平時,CE電平變低的任何時間執(zhí)行操作模式操作。如果下一片選周期MSB(A8、A9)地址位中有一個或兩個變?yōu)榈碗娖剑瑒t執(zhí)行信息地址,即從該地址錄音或放音,原來設(shè)定的操作模式狀態(tài)丟失。本電路單片機采用了AT89C51作為控制芯片,并采用EEPROM作為密碼的存儲。為了減小電路的體積及單片機I/O口,存儲器采用了24C02,有2K的存儲空間,當(dāng)系統(tǒng)掉電后密碼也不會丟失。密碼存儲電路如圖3.3所示。DTMF檢測電路此部分是整個系統(tǒng)的關(guān)鍵,它的工作情況直接決定了系統(tǒng)的可靠性。DTMF編、解碼方式在電話撥號系統(tǒng)中應(yīng)用非常廣泛,其突出的優(yōu)點是抗干擾能力很強。經(jīng)過翻閱大量的文獻資料,發(fā)現(xiàn)使用電話專用的雙音頻編解碼芯片進行輸入雙音頻信號的解碼,是比較常用的一種方法。使用集成電路不但外圍電路簡單,而且可靠性強。經(jīng)過專用集成電路的解碼,信號轉(zhuǎn)換成為不同的碼制信號,可以直接被單片機讀取。一般常用的電話雙音頻編解碼集成電路有8870、8880、8888等,經(jīng)過反復(fù)論證比較,決定使用雙音頻解碼集成片MT8870來完成此功能模塊。DTMF檢測電路如圖3.4所圖3.4DTMF檢測電路P3.2為單片機的中斷引腳,當(dāng)MT8870接收來自電話線的雙音多頻信號并準(zhǔn)備好輸出時,產(chǎn)生中斷信號。MT8870的2、3腳接收來自電話機的雙音多頻脈沖信號,該雙音多頻信號先經(jīng)其內(nèi)部的撥號音濾波器,濾除撥號音信號,然后經(jīng)前置放大后送入雙音頻濾波器,將雙音頻信號按高、低音頻信號分開,再經(jīng)高、低群濾波器,幅度檢測器送入輸出譯碼電路,經(jīng)過數(shù)字運算后,在其數(shù)據(jù)輸出端(11-14腳)輸出相對應(yīng)的8421碼。MT8870的數(shù)據(jù)輸出端Q1-Q4連到AT89C51的P1口的P1.0-P1.3,CPU經(jīng)P1口識別4位代碼。電話按鍵與相應(yīng)譯碼(Q4-Q1)輸出見表3-1。其中,A,B,C,D4個按鍵常被當(dāng)作R/P,REDIAL,HOLD,HANDSFREE等功能使用。注意,需要特別指出的是,對于“0”號碼,MT8870輸出的8421碼并非是“0000”,而是“1010”;另外,“*”,"#”字號碼,MT8870輸出的8421碼分別為“1011”和“1100”。有些技術(shù)資料會出現(xiàn)錯誤,包括比較權(quán)威的手冊,所以在實驗中,記錄下測量的每一組數(shù)據(jù)后,才把這些數(shù)據(jù)應(yīng)用于程序當(dāng)中。為了使單片機AT89C51獲取有效數(shù)據(jù),MT8870的STD有效端經(jīng)反相后接CPU的/INT0引腳。當(dāng)MT8870獲取有效雙音多頻信號后,STD電平由低變高,再反相為低,CPU檢測后,指示P1口接收有效二進制代碼。而無效的雙音頻信號(電話線路雜音、人們的語音信號等)是不會引起MT8870的STD端變化的。DTMF數(shù)據(jù)輸出如表3.1所示。表3.1DTMF數(shù)據(jù)輸出表低通(HZ高通(HZ數(shù)字OED4D3D2D169712091HLLLH69713362HLLHL69714773HLLHH77012094HLHLL77013365HLHLH77014776HLHHL852TOC\o"1-5"\h\z12097HL H H H 852 13368H H L L L85214779 H H L L H 9411336 0 H H L HL9411209* H H L H H 9411477 # H H H LL6971633 A H H H L H7701633 B H H HHL8521633CHHHHH9411633DHLLLL--ANYLZZZZ3.5繼電器控制電路電器控制可采用繼電器,可控硅等來控制強電的通與斷,為了達到電話機能控制家用電器的開關(guān)作用,此設(shè)計采用了繼電器,一共設(shè)定了兩路繼電器開關(guān),電器控制電路如圖3.5所示。圖3.5電器控制電路繼電器的開關(guān)由單片機控制,并可設(shè)定延時開延時關(guān)的功能。在系統(tǒng)中還設(shè)置了三個當(dāng)?shù)匕存I,其中兩個控制兩路繼電器的開和關(guān),另一個用于復(fù)位初始密碼的,當(dāng)用戶忘記自己設(shè)定的密碼時,可以用此按鍵進行密碼的復(fù)位,初始密碼為123456。系統(tǒng)軟件設(shè)計4.1系統(tǒng)軟件設(shè)計基本思路本系統(tǒng)反應(yīng)軟件主要完成各種狀態(tài)的檢測以及數(shù)據(jù)的發(fā)送和接收工作,程序的基本流程如圖4.1所示。圖4.1系統(tǒng)軟件流程圖為提高控制系統(tǒng)的可靠性、可維護性和編程的效率性,控制系統(tǒng)的軟件采用模塊化結(jié)構(gòu),用C語言編寫,簡潔、明了。在硬件的基礎(chǔ)上,智能型電話遙控器的所有功能都是由軟件實行的,通過軟件編程可以控制電器的開關(guān)、延時開關(guān)、聲音監(jiān)聽、密碼修改和語音提示等等。因此,電路的設(shè)計中,軟件編程也起到了關(guān)鍵性的作用。軟件設(shè)計包括振鈴檢測、模擬摘機、語音提示、密碼存儲、各功能操作、8870中斷作這些模塊。在圖4.1系統(tǒng)軟件流程圖中,功能操作包括了很多的功能,如圖4.2所示。圖4.2系統(tǒng)功能圖4.2定時中斷子程序在軟件編程中,需要考慮到電路中中斷的使用。智能型電話遙控器系統(tǒng)里用到了一個定時中斷。定時中斷是用于兩路電器延時開和關(guān)時間的計時,50ms中斷一次,電器的延時時間最小單位是分,延時開和關(guān)都有計數(shù)值,當(dāng)計數(shù)值減為0時,對電voidtimer0interrupt1using1TL00xb0;TH00x3c;dlycount1--;ifdlycount10dlycount11200;ifopencount1!0opencount1--;ifopencount10p240;ifopencount2!0opencount2--;ifopencount20p250;ifclosecount1!0closecountl--;ifclosecountl0p241;ifclosecount2!0closecount2--;ifclosecount20p251;if!opencount1|opencount2|closecount1|closecount2TR00;4.3MT8870中斷子程序在軟件編程中還用到一個外中斷,外中斷是用于MT8870DTMF解碼芯片的,當(dāng)DTMF信號解碼成功后,解碼芯片會產(chǎn)生一個高電平,提示單片機已經(jīng)解碼成功。voidint0interrupt0using1uchari,j,k;k0;datP1;datdat&0x0f;ifallow1function;ifallow0count1++;ifcount17ifdat10data1[count1-1]0;elsedata1[count1-1]dat;elseifdat0x0cfori0;i6;i++ifpassward[i]data1[i]k++;_nop_;ifk6allow1;count10;i0;j0;k0;//密碼輸入正確play5;elseallow0;j++;i0;k0;count10;ifj1play1;ifj2p311;j0;//密碼輸入錯誤兩次則掛機系統(tǒng)的調(diào)試本裝置的調(diào)試主要分為硬件調(diào)試、軟件調(diào)試和聯(lián)機調(diào)試等三大部分。經(jīng)過初步的分析設(shè)計后,在制作硬件電路的同時,調(diào)試也在穿插進行。這樣有利于問題的分析和解決,不會造成問題的積累,而且不會因為一個小問題而進行整體電路的檢查,從而可以節(jié)約大量的調(diào)試時間。軟件編程中,我是首先完成單元功能模塊的調(diào)試,然后進行系統(tǒng)調(diào)試,整體上與硬件調(diào)試的方法差不多。聯(lián)機調(diào)試是最重要的一部分,同時也是本裝置成功的關(guān)鍵。有許多新問題都不是很容易解決的。V直流電源一個數(shù)字萬用表一個電話線?兩根SmartPROX5編程器一個PC機一臺5.2硬件及軟件調(diào)試由于采用單片機程序控制,所以硬件調(diào)試工作量不大,只要保證硬件電路的電源和時鐘、復(fù)位能正常就行。首先完成DTMF雙音多頻信號解碼和振鈴信號檢測電路的調(diào)試。第一步:檢查實驗電路的焊接是否正確,用萬用表檢查是否有短路和斷路的地方。第二步:連接好電源,靜態(tài)檢查MT8870芯片和AT89C51芯片的電源是否正常。AT89C51芯片的時鐘和復(fù)位是否正常,振鈴電路能否檢測到振鈴信號。第三步:用SmartPROX5編程器將目標(biāo)下載到AT89C51單片機中,然后利用手機(或電話機)發(fā)送的DTMF信號,看是否能成功的解碼。不斷的檢查硬件和程序,找出原因,解決問題。從課題的選擇到項目的最終完成,老師都始終給予我細心的指導(dǎo)和不懈的支持師文慶張智勇陳用(基于DTMF與單片機的電話遠程和紅外近程測控系統(tǒng)[J](測控技術(shù)與儀器儀表(2007呂仁禮,周金和,李茂詳(電話DTMF數(shù)據(jù)收發(fā)模塊的設(shè)計[J](電子技術(shù)應(yīng)用(1998,4:46,48。李艷雄,汪魯才(電話報警及遠程控制系統(tǒng)的設(shè)計[J](現(xiàn)代電子技術(shù)2005,13:70-73。[4]姜鳳武(基于AT89C51單片機的家用電器電話遙控裝置[J](自動化技術(shù)與應(yīng)用(2006,(08):94,97。張建輝(基于單片機的家電遠程控制系統(tǒng)設(shè)計[J](蘇州科技學(xué)院學(xué)報工程技術(shù)版(2006,(02):14,17。曹建平(利用電話的“有線+無線”遠程控制系統(tǒng)[J](南京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(2002,(01):13,16。李雪梅,李秋紅(AT85C51單片機在電話遠程控制器中的應(yīng)用[J](現(xiàn)代電子技術(shù)(2006,20(4):36,41。謝孝良(用AT89C2051實現(xiàn)電話遠程控制家用電器[J](單片機與嵌入式系統(tǒng)應(yīng)用(2003,(01):24,27。楊為理(現(xiàn)代通訊集成電路應(yīng)用技術(shù)手冊[M](電子工業(yè)出版社,2002,1:25,28。李廣地,朱月秀,王秀山(單片機基礎(chǔ)[M](北京航空航天大學(xué)出版社,2005,(02):23,27。張志柏(基于單片機的家用電器遠程電話控制系統(tǒng)的實現(xiàn)[J](常州信息職業(yè)技術(shù)學(xué)院學(xué)報(2006,(01):30,32。李華(MCS-51系列單片機實用接口技術(shù)[M](北京航空航天大學(xué)出版社。李傳南(單片機與DTMF信號收發(fā)芯片MT8870的直接接口設(shè)計[J](電子與自動化(2002.2:30-35。張大明(單片機控制實訓(xùn)[M](機械工業(yè)出版社2007,234,258Austin(DTMF-RD(.silabs。AtmelCorporation(AT89C518-bitMCUwith2KBytesFlash。like。Neaman(SemiconductorandDevices:BasicPrinciples[M](3rdEd(McGrawHillInc2004:449-522。附錄三:電話遠程控制器PCB圖附錄四:電話遠程控制器程序/**********************************************用戶頭文件************************************************/#include#include#include/**********************************************宏定義************************************************/#defineucharunsignedchar#defineuintunsignedint#defineI2CReadAdr0xA1//AT24C02寫地址,格式為:命令1010+器件3位地址+讀/寫。#defineI2CWriteAdr0xA0//AT24C02讀地址/**********************************************管腳定義************************************************/sbitI2CSCKP1"6;//24C02時鐘信號sbitI2CSDAP「7;//24C02數(shù)據(jù)信號sbitHoldTestP3”0;〃模擬摘機檢測端,為1時處于摘機狀態(tài)sbitHoldOnP3”1;〃模擬摘機控制端,為0時摘機sbitControllP2”4;//繼電器控制端sbitControl2P2"5;//繼電器控制端sbitRingIntP3"7;//振鈴信號檢測端sbitISDPRP2"6;//語音錄/放控制端0為錄,1為放sbitISDPDP0"7;//芯片低功耗狀態(tài)控制1為低功耗sbitKEY1P2"0;//當(dāng)?shù)夭僮靼存I1sbitKEY2P2"1;//當(dāng)?shù)夭僮靼存I2sbitKEY3P2"2;//當(dāng)?shù)夭僮靼存I3sbitISDEOMP2"7;//錄放音結(jié)束信號輸出sbitISDCEP0"6;//芯片片選sbitVoiceEnP3"6;//監(jiān)聽控制端/**********************************************全局變量************************************************/ucharGRingCount;//振鈴次數(shù)計數(shù)ucharallow;uchardat;uchardat1;ucharopen;ucharclose;uchara;uintdlycount;uintdlyGRingCount;uintopenGRingCount;uintopencount2;uintcloseGRingCount;uintclosecount2;〃延時計數(shù)值ucharucGPassward[6]0x00,0x00,0x00,0x00,0x00,0x00;//初始密碼為123456,存儲在24C02中uchardata1[6]0x00,0x00,0x00,0x00,0x00,0x00;//輸入密碼暫存ucharcodeucGISDAddr[9]//代碼,存儲于FLASH中,語音芯片錄音段其始地址0x40,〃錄音第一段0x40:請輸入密碼;0x49,〃錄音第二段0x49:密碼錯誤,請重新輸入;0x50,〃錄音第三段0x50:1開;0x54,〃錄音第四段0x54:1關(guān);0x58,〃錄音第五段0x58:2開;0x5c,〃錄音第六段0x5c:開電器1請按1,關(guān)電器1請按2,開電器2請按3,關(guān)電器2請按4,延時開請按5,延時關(guān)請按6,開監(jiān)聽請按7,關(guān)監(jiān)聽請按8,修改密碼請按9,狀態(tài)查詢請按0,掛機請按*鍵;0x61,〃錄音第七段0x61:密碼修改成功;0x68,〃錄音第八段0x68:2關(guān);0x6d;//錄音第九段0x6d:設(shè)置成功。/**********************************************************************Functionname:延時函數(shù),共三個**Descriptions:延時函數(shù),定時不準(zhǔn)**Input:延時時間長度**Output:無********************************************************************/voidDelaylms/*1ms定時*/uinti0;fori150;i0;i--;voidDelay20ms/*延時20ms*/uchari0;ucharj0;fori50;i0;i--forj200;j0;j--;voidDelayNsucharucdly/*延時1s*/uchari0;ucharj0;uchark0;for;ucdly0;ucdly--fori10;i0;i--forj200;j0;j--fork250;k0;k--;/**********************************************************************Functionname:I2C讀寫子程序**Descriptions:**Input:**Output:無********************************************************************/voidI2CStartvoid/*******************I2C起********************/I2CSDA1;//SCK為高電平時,SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)I2CSCK1;_nop_;〃時序要求600ns,保證正確起始_nop_;I2CSDA0;I2CSCK0;voidI2CStopvoid/*******************I2C停止********************/I2CSCK0;//SCL為低電平時,SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)I2CSDA0;I2CSCK1;I2CSDA1;/*******************從24C02讀數(shù)據(jù)********************/ucharI2CReadvoiduchari0;ucharucReadDat0;fori8;i0;i--//8位,先讀最高位I2CSCK1;//獲得總線操作ucReadDatucReadDat1;//數(shù)據(jù)左移,空出最低位,用于接收數(shù)據(jù)ucReadDatucReadDat|ucharI2CSDA;//保存低位數(shù)據(jù),采用按位或的方式I2CSCK0;〃釋放總線returnucReadDat;//返回獲得的數(shù)據(jù)/*******************寫數(shù)據(jù)到24C02********************/bitI2CWriteucharucWriteDatuchari;bitbACK;〃應(yīng)答fori8;i0;i--//8位,先讀最高位ifucWriteDat&0x80//發(fā)送數(shù)據(jù)到數(shù)據(jù)總線上I2CSDA1;elseI2CSDA0;I2CSCK1;//獲得總線操作_nop_;〃適當(dāng)延時,等待對方接收完畢_nop_;I2CSCK0;//釋放總線ucWriteDatucWriteDat1;//數(shù)據(jù)左移,繼續(xù)傳送下一位I2CSDA1;//接收應(yīng)答信號_nop_;_nop_;I2CSCK1;//獲得總線操作,等待從器件將數(shù)據(jù)線信號拉低_nop_;_nop_;bACKI2CSDA;//讀取應(yīng)答信號I2CSCK0;returnbACK;//返回/**************在指定地址addr處寫入數(shù)據(jù)write_data********/voidI2CByteWriteucharucAdr,ucharucDataI2CStart;//發(fā)送開始信號I2CWriteI2CWriteAdr;//發(fā)送器件寫地址I2CWriteucAdr;//發(fā)送指定片內(nèi)字節(jié)地址I2CWriteucData;〃發(fā)送數(shù)據(jù)I2CStop;〃結(jié)束/***************在指定地址讀取************/ucharI2CByteReaducharucAdrucharucData;I2CStart;//發(fā)送開始信號I2CWriteI2CWriteAdr;//發(fā)送器件寫地址I2CWriteucAdr;//發(fā)送指定片內(nèi)字節(jié)地址I2CStart;//重新發(fā)送開始信號,進行數(shù)據(jù)傳送I2CWriteI2CReadAdr;〃發(fā)送器件讀地址ucDataI2CRead;//接收數(shù)據(jù)I2CStop;〃結(jié)束returnucData;〃返回接收到的數(shù)據(jù)/************放音程序**************/voidISDPlayucharucAdrP0ucGISDAddr[ucAdr];VoiceEn0;DelayNs1;ISDCE0;DelayNs1whileISDEOM0;ISDPD1;VoiceEn1;ISDCE1;/************各鍵功能*************/voidfunctionuchari,fun,delayopen,delayclose,laws,flag;ifdat10dat10;elsedat1dat;ifdelayopeni++;ifi1ifdat1open1;elseifdat2open2;elsedelayopen0;ifi1&&i4dlycountdlycount*10+dat1;elsedlycountdlycount*10+datl;//輸入三位數(shù)后延時開計時ifopen1openGRingCountdlycount;dlycount0;elseopencount2dlycount;dlycount0;TR01;i0;delayopen0;open0;ISDPlay8;ifdelayclosei++;ifi1ifdat1close1;elseifdat2close2;elsedelayclose0;ifi1&&i4dlycountdlycount*10+datl;elseifi4dlycountdlycount*10+datl//輸入三位數(shù)后延時關(guān)計時ifclose1closeGRingCountdlycount;dlycount0;elseclosecount2dlycount;dlycount0;TR01;i0;delayclose0;close0;ISDPlay8;iflawsi++;ifi7data1[i-1]dat1;elseifdat0x0cTR00;fora0;a6;a++I2CStart;I2CWriteI2CWriteAdrI2CWritea;I2CWritedata1[a];I2CStop;Delaylms;TR01;EX01;ISDPlay6;i0;laws0;elselaws0;i0;iffun0switchdat1case0x01:ifControl11Control10;ISDPlay8;break;Controll1;ISDPlay8;break;case0x03:ifControl21Control20;ISDPlay8;break;case0x04:ifControl20Control21;ISDPlay8;break;case0x05:delayopen1;break;case0x06:delayclose1;break;case0x07:VoiceEn0;break;Delay20ms;break;case0x09:laws1;break;case0x00:ifControl10ISDPlay

溫馨提示

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

評論

0/150

提交評論