智能窗簾控制器設(shè)計_第1頁
智能窗簾控制器設(shè)計_第2頁
智能窗簾控制器設(shè)計_第3頁
智能窗簾控制器設(shè)計_第4頁
智能窗簾控制器設(shè)計_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

摘要窗簾是人類自定居開始就存在的家居用具,用以保護人的隱私及改變屋內(nèi)光線。隨著時代的開展,傳統(tǒng)的窗簾已不能滿足人們需求,為此提出一個多功能智能窗簾控制器的研究。多功能智能窗簾控制器使用STC12系列單片機作為核心,通過利用光敏電阻在光照下變化的電阻經(jīng)過分壓電路及模數(shù)轉(zhuǎn)換后,將轉(zhuǎn)換數(shù)據(jù)送往單片機,單片機控制液晶顯示器顯示光照強度,并根據(jù)光照強度大小自動判斷當(dāng)前光照是否強烈,從而控制電機轉(zhuǎn)動帶動窗簾,實現(xiàn)自動調(diào)光功能;同時,運用紅外遙控技術(shù),實現(xiàn)無線遙控功能。電機電路由L298N外加續(xù)流二極管的電路提供驅(qū)動。所完成的控制器能實現(xiàn)開閉、自動、定時多模式的選擇功能。文中介紹了系統(tǒng)總體的設(shè)計方案,及系統(tǒng)工作原理,詳細(xì)闡述系統(tǒng)硬件的設(shè)計和軟件程序的設(shè)計流程。文章提供有關(guān)數(shù)據(jù),并作出相應(yīng)分析,總結(jié)系統(tǒng)所實現(xiàn)的功能,分析缺乏,為此提出展望。關(guān)鍵字:STC單片機、紅外遙控、自動調(diào)光、光敏電阻AbstractCurtainiswhichtheexistenceofahouseappliancesincethebeginningofthehumansettlement,itwasusedtoprotectpeople'sprivacyandtochangethehouselight.Withthedevelopmentofthetimes,thetraditionalcurtaincannotsatisfypeople'sneeds,foraproposedstudyofmulti-applicationsmartcurtaincontroller.MultifunctionalsmartcurtaincontrollerusesSTC12SeriesMCUasthecore,throughtheuseoflight-sensitiveresistorschangeresistorinthelight.Thenthevoltagewhichischangedbythelight-sensitiveresistorssendtothevoltagedividercircuitandanalog-digitalconversion,andthentheconvertedofdatasenttothemicrocontroller.TheMCUwillcontroltheLCDtodisplaythelightintensity,andinaccordancewiththelightintensityautomaticallydeterminethecurrentsizeofthelightintensityoflightisstrongorweak,alsodrivenbyrotationofthemotortocontrolthecurtainstomakeoutautomaticdimmingfunction;Atthesametime,theuseofinfraredremotecontroltechnologycanworkoutthewirelessremotecontrolfunction.ThemotorcircuitisdrivenbythechipwhichthemodelnumberisL298Nandaddexternalfreewheelingdiodecircuit.Thecontrollercanselectmultiplemodes,suchasopening,closing,automatic,andtiming.Thispaperdescribestheoverallsystemdesign,andthesystemhowtowork.Itelaboratesthesystemhardwaredesignandsoftwaredesignprocesses.Thisarticlesprovidetherelevantdata,andmaketheappropriateanalysis,thensummarizedthesystemfunctionswhicharerealizedandinadequateanalysis.Finallyweproposedtheprospect.Keywords:STCsinglechipmicrocomputer,Infraredremotecontrol,automaticchange-lightfunction,photoresistors目錄TOC\o"1-2"\h\u引言21系統(tǒng)方案設(shè)計21.1設(shè)計要求21.2系統(tǒng)框圖21.3系統(tǒng)方案設(shè)計22硬件設(shè)計22.1最小系統(tǒng)設(shè)計22.2紅外信號接收設(shè)計22.3顯示模塊設(shè)計22.4光采集模塊設(shè)計22.5電機驅(qū)動模塊設(shè)計22.6窗簾結(jié)構(gòu)設(shè)計23軟件設(shè)計23.1主程序設(shè)計23.2紅外信號接收子程序設(shè)計23.3光采集A/D子程序設(shè)計23.4電機驅(qū)動子程序設(shè)計23.5顯示子程序設(shè)計23.6定時模式子程序設(shè)計24系統(tǒng)調(diào)試24.1單片機最小系統(tǒng)的調(diào)試24.2LCD5110顯示的調(diào)試24.3紅外信號發(fā)射接收的調(diào)試24.4A/D轉(zhuǎn)換的調(diào)試24.5電機驅(qū)動的調(diào)試24.6系統(tǒng)整機的調(diào)試24.7數(shù)據(jù)測試與分析25總結(jié)與展望2謝辭2參考文獻2附錄2引言窗簾作為現(xiàn)代家居用品中的必需品,具有遮陽隔熱和調(diào)節(jié)室內(nèi)光線的功能,是與外界隔絕,保持居室私密性的家居用品。冬季,拉上幔帳式的窗簾將室內(nèi)外分隔成兩個世界,給屋里增加了溫馨的暖意[1]。隨著單片機的使用越來越廣泛,其制作本錢不斷下降,而性能卻不斷提高科技創(chuàng)造便捷生活,我們使用最簡單的材料和程序,利用紅外線實現(xiàn)了短距離無線通訊,可以控制各種負(fù)載的工作,應(yīng)用到生活和農(nóng)業(yè)生產(chǎn)中,只用一個遙控器就可以控制微波爐、窗簾和電燈等等[2]?;跍y控儀器的方便使用與快速處理,智能家居首當(dāng)其沖,智能家居作為一個新生產(chǎn)業(yè),處于一個導(dǎo)入期與成長期的臨界點,市場消費觀念還未形成,但隨著智能家居市場推廣普及的進一步落實,培育起消費者的使用習(xí)慣,智能家居市場的消費潛力必然是巨大的,產(chǎn)業(yè)前景光明。正因為如此,國內(nèi)優(yōu)秀的智能家居用品生產(chǎn)企業(yè)愈來愈重視對行業(yè)市場的研究,特別是對企業(yè)開展環(huán)境和客戶需求趨勢變化的深入研究,一大批國內(nèi)優(yōu)秀的智能家居品牌迅速崛起,逐漸成為智能家居產(chǎn)業(yè)中的翹楚!在產(chǎn)品調(diào)查中發(fā)現(xiàn),現(xiàn)階段的智能窗簾所實現(xiàn)的功能為可手動及電動一體控制。其中,窗簾并不具有什么智能性,外配的遙控器只可以實現(xiàn)窗簾的翻開和關(guān)閉的遙控功能,相對于智能來說,這些相去甚遠(yuǎn)。另外此類電動窗簾,僅僅具有上下控制模式,并無很好的人機交互功能。針對這個狀況,在以此現(xiàn)狀的窗簾的根底上增加額外的技術(shù),在此提出一個較低本錢的研究設(shè)計。利用STC12系列單片機與外圍紅外發(fā)射、接收電路,光照強度采集電路,電機驅(qū)動控制電路,以及人機交互界面所構(gòu)建的一個系統(tǒng),其自動調(diào)光功能是根據(jù)人眼的舒適度進行調(diào)節(jié)的。此系統(tǒng)不僅所低本錢,而且實用,適合大多數(shù)家庭的日常使用。1系統(tǒng)方案設(shè)計1.1設(shè)計要求要求設(shè)計一個具有自動調(diào)光功能的紅外遙控窗簾。系統(tǒng)包括主控電路、遙控電路、光控電路、鍵盤等局部。設(shè)計檢測電路,實現(xiàn)根據(jù)環(huán)境亮度控制窗簾開度;設(shè)計紅外遙控器,實現(xiàn)特殊要求下遙控器控制;設(shè)計鍵盤電路,實現(xiàn)定時控制,以到達控制房間亮度的目的。本課題內(nèi)容的具體要求及主要技術(shù)指標(biāo)如下:1、實時顯示當(dāng)前光照強度;2、支持多種控制模式:光強自動控制、紅外遙控控制、定時控制調(diào)節(jié)窗簾開度;3、設(shè)計閉環(huán)系統(tǒng),方便檢測系統(tǒng)是否正常工作;1.2系統(tǒng)框圖系統(tǒng)的構(gòu)成如圖1.1所示,系統(tǒng)所用的微控制器為STC12C5A60S2,提供各種信息的處理及采集。紅外遙控器采用通用型遙控器〔市場上大多數(shù)遙控器都為此類型,兼容性高〕,采集按鍵直接通過編碼電路,進而與38Khz的脈沖波進行調(diào)制,抗干擾性高,可在光照充足的條件下使用。光控模塊,使用光敏電阻進行采集,光敏電阻具有隨光照強度大小變化,其電阻值隨之變化的特點。利用這個,可從光強,到電阻,繼而至電壓變化,從而對相應(yīng)電壓電阻進行數(shù)模轉(zhuǎn)化為數(shù)字量,方便微控制器的處理。外加的顯示模塊,能更好的進行人機交互?!簿唧w說明請瀏覽方案設(shè)計章節(jié)〕如圖1.1。圖1.1系統(tǒng)框圖1.3系統(tǒng)方案設(shè)計單片機的選擇:從時代看,傳統(tǒng)的單片機已無法滿足科技日益開展的今天。就Atmel公司的AT89S51型單片機而言,32個準(zhǔn)雙向口的IO口,4KB的Flash大小,以及128字節(jié)的運行存儲器RAM,已無法滿足由于多功能所帶來的對IO口的占用數(shù)量,以及更大的程序的裝載空間。因此,我在這里選擇使用由宏晶公司所提供的STC12C5A60S2型單片機。該單片機為新一代增強型單片機,不僅可使用像經(jīng)典的32個IO口,必要時還可以擴展P4口;而且增加PWM、PCA的定時器,同時可對其編程直接輸出;另外新型的內(nèi)部振蕩器,雙UART模塊,以及8路A/D轉(zhuǎn)換器。這些外圍設(shè)備都集成于單片機一體,從工藝看,就已極大的縮小了本錢。值得一提的是,此單片機的flash高達60K,可滿足各種程序所需空間大小的需要,同時1280字節(jié)的RAM也為該單片機增色不少。從日常家居角度來看,該單片機已是最正確選擇。圖1.2STC12C5A60S2內(nèi)部設(shè)備顯示器的選擇:第一種選擇是數(shù)碼管,顯然顯示內(nèi)容有限,在人機交互方面,已大大不能滿足人們對界面的要求;第二種選擇是例如LCD12864集成字符生成器一體的顯示器,顯示內(nèi)容豐富,不僅可顯示字符,而且可已顯示漢字及二進制的圖像,但本錢過高,同時占用IO口數(shù)過多。假設(shè)使用串行通信方式,速度較慢;第三種選擇,使用由諾基亞公司所提供的LCD5110,該LCD由84x48的點陣組成,采用串行界面與處理器進行通信,支持多種串行通信協(xié)議〔諸如SPI、UART、I2C等〕,相比LCD23864的串行傳輸速度而言,其高達4Mbps的串行傳輸速度更是遙遙領(lǐng)先,可全速寫入顯示數(shù)據(jù),無需等待時間。同時體積更小、本錢更低,顯示內(nèi)容同樣豐富。如圖1.3為Nokia5110封裝及管腳功能圖。圖1.3Nokia5110光強采集電路方案:第一種方案,使用光敏二極管,其實光敏二極管可相當(dāng)于一個光敏電阻。但由于半導(dǎo)體的單相導(dǎo)通特性在采集方面并不適宜,因此不予考慮。第二種方案,使用光敏電阻,由于光敏電阻有隨光照強度變化而其電阻變化的特點,在輸入點處的變化是連續(xù)的,同時其光照-伏安特性可在一定范圍內(nèi)線性,因此對于光敏電阻予以使用。圖1.4光敏電阻電機的選擇:相對于驅(qū)動的選擇,我們應(yīng)先從電機的選擇開始,電機的類型可分為直流電機和步進電機,兩者都各有特點。直流電機有擁噪音小,本錢低,驅(qū)動簡單等特點;而步進電機具有可控制轉(zhuǎn)角角度功能,可以精確的控制所需轉(zhuǎn)過的角度或者圈數(shù),同時扭力較大,但本錢較高。因此選擇更貼闔家居生活的直流電機,原因是噪音小,本錢低。另外直流電機又分為有刷電機與無刷電機,從性能比擬上,無刷電機故障率低,維護簡單,動態(tài)性能優(yōu)良。而有刷電機優(yōu)點在于控制簡單。通過比擬,無刷電機雖然性能優(yōu)越,但無法與有刷電機一樣具有良好的機械性能易于控制,因此選用有刷電機作為電機的選擇。電機驅(qū)動電路的選擇:第一種方案,直接接口引入,特點簡單方便,缺點驅(qū)動電流缺乏,線圈反向電流會引入電路造成干擾或者損害,因此不予考慮。第二種方案,使用由MOSFET所搭建的H橋驅(qū)動電路,此電路屬于可逆性電路,可控制電機的正轉(zhuǎn)和反轉(zhuǎn),同時所加信號假設(shè)為脈沖信號,通過調(diào)制脈沖的占空比,可對電機進行調(diào)速。以上,應(yīng)選擇第二種方案。圖1.5H橋電路原理圖2硬件設(shè)計2.1最小系統(tǒng)設(shè)計單片機的最小系統(tǒng)可使單片機作為一個能正常工作,處理各種信息的單元。如今的最小系統(tǒng)可簡化為單片機、復(fù)位電路、振蕩電路三個局部。在上一個章節(jié)已說明單片機使用STC12C5A60S2型單片機。如圖2.1為所使用單片機的最小系統(tǒng)。圖2.1STC12C5A60S2型的最小系統(tǒng)其中,旁路的LED燈為系統(tǒng)工作的指示燈,電阻R1為限流電阻,以防浪涌電流將LED燒壞,增長其壽命。復(fù)位電路:單片機在每個機器周期的S5P2采樣一次,并且在RST引腳保持至少兩個機器周期的高電平,才能使單片機完成復(fù)位。另外,使用按鍵復(fù)位電路可方便在調(diào)試時,對復(fù)位的需要,因此使用按鍵復(fù)位形式的電路。如圖2.2為復(fù)位電路的原理圖。圖2.2按鍵復(fù)位電路原理圖當(dāng)按鍵被按下,在RESET處出現(xiàn)一個高電平。當(dāng)按鍵被放開時,電容C4會通過R5放電,繼續(xù)保持放點時間的高電平。R4作用是緩沖。電容放電時間:〔2-1〕其中,v1為充電飽和電壓〔5V〕,v2為初始電壓〔0V〕,v0為t時刻電容上的電壓〔3V〕。那么所計算時間為0.04s,符合要求。振蕩電路:由于內(nèi)置R/C時鐘發(fā)生器,外部振蕩電路只需增加起振晶體和電容即可。如圖2.3為振蕩電路原理圖。圖2.3振蕩電路原理圖其中,Y2為11.0592M晶振,C3、C5提供起振條件。2.2紅外信號接收設(shè)計電視遙控器使用的是專用集成發(fā)射芯片來實現(xiàn)遙控碼的發(fā)射,如東芝、飛利浦、NEC等,相互之間采用的遙控編碼格式互不兼容,所以各機型的遙控器通常只能針對各自的遙控對象而無法通用。為了使信號能更好的被傳輸,發(fā)送端將基帶二進制信號調(diào)制為脈沖串信號,通過紅外發(fā)射管發(fā)射。常用的有通過脈沖寬度來實現(xiàn)信號調(diào)制的脈寬調(diào)制〔PWM〕和通過脈沖串之間的時間間隔來實現(xiàn)信號調(diào)制的脈時調(diào)制〔PPM〕兩種方式。不同的遙控器有著不同的編碼標(biāo)準(zhǔn),在這里我選擇的標(biāo)準(zhǔn)是主流平臺上的一種——NEC標(biāo)準(zhǔn)來進行編碼,其中使用的調(diào)制方式為PPM方式。另外調(diào)制更進一步增強抗干擾能力,可以增加遙控距離。〔詳細(xì)編碼形式在軟件設(shè)計章節(jié)說明〕在發(fā)射處,選擇常規(guī)的紅外發(fā)光二極管,為進一步增強發(fā)射能力,使用5mm的封裝。同時,在接受處使用的是VS1838B型集成紅外接收器。之所以選擇這個接收器,是由于它擁有以下特性:圖2.5為紅外接收電路原理圖,其中VS1838B的OUT的輸出腳處連接至單片機的外部中斷接口INT1處。圖2.4紅外接收器連接原理圖2.3顯示模塊設(shè)計由于所選用LCD5110連線界面少,電路簡單。所以無需任何外加電路,假設(shè)是需要提高數(shù)據(jù)傳輸?shù)恼_率可在每個IO口處添加上拉電阻。在這里不加上拉電阻的原因是考慮到居室不是一個惡劣的環(huán)境,因此無需上拉電阻可能有很高的數(shù)據(jù)正確性。如圖2.6為顯示模塊原理圖。圖2.5顯示模塊原理圖2.4光采集模塊設(shè)計此模塊由光敏電阻、A/D轉(zhuǎn)換器和限流電阻組成。由于A/D轉(zhuǎn)換器已集成于微控制器內(nèi),因此無需額外增加。光敏電阻在選用時,應(yīng)考慮其光譜峰值以及電阻值在光照與黑暗情況下的差值。根據(jù)表2.1可知,由于光譜峰值相差不大,從而在此無需過多考慮。在亮電阻與暗電阻差值比擬中,我們找到PGM5506及PGM5516兩種型號的光敏電阻特性較為適合,原因是所使用的分壓限流電阻為100KΩ,不宜使用亮電阻較大的光敏電阻。同時由于PGM5516的亮暗電阻差值較大,因此選擇PGM5516型光敏電阻。表2.15mmPGM5系列光敏電阻特性表型號最大電壓〔VDC〕最大功率〔mW〕環(huán)境溫度〔℃〕光譜峰值〔nm〕亮電阻〔10lx〕〔k?〕暗電阻〔M?〕PGM550610090-30~+705402~60.15PGM551610090-30~+705405~100.2PGM5526150100-30~+705408~201.0PGM5537150100-30~+7054016~502.0PGM5539150100-30~+7054030~905.0PGM5549150100-30~+7054045~14010.0PGM5616D150100-30~+705605~101.0PGM5626D150100-30~+705608~202.0PGM5637D150100-30~+7056016~505.0如圖2.7所示硬件電路原理圖。至ADC1至ADC2至ADC1至ADC2圖2.6光采集電路原理圖利用兩路光強采集,可更加貼近的測量該時刻的光強,可減小由于干擾所帶來的誤差。由分壓的效果可見,當(dāng)光敏電阻處于黑暗時,阻值為200K,有〔2-2〕此時UO=2.5V。當(dāng)光敏電阻處于光照情況下,此時UO=0.23~0.045V。相差較大,能更容易的從中處理光強→電阻→電壓→光強的關(guān)系。2.5電機驅(qū)動模塊設(shè)計該模塊核心芯片的選擇在于芯片的輸出驅(qū)動電流、輸入電壓范圍、功耗等。選用L298N型專用集成驅(qū)動芯片作為電機的驅(qū)動芯片正是基于以上考慮。L298N是ST公司生產(chǎn)的一種高電壓、大電流電機驅(qū)動芯片。該芯片采用15腳封裝。主要特點是:工作電壓高,供電電壓范圍寬,最高工作電壓可達46V,無論是選擇由鋰電池或者簡易的供電器都同樣適用;更重要的是,內(nèi)含兩個H橋的高電壓大電流全橋式驅(qū)動器,可以用來控制直流電機、步進電機、繼電器線圈等感性負(fù)載,同時輸出電流大,瞬間電流可達3A,持續(xù)工作電流為2A,額定功率為25W可滿足一般電機的驅(qū)動要求;另外,該芯片采用標(biāo)準(zhǔn)邏輯電平信號〔即TTL電平〕控制,具有兩個使能控制端,在不受輸入信號影響的情況下允許或禁止器件工作有一個邏輯電源輸入端,使內(nèi)部邏輯電路局部在低電壓下工作,因此該芯片可有效降低由于閑置MOSFET所帶來的多余的功耗。使用該芯片可以控制一臺兩相步進電機或四相步進電機,更可以控制2臺直流電機。如圖2.8所示電機驅(qū)動硬件電路原理圖。圖2.7電機驅(qū)動電路原理圖其中,運用8個二極管為每一路輸出提供續(xù)流效果,以防電機線圈組的回流損害芯片。兩個電容緩沖回流確保電機的正常工作。2.6窗簾結(jié)構(gòu)設(shè)計窗簾由簾體、支架、配件三大局部組成。簾體是窗簾的遮掩局部,為窗簾的主體,一般是各種類型的布制物料。支架是窗簾的支撐及活動的局部,也是窗簾的重要局部,一般為左右互拉式的導(dǎo)軌。配件是簾體與支架間的連接、固定局部??紤]到方案所表達的低本錢,設(shè)計結(jié)構(gòu)支架如圖2.9所示,此結(jié)構(gòu)只用一個電機便可實現(xiàn)窗簾的開閉,同時,可以實現(xiàn)兩種控制的窗簾的開閉方式:上下升降的卷簾式,左右卷動開合。卷簾式結(jié)構(gòu)簡單,對空間的占用小,類似百葉窗懸掛方法,折疊升高,可根據(jù)光線的強弱而上下升降。但考慮到人類的生活習(xí)慣及習(xí)性,在這我選擇類似左右卷動形式,常用于有窗盒的窗戶,可配簾眉,不顯露軌道。所以該類型結(jié)構(gòu)在美觀方面增色不少。圖2.8窗簾結(jié)構(gòu)示意圖由結(jié)構(gòu)圖可看出,在結(jié)構(gòu)上與升降簾相差無幾,一樣的簡單而方便。3軟件設(shè)計3.1主程序設(shè)計軟件是系統(tǒng)的靈魂。一個系統(tǒng)如果僅有硬件,那么就象是一個植物人,不能實現(xiàn)系統(tǒng)的智能。那么對軟件的編寫就是告訴系統(tǒng)該做什么,怎么做。C語言不僅特點全,而運用上特別之靈活多變,與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。而這正是我所選擇C語言的原因。但C語言不是真正的機器語言,系統(tǒng)不可能直接執(zhí)行C語言,因此我們需要一個編譯器,而編程環(huán)境是集編譯器,調(diào)試,仿真器等于一體的開發(fā)工具。在眾多開發(fā)編程環(huán)境中,keil4是一個不錯的選擇。Keil4是美國KeilSoftware公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境〔uVision〕將這些局部組合在一起。運行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。假設(shè)使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強大的軟件仿真調(diào)試工具也會令研究事半功倍。主程序所現(xiàn)實的是對所需硬件功能初始化以及對各子程序的調(diào)用。在這里,程序?qū)缑婕肮δ艹跏蓟螅ㄟ^等待紅外信號的中斷,回應(yīng)中斷,進入中斷效勞程序中進行紅外信號的譯碼處理,中斷返回。對獲得的譯碼與各功能碼進行比對,匹配相同將進入相應(yīng)的子程序。如圖3.1所示主程序流程圖。圖3.1主程序流程圖程序在系統(tǒng)初始化后,進行采集光敏電阻所提供的電壓并等待紅外信號的接收中斷。在接收到紅外信號時,進入中斷效勞程序進行解碼,解碼完成后返回主程序。其中,解析編碼為40H是翻開窗簾指令;解析編碼為44H是關(guān)閉窗簾指令;解析編碼為09H是自動調(diào)節(jié)窗簾指令;解析編碼為46H是定時管理窗簾指令;如假設(shè)解析編碼與上訴不符,繼續(xù)等待。3.2紅外信號接收子程序設(shè)計如假設(shè)要編寫接收的子程序,首先要明白發(fā)射端的編碼設(shè)計方式。根據(jù)NEC標(biāo)準(zhǔn),所使用紅外信號的調(diào)制方式為PPM〔脈沖時間調(diào)制方式〕。NEC標(biāo)準(zhǔn):遙控載波的頻率為38KHz(占空比為1:3);當(dāng)某個按鍵按下時,系統(tǒng)首先發(fā)射一個完整的全碼,然后經(jīng)延時再發(fā)射一系列簡碼,直到按鍵松開即停止發(fā)射。簡碼重復(fù)延時108ms,每兩個引導(dǎo)脈沖上升沿之間的間隔都是108ms。其中,引導(dǎo)碼高電平9ms,低電平4.5ms;地址碼16位,數(shù)據(jù)碼16位,共32位;數(shù)據(jù)“0”用“高電平0.56ms+低電平0.565ms”表示,數(shù)據(jù)“1”用“高電平0.56ms+低電平1.6875ms”表示,一個簡碼=引導(dǎo)碼+地址碼位0的反碼+結(jié)束位(0.5625ms)高電平。各局部碼的作用:引導(dǎo)碼用來通知接收器其后為遙控數(shù)據(jù)。地址碼用來區(qū)分是哪一機型的數(shù)據(jù),接收端依此來判斷后續(xù)的數(shù)據(jù)是否為須執(zhí)行的指令。數(shù)據(jù)碼用來區(qū)分是哪一個鍵被按下,接收端根據(jù)數(shù)據(jù)碼做出應(yīng)該執(zhí)行什么動作的判斷。簡碼是在持續(xù)按鍵時發(fā)送的碼。它告知接收端,某鍵是在被連續(xù)地按著。遙控數(shù)據(jù)傳輸系統(tǒng)的關(guān)鍵是數(shù)據(jù)傳輸?shù)目煽啃浴榱颂岣呔幋a的可靠性,NEC標(biāo)準(zhǔn)規(guī)定地址碼、數(shù)據(jù)碼后分別接著傳送一個同樣的碼或者反碼,供誤碼校驗用。1、載波波形:信號被調(diào)制在37.91KHZ,占空比是1/3。圖3.2載波波形2、數(shù)據(jù)格式:數(shù)據(jù)格式包括引導(dǎo)碼、用戶碼、數(shù)據(jù)碼和數(shù)據(jù)反碼,編碼總占32位。數(shù)據(jù)反碼是數(shù)據(jù)碼反相后的編碼,編碼時可用于對數(shù)據(jù)的糾錯。注意:第二個用戶碼也可以在遙控應(yīng)用電路中被設(shè)置成第一個用戶碼的反碼。圖3.3編碼格式如圖3.5所示各段代碼所占用的時間。圖3.4編碼對應(yīng)時間位定義:用戶碼和數(shù)據(jù)碼中的每一個位可以是位“1”,也可以是位“0”。區(qū)分0、1是利用脈沖的時間間隔來區(qū)分,這種編碼方式稱為脈沖位置調(diào)制方式〔ppm〕。圖3.5“1”和“0”所對應(yīng)的時間圖3.6紅外信號接收程序流程圖如上圖3.6所示,使用中斷方式進行接收紅外信號。在收到中斷信號時,進入中斷效勞程序。首先關(guān)閉外部中斷1的中斷,以防不會因為后來的下降沿對程序的干擾,進而判斷信號送來的引導(dǎo)時序,當(dāng)引導(dǎo)時序正確后對所發(fā)過來的32位“地址碼+數(shù)據(jù)碼”進行解析。當(dāng)解析完成后,對16位的數(shù)據(jù)碼分為上下8位,假設(shè)互為反碼,說明數(shù)據(jù)正確并保存高位的正碼數(shù)據(jù),否那么視為數(shù)據(jù)傳輸錯誤返回主函數(shù)。3.3光采集A/D子程序設(shè)計光采集程序就是啟動A/D轉(zhuǎn)換器對電路電壓進行采集的程序,然后將轉(zhuǎn)換的值進行濾波,求平均值以減少干擾和誤差,最后處理為能顯示的電壓值或者光強值。首先,需對所使用模擬量輸入接口初始化,設(shè)置A/D轉(zhuǎn)換器的控制存放器,設(shè)置為使能上電,參考電壓大小,選用輸入通道多少,以及完成方式〔中斷方式或者查詢方式〕,最后將轉(zhuǎn)換值儲存并處理。如圖3.7A/D子程序流程圖。圖3.7A/D子程序流程圖在初始化中對A/D轉(zhuǎn)換器的控制存放器進行設(shè)置A/D的上電,采樣速度,及選擇的采樣通道。假設(shè)需要進行采樣時,啟動A/D轉(zhuǎn)換。假設(shè)轉(zhuǎn)換結(jié)束,那么可以取ADC_RES存放器里的轉(zhuǎn)換結(jié)果數(shù)據(jù)保存。這里需要進行數(shù)據(jù)相加,是因為在此子程序中運用了平均值濾波,通過二十組數(shù)據(jù)求平均值,可有效地減少誤差及數(shù)據(jù)的平穩(wěn)性。最后,保存該平均值并返回。3.4電機驅(qū)動子程序設(shè)計電機的驅(qū)動分為正轉(zhuǎn)和反轉(zhuǎn),這個電機驅(qū)動子程序就是用來控制電機的正反轉(zhuǎn)的。通過設(shè)置I/O口的電平不同,可到達不同的控制,工作狀態(tài)可參考下表。表3.1電機狀態(tài)控制表控制狀態(tài)控制端IN1控制端IN2控制端IN3控制端IN4使能段ENA正轉(zhuǎn)高低//高反轉(zhuǎn)低高//高停止低低//高停止////低如圖3.8所示顯示子程序流程圖。圖3.8電機驅(qū)動子程流程圖當(dāng)主程序中對發(fā)送來的紅外信號判定為翻開窗簾或關(guān)閉窗簾的命令代碼時,主程序那么跳轉(zhuǎn)到該子程序中。左圖為是電機調(diào)整為正轉(zhuǎn)狀態(tài)的流程圖,通過根據(jù)上表3.1來相應(yīng)管腳的輸出電平調(diào)整;同理,右圖為電機調(diào)整為反轉(zhuǎn)狀態(tài)的流程圖。3.5顯示子程序設(shè)計LCD5110控制命令字的傳輸由串行通信完成。因此該子程序的設(shè)計主要圍繞串行口的時序設(shè)計。由于LCD5110的速度快,所以無需對延時的控制。圖3.9LCD5110時序圖如圖3.10所示子程序流程。圖3.10顯示子程序流程圖LCD5110與單片機之間為串行通信,通過接口模擬的UART可到達一位一位的傳輸。子函數(shù)中先判斷所寫的數(shù)據(jù)是命令還是顯示數(shù)據(jù),然后使相應(yīng)的D/C口為“0”或者“1”,再進行數(shù)據(jù)的傳輸。傳輸時,先寫一位數(shù)據(jù),然后CLK端拉高為高電平,此時可形成一個上升沿,從而觸發(fā)數(shù)據(jù)寫入LCD中。當(dāng)8位數(shù)據(jù)都寫入時,返回主程序。3.6定時模式子程序設(shè)計定時模式的設(shè)計有助于我們?nèi)祟惛奖惆才派钭飨?。定時模式可實現(xiàn)在這之后設(shè)定時間的窗簾的開閉。通過檢測紅外控制信號,進行該模式。系統(tǒng)可根據(jù)控制信號的變化來加減所需的定時時間。如圖3.11為定時模式子程序流程圖。圖3.11定時模式子程序流程圖在接收到進入該模式的紅外信號后,設(shè)定所需要的定時時間,在定時時間設(shè)定好之后,可設(shè)定定時結(jié)束時需要窗簾進行翻開或關(guān)閉。在確定按鍵按下后,會去除屏幕上顯示的設(shè)定選項并出現(xiàn)已設(shè)定定時模式的標(biāo)志。同時將TR0置“1”啟動定時器0進行定時,當(dāng)定時結(jié)束時,電機根據(jù)設(shè)定翻開或關(guān)閉窗簾。4系統(tǒng)調(diào)試在系統(tǒng)調(diào)試之前,需對各電路進行電氣連接性檢查,檢查電路的通斷,使用檢查儀器為數(shù)字萬用表BESTDT-9205M型。通過測試,電路連接正常。這電路的調(diào)試提供很大的保證,當(dāng)電路運行不正常時,有首先排除電路斷路、短路的問題。系統(tǒng)的各個電路調(diào)試主要包括單片機最小系統(tǒng)的調(diào)試,LCD5110顯示調(diào)試,紅外信號發(fā)射接收調(diào)試,A/D轉(zhuǎn)換的調(diào)試,電機驅(qū)動電路的調(diào)試等。該章節(jié)首先對各個電路在調(diào)試過程中出現(xiàn)的問題及解決方法進行說明,進而對整個系統(tǒng)的運行進行調(diào)整。4.1單片機最小系統(tǒng)的調(diào)試單片機最小系統(tǒng)包含時鐘振蕩電路、復(fù)位電路等。最小系統(tǒng)的運行正常尤為關(guān)鍵,直接決定系統(tǒng)的功能能否實現(xiàn)。在經(jīng)過上面電氣連接檢查后,在不插上微控制器芯片的情況下,上電測試。通電后,背部貼片的藍光LED光亮正常,通電一段時間后,無異常產(chǎn)生,可接插單片機芯片。芯片接上后,接上電,藍光LED放光正常,用數(shù)字萬用表測試STC12C5A60S2單片機的40管腳〔VCC〕和地之間的電壓,電壓顯示4.88V,單片機供電正常。再測試其他的管腳,電壓都在允許值內(nèi),說明單片機工作正常。調(diào)試程序?qū)懭雴纹瑱C最小系統(tǒng)的方法:用keil4編寫一段小程序〔如控制發(fā)光二極管的亮滅〕,在小程序編譯完成生成.HEX文件后,使用下載器通過USB下載線將程序燒入單片機內(nèi)。第一次燒入程序時,注意要先把下載器的驅(qū)動程序安裝進電腦方可實現(xiàn)燒錄程序的功能。完成后,USB在電腦的設(shè)備管理器一欄中顯示為COM4,因此在翻開電腦的燒錄應(yīng)用程序時,應(yīng)選擇的串口號那么為COM4。PCB上帶有自鎖開關(guān),很方便下載程序時所需的上下電要求。單片機在下載完程序后,上電后LED亮滅正常。單片機可完整的工作,最小系統(tǒng)調(diào)試結(jié)束。4.2LCD5110顯示的調(diào)試上述中,已說明的LCD5110的程序設(shè)計。根據(jù)相關(guān)命令字編寫一段簡單的顯示軟件并將其燒入單片機。下載完后,發(fā)現(xiàn)液晶屏顯示漆黑的一片,用強光照射后,看到液晶屏還是有內(nèi)容顯示出來的。后來找到原因是背光沒亮,有一定壓降。認(rèn)真檢查軟件程序后發(fā)現(xiàn),在控制背光一端管腳沒有置“0”,所以背光沒亮。同時短接了LCDGND端的下拉電阻。重新上電,顯示正常。最后,再修改顯示程序,將數(shù)據(jù)布滿在液晶屏上顯示,以檢查液晶屏的完整性。4.3紅外信號發(fā)射接收的調(diào)試紅外遙控的功能在整個系統(tǒng)中是非常重要的,首先檢查信號發(fā)射是否正常。由于紅外線在我們?nèi)祟愐暰W(wǎng)膜感光范圍之外,所以我們是看不見紅外二極管是否發(fā)光正常。在瀏覽資料時發(fā)現(xiàn),COMS的傳感器對紅外線具有敏感性,因此我們可用其作為一個媒介。的攝像頭就是該類器件,所以可以用攝像功能來測試紅外二極管的工作狀態(tài)。在遙控器端按下一個鍵,在端可看見紅外二極管在發(fā)淡紅光閃爍,說明紅外二極管發(fā)光正常。第二測試接收編碼,可在萬用板上用接收頭〔VS1838b〕焊接一個簡單的接受電路。接收頭輸出端接數(shù)字示波器顯示。測試發(fā)現(xiàn),編碼正常。最后,測試系統(tǒng)的紅外信號發(fā)射接收并在LCD上顯示相應(yīng)的編碼。在測試時,發(fā)現(xiàn)意想的中顯示編碼沒有出現(xiàn)。這讓我想到電路可能出了問題,將一個LED陽極接電源“+”,陰極接單片機INT1管腳。當(dāng)在遙控器端按下按鍵時,發(fā)現(xiàn)LED能亮滅,這排除了硬件問題的可能性。剩下的就是軟件程序問題了,在檢查中斷效勞程序時,發(fā)現(xiàn)原來是我的延時沒有處理好,STC12C5A60S2這個單片機處理指令速度過快,原來的延時過長,導(dǎo)致下一個下降沿沒有到來,程序就認(rèn)為錯誤編碼自動退出解碼局部。因此,要重新調(diào)整延時函數(shù)。修改程序,重新下載程序后,開機發(fā)現(xiàn)顯示屏能顯示編碼,而且編碼正確,調(diào)試結(jié)束。4.4A/D轉(zhuǎn)換的調(diào)試在A/D轉(zhuǎn)換的調(diào)試中,根據(jù)STC12C5A60S2的存放器設(shè)置,設(shè)定好存放器相應(yīng)控制的功能,進而編寫一段測試程序,其功能是將光敏電阻變化所變化的模擬量通過A/D轉(zhuǎn)換為數(shù)字量,并將其數(shù)據(jù)送至串口在電腦上顯示。將程序下載好后,觀察液晶屏所顯示的數(shù)據(jù)是否正確。其中,約定值通過數(shù)字萬用表測量該通道的電壓,經(jīng)換算后所的數(shù)據(jù)為與其相匹配。串口調(diào)試中,發(fā)現(xiàn)數(shù)字一直顯示為“00”,那么首先檢查程序的正確性,發(fā)現(xiàn)選通的輸入通道沒有設(shè)置正確,修改并重新下載后,上電調(diào)試,數(shù)據(jù)發(fā)生變化而且與約定值的誤差允許范圍內(nèi)。另外,為進一步檢測系統(tǒng)功能性,將程序修改讓轉(zhuǎn)換數(shù)據(jù)能在液晶屏上顯示。重新下載后顯示正常,數(shù)據(jù)在誤差范圍內(nèi)。因此,單片機可控制內(nèi)部A/D進行模擬量至數(shù)字量的轉(zhuǎn)換。4.5電機驅(qū)動的調(diào)試電機驅(qū)動電路的調(diào)試比擬簡單,對IN1和IN2分別給予一個高電平與一個低電平,給予ENA一個高電平,電機的兩端分別接OUT1和OUT2。同樣地,對于反轉(zhuǎn)的調(diào)試,對IN1和IN2分別給予一個低電平與一個高電平,給予ENA一個高電平。同理地,電機驅(qū)動電路第二路輸出調(diào)試與上述一樣。第二,在輸入引腳處可用數(shù)字萬用表做輸出電流的測試。首先設(shè)置驅(qū)動電路的輸出狀態(tài)〔比方IN1設(shè)置“0”,IN2設(shè)置“1”〕,然后啟動輸出〔ENA設(shè)置“1”〕,將萬用表檔位轉(zhuǎn)動為測量電流檔,用紅色表筆接觸OUT1,黑色表筆接觸OUT2。最后讀數(shù),完成測試。結(jié)果反映的是,電機驅(qū)動電路工作正常。4.6系統(tǒng)整機的調(diào)試通過以上各個模塊電路的調(diào)試后,最后將各個電路整合于一個完整的系統(tǒng),對整個系統(tǒng)功能進行調(diào)試。在系統(tǒng)整機調(diào)試中,實現(xiàn)了紅外遙控窗簾的開閉,在設(shè)定值下的自動調(diào)整功能以及定時控制窗簾的開閉。系統(tǒng)根本實現(xiàn)了多功能智能窗簾控制器的目的。4.7數(shù)據(jù)測試與分析對A/D采集電壓的誤差分析,將光敏電阻更換為固定電阻2.3K歐,方便測試,首先測量供電電壓〔參考電壓〕為5.06V。電壓數(shù)據(jù)記錄表如表4.1所示。表4.1A/D采集電壓數(shù)據(jù)次數(shù)采集數(shù)據(jù)〔十六進制〕換算電壓(V)實測電壓(V)1FA4.945.042FA4.944.043FA4.945.044FB4.965.045FA4.945.046FA4.945.047FA4.945.048FA4.945.049FA4.945.0410FA4.945.04由上表可得該測量為等精度測量。采集的電壓平均值為:4.942V,那么相對誤差為:誤差分析:由于A/D存在最低的量化誤差而,量化誤差=參考電壓/256≈0.0198V。所以該誤差在范圍允許內(nèi)。同時參考電壓的些許變動也會影響電壓的采集,如第四組數(shù)據(jù)。5總結(jié)與展望在整個設(shè)計、調(diào)試與安裝的過程中根本實現(xiàn)了所要求的功能與任務(wù),可通過紅外遙控器來控制整個系統(tǒng)的運作。選中自動調(diào)光模式,可以通過控制窗簾的開度實現(xiàn)自動調(diào)光效果;選中定時模式,可通過設(shè)定所需的時間和開閉,來控制到預(yù)定時間的窗簾狀態(tài)。雖然如此,但該系統(tǒng)還存在一些缺乏,比方定時時間不夠靈活,不夠人性化;另外,光強的采集與算法處理比擬簡單,不能做到更大的范圍和精確度。這些都是系統(tǒng)的缺乏,希望在以后的研究設(shè)計中考慮得更加充分和細(xì)致。畢業(yè)設(shè)計已經(jīng)接近尾聲了,經(jīng)過幾個月的努力與汗水終于完成了整個畢業(yè)設(shè)計所要求的任務(wù)。在這些日子里,自資料的查閱、揣摩思考到設(shè)計方案,從原理圖設(shè)計到PCB的制作,直至整個系統(tǒng)的調(diào)試,在這整個過程中,我不斷成長,不斷磨練,從中發(fā)現(xiàn)當(dāng)出現(xiàn)問題時,我的反響與應(yīng)對是很重要的——也就是分析問題,解決問題能力。這才是我在大學(xué)所真正需要鍛煉的能力。作為一個即將步入社會的新人,面對著社會這么一個復(fù)雜的大環(huán)境,隨時可以發(fā)生任何事情與問題,對此分析問題是我們能夠做出應(yīng)對的根本,而解決問題的方法有很多種,但從中能選擇適合我們,適合當(dāng)時條件的方法就是我們解決問題能力的表達,但這些的前提是我們的知識面夠豐富。在畢業(yè)設(shè)計中,我學(xué)會使用我從沒用過的STC系列單片機,并掌握了對其增強局部A/D的使用。而且了解了測量光強傳感器的選取方法和使用方法,進一步熟練已掌握的C語言編程方法。在實踐中,不僅提升的動手能力積累了大量實踐經(jīng)驗,而且穩(wěn)固了已學(xué)習(xí)的知識,使得自己在電路設(shè)計方面增強了信心。最后,這次畢業(yè)設(shè)計讓我看到自己的很多缺乏之處,比方粗心大意。今后我會在工作學(xué)習(xí)中不斷豐富自己,提升自己。謝辭參考文獻[1]百度.窗簾[EB/OL]..2014-06-11.[2]李小魁,韓大偉.智能遙控窗簾系統(tǒng)設(shè)計與實現(xiàn)[J].河南:河南財政稅務(wù)高等??茖W(xué)校學(xué)報,2013,27〔4〕:92~94.[3]趙健等.基于單片機的光敏窗簾及聲控?zé)粝到y(tǒng)的設(shè)計[J].泰山學(xué)院學(xué)報.2013,35〔3〕:101~103.[4]瞿貴榮.電動窗簾紅外遙控電路[J].家庭電子.2005〔2〕:2~3.[5]郭成林.智能遙控窗簾系統(tǒng)設(shè)計[J].山西電子技術(shù).2006〔6〕:32~33.[6]姜靈芝,余?。瓹語言課程設(shè)計案例精編[M].北京:清華大學(xué)出版社,2008.[7]閻石.?dāng)?shù)字電子技術(shù)根底[M].北京:高等教育出版社,2006:524-548.[8]康華光.電子技術(shù)根底〔模擬局部〕[M].北京:高等教育出版社,2006:54-97.[9]李瀚蓀.電路分析根底〔第四版〕[M].北京:高等教育出版社,2006.[10]黃冰,覃偉年,黃知超.微機原理及應(yīng)用[M].重慶:重慶大學(xué)出版社,2003:175-320.[11]李玉惠,晉帆,向鳳紅.自動控制原理[M].北京:清華大學(xué)出版社,2008:4-40.[12]蘇長贊.紅外線與超聲波遙控[M].北京:人民郵電出版社,1993.[13]科學(xué)出版社編輯部.英漢激光與紅外技術(shù)詞匯[M].北京:科學(xué)出版社,1978.[14]陳永甫.紅外探測與控制電路[M].北京:人民郵電出版社,2004.[15]范林霄等.基于單片機的自動窗簾裝置的設(shè)計[J].中國科技信息.2013〔21〕:132~133.[16]ReetamMondal,ArumayMukhopadhyay,DebdootBasak,etal.EmbeddedSystemofDCMotorClosedLoopSpeedControlbasedon8051Microcontroller[J].ProcediaTechnology,2013,Volume10,Pages840–848.附錄圖為系統(tǒng)原理圖圖為系統(tǒng)PCB圖圖為L298N電機驅(qū)動PCB圖以下為所寫軟件程序源代碼。#include<STC12C5A60S2.h>#include<intrins.h>#include<stdio.h>#include<ADconver.h>//#include"DS1302.h"#defineucharunsignedchar#defineuintunsignedintsbitzheng=P2^1;sbitfan=P2^0;sbitENA=P2^2;sbitIRIN=P3^3;//紅外接收器數(shù)據(jù)線sbitsce=P0^1;//片選sbitres=P0^0;//復(fù)位,0復(fù)位sbitdc=P0^2;//1寫數(shù)據(jù),0寫指令sbitsdin=P0^3;//數(shù)據(jù)sbitsclk=P0^4;//時鐘voidLCD_clear(void);voidDisplay_num(unsignedcharx,unsignedchary,chars);voidDisplay_char(unsignedcharx,unsignedchary,char*s);uchardataIRCOM[7];//定義一個4字節(jié)的數(shù)組ucharCodeTemp;//編碼字節(jié)緩存變量voiddelay14(unsignedcharx);voiddelay1(intms);uintsettime=0; //定時參數(shù)ucharch=5;unsignedintntemp=0;/****************************5110字模************************** 用于調(diào)用****************************************************************/unsignedcharcodeasc2tab[][6]={{0x00,0x00,0x00,0x00,0x00,0x00},//sp 空格{0x00,0x00,0x00,0x2f,0x00,0x00},//!{0x00,0x00,0x07,0x00,0x07,0x00},//"{0x00,0x14,0x7f,0x14,0x7f,0x14},//#{0x00,0x24,0x2a,0x7f,0x2a,0x12},//$ {0x00,0x23,0x13,0x08,0x64,0x62},//% {0x00,0x36,0x49,0x55,0x22,0x50},//& {0x00,0x00,0x05,0x03,0x00,0x00},//' {0x00,0x00,0x1c,0x22,0x41,0x00},//( {0x00,0x00,0x41,0x22,0x1c,0x00},//) {0x00,0x14,0x08,0x3E,0x08,0x14},//* {0x00,0x08,0x08,0x3E,0x08,0x08},//+ {0x00,0x00,0x00,0xA0,0x60,0x00},//, {0x00,0x08,0x08,0x08,0x08,0x08},//- {0x00,0x00,0x60,0x60,0x00,0x00},//. {0x00,0x20,0x10,0x08,0x04,0x02},/// {0x00,0x3E,0x51,0x49,0x45,0x3E},//0 {0x00,0x00,0x42,0x7F,0x40,0x00},//1 {0x00,0x42,0x61,0x51,0x49,0x46},//2 {0x00,0x21,0x41,0x45,0x4B,0x31},//3 {0x00,0x18,0x14,0x12,0x7F,0x10},//4 {0x00,0x27,0x45,0x45,0x45,0x39},//5 {0x00,0x3C,0x4A,0x49,0x49,0x30},//6 {0x00,0x01,0x71,0x09,0x05,0x03},//7 {0x00,0x36,0x49,0x49,0x49,0x36},//8 {0x00,0x06,0x49,0x49,0x29,0x1E},//9 {0x00,0x00,0x36,0x36,0x00,0x00},//: {0x00,0x00,0x56,0x36,0x00,0x00},// {0x00,0x08,0x14,0x22,0x41,0x00},//< {0x00,0x14,0x14,0x14,0x14,0x14},//= {0x00,0x00,0x41,0x22,0x14,0x08},//> {0x00,0x02,0x01,0x51,0x09,0x06},// {0x00,0x32,0x49,0x59,0x51,0x3E},//@ {0x00,0x7C,0x12,0x11,0x12,0x7C},//A {0x00,0x7F,0x49,0x49,0x49,0x36},//B {0x00,0x3E,0x41,0x41,0x41,0x22},//C {0x00,0x7F,0x41,0x41,0x22,0x1C},//D {0x00,0x7F,0x49,0x49,0x49,0x41},//E {0x00,0x7F,0x09,0x09,0x09,0x01},//F {0x00,0x3E,0x41,0x49,0x49,0x7A},//G {0x00,0x7F,0x08,0x08,0x08,0x7F},//H {0x00,0x00,0x41,0x7F,0x41,0x00},//I {0x00,0x20,0x40,0x41,0x3F,0x01},//J {0x00,0x7F,0x08,0x14,0x22,0x41},//K {0x00,0x7F,0x40,0x40,0x40,0x40},//L {0x00,0x7F,0x02,0x0C,0x02,0x7F},//M {0x00,0x7F,0x04,0x08,0x10,0x7F},//N {0x00,0x31,0x41,0x41,0x41,0x31},//O {0x00,0x3E,0x41,0x41,0x41,0x06},//P {0x00,0x3E,0x41,0x51,0x21,0x5E},//Q {0x00,0x7F,0x09,0x19,0x29,0x46},//R {0x00,0x46,0x49,0x49,0x49,0x31},//S {0x00,0x01,0x01,0x7F,0x01,0x01},//T {0x00,0x3F,0x40,0x40,0x40,0x3F},//U {0x00,0x1F,0x20,0x40,0x20,0x1F},//V {0x00,0x3F,0x40,0x38,0x40,0x3F},//W {0x00,0x63,0x14,0x08,0x14,0x63},//X {0x00,0x07,0x08,0x70,0x08,0x07},//Y {0x00,0x61,0x51,0x49,0x45,0x43},//Z {0x00,0x00,0x7F,0x41,0x41,0x00},//[ {0x00,0x55,0x2A,0x55,0x2A,0x55},//55 {0x00,0x00,0x41,0x41,0x7F,0x00},//] {0x00,0x04,0x02,0x01,0x02,0x04},//^ {0x00,0x40,0x40,0x40,0x40,0x40},//_ {0x00,0x00,0x01,0x02,0x04,0x00},//' {0x00,0x20,0x54,0x54,0x54,0x78},//a {0x00,0x7F,0x48,0x44,0x44,0x38},//b {0x00,0x38,0x44,0x44,0x44,0x20},//c {0x00,0x38,0x44,0x44,0x48,0x7F},//d {0x00,0x38,0x54,0x54,0x54,0x18},//e {0x00,0x08,0x7E,0x09,0x01,0x02},//f {0x00,0x18,0xA4,0xA4,0xA4,0x7C},//g {0x00,0x7F,0x08,0x04,0x04,0x78},//h {0x00,0x00,0x44,0x7D,0x40,0x00},//i {0x00,0x40,0x80,0x84,0x7D,0x00},//j {0x00,0x7F,0x10,0x28,0x44,0x00},//k {0x00,0x00,0x41,0x7F,0x40,0x00},//l {0x00,0x7C,0x04,0x18,0x04,0x78},//m {0x00,0x7C,0x08,0x04,0x04,0x78},//n {0x00,0x38,0x44,0x44,0x44,0x38},//o {0x00,0xFC,0x24,0x24,0x24,0x18},//p {0x00,0x18,0x24,0x24,0x18,0xFC},//q {0x00,0x7C,0x08,0x04,0x04,0x08},//r {0x00,0x48,0x54,0x54,0x54,0x20},//s {0x00,0x04,0x3F,0x44,0x40,0x20},//t {0x00,0x3C,0x40,0x40,0x20,0x7C},//u {0x00,0x1C,0x20,0x40,0x20,0x1C},//v {0x00,0x3C,0x40,0x30,0x40,0x3C},//w {0x00,0x44,0x28,0x10,0x28,0x44},//x {0x00,0x1C,0xA0,0xA0,0xA0,0x7C},//y {0x00,0x44,0x64,0x54,0x4C,0x44},//z {0x14,0x14,0x14,0x14,0x14,0x14} }; /*LCD_write_byte:使用SPI接口寫數(shù)據(jù)到LCD輸入?yún)?shù):dt:寫入的數(shù)據(jù);command:寫數(shù)據(jù)/命令選擇;編寫日期:20080918*/voidLCD_write_byte(uchardt,ucharcommand){ uchari; sce=0; dc=command; for(i=0;i<8;i++) { if(dt&0x80) sdin=1; else sdin=0; dt=dt<<1; sclk=0; sclk=1; } dc=1; sce=1; sdin=1;}/*LCD_init:5110LCD初始化編寫日期:20080918*/voidLCD_init(void){ res=0; delay(2); res=1; sce=0; delay(2); sce =1;LCD_write_byte(0x21,0);//使用擴展命令設(shè)置LCD模式LCD_write_byte(0xc8,0);LCD_write_byte(0xc8,0);//設(shè)置液晶偏置電壓LCD_write_byte(0x06,0);//溫度校正LCD_write_byte(0x13,0);//1:48LCD_write_byte(0x20,0);//使用根本命令,V=0,水平尋址LCD_clear();//清屏LCD_clear();LCD_write_byte(0x0c,0);//設(shè)定顯示模式,正常顯示sce=0;//關(guān)閉LCD}/*LCD_set_XY:設(shè)置LCD坐標(biāo)函數(shù)輸入?yún)?shù):X:0-83Y:0-5編寫日期:20080918*/voidLCD_set_XY(ucharX,ucharY){ LCD_write_byte(0x40|Y,0);//column LCD_write_byte(0x80|X,0);//row}/*LCD_clear:LCD清屏函數(shù)編寫日期:20080918*/voidLCD_clear(void){ uchart; uchark; LCD_set_XY(0,0); for(t=0;t<6;t++) { for(k=0;k<84;k++) { LCD_write_byte(0x00,1); } }}/****************************Nokia5110寫數(shù)字函數(shù)*********************//*函數(shù)原型:voidDisplay_num(unsignedcharx,unsignedchary,chars)/*函數(shù)功能:Nokia5110寫數(shù)字/*輸入?yún)?shù):x設(shè)置顯示字符的X位置;y設(shè)置顯示字符的Y位置s顯示數(shù)字/*輸出參數(shù):無/**********************************************************************/voidDisplay_num(unsignedcharx,unsignedchary,chars){unsignedcharline;LCD_set_XY(x,y);dc=1;for(line=0;line<6;line++){LCD_write_byte(asc2tab[s+16][line],dc);}sce=1;}/*************************Nokia5110寫字符函數(shù)*************************模塊名稱:Display_char(unsignedcharx,unsignedchary,char*s);功能:寫字符;參數(shù)說明:x設(shè)置顯示字符的X位置;y設(shè)置顯示字符的Y位置*s顯示字符的首地址*******************************************************************/voidDisplay_char(unsignedcharx,unsignedchary,char*s){unsignedcharline;LCD_set_XY(x,y);dc=1;while(*s){for(line=0;line<6;line++){dc=1;LCD_write_byte(asc2tab[*s-32][line],dc); } s++;}sce=1;}/**********************************************************/voiddelay14(ucharn)//誤差-0.026041666667us 0.14ms{unsignedchara,b,c;for(;n>0;n--){for(c=96;c>0;c--)for(b=1;b>0;b--)for(a=1;a>0;a--);}}/**********************************************************/voiddelay1(intms){unsignedchary;while(ms--){for(y=0;y<250;y++){_nop_();_nop_();_nop_();_nop_();}}}/***********************解碼中斷程序***********************************/voidIR_IN()interrupt2using2{unsignedcharj,k,N=0;EX1=0; delay14(15); if(IRIN==1){EX1=1; return; }//確認(rèn)IR信號出現(xiàn)while(!IRIN)//等IR變?yōu)楦唠娖?,跳過9ms的前導(dǎo)低電平信號。{delay14(1);}for(j=0;j<4;j++)//收集四組數(shù)據(jù){for(k=0;k<8;k++)//每組數(shù)據(jù)有8位{while(IRIN)//等IR變?yōu)榈碗娖絳delay14(1);}while(!IRIN)//等IR變?yōu)楦唠娖絳delay14(1);}while(IRIN)//計算IR高電平時長{delay14(1);N++;if(N>=30) {EX1=1; return;}//0.14ms計數(shù)過長自動離開。}//高電平計數(shù)完畢IRCOM[j]=IRCOM[j]>>1;//數(shù)據(jù)最高位補“0”if(N>=8){IRCOM[j]=IRCOM[j]|0x80;}//數(shù)據(jù)最高位補“1”N=0;}//endfork}//endforjif(IRCOM[2]!=~IRCOM[3]){EX1=1;return;} CodeTemp=IRCOM[2];IRCOM[5]=IRCOM[2]&0x0F;//取鍵碼的低四位IRCOM[6]=IRCOM[2]>>4;//右移4次,高四位變?yōu)榈退奈籭f(IRCOM[5]>9){IRCOM[5]=IRCOM[5]+0x08;}else IRCOM[5]=IRCOM[5];if(IRCOM[6]>9){IRCOM[6]=IRCOM[6]+0x08;}else IRCOM[6]=IRCOM[6];////////////////////////////Display_num(0,3,IRCOM[5]);//Display_num(0,2,IRCOM[6]);EX1=1;}voidTimer0Init(void) //50毫秒@11.0592MHz{ AUXR&=0x7F; //定時器時鐘12T模式 TMOD&=0xF0; //設(shè)置定時器模式 TMOD|=0x01; //設(shè)置定時器模式 TL0=0x00; //設(shè)置定時初值 TH0=0x4C; //設(shè)置定時初值 TF0=0; //去除TF0標(biāo)志 TR0=1; //定時器0開始計時 ET0=1;}voidT

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論