版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、信息工程學(xué)院電子信息系專業(yè)實訓(xùn)報告題目:基于STC89C52單片機的紅外遙控系統(tǒng) 專業(yè)班級:電子信息工程11級1班學(xué)號:1167118115 :郭曉偉 指導(dǎo)教師:建軍題目 基于STC89C52單片機的紅外遙控系統(tǒng)實訓(xùn)目的: 通過對基于單片機的課程設(shè)計,使我們進(jìn)一步熟悉和掌握單片機的結(jié)構(gòu)及工作原理,掌握單片機的接口技術(shù)及相關(guān)外圍芯片的特性和控制方法。并且通過對本次的課程實習(xí),掌握以單片機為核心的電路設(shè)計的基本方法和技術(shù)。在課程設(shè)計中,我們親自動手進(jìn)行實際應(yīng)用程序設(shè)計和調(diào)試,逐步掌握模塊化程序設(shè)計方法和調(diào)試技術(shù),熟練運用DXP、protel99se等類似的畫圖軟件和編程軟件keil C等,在設(shè)計各
2、自的課題中,每位同學(xué)通過完成一個包括電路設(shè)計和程序開發(fā)的完整過程,使大家了解開發(fā)單片機應(yīng)用系統(tǒng)的全過程,在自己的實踐設(shè)計中熟練這門技術(shù)時,同時排除和解決設(shè)計中遇到的各種問題,這是在此次課程設(shè)計中,同學(xué)們得到的最大的收益,而且為今后從事相應(yīng)工作打下基礎(chǔ)。實訓(xùn)時間、地點: 時間:2014春學(xué)期 第17.18周 地點:工程訓(xùn)練中心實驗室實訓(xùn)容:摘要:單片機的廣泛應(yīng)用促進(jìn)了設(shè)備和產(chǎn)品的微型化,數(shù)字化,自控化,和智能化。單片機的應(yīng)用加深了計算機于自動化控制技術(shù)的結(jié)合,從而在自動控制領(lǐng)域里引發(fā)了一場對傳統(tǒng)控制技術(shù)的革命,也就是單片機正從根本上改變著傳統(tǒng)的控制設(shè)計思想和設(shè)計方法,是以往必須由模擬或數(shù)字電路實
3、現(xiàn)的控制功能,現(xiàn)在可以通過軟件方法實現(xiàn)了。紅外遙控是一種被廣泛使用的計算機技術(shù),特別是在家電方面給人們帶來了方便快捷的生活。紅外遙控用到許多中斷技術(shù),計算機系統(tǒng)中,中斷可以由各種硬件設(shè)備產(chǎn)生,以便請求服務(wù)或報告故障報警等。此外,中斷也可以由處理器自身產(chǎn)生。外部中斷請求有兩種信號方式有電平方式和脈沖方式。電平方式的中斷請求時低電平有效,脈沖的中斷請脈沖的下降沿有效。我通過在圖書館查閱有關(guān)資料,并且設(shè)計出了合適的電路圖,經(jīng)過仔細(xì)研究并對電路圖做了多次修改,滿足了課題的要求,實現(xiàn)了紅外遙控的目的。最后通過仿真器輸入程序,手動中斷,中斷結(jié)束后,程序從斷點處繼續(xù)執(zhí)行。中斷的應(yīng)用具有重要的意義,它大大提高
4、了計算機效率。關(guān)鍵詞:單片機;遙控器;STC89C52;紅外遙控一 引言以單片機為核心的控制系統(tǒng),因為其實時控制功能強,可靠性高,實用性強,應(yīng)用圍廣等優(yōu)點,得到了極為廣泛的應(yīng)用。隨著人們生活水平的不斷提高,單片機控制無疑是人們追求的目標(biāo)之一,它所給人帶來的方便也是不可否定的,其中紅外遙控就是一個典型的例子,但人們對它的要求越來越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從單片機技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。紅外線遙控是目前使用最廣泛的一種通信和遙控手段。由于紅外線遙控裝置具有體積小、功耗低、功能強、成本低等特點,因而,繼彩電、錄像機之后,在錄音機、音響設(shè)備
5、、空凋機以及玩具等其它小型電器裝置上也紛紛采用紅外線遙控。工業(yè)設(shè)備中,在高壓、輻射、有毒氣體、粉塵等環(huán)境下,采用紅外線遙控不僅完全可靠而且能有效地隔離電氣干擾。它的理論性和實踐性都很強,我們在理論課學(xué)習(xí)中主要學(xué)習(xí)單片機的基本構(gòu)造,各部分的工作原理以及指令系統(tǒng),然而,光是理論的學(xué)習(xí)是遠(yuǎn)遠(yuǎn)不夠的,最重要的是把理論和實踐相結(jié)合。所以此次實習(xí),通過設(shè)計一個基于AT89S52單片機的遙控器設(shè)計,以增進(jìn)對單片機電路的感性認(rèn)識,加深對理論方面的理解和鞏固,了解和掌握軟硬件設(shè)計過程、方法及實現(xiàn),增強自己的動手和實踐能力,為以后在工作和學(xué)習(xí)中,設(shè)計和實現(xiàn)應(yīng)用系統(tǒng)打下良好基礎(chǔ)。二 單片機系統(tǒng)開發(fā)與應(yīng)用工程實習(xí)要求
6、及相關(guān)知識2.1 單片機系統(tǒng)開發(fā)與應(yīng)用工程實習(xí)的重要意義單片機是計算機技術(shù)、大規(guī)模集成電路技術(shù)和控制技術(shù)的綜合產(chǎn)物。現(xiàn)在,凡是電腦控制的設(shè)備和產(chǎn)品,必有單片機嵌入其中,它早已成為人類生活中不可或缺的助手。單片機體積小、重量輕,具有很強的靈活性而且價格便宜。單片機主要用于工業(yè)環(huán)境的實時控制、智能化儀器儀表、家用電器等各個不同的領(lǐng)域。不同領(lǐng)域?qū)纹瑱C的使用有不同的要求,諸如環(huán)境溫度、濕度、電源波動、電磁場擾動、噪聲、沖擊、紅外遙控等等,都直接影響著單片機應(yīng)用系統(tǒng)的總體設(shè)計。無論哪一種單片機應(yīng)用系統(tǒng),在總體設(shè)計中都必須把工作環(huán)境的制約當(dāng)作重要因素對待。單片機應(yīng)用系統(tǒng)設(shè)計不但要熟練掌握單片機程序語言和
7、編程技術(shù),而且還要具備扎實的單片機硬件方面的理論和實踐知識。2.2 預(yù)期目標(biāo)設(shè)計一種基于AT89S52單片機控制的紅外線遙控器,具有以下功能:(1)適用于編碼式紅外線遙控型家用電器;(2)可遙控多臺家用電器;(3)具有一個學(xué)習(xí)/控制復(fù)用鍵;(4)可通過一個設(shè)備選擇鍵和各個功能控制鍵實現(xiàn)對多臺設(shè)備的常用功能的學(xué)習(xí)和控制;(5)成本低,抗干擾能力強。2.3 單片機相關(guān)知識(1) 本次實習(xí)所使用的單片機是Atmel公司的STC89C52芯片,此芯片的功能強大,可以實現(xiàn)我們?nèi)粘I钪薪佑|到的大部分家電的自動控制功能和實現(xiàn)對家電的遠(yuǎn)程遙控。STC89C52的引腳圖如2-1所示: 圖2-1 STC89C5
8、2引腳圖單片機最小系統(tǒng)如下圖所示: 圖2-2 單片機最小系統(tǒng)(2)單片機最小系統(tǒng)的復(fù)位電路由電容串聯(lián)電阻構(gòu)成,由圖并結(jié)合“電容電壓不能突變"的性質(zhì),可以知道,當(dāng)系統(tǒng)一上電,RST腳將會出現(xiàn)高電平,并且,這個高電平持續(xù)的時間由電路的RC值來決定.典型的51單片機當(dāng)RST腳的高電平持續(xù)兩個機器周期以上就將復(fù)位,所以,適當(dāng)組合RC的取值就可以保證可靠的復(fù)位.一般教科書推薦C 取10u,R取8.2K.當(dāng)然也有其他取法的,原則就是要讓RC組合可以在RST腳上產(chǎn)生不少于2個機周期的高電平.至于如何具體定量計,可以參考電路分析相關(guān)書籍. 圖2-3 單片機最小系統(tǒng)復(fù)位電路(3)單片機最小系統(tǒng)的晶振電
9、路單片機的時鐘電路由振蕩電路和分頻電路組成,其振蕩電路由反相器以及并聯(lián)外接的石英晶體和電容組成,用于產(chǎn)生振蕩脈沖。分頻電路用于把振蕩脈沖分頻,以的到所需要的時鐘信號。振蕩電路如圖2-2所示: 圖2-3 單片機最小系統(tǒng)晶振電路 其輸入端為引腳XTAL1,輸出端為引腳XTAL2。通過這兩個引腳在芯片外并接石英晶體振蕩器和兩只電容,石英晶體為一感性原件,與電容構(gòu)成振蕩回路,為片放大器提供正反饋和振蕩的相移條件,從而構(gòu)成一個穩(wěn)定的自激振蕩器。振蕩器的頻率主要取決于晶體的振蕩頻率, 一般晶體可在1.212 MHz之間任選, 電容C1、 C2可在530 pF之間選擇, 電容的大小對振蕩頻率有微小的影響,
10、可起頻率微調(diào)作用。 振蕩脈沖經(jīng)二分頻后作為系統(tǒng)的時鐘信號,時鐘信號經(jīng)過三分頻產(chǎn)生ALE信號,ALE信號用于控制把P0口的低8位地址送入鎖存器鎖起來,以實現(xiàn)低地址和數(shù)據(jù)的分時傳送,ALE還可作為外部時鐘或外部脈沖使用。時鐘信號經(jīng)六分頻得到機器周期信號。(4)中斷系統(tǒng)A 中斷的概念當(dāng)CPU與外設(shè)交換信息時,由于外設(shè)的速度比較慢,若用查詢的方式,則CPU就要浪費很多時間去等待外設(shè)。這樣就存在一個快速的CPU與慢速的外設(shè)之間的矛盾。為了解決這個問題,就發(fā)展了中斷的概念。CPU正在處理某一程序時,發(fā)生了另一突發(fā)事件請求CPU迅速去處理(中斷發(fā)生);CPU暫時停止當(dāng)前的工作,轉(zhuǎn)到需要處理的中斷源的服務(wù)程序
11、的入口(中斷響應(yīng)),一般在入口處執(zhí)行一跳轉(zhuǎn)指令轉(zhuǎn)去處理中斷事件(中斷服務(wù));待CPU將中斷事件處理完畢后,再回到原來程序被中斷的地方繼續(xù)處理執(zhí)行程序(中斷返回),這一處理過程稱為中斷。51單片機的中斷系統(tǒng)提供5個中斷源:外部中斷0和外部中斷1,定時/計數(shù)器(T0)和(T1)的溢出中斷,串行接口的接收和發(fā)送中斷。本程序中只用到了外部中斷1。B 中斷控制1 中斷允許寄存器IE(A8H)CPU對中斷系統(tǒng)所有中斷以及某個中斷源的開放和屏蔽是由中斷允許寄存器(IE)控制的。IE各位的定義如表2-2所示:表 2-1位地址0AFH0AEH0ADH0ACH0ABH0AAH0A9H0A8H位符號EA/ESET1
12、EX1ET0EX0EA中斷允許總控制位EA0 中斷總禁止,禁止所有中斷EA1 中斷總允許,總允許后中斷的禁止或允許由各中斷源的中斷允許控制位設(shè)置。EX0和EX1外部中斷允許控制位EX0(EX1)0 禁止外部中斷EX0(EX1)1 允許外部中斷ET0和ET1定時器/計數(shù)器中斷允許控制位ET0(ET1)0 禁止定時器/計數(shù)器中斷ET0(ET1)1 允許定時器/計數(shù)器中斷ES串行中斷允許控制位ES=0 禁止串行中斷ES=1 允許串行中斷2中斷優(yōu)先級控制寄存器(IP)各中斷的優(yōu)先級通過中斷優(yōu)先級控制寄存器IP來設(shè)定,其未定義及位地址如表2-3所示:表2-2位地址0BFH0BEH0BDH0BCH0BBH
13、0BAH0B9H0B8H位符號/PSPT1PX1PT0PX0PX0外部中斷0優(yōu)先級設(shè)定位;PT0定時中斷0優(yōu)先級設(shè)定位;PX1外部中斷1優(yōu)先級設(shè)定位;PT1定時中斷1優(yōu)先級設(shè)定位; PS串行中斷優(yōu)先級設(shè)定位。C定時器控制寄存器(TCON)該寄存器用于保存外部中斷請求以及定時器的計數(shù)溢出。進(jìn)行字節(jié)操作時,寄存器地址為88H。按位操作時,各位的地址為88H8FH。寄存器的容及位地址表示如表2-4所示:表 2-3位地址 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H 位符號 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 IE0和IE1外中斷請求標(biāo)志位。當(dāng)CPU采樣到
14、 INT0(或INT1)端出現(xiàn)有效中斷請求時,IE0(IE1)位由硬件置“1”。 當(dāng)中斷響應(yīng)完成轉(zhuǎn)向中斷服務(wù)程序時,由硬件把IE0(或IE1)清零。TR0 和TR1定時器運行控制位:TR0 (TR1 )0 定時器/計數(shù)器不工作TR0 (TR1 )1 定時器/計數(shù)器開始工作TF0和TF1計數(shù)溢出標(biāo)志位。當(dāng)計數(shù)器產(chǎn)生計數(shù)溢出時,相應(yīng)的溢出標(biāo)志位硬件置“1”。 并自動產(chǎn)生定時中斷請求。(5)液晶顯示模塊1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無差別,兩者尺寸差別如下圖所示:圖2-4 1602LCD尺寸圖1602LCD主要技術(shù)
15、參數(shù):顯示容量:16×2個字符 芯片工作電壓:4.55.5V工作電流:2.0mA(5.0V) 模塊最佳工作電壓:5.0V字符尺寸:2.95×4.35(W×H)mm引腳功能說明:1602LCD采用標(biāo)準(zhǔn)的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表所示:編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極表2-4:引腳接口說明表第1腳:VSS為地電源
16、。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16
17、腳:背光源負(fù)極。(6)聲音提示模塊該設(shè)計有聲音報警,當(dāng)有病人呼叫時,蜂鳴器就會大聲提示,直到護(hù)士應(yīng)答回復(fù),才會停止鳴叫,控制引腳接在P3.4引腳上,利用三極管當(dāng)做開關(guān)電路可以保護(hù)單片機,還可以起到放大電流的作用,當(dāng)三極管基極為高電平時,發(fā)射極截止,為低電平時,發(fā)射極導(dǎo)通。報警模塊如圖2-5所示。圖2-5聲音提示模塊三 系統(tǒng)硬件設(shè)計3.1 紅外遙控系統(tǒng) 通用紅外遙控系統(tǒng)由發(fā)射和接收兩大部分組成,應(yīng)用編/解碼專用集成電路芯片來進(jìn)行控制操作,如圖1所示。發(fā)射部分包括鍵盤矩陣、編碼調(diào)制、LED紅外發(fā)送器;接收部分包括光、電轉(zhuǎn)換放大器、解調(diào)、解碼電路。如圖所示: 3.2 遙控發(fā)射器及其編碼 遙控發(fā)射器專
18、用芯片很多,根據(jù)編碼格式可以分成兩大類,這里我們以運用比較廣泛,解碼比較容易的一類來加以說明,現(xiàn)以兼容NEC的uPD6121G芯片發(fā)射碼格式的芯片組成發(fā)射電路為例說明編碼原理。當(dāng)發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進(jìn)制的“1”,其波形如圖所示: 上述“0”和“1”組成的32位二進(jìn)制碼經(jīng)38kHz的載頻進(jìn)行二次調(diào)制以提高發(fā)射效率,達(dá)到降低電源功耗的目的。然后再通過紅
19、外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射,如圖所示:
20、160; UPD6121G產(chǎn)生的遙控編碼是連續(xù)的32位二進(jìn)制碼組,其中前16位為用戶識別碼,能區(qū)別不同的電器設(shè)備,防止不同機種遙控碼互相干擾。芯片廠商把用戶識別碼固定為十六進(jìn)制的一組數(shù);后16位為8位操作碼(功能碼)及其反碼。UPD6121G最多額128種不同組合的編碼。遙控器在按鍵按下后,周期性地發(fā)出同一種32位二進(jìn)制碼,周期約為108ms。一組碼本身的持續(xù)時間隨它包含的二進(jìn)制“0”和“1”的個數(shù)不同而不同,大約在4563ms之間,圖4為發(fā)射波形圖。當(dāng)一個鍵按下超過36ms,振蕩器使芯片激活,將發(fā)射
21、一組108ms的編碼脈沖,這108ms發(fā)射代碼由一個起始碼(9ms),一個結(jié)果碼(4.5ms),低8位地址碼(9ms18ms),高8位地址碼(9ms18ms),8位數(shù)據(jù)碼(9ms18ms)和這8位數(shù)據(jù)的反碼(9ms18ms)組成。如果鍵按下超過108ms仍未松開,接下來發(fā)射的代碼(連發(fā)代碼)將僅由起始碼(9ms)和結(jié)束碼(2.5ms)組成。3.接收器及解碼一體化紅外線接收器是一種集紅外線接收和放大于一體,不需要任何外接元件,就能完成從紅外線接收到輸出與TTL電平信號兼容的所有工作,而體積和普通的塑封三極管大小一樣,它適合于各種紅外線遙控和紅外線數(shù)據(jù)傳輸。紅外接收頭將38K載波信號過慮,得到與發(fā)
22、射代碼反向接收代碼,如圖:(1) 解碼的關(guān)鍵是如何識別“0”和“1”,從位的定義我們可以發(fā)現(xiàn)“0”、“1”均以0.56ms的低電平開始,不同的是高電平的寬度不同,“0”為0.56ms,“1”為1.68ms,所以必須根據(jù)高電平的寬度區(qū)別“0”和“1”。如果從0.56ms低電平過后,開始延時,0.56ms以后,若讀到的電平為低,說明該位為“0”,反之則為“1”,為了可靠起見,延時必須比0.56ms長些,但又不能超過1.12ms,否則如果該位為“0”,讀到的已是下一位的高電平,因此?。?.12ms+0.56ms)/2=0.84ms最為可靠,一般取0.84ms左右均可。(2) 根據(jù)
23、碼的格式,應(yīng)該等待9ms的起始碼和4.5ms的結(jié)果碼完成后才能讀碼。四 電路框圖設(shè)計4.1 遙控發(fā)射單元的框圖設(shè)計 遙控發(fā)射單元由單片機最小系統(tǒng)和按鍵電路、紅外發(fā)射器電路等組成,遙控發(fā)射單元框圖如圖所示:電源電路STC89C52 單片機紅外發(fā)射器按鍵電路復(fù)位電路晶振電路 圖4-1 紅外遙控單元發(fā)射框圖 4.2遙控接收單元的框圖設(shè)計遙控接收單元由單片機最小系統(tǒng)和紅外接收器、控制對象電路等組成,遙控接收單元框圖如圖3-2所示:晶振電路STC89C52單片機電源液晶顯示器紅外接收器復(fù)位電路 圖4-2 紅外遙控接收單元框圖五 電路原理圖及程序流程圖5.1 遙控發(fā)射單元原理圖遙控發(fā)射單元由單片機最小系統(tǒng)
24、和按鍵電路、紅外發(fā)射器電路等組成,遙控發(fā)射單元原理圖如圖5-1所示。 圖5-1遙控發(fā)射單元原理圖5.2 遙控接收單元原理圖 遙控接收單元由單片機最小系統(tǒng)和紅外接收器、控制對象電路等組成,遙控接收單元原理圖如圖5-2所示。 圖5-2 遙控接收單元原理圖5.3總PCB圖如圖5-3所示:圖5-3 總PCB圖5.4 紅外遙控程序流程圖(1) 程序開始是對單片機進(jìn)行初始化設(shè)置,循環(huán)掃描判斷是否有鍵按下,如果有鍵按下就發(fā)射相應(yīng)的紅外信號,遙控發(fā)射程序流程圖如圖5-4所示:開始初始化有鍵按下?查詢被按下的鍵發(fā)送紅外脈沖個數(shù)(按鍵值)YN圖5-4 遙控發(fā)射程序流程圖(2) 程序開始是對單片機進(jìn)行初始化設(shè)置,循
25、環(huán)掃描判斷是否有鍵按下,如果有鍵按下就發(fā)射相應(yīng)的紅外信號,遙控發(fā)射程序流程圖如圖5-5所示,中斷延時有開始脈沖?接收紅外執(zhí)行相應(yīng)功能中斷返回YN5.5實物圖程序附錄1:/*名稱:紅外線遙控發(fā)射(NEC編碼)單片機:STC89C52RC晶振:12M*/#include <REG51.h>#include "MY_SET.h"#include "LCD1602_6IO.h" #define KEY_PORT P1#defineKEY_NULL 80sbit IR = P20; /發(fā)射引腳/sbit LED1=P20;sbit LED2=P21;s
26、bit LED3=P22;sbit LED4=P23;sbit KEY1=P10;sbit KEY2=P11;sbit KEY3=P12;sbit KEY4=P13;sbit KEY5=P14;#define USER_H P2 /用戶碼高8位#define USER_L P0 /用戶碼低8位Uint8tab16=0x12,0x05,0x1e,0x55,0x01,0x1b,0x03,0x6b,0x07,0x08,0x09,0x68,0x22,0xE6,0x33,0xe2;/操作碼uint16 M = 0;#define m9 (65536-9000) /9mS#define m4_5 (655
27、36-4500) /4.5mS#define m1_6 (65536-1650) /1.65mS#define m_56 (65536-560) /0.56mS#define m40 (65536-40000) /40mS#define m56 (65536-56000) /56mS#define m2_25 (65536-2250) /2.25mSvoid SanZhuan();uint8 KEY(void);void ZZ(uint8 x); /NEC編碼發(fā)送程序void Z0(uint8 temp); /單幀(8位數(shù)據(jù))發(fā)送程序void TT0(bit BT,uint16 x); /38
28、KHz載波發(fā)射 + 延時程序char keyscan();void delayk();/*函數(shù):主程序*/void main(void) uchar m; TMOD = 0x01; IE = 0x81; /允許總中斷中斷,使能 INT0 外部中斷 TCON = 0x01; /觸發(fā)方式為脈沖負(fù)邊沿觸發(fā) IRIN=1; /I/O口初始化 BEEP=1;IR = 1; delay1(10); /延時 lcd_init(); /初始化LCD lcd_pos(0); /設(shè)置顯示位置為第一行的第1個字符m = 0; while(cdis1m != '0') /顯示字符 lcd_wdat(c
29、dis1m); m+; lcd_pos(0x40); /設(shè)置顯示位置為第二行第1個字符 m = 0; while(cdis2m != '0') lcd_wdat(cdis2m); /顯示字符 m+; while(1)if(LED4 = 0)IE = 0x00; elseIE = 0x81; SanZhuan();/*函數(shù):獨立鍵盤*/uint8 KEY(void) uint8 Key = 0xff; if(KEY1 = 0) Key = 0; / LED1 = LED1; if(KEY2 = 0) Key = 1; LED2 = LED2; if(KEY3 = 0) Key =
30、 2; LED3 = LED3; if(KEY4 = 0) Key = 3; LED3 = LED3; if(KEY5 = 0) LED4 = LED4; return Key; /返回鍵值/*函數(shù):散轉(zhuǎn)程序*/void SanZhuan() uint8 v; /TMOD = 0x01; /v = KEY(); /鍵盤檢測 v = keyscan(); switch(v) case 0:ZZ(tab0);break; case 1:ZZ(tab1);break; case 2:ZZ(tab2);break; case 3:ZZ(tab3);break; case 4:ZZ(tab4);brea
31、k; case 5:ZZ(tab5);break; case 6:ZZ(tab6);break; case 7:ZZ(tab7);break; case 8:ZZ(tab8);break; case 9:ZZ(tab9);break; case '*':ZZ(tab10);break; case '#':ZZ(tab11);break; case '+':ZZ(tab12);break; case '-':ZZ(tab13);break;/ case 0xd7:ZZ(tab14);break;/ case 0xe7:ZZ(tab1
32、5);break; default:break; v=0;/*函數(shù):NEC編碼發(fā)送程序 入口:八位操作碼*/void ZZ(uint8 Value) TT0(1,m9); /高電平9mS TT0(0,m4_5); /低電平4.5mS /* 發(fā)送4幀數(shù)據(jù)*/ Z0(USER_H); /用戶碼高8位 Z0(USER_L); /用戶碼低8位 Z0(Value); /操作碼 Z0(Value); /操作碼反碼 /* 結(jié)束碼 */ TT0(1,m_56); TT0(0,m40); /* 重復(fù)碼 */ while(KEY() != 0xFF) TT0(1,m9); TT0(0,m2_25); TT0(1,
33、m_56); TT0(0,m40);TT0(0,m56); /*函數(shù):單幀(8位數(shù)據(jù))發(fā)送程序*/void Z0(uint8 temp) uint8 v; for (v=0;v<8;v+) /循環(huán)8次移位 TT0(1,m_56); /高電平0.65mS if(temp&0x01) TT0(0,m1_6); /發(fā)送最低位 else TT0(0,m_56); temp >>= 1; /右移一位 /*函數(shù):38KHz載波發(fā)射 + 延時程序 入口:(是否發(fā)射載波,延時約 x (uS))*/void TT0(bit BT,uint16 x) TH0 = x>>8;
34、/輸入T0初始值 TL0 = x; TF0=0; /清0 TR0=1; /啟動定時器0 if(BT = 0) while(!TF0); /BT=0時,不發(fā)射38KHz載波只延時;B else while(1) /38KHz載波,(低電平)占空比5:26 IR = 0; if(TF0)break;if(TF0)break; IR = 1; if(TF0)break;if(TF0)break; if(TF0)break;if(TF0)break; if(TF0)break;if(TF0)break; if(TF0)break;if(TF0)break; if(TF0)break;if(TF0)br
35、eak; TR0=0; /關(guān)閉定時器0 TF0=0; /標(biāo)志位溢出則清0 IR =1; /載波停止后,發(fā)射端口常態(tài)為高/*函數(shù) :外部中斷函數(shù) */void IR_IN(void) interrupt 0 /外部中斷服務(wù)程序 unsigned char j,k,N=0; EX0 = 0; delay(15); if (IRIN=1) EX0 =1; return; /確認(rèn)IR信號出現(xiàn) while (!IRIN) /等IR變?yōu)楦唠娖剑^9ms的前導(dǎo)低電平信號。 delay(1); for (j=0;j<4;j+) /收集四組數(shù)據(jù) for (k=0;k<8;k+) /每組數(shù)據(jù)有8位
36、while (IRIN) /等 IR 變?yōu)榈碗娖剑^4.5ms的前導(dǎo)高電平信號 delay(1); while (!IRIN) /等 IR 變?yōu)楦唠娖?delay(1); while (IRIN) /計算IR高電平時長 delay(1); N+; if (N>=30) EX0=1; return; /0.14ms計數(shù)過長自動離開。 /高電平計數(shù)完畢 IRCOMj=IRCOMj >> 1; /數(shù)據(jù)最高位補“0” if (N>=8) IRCOMj = IRCOMj | 0x80; /數(shù)據(jù)最高位補“1” N=0; /end for k /end for j if (IRCO
37、M2!=IRCOM3)/按位取反 EX0=1; return; IRCOM5=IRCOM2 & 0x0F; /取鍵碼的低四位IRCOM6=IRCOM2 >> 4; /右移4次,高四位變?yōu)榈退奈?if(IRCOM5>9) IRCOM5=IRCOM5+0x37; else IRCOM5=IRCOM5+0x30; if(IRCOM6>9) IRCOM6=IRCOM6+0x37; else IRCOM6=IRCOM6+0x30; lcd_pos(0x4b); lcd_wdat(IRCOM6); /第一位數(shù)顯示 lcd_pos(0x4c); lcd_wdat(IRCOM5
38、); /第二位數(shù)顯示 Y0=0; switch(IRCOM2) case 0x09: Y0=0x01; break; case 0x1D: Y0=0x02; break; case 0x1F: Y0=0x03; break; case 0x0D: Y0=0x04; break; case 0x19: Y0=0x05; break; case 0x1B: Y0=0x06; break; case 0x11: Y0=0x07; break; case 0x15: Y0=0x08; break; case 0x17: Y0=0x09; break; default:break; /case 0x13
39、: RELAY=1; break; / case 0x14: RELAY=1; break; / case 0x51: RELAY=0; break; tabM = IRCOM2;M = (M+1)%4; beep(); EX0 = 1; char keyscan()char temp,key;KEY_PORT = 0x7f;temp = KEY_PORT;temp = KEY_PORT & 0x0f;if(temp != 0x0f)delayk();if(temp != 0x0f)temp = KEY_PORT;switch(temp)case 0x7e: key = 'A&
40、#39;break;/Acase 0x7d: key = 'B'break;/Bcase 0x7b: key = 'C'break;/Ccase 0x77: key = 'D'break;/Dwhile(temp != 0x0f)temp = KEY_PORT & 0x0f;P1 = key;return key;KEY_PORT = 0xbf;temp = KEY_PORT;temp = KEY_PORT & 0x0f;if(temp != 0x0f)delayk();if(temp != 0x0f)temp = KEY_POR
41、T;switch(temp)case 0xbe: key = 3;break;/3case 0xbd: key = 6;break;/6case 0xbb: key = 9;break;/9case 0xb7: key = '#'break;/#while(temp != 0x0f)temp = KEY_PORT & 0x0f;/P1 = key;return key;KEY_PORT = 0xdf;temp = KEY_PORT;temp = KEY_PORT & 0x0f;if(temp != 0x0f)delayk();if(temp != 0x0f)te
42、mp = KEY_PORT;switch(temp)case 0xde: key = 2;break;/2case 0xdd: key = 5;break;/5case 0xdb: key = 8;break;/8case 0xd7: key = 0;break;/0while(temp != 0x0f)temp = KEY_PORT & 0x0f;/P1 = key;return key;KEY_PORT = 0xef;temp = KEY_PORT;temp = KEY_PORT & 0x0f;if(temp != 0x0f)delayk();if(temp != 0x0f
43、)temp = KEY_PORT;switch(temp)case 0xee: key = 1;break;/1case 0xed: key = 4;break;/4case 0xeb: key = 7;break;/7case 0xe7: key = '*'break;/*while(temp != 0x0f)temp = KEY_PORT & 0x0f;/P1 = key;return key; /beep=1;return KEY_NULL;/返回一個與鍵盤不相關(guān)的值void delayk()int x,y;for(x=0; x<10; x+)for(y=0
44、; y<1000; y+);附錄2:#include<reg52.h> /包含單片機寄存器的頭文件#include<intrins.h> /包含_nop_()函數(shù)定義的頭文件sbit IR=P32; /將IR位定義為P3.2引腳sbit RS=P20; /寄存器選擇位,將RS位定義為P2.0引腳sbit RW=P21; /讀寫選擇位,將RW位定義為P2.1引腳sbit E=P22; /使能信號位,將E位定義為P2.2引腳sbit BF=P07; /忙碌標(biāo)志位,將BF位定義為P0.7引腳sbit BEEP = P36; /蜂鳴器控制端口P36 unsigned char flag;unsigned char code string = "HELLO WORLD" unsigned char a4; /儲存用戶碼、用戶反碼與鍵數(shù)據(jù)碼、鍵數(shù)據(jù)反碼unsigned int LowTime
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 武漢民政職業(yè)學(xué)院《電工技術(shù)與電氣控制》2023-2024學(xué)年第一學(xué)期期末試卷
- 個性化高端導(dǎo)購服務(wù)2024協(xié)議
- 2024版在線教育平臺合作協(xié)議3篇
- 2024版反擔(dān)保協(xié)議二
- 二零二五版臨時用工崗位合同范本6篇
- 二零二五年度金融科技股票投資委托合同模板3篇
- 二零二五年度食品飲料個人物資采購合同參考文本6篇
- 四川職業(yè)技術(shù)學(xué)院《稅收理論與實務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五版城市改造房屋拆遷掛靠管理合同3篇
- 2024美團(tuán)商家入駐平臺數(shù)據(jù)共享及隱私保護(hù)協(xié)議3篇
- 教師教學(xué)常規(guī)管理培訓(xùn)夯實教學(xué)常規(guī)強化教學(xué)管理PPT教學(xué)課件
- 公務(wù)員考試工信部面試真題及解析
- GB/T 15593-2020輸血(液)器具用聚氯乙烯塑料
- 2023年上海英語高考卷及答案完整版
- 西北農(nóng)林科技大學(xué)高等數(shù)學(xué)期末考試試卷(含答案)
- 金紅葉紙業(yè)簡介-2 -紙品及產(chǎn)品知識
- 《連鎖經(jīng)營管理》課程教學(xué)大綱
- 《畢淑敏文集》電子書
- 頸椎JOA評分 表格
- 定量分析方法-課件
- 朱曦編著設(shè)計形態(tài)知識點
評論
0/150
提交評論