基于51單片機(jī)的紅外密碼鎖設(shè)計(jì)及測試報(bào)告_第1頁
基于51單片機(jī)的紅外密碼鎖設(shè)計(jì)及測試報(bào)告_第2頁
基于51單片機(jī)的紅外密碼鎖設(shè)計(jì)及測試報(bào)告_第3頁
基于51單片機(jī)的紅外密碼鎖設(shè)計(jì)及測試報(bào)告_第4頁
基于51單片機(jī)的紅外密碼鎖設(shè)計(jì)及測試報(bào)告_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1基于基于 5151 單片機(jī)的紅外密碼鎖單片機(jī)的紅外密碼鎖(設(shè)計(jì)及測試報(bào)告)(設(shè)計(jì)及測試報(bào)告)2目錄目錄:第一章第一章 緒論緒論 .31.1課題背景及目的.31.2 國內(nèi)外研究現(xiàn)狀.41.3 課題研究方法.4第二章第二章 紅外遙控系統(tǒng)介紹紅外遙控系統(tǒng)介紹 .52.1 紅外通訊原理.52.2.2發(fā)射系統(tǒng).72.3 紅外編碼格式紅外編碼格式.10第第 3 3 章章 硬件電路設(shè)計(jì)硬件電路設(shè)計(jì) .123.1 整系統(tǒng)框圖整系統(tǒng)框圖.123.23.2 紅外發(fā)送紅外發(fā)送/ /接收接收.123.2.13.2.1 紅外遙控器紅外遙控器.123.2.2紅外接收頭.143.3 單片機(jī)單片機(jī) at89c51 簡介簡介

2、.163.3.1主要特性主要特性.163.3.2 管腳說明管腳說明.173.3.3 震蕩特性震蕩特性.183.3.4 芯片擦除芯片擦除.183.4 44 矩陣鍵盤矩陣鍵盤.193.5 復(fù)位電路復(fù)位電路.193.63.6 振蕩電路振蕩電路.193.7 1602 液晶顯示液晶顯示 .203.8 發(fā)光二極管發(fā)光二極管 led .243.9 繼電器繼電器.243.10 24c02.253.11 元器件列表元器件列表.32第四章第四章系統(tǒng)的軟件設(shè)計(jì)系統(tǒng)的軟件設(shè)計(jì).335.1 紅外發(fā)射編碼部分紅外發(fā)射編碼部分.345.2 紅外接收解碼部分紅外接收解碼部分.341 單片機(jī)解碼過程單片機(jī)解碼過程.342.紅外

3、解碼程序代碼紅外解碼程序代碼.345.3 單片機(jī)接收終端部分單片機(jī)接收終端部分.391. 密碼的輸入與確認(rèn)密碼的輸入與確認(rèn).392. 密碼的修改密碼的修改.393.矩陣鍵盤的掃描矩陣鍵盤的掃描.394.iic.395.1602液晶顯示液晶顯示.406.終端程序部分終端程序部分.40第五章第五章 設(shè)計(jì)調(diào)試與方案選擇設(shè)計(jì)調(diào)試與方案選擇 .5435.1 編碼的方案選擇編碼的方案選擇.545.2 解碼的方案選擇解碼的方案選擇.555.3 紅外接收部分調(diào)試紅外接收部分調(diào)試.5554 總結(jié)總結(jié).56參考文獻(xiàn)參考文獻(xiàn).57第一章第一章 緒論緒論 1.1課題背景及目的在日常的生活和工作中, 住宅與部門的安全防

4、范、單位的文件檔案、財(cái)務(wù)報(bào)表以及一些個人資料的保存多以加鎖的辦法來解決。若使用傳統(tǒng)的機(jī)械式鑰匙開鎖,人們常需攜帶多把鑰匙, 使用極不方便, 且鑰匙丟失后安全性即大打折扣。隨著科學(xué)技術(shù)的不斷發(fā)展,人們對日常生活中的安全保險(xiǎn)器件的要求越來越高。為滿足人們對鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應(yīng)運(yùn)而生。密碼鎖具有安全性高、成本低、功耗低、易操作等優(yōu)點(diǎn)。在安全技術(shù)防范領(lǐng)域,具有防盜報(bào)警功能的電子密碼鎖逐漸代替?zhèn)鹘y(tǒng)的機(jī)械式密碼鎖,克服了機(jī)械式密碼鎖密碼量少、安全性能差的缺點(diǎn),使密碼鎖無論在技術(shù)上還是在性能上都大大提高一步。隨著大規(guī)模集成電路技術(shù)的發(fā)展,特別是單片機(jī)的問世,出現(xiàn)了帶微處理器的

5、智能密碼鎖,它除具有電子密碼鎖的功能外,還引入了智能化管理、專家分析系統(tǒng)等功能,從而使密碼鎖具有很高的安全性、可靠性,應(yīng)用日益廣泛。隨著人們對安全的重視和科技的發(fā)展,許多電子智能鎖(指紋識別、ic 卡辨認(rèn))已在國內(nèi)外相繼面世。但是這些產(chǎn)品的特點(diǎn)是針對特定的指紋和有效卡,只能適用于保密要求的箱、柜、門等。而且指紋識識別器若在公共場所使用存在容易機(jī)械損壞,ic 卡還存在容易丟失、損壞等特點(diǎn)。加上其成本較高,一定程度上限制了這類產(chǎn)品的普及和推廣。鑒于目前的技術(shù)水平與市場的接收程度,電子密碼鎖是這類電子防盜產(chǎn)品的主流。但是接觸式密碼鎖系統(tǒng)都相應(yīng)的存在著不同的缺點(diǎn)。例如:接觸式密碼鎖系統(tǒng)成本較低,體積小

6、,卡片本身無須電源,但使用不太方便,而且有接觸磨損。相比之下,紅外遙控密碼鎖系統(tǒng)的成本與接觸式密碼鎖系統(tǒng)相當(dāng),而且可4以進(jìn)行近距離遙控,使用十分方便。而且它已經(jīng)與 pc 機(jī)的數(shù)據(jù)庫相結(jié)合,可以組成一套酒店房間的門禁管理系統(tǒng)。 由于紅外遙控具有許多優(yōu)點(diǎn), 例如紅外線發(fā)射裝置采用紅外發(fā)光二極管遙控發(fā)射器易于小型化且價(jià)格低廉; 采用數(shù)字信號編碼和二次調(diào)制方式,不僅可以實(shí)現(xiàn)多路信息的控制,增加遙控功能,提高信號傳輸?shù)目垢蓴_性,減少誤動作,而且功率消耗低;紅外線不會向室外泄露,不會產(chǎn)生信號串?dāng)_;反應(yīng)速度快、傳輸效率高、工作穩(wěn)定可靠等。工業(yè)設(shè)備中,在高壓、輻射、有毒氣體、粉塵等環(huán)境下,采用紅外線遙控不僅完

7、全可靠而且能有效地隔離電氣干擾。所以紅外線遙控是目前使用最廣泛的一種通信和遙控手段。 在本設(shè)計(jì)中,紅外遙控密碼鎖和 pc 機(jī)、數(shù)據(jù)庫相結(jié)合,能夠?qū)崿F(xiàn)適時的、強(qiáng)大的管理,使得整個紅外遙控系統(tǒng)得到更好的完善。 1.2 國內(nèi)外研究現(xiàn)狀目前大部分的鎖采用的都是機(jī)械式的,其最大的缺點(diǎn)是利用簡單工具就能很容易地把鎖打開。針對這種情況,我們設(shè)計(jì)了一種紅外遙控密碼鎖,而一般設(shè)備都采用專用的遙控編碼及解碼集成電路,其制作簡單、容易,但由于特定功能的限制,只適用于專用的電器產(chǎn)品,其應(yīng)用范圍受到限制。而設(shè)計(jì)的紅外遙控密碼鎖系統(tǒng)能提高門禁系統(tǒng)的可靠性和安全性,適應(yīng)市場需要。該系統(tǒng)具有普通電子密碼鎖功能的同時,還增加了

8、遙控功能。該系統(tǒng)具有較強(qiáng)的實(shí)際應(yīng)用價(jià)值,所涉及的技術(shù)包括:紅外載波數(shù)據(jù)傳輸技術(shù)、單片機(jī)控制技術(shù)、紅外遙控系統(tǒng)編碼及譯碼技術(shù)、電路設(shè)計(jì)與演示板制作技術(shù)等。1.3 課題研究方法主要的設(shè)計(jì)實(shí)施過程:首先,選用 atmel 公司的單片機(jī) at89c51,以及選購其他電子元器件。第二步,使用 protel99 完成原理圖,并設(shè)計(jì) pcb 圖完成人工布線(后因 pcb 板損壞決定采用萬能板焊接的方法) 。第三步,使用 keil uvision3 軟件編寫單片機(jī)的 c 語言程序、仿真、軟件調(diào)試。第四部,使用proteus 軟件進(jìn)行模擬軟、硬件調(diào)試。最后,聯(lián)合軟、硬件調(diào)試電路板,完成本次設(shè)計(jì)。5第二章第二章

9、紅外遙控系統(tǒng)介紹紅外遙控系統(tǒng)介紹2.1 紅外通訊原理紅外遙控是單工的紅外通信方式,本設(shè)計(jì)的紅外遙控采用以通信方式為基礎(chǔ)的紅外遙控,而且本設(shè)計(jì)也使用了紅外通信技術(shù),故著重分析紅外通信的基本原理。紅外通信是利用紅外技術(shù)實(shí)現(xiàn)兩點(diǎn)間的近距離保密通信和信息轉(zhuǎn)發(fā)。它一般由紅外發(fā)射和接收系統(tǒng)兩部分組成。發(fā)射系統(tǒng)對一個紅外輻射源進(jìn)行調(diào)制后發(fā)射紅外信號,而接收系統(tǒng)用光學(xué)裝置和紅外探測器進(jìn)行接收,就構(gòu)成紅外通信系統(tǒng)。紅外線是波長在 750nm 至 1mm 之間的電磁波,它的頻率高于微波而低于可見光,是一種人的眼睛看不到的光線。紅外通信一般采用紅外波段內(nèi)的近紅外線,波長在 0.75um 至 25um 之間。紅外數(shù)據(jù)

10、協(xié)會(irda)成立后,為了保證不同廠商的紅外產(chǎn)品能夠獲得最佳的通信效果,紅外通信協(xié)議將紅外數(shù)據(jù)通信所采用的光波波長的范圍限定在 850 至 900nm 之內(nèi)。紅外通信的基本原理是發(fā)送端將基帶二進(jìn)制信號調(diào)制為一系列的脈沖串信號(載波信號) ,通過紅外發(fā)射管發(fā)射紅外信號。常用的有通過脈沖寬度來實(shí)現(xiàn)信號調(diào)制的脈寬調(diào)制(pwm)和通過脈沖串之間的時間間隔來實(shí)現(xiàn)信號調(diào)制的脈時調(diào)制(ppm)兩種方法。脈時調(diào)制(ppm)是紅外數(shù)據(jù)協(xié)會(irda)和國際電子電工委員會(ieee)都推薦的調(diào)制方式,本設(shè)計(jì)采用 ppm 調(diào)制方法,即用兩個脈沖串之間的時間間隔來表示二進(jìn)制信息,數(shù)據(jù)比特的傳送仿照不帶奇偶校驗(yàn)6的

11、rs232 通信,首先產(chǎn)生一個同步頭,然后接著 8 位數(shù)據(jù)比特。如圖 2.1 所示。圖 2.1 ppm 調(diào)制波形圖普通的紅外遙控采用面向指令的幀結(jié)構(gòu),數(shù)據(jù)幀由同步碼,地址碼和指令碼組成,指令碼長度多為 816 個比特,傳送多字節(jié)遙控協(xié)議時效率偏低,而增加指令碼的長度不利于接收器同步,為此本設(shè)計(jì)選用一種面向字節(jié)的幀結(jié)構(gòu),采用類似于異步串行通信的幀結(jié)構(gòu),每幀由一個起始位(二進(jìn)制數(shù) 0) 、8 個數(shù)據(jù)位和 2 個停止位(二進(jìn)制數(shù) 1)構(gòu)成,如圖 2.2 所示。每幀傳送 1 個字節(jié)的數(shù)據(jù),幀與幀間隔大于 2ms,幀結(jié)構(gòu)不含地址信息,尋址問題由高層協(xié)議解決8。圖 2.2 數(shù)據(jù)幀結(jié)構(gòu)示意圖由于紅外光存在反

12、射,在全雙工的方式下發(fā)送的信號也可能會被本身接收,因此,紅外通信應(yīng)采用異步半雙工方式,即通信的某一方發(fā)送和接收是交替進(jìn)行的。72.22.2 紅外遙控系統(tǒng)結(jié)構(gòu)紅外遙控系統(tǒng)結(jié)構(gòu)紅外遙控系統(tǒng)主要分為調(diào)制、發(fā)射和接收三部分,如圖 2.3 所示:圖 2.32.2.1 調(diào)制紅外遙控發(fā)射數(shù)據(jù)時采用調(diào)制的方式,即把數(shù)據(jù)和一定頻率的載波進(jìn)行“與”操作,這樣可以提高發(fā)射效率和降低電源功耗。調(diào)制載波頻率一般在 30khz 到 60khz 之間,大多數(shù)使用的是 38khz,占空比1/3 的方波,如圖 2.4 所示,這是由發(fā)射端所使用的455khz 晶振決定的。在發(fā)射端要對晶振進(jìn)行整數(shù)分頻,分頻系數(shù)一般取 12,所以

13、455khz1237.9 khz38khz。圖 2.4 載波波形 2.2.2 發(fā)射系統(tǒng)目前有很多種芯片可以實(shí)現(xiàn)紅外發(fā)射,可以根據(jù)選擇發(fā)出不同種類的編碼。由于發(fā)射系統(tǒng)一般用電池供電,這就要求芯片的功耗要很低,芯片大多都設(shè)計(jì)成可以處于休眠狀態(tài),當(dāng)有按鍵按下時才工作,8這樣可以降低功耗芯片所用的晶振應(yīng)該有足夠的耐物理撞擊能力,不能選用普通的石英晶體,一般是選用陶瓷共鳴器,陶瓷共鳴器準(zhǔn)確性沒有石英晶體高,但通常一點(diǎn)誤差可以忽略不計(jì)。紅外線通過紅外發(fā)光二極管(led)發(fā)射出去,紅外發(fā)光二極管內(nèi)部材料和普通發(fā)光二極管不同,在其兩端施加一定電壓時,它發(fā)出的是紅外線而不是可見光。圖 2.5a 簡單驅(qū)動電路 圖

14、 2.5b 射擊輸出驅(qū)動電路如圖 2.5a 和圖 2.5b 是 led 的驅(qū)動電路,圖 3a 是最簡單電路, 選用元件時要注意三極管的開關(guān)速度要快,還要考慮到 led 的正向電流和反向漏電流,一般流過 led 的最大正向電流為 100ma,電流越大,其發(fā)射的波形強(qiáng)度越大。圖 2.5a 電路有一點(diǎn)缺陷,當(dāng)電池電壓下降時,流過 led 的電流會降低,發(fā)射波形強(qiáng)度降低,遙控距離就會變小。圖 2.5b 所示的射極輸出電路可以解決這個問題,兩個二極管把三級管基極電壓鉗位在 1.2v左右,因此三級管發(fā)射極電壓固定在 0.6v 左右,發(fā)射極電流 ie 基本不變,根據(jù) ieic,所以流過 led 的電流也基本

15、不變,這樣保證了當(dāng)電池電壓降低時還可以保證一定的遙9控距離。2.2.3 一體化紅外接收頭紅外接收電路通常被廠家集成在一個元件中,成為一體化紅外接收頭。內(nèi)部電路包括紅外監(jiān)測二極管,放大器,限副器,帶通濾波器,積分電路,比較器等。紅外監(jiān)測二極管監(jiān)測到紅外信號,然后把信號送到放大器和限幅器,限幅器把脈沖幅度控制在一定的水平,而不論紅外發(fā)射器和接收器的距離遠(yuǎn)近。交流信號進(jìn)入帶通濾波器,帶通濾波器可以通過 30khz 到 60khz 的負(fù)載波,通過解調(diào)電路和積分電路進(jìn)入比較器,比較器輸出高低電平,還原出發(fā)射端的信號波形。注意輸出的高低電平和發(fā)射端是反相的,這樣的目的是為了提高接收的靈敏度。一體化紅外接收

16、頭,如圖 2.6 所示: 圖 2.6 紅外接收頭 紅外接收頭的種類很多,引腳定義也不相同,一般都有三個引腳,包括供電腳,接地和信號輸出腳。根據(jù)發(fā)射端調(diào)制載波的不同應(yīng)選用相應(yīng)解調(diào)頻率的接收頭。本設(shè)計(jì)選擇 hx1383,因?yàn)槠湫詢r(jià)比較高,且易于購得,如圖 2.7:10圖 2.7 紅外接收頭內(nèi)部放大器的增益很大,很容易引起干擾,因此在接收頭的供電腳上須加上濾波電容,一般在 22uf 以上。有的廠家建議在供電腳和電源之間接入 330 歐電阻,進(jìn)一步降低電源干擾。2.3 紅外編碼格式紅外編碼格式遙控發(fā)射器專用芯片很多,紅外遙控的編碼目前廣泛使用的是:nec protocol 的 pwm(脈沖寬度調(diào)制)和

17、 philips rc-5 protocol 的 ppm,本設(shè)計(jì)基于 nec 協(xié)議。其編碼特征如下:1、8 位地址和 8 位指令長度; 2、地址和命令 2 次傳輸(確??煽啃裕?3、pwm 脈沖位置調(diào)制,以發(fā)射紅外載波的占空比代表“0”和“1” ; 4、載波頻率為 38khz; 5、位時間為 1.125ms 或 2.25ms; nec 碼的位定義:一個脈沖對應(yīng) 560us 的連續(xù)載波,一個邏輯 1 傳輸需要 2.25ms(560us 脈沖+1680us 低電平) ,占空比 1/4;一個邏輯 0 的傳輸11需要 1.125ms(560us 脈沖+560us 低電平),占空比 1/2。而遙控接收頭

18、在收到脈沖的時候?yàn)榈碗娖?,在沒有脈沖的時候?yàn)楦唠娖?,這樣,我們在接收頭端收到的信號為:邏輯 1 應(yīng)該是 560us 低+1680us 高,邏輯 0 應(yīng)該是 560us 低+560us 高。 如圖 2.8 圖 2.8nec 遙控指令的數(shù)據(jù)格式為:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。同步碼由一個 9ms 的低電平和一個 4.5ms 的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是 8 位數(shù)據(jù)格式。按照低位在前,高位在后的順序發(fā)送。采用反碼是為了增加傳輸?shù)目煽啃裕捎糜谛r?yàn)) 。如圖 2.9 圖 2.9重復(fù)碼:一個命令只發(fā)送一次,即使遙控器上的按鍵一直按著。但是會每 110ms 發(fā)送一

19、次代碼,直到遙控器按鍵釋放。如圖 2.1012 圖 2.10重復(fù)碼比較簡單:一個 9ms 的 agc 脈沖、2.25ms 間隔、560us 脈沖。如圖 2.11圖 2.11本設(shè)計(jì)采用網(wǎng)上購買的 lc7641 芯片為內(nèi)核的小型遙控器作為發(fā)送端,其編碼基于 nec 協(xié)議。接收端為 hx1383,數(shù)據(jù)流入 51 單片機(jī)解碼。第第 3 3 章章 硬件電路設(shè)計(jì)硬件電路設(shè)計(jì)3.13.1 整系統(tǒng)框圖整系統(tǒng)框圖13 at89c51lcd繼電器led44 鍵盤復(fù)位電路接收部分系統(tǒng)主要由 at89c51(51 系列)、lcd、繼電器、led、44 矩陣鍵盤、復(fù)位電路等組成。由紅外接收頭 hx1383 接收信號,數(shù)

20、據(jù)流入 51 單片機(jī)解碼。發(fā)送部分本設(shè)計(jì)采用網(wǎng)上購買的 lc7641 芯片為內(nèi)核的小型遙控器作為發(fā)送端,其編碼基于 nec 協(xié)議。3.23.2 紅外發(fā)送紅外發(fā)送/ /接收接收3.2.13.2.1 紅外遙控器紅外遙控器發(fā)送部分本設(shè)計(jì)采用網(wǎng)上購買的 lc7641 芯片為內(nèi)核的小型遙控器作為發(fā)送端,其編碼基于 nec 協(xié)議。14圖 3-11.外型尺寸:1.1 鍵數(shù): 1-18 鍵1.2 主尺寸:86mm長38mm寬6mm厚2.材質(zhì):2.1 面貼:0.125mmpet 光面面料2.2 外殼:abs 料黑色2.3 電池:cr20253v2.4 按鍵彈力:180-230 克力 3.控制角度:3.1 有效發(fā)

21、射角度:30 度4.控制距離:4.1 有效距離8m5.按鍵壽命測試:5.1 3 萬次以上遙控器技術(shù)參數(shù)及標(biāo)準(zhǔn) 項(xiàng)目 單位 測試條件 最小值 標(biāo)準(zhǔn)值 最大值 靜態(tài)電流 ua 無鍵按下 5 10 動態(tài)電流 ma 鍵按下時 6 12 發(fā)射距離 m 沿光軸方向 8 30 度自選范圍 6 工作電壓 v 2.2 3 3.5 振蕩頻率 khz 可定制 455 15 栽波頻率 khz 可定制 38khz 紅外波長 nm 940 功能鍵數(shù) 18 適用環(huán)境溫度 -10 25 40 相對溫度 rh 40 903.2.2紅外接收頭圖 32規(guī)格:規(guī)格:hx1838(hx1838(鐵殼鐵殼) )寬電壓適應(yīng)、低功耗、高靈敏

22、度、優(yōu)良的抗干擾特性;應(yīng)用廣泛:家用電器、空調(diào)、玩具等紅外遙控接收;極限參數(shù):極限參數(shù): 電源電壓vcc (v) 6.0工作溫度topr () -25 +85功 耗pd(mw)35儲存溫度tstg () -40 +125光電參數(shù):光電參數(shù): (t=25 vcc=5v f0=38khz) 16 參參 數(shù)數(shù)符號符號測試條件測試條件mintypemax單單 位位 工作電壓 vcc 2.7 5.5 v 接收距離 ll5ir5 if =300ma(測試信號) 10 17 m 載波頻率 f0 38k hz 接收角度 1/2 距離衰減 1/2 +/-45 deg bmp 寬度 fbw -3db bandwi

23、dth 2 3.3 5khz 靜態(tài)電流 icc 無信號輸入時 - 0.8 1.5 ma 低電平輸出 vol vin=0v vcc=5v 0.2 0.4 v高電平輸出 vohvcc=5v 4.5 vcc v tpwl vin=500vp-p 500 600 700 s輸出脈沖 寬 度 tpwh vin=50mvp-p 500 600 700 s:光軸上測試,以寬度為 600/900s 為發(fā)射脈沖,在 5cm 之接收范圍內(nèi),取 50 次接收脈沖之平均值(參見測試波形) 。測試波形:測試波形:圖 3317電原理框圖:電原理框圖: 圖 3-53.3 單片機(jī)單片機(jī) at89c51 簡介簡介at89c51

24、 是美國 atmel 公司生產(chǎn)的低電壓,高性能 cmos8 位單片機(jī),片內(nèi)含 4k bytes 的可反復(fù)擦寫的只讀程序存儲器(eprom)和 128bytes 的隨機(jī)存取數(shù)據(jù)序存器(ram) ,器件采用 atmel 公司的高密度/非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn) mcs-51 指令系統(tǒng),片內(nèi)置通用 8 位中央處理器(cpu)和flash 存儲單元,at89c51 單片機(jī)為許多嵌入式控制系統(tǒng)提供了一種靈活行高且價(jià)廉的方案。3.3.1 主要特性主要特性 8031 cpu 與 mcs-51 兼容 4k 字節(jié)可編程 flash 存儲器(壽命:1000 寫/擦循環(huán)) 全靜態(tài)工作:0hz-24khz 三級程

25、序存儲器保密鎖定 128*8 位內(nèi)部 ram 32 條可編程 i/o 線 兩個 16 位定時器/計(jì)數(shù)器 6 個中斷源 圖 36 可編程串行通道18 低功耗的閑置和掉電模式 片內(nèi)振蕩器和時鐘電路 3.3.2 管腳說明管腳說明vcc:供電電壓。 gnd:接地。 p0 口:p0 口為一個 8 位漏級開路雙向 i/o 口,每腳可吸收 8ttl 門電流。當(dāng)p1 口的管腳第一次寫 1 時,被定義為高阻輸入。p0 能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在 fiash 編程時,p0 口作為原碼輸入口,當(dāng) fiash 進(jìn)行校驗(yàn)時,p0 輸出原碼,此時 p0 外部必須被拉高。 p1 口:p

26、1 口是一個內(nèi)部提供上拉電阻的 8 位雙向 i/o 口,p1 口緩沖器能接收輸出 4ttl 門電流。p1 口管腳寫入 1 后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在 flash編程和校驗(yàn)時,p1 口作為第八位地址接收。 p2 口:p2 口為一個內(nèi)部上拉電阻的 8 位雙向 i/o 口,p2 口緩沖器可接收,輸出 4 個 ttl 門電流,當(dāng) p2 口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,p2 口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2 口當(dāng)用于外部程序存儲器或 16 位地址外部數(shù)據(jù)存儲器進(jìn)行存

27、取時,p2 口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,p2 口輸出其特殊功能寄存器的內(nèi)容。p2 口在 flash 編程和校驗(yàn)時接收高八位地址信號和控制信號。 p3 口:p3 口管腳是 8 個帶內(nèi)部上拉電阻的雙向 i/o 口,可接收輸出 4 個 ttl門電流。當(dāng) p3 口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3 口將輸出電流(ill)這是由于上拉的緣故。 p3 口也可作為 at89c51 的一些特殊功能口,如下表所示:管腳 備選功能:p3.0 rxd(串行輸入口)p3.1 txd(串行輸出口)p

28、3.2 /int0(外部中斷 0)p3.3 /int1(外部中斷 1)p3.4 t0(記時器 0 外部輸入)p3.5 t1(記時器 1 外部輸入)p3.6 /wr(外部數(shù)據(jù)存儲器寫選通)19p3.7 /rd(外部數(shù)據(jù)存儲器讀選通)p3 口同時為閃爍編程和編程校驗(yàn)接收一些控制信號。 rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持 rst 腳兩個機(jī)器周期的高電平時間。ale/prog:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在 flash 編程期間,此引腳用于輸入編程脈沖。在平時,ale 端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的 1/6。因此它可用作對外部輸出

29、的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個 ale 脈沖。如想禁止 ale 的輸出可在 sfr8eh 地址上置0。此時, ale 只有在執(zhí)行 movx,movc 指令是 ale 才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài) ale 禁止,置位無效。 /psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次/psen 有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/psen信號將不出現(xiàn)。 /ea/vpp:當(dāng)/ea 保持低電平時,則在此期間外部程序存儲器(0000h-ffffh),不管是否有內(nèi)部程序存儲器。注意加密方式 1 時

30、,/ea 將內(nèi)部鎖定為 reset;當(dāng)/ea 端保持高電平時,此間內(nèi)部程序存儲器。在 flash 編程期間,此引腳也用于施加 12v 編程電源(vpp)。 xtal1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 xtal2:來自反向振蕩器的輸出。3.3.3 震蕩特性震蕩特性xtal1 和 xtal2 分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,xtal2 應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。3.3.4 芯片擦除芯片擦除整個 pe

31、rom 陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持 ale 管腳處于低電平 10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。 此外,at89c51 設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,cpu 停止工作。但 ram,定時器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存 ram 的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復(fù)位為止。203.4 44 矩陣鍵盤矩陣鍵盤如圖所示,本系統(tǒng)采用 44 矩陣鍵盤,16 個按鍵分為輸入數(shù)字鍵: 0、 1、2、3、4

32、、5、6、7、8、9;功能鍵 lock、modify、cel、enter。矩陣鍵盤。圖 373.5 復(fù)位電路復(fù)位電路圖 38時鐘電路工作后,在 rest 管腳上加兩個機(jī)器周期的高電平,芯片內(nèi)部開始進(jìn)行初始復(fù)位(如圖 38) 。3.63.6 振蕩電路振蕩電路21圖 39本設(shè)計(jì)晶振選擇頻率為 12mhz,電容選擇 30pf 如圖(39)。經(jīng)計(jì)算得單片機(jī)工作胡機(jī)器周期為:12(112m)=1us。3.7 1602 液晶顯示液晶顯示圖 3-10lcd1602 可顯示兩行英文字符,并且內(nèi)帶 ascii 字符庫。lcd1602 模塊內(nèi)部可以完成顯示掃描,單片機(jī)只要向 lcd1602 發(fā)送命令和顯示內(nèi)容的

33、ascii 碼。表表 3-1 引腳功能說明引腳功能說明引引腳腳符號符號功能說明功能說明221vss一般接地2vdd接電源(+5v)3v0液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產(chǎn)生“鬼影”,可以通過一個 10k 的電位器調(diào)整對比度) 。4rsrs 為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。5r/wr/w 為讀寫信號線,高電平(1)時進(jìn)行讀操作,低電平(0)時進(jìn)行寫操作。6ee(或 en)端為使能(enable)端,下降沿使能。7db0底 4 位三態(tài)、 雙向數(shù)據(jù)總線 0 位(最低位)8db1底 4 位三態(tài)、 雙向數(shù)據(jù)總線 1 位9db

34、2底 4 位三態(tài)、 雙向數(shù)據(jù)總線 2 位10db3底 4 位三態(tài)、 雙向數(shù)據(jù)總線 3 位11db4高 4 位三態(tài)、 雙向數(shù)據(jù)總線 4 位12db5高 4 位三態(tài)、 雙向數(shù)據(jù)總線 5 位13db6高 4 位三態(tài)、 雙向數(shù)據(jù)總線 6 位14db7高 4 位三態(tài)、 雙向數(shù)據(jù)總線 7 位(最高位) (也是 busy flag)15bla背光電源正極16blk背光 電源負(fù)極圖 3.11 lcd1602 引腳圖表表 3-2 寄存器選擇控制表寄存器選擇控制表rsr/w操作說明操作說明00寫入指令寄存器(清除屏等)01讀 busy flag(db7) ,以及讀取位址計(jì)數(shù)器(db0db6)值10寫入數(shù)據(jù)寄存器(

35、顯示各字型等)11從數(shù)據(jù)寄存器讀取數(shù)據(jù)231602 液晶模塊內(nèi)部的字符發(fā)生存儲器(cgrom)已經(jīng)存儲了 160 個不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“a”的代碼是 01000001b(41h) ,顯示時模塊把地址 41h 中的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“a”。因?yàn)?1602 識別的是 ascii 碼,試驗(yàn)可以用 ascii 碼直接賦值,在單片機(jī)編程中還可以用字符型常量或變量賦值,如a。圖 3.9 是 1602 的 16 進(jìn)制 ascii 碼值:讀的時候,先讀上面那列,再讀左邊那行

36、,如:感嘆號!的 ascii 為0 x21,字母 b 的 ascii 為 0 x42(前面加 0 x 表示十六進(jìn)制) 。圖 3.12 1602 的 16 進(jìn)制 ascii 碼值表表 3-3 顯示地址顯示地址1234567891011121314151600h01h02h03h04h05h06h07h08h09h0ah0bh0ch0dh0eh0fh40h41h42h43h44h45h46h47h48h49h4ah4bh4ch4dh4eh4fh24指令集1602 通過 d0d7 的 8 位數(shù)據(jù)端傳輸數(shù)據(jù)和指令。顯示模式設(shè)置: (初始化)0011 0000 0 x38 設(shè)置 162 顯示,57 點(diǎn)陣

37、,8 位數(shù)據(jù)接口;顯示開關(guān)及光標(biāo)設(shè)置: (初始化)0000 1dcb d 顯示(1 有效)、c 光標(biāo)顯示(1 有效)、b 光標(biāo)閃爍(1 有效)0000 01ns n=1(讀或?qū)懸粋€字符后地址指針加 1 &光標(biāo)加 1),n=0(讀或?qū)懸粋€字符后地址指針減 1 &光標(biāo)減 1),s=1 且 n=1 (當(dāng)寫一個字符后,整屏顯示左移)s=0 當(dāng)寫一個字符后,整屏顯示不移動數(shù)據(jù)指針設(shè)置:數(shù)據(jù)首地址為 80h,所以數(shù)據(jù)地址為 80h+地址碼(0-27h,40-67h)其他設(shè)置:01h(顯示清屏,數(shù)據(jù)指針=0,所有顯示=0);02h(顯示回車,數(shù)據(jù)指針=0)。通常推薦的初始化過程:延時 15m

38、s寫指令 38h延時 5ms寫指令 38h延時 5ms寫指令 38h延時 5ms(以上都不檢測忙信號)(以下都要檢測忙信號)寫指令 38h寫指令 08h 關(guān)閉顯示寫指令 01h 顯示清屏寫指令 06h 光標(biāo)移動設(shè)置寫指令 0ch 顯示開及光標(biāo)設(shè)置253.8 發(fā)光二極管發(fā)光二極管 led圖 313由于 led 使用的是高亮的 led 所以加了一個三極管驅(qū)動如圖 313。3.9 繼電器繼電器26 圖 314在繼電器的使用中要注意的就是電流的驅(qū)動還有由于繼電器內(nèi)部是電感所以應(yīng)加一個二極管泄流如圖 314。3.10 24c02圖 315 由于只有一個 24c02 所以只需把 a0,a1,a2 接地,按

39、照 i2c 協(xié)議,scl,sda需接 10k 上拉電阻27at24c02at24c02at24c02 是美國 atmel 公司的低功耗 cmos 串行 eeprom,它是內(nèi)含 2568 位存儲空間,具有工作電壓寬(2.55.5v) 、擦寫次數(shù)多(大于 10000 次) 、寫入速度快(小于 10ms)等特點(diǎn)。1、特性與400khz i2c 總線兼容2.5 到5.5 伏工作電壓范圍低功耗cmos 技術(shù)寫保護(hù)功能當(dāng)wp 為高電平時進(jìn)入寫保護(hù)狀態(tài)頁寫緩沖器自定時擦寫周期1,000 編程/擦除周期可保存數(shù)據(jù)100 年8 腳dip soic 或tssop 封裝溫度范圍商業(yè)級工業(yè)級和汽車級2、概述at24c

40、02 是一個 2k 位串行 cmos e2prom ,部含有 256 個 8 位字節(jié),atalyst 公司的先進(jìn) cmos 技術(shù)實(shí)質(zhì)上減少了器件的功耗,cat24wc01 有一個 8 字節(jié)頁寫緩沖器 cat24wc02/04/08/16 有一個 16 字節(jié)頁寫緩沖器,器件通過 i2c 總線接口進(jìn)行操作,一個專門的寫保護(hù)功能。3、管腳配置圖 3-16 at24c02 管腳配置284、管腳描述5、極限參數(shù)工作溫度:工業(yè)級:-55c- +125c 商業(yè)級:0c- +75c儲存溫度:-65c- +150c各管腳承受電壓:-2.0v- +2.0vvcc 管腳承受電壓:-2.0v- +7.0v封裝功率損耗

41、:(ta=25c):1.0w焊接溫度(10 秒):300c輸出短路電流:100ma6、可靠性參數(shù)7、功能描述at24c01/02/04/08/16 支持 i2c 總線數(shù)據(jù)傳送協(xié)議,i2c 總線協(xié)議規(guī)定,任何將數(shù)據(jù)傳送到總線的器件作為發(fā)送器。任何從總線接收數(shù)據(jù)的器件為接收器。數(shù)據(jù)傳送是由產(chǎn)生串行時鐘和所有起始停止信號的主器件控制的。主器件和從器件都可以作為發(fā)送器或接收器,但由主器件控制傳送數(shù)據(jù)發(fā)送或接收的模式,通過器件地址輸入端 a0 a1 和 a2 可以實(shí)現(xiàn)將最多 8 個 24wc01 和24wc02 器件 4 個 242c04 器件,2 個 24wc08 器件和 1 個 24wc16 器件連

42、接到總線上。8、管腳描述29scl:串行時鐘cat24wc01/02/04/08/16 串行時鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收的時鐘,是一個輸入管腳。sda:串行數(shù)據(jù)/地址cat24wc01/02/04/08/16 雙向串行數(shù)據(jù)/地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收,sda 是一個開漏輸出管腳。a0 a1 a2:器件地址輸入端這些輸入腳用于多個器件級聯(lián)時設(shè)置器件地址,當(dāng)這些腳懸空時默認(rèn)值為0 24wc01 除外。當(dāng)使用 24wc01 或 24wc02 時最大可級聯(lián) 8 個器件,如果只有一個 24wc02 被總線尋址,這三個地址輸入腳 a0 a1 a2 可懸空或連接到 vss, 如果只有

43、一個 24wc01 被總線尋址,這三個地址輸入腳 a0 a1 a2 必須連接到vss。當(dāng)使用 24wc04 時,最多可連接 4 個器件該器件,僅使用 a1 a2 地址管腳,a0 管腳未用可以連接到 vss 或懸空,如果只有一個 24wc04 被總線尋址,a1 和 a2 地址管腳可懸空或連接到 vss。wp:寫保護(hù)如果 wp 管腳連接到 vcc, 所有的內(nèi)容都被寫保護(hù)只能讀,當(dāng) wp 管腳連接到 vss 或懸空,允許器件進(jìn)行正常的讀/寫操作。9、i2c 總線協(xié)議i2c 總線協(xié)議定義如下只有在總線空閑時才允許啟動數(shù)據(jù)傳送。在數(shù)據(jù)傳送過程中,當(dāng)時鐘線為高電平時,數(shù)據(jù)線必須保持穩(wěn)定狀態(tài)不允許有跳變,時

44、鐘線為高電平時,數(shù)據(jù)線的任何電平變化將被看作總線的起始或停止信號。起始信號:時鐘線保持高電平期間數(shù)據(jù)線電平從高到低的跳變作為i2c 總線的起始信號。停止信號:時鐘線保持高電平期間數(shù)據(jù)線電平從低到高的跳變作為i2c 總線的停止信號。30圖 3-17 總線時序圖 3-18 寫周期時序圖 3-19 起始/停止時序10、器件尋址 主器件通過發(fā)送一個起始信號啟動發(fā)送過程,然后發(fā)送它所要尋址的從器件的地址,8 位從器件地址的高 4 位固定為 1010,接下來的 3 位 a2 a1 a0 為器件的地址位用來定義哪個器件以及器件的哪個部分被主器件訪問。上述 8 個cat24wc01/02,4 個 cat24w

45、c04,2 個 cat24wc08,1 個 cat24wc16 可單獨(dú)被系統(tǒng)尋址。從器件 8 位地址的最低位作為讀寫控制位,1 表示對從器件進(jìn)行讀操作,0 表示對從器件進(jìn)行寫操作,在主器件發(fā)送起始信號和從器件地址字節(jié)后,cat24wc01/02/04/08/16 監(jiān)視總線并當(dāng)其地址與發(fā)送的從地址相符時,響應(yīng)一個應(yīng)答信號通過 sda ,cat24wc01/02/04/08/16 再根據(jù)讀寫控制位 r/w 的狀態(tài)進(jìn)行讀或?qū)懖僮?,?yīng)答信號 i2c 總線數(shù)據(jù)傳送時每成功地傳送一個字節(jié)數(shù)據(jù)后,31接收器都必須產(chǎn)生一個應(yīng)答信號應(yīng)答的器件,在第 9 個時鐘周期時將 sda 線拉低,表示其已收到一個 8 位數(shù)

46、據(jù)。cat24wc01/02/04/08/16 在接收到起始信號和從器件地址之后響應(yīng)一個應(yīng)答信號,如果器件已選擇了寫操作,則在每接收一個 8 位字節(jié)之后響應(yīng)一個應(yīng)答信號。當(dāng) cat24wc01/02/04/08/16 工作于讀模式時,在發(fā)送一個 8 位數(shù)據(jù)后釋放 sda 線并監(jiān)視一個應(yīng)答信號,一旦接收到應(yīng)答信號 cat24wc01/02/04/08/16 ,繼續(xù)發(fā)送數(shù)據(jù),如主器件沒有發(fā)送應(yīng)答信號,器件停止傳送數(shù)據(jù)且等待一個停止信號。圖 3-20 應(yīng)答時序圖 3-21 從器件地址位a0 a1 和 a2 對應(yīng)器件的管腳 1 、2 和 3a8 a9 和 a10 對應(yīng)存儲陣列地址字地址11、寫操作32

47、字節(jié)寫:在字節(jié)寫模式下,主器件發(fā)送起始命令和從器件地址信息r/w 位置零給從器件,在從器件產(chǎn)生應(yīng)答信號后,主器件發(fā)送cat24wc01/02/04/08/16 的字節(jié)地址,主器件在收到從器件的另一個應(yīng)答信號后再發(fā)送數(shù)據(jù)到被尋址的存儲單,at24wc01/02/04 /08/16再次應(yīng)答并在主器件產(chǎn)生停止信號后開始內(nèi)部數(shù)據(jù)的擦寫,在內(nèi)部擦寫過程中ca t24wc0 1/02/04/08/16 不再應(yīng)答主器件的任何請求。圖3-22 字節(jié)寫時序12、讀操作對cat24wc01/02/04/08/16 讀操作的初始化方式和寫操作時一樣僅把r/w 位置為1 有三種不同的讀操作方式立即地址讀、選擇讀和連續(xù)

48、讀。立即地址讀:cat24wc01/02/04/08/16 的地址計(jì)數(shù)器內(nèi)容為最后操作字節(jié)的地址加1,也就是說如果上次讀/寫的操作地址為n,則立即讀的地址從地址n+1開始。如果n=e,這里對24wc01 e=127、對24wc02 e=255、對24wc04 e=511、對24wc08 e=1023、對24wc16 e=2047 則計(jì)數(shù)器將翻轉(zhuǎn)到0且繼續(xù)輸出數(shù)據(jù)。cat24wc01/02/04/08/16 接收到從器件地址信號后r/w 位置1 ,它首先發(fā)送一個應(yīng)答,信號然后發(fā)送一個8 位字節(jié),數(shù)據(jù)主器件不需發(fā)送一個應(yīng)答信號但要產(chǎn)生一個停止信號。 33圖 3-23 立即地址讀時序3.11 元器件

49、列表元器件列表元器件元器件規(guī)格規(guī)格/型號型號數(shù)量數(shù)量lcd16021繼電器hrs4h-s-dc121三極管sr90132紅外接收頭18381電阻27k8電阻10k3電阻1k1電解電容0.47uf/50v1瓷片電容30pf2單片機(jī)at89c511eeprom24c021usb 接口母口1按鍵x16ledx4 34第四章第四章 系統(tǒng)的軟件設(shè)計(jì)系統(tǒng)的軟件設(shè)計(jì)設(shè)計(jì)綜述設(shè)計(jì)綜述:此設(shè)計(jì)能實(shí)現(xiàn)通過紅外發(fā)送進(jìn)行密碼的解鎖,同時在開鎖終端設(shè)備上也能進(jìn)行解鎖的操作,并修改密碼和儲存密碼。所以,軟件設(shè)計(jì)也根據(jù)需求相應(yīng)分成幾個模塊。下面一一列舉程序流程圖:程序流程圖:35。5.1 紅外發(fā)射編碼部分紅外發(fā)射編碼部分紅

50、外發(fā)射部分使用現(xiàn)成的紅外遙控板發(fā)射,編碼已知,故省略。5.2 紅外接收解碼部分紅外接收解碼部分1 單片機(jī)解碼過程單片機(jī)解碼過程 單片機(jī)外中斷 0 以中斷方式檢測紅外信號的第一個下降沿。 單片機(jī)檢測到引導(dǎo)碼后,延時屏蔽引導(dǎo)碼(9ms 低電平和 4.5ms 低電平) 引導(dǎo)碼屏蔽后,等待 16 位系統(tǒng)識別碼的第一位數(shù)據(jù),當(dāng)其上升沿到來時,延時 882us(為了保證數(shù)據(jù)的準(zhǔn)確性,每位數(shù)據(jù)的時間間隔介于5651125us 之間,這里選擇 882us)后讀取電平狀態(tài):若為低電平,等待下一位數(shù)據(jù)的上升沿;若為高電平,則延時 1ms 后等待下一位數(shù)據(jù)的上升沿。依次循環(huán),直到 16 位系統(tǒng)識別碼讀完為止。 16

51、 位系統(tǒng)識別碼檢測結(jié)束后,等待 8 位原碼和 8 位反碼的第一位數(shù)據(jù),當(dāng)上升沿到來時,延時 882us 后讀取電平的狀態(tài):若為低電平,保存位數(shù)據(jù)“0” ,然后等待下一位數(shù)據(jù)的上升沿;若為高電平,保存位數(shù)據(jù)“1” ,且延時 1ms 后等待下一位數(shù)據(jù)的上升沿。依次循環(huán),直到 8 位原碼和 8 位反碼數(shù)據(jù)讀完,將 8 位原碼數(shù)據(jù)取反后與原碼數(shù)據(jù)比較:若相等,則保存原碼數(shù)據(jù),完成解碼;若不相等,則退出解碼。2.紅外解碼程序代碼紅外解碼程序代碼/紅外接收程序頭文件#ifndef _remote_h#define _remote_h/-/ 數(shù)據(jù)類型宏定義/-#define uchar unsigned c

52、har#define uint unsigned int/-/ i/o 口定義/-36sbit hongwai = p32; / 紅外接收數(shù)據(jù)線/-/ 外部變量聲明/-extern uchar ch; / 紅外原碼數(shù)據(jù)存放單元extern bit intx0f; / 初始為 0;為 1 表示響應(yīng)外 0 中斷extern bit irvalidf; / 紅外解碼解碼有效標(biāo)志位,為 1 表示有效/-/ 外部函數(shù)聲明/-extern void delay_1ms (unsigned char t);/ 時基為 1ms 的延時extern void delay_882us(void); / 時基為 8

53、82us 的延時extern void decoder (void); / 遙控解碼extern void intx0_isr (void); / 外 0 中斷服務(wù)程序,接收到紅外信號(下降沿)響應(yīng)中斷#endif/紅外接收子程序/說明:單片機(jī)使用晶振為 12mhz#include #include #include remote.h/-/ 全局變量:內(nèi) ram 存儲單元定義/-uchar ch; / 紅外原碼數(shù)據(jù)存放單元/-/ 全局變量:內(nèi) ram 位定義/-bit intx0f; / 初始為 0;為 1 表示響應(yīng)外 0 中斷bit irvalidf; / 紅外解碼解碼有效標(biāo)志位,為 1 表

54、示有效/-/ 功能程序區(qū)/-/-/ void delay_1ms (unsigned char t)/-/ 函數(shù)功能: 時基為 1ms 的延時/ 例子提示: 調(diào)用 delay_1ms(20),得到 20ms 延時/ 入口參數(shù): 無符號 8bit 整數(shù)/ 返回參數(shù): 無/ 全局變量: 無 37/ 調(diào)用模塊: 無/ 注意事項(xiàng): 基于使用外 12mhz 晶振的標(biāo)準(zhǔn) 8051(如 at89s51)單片機(jī)/* 令 x=165,y=2,n=1,則延時時間 =3y+(n+2)xy+3*t+5t=(999t+5)t 單位: 1sysclk sysclk=12mhz 誤差delay_1ms(1):延時 1 00

55、4 1.004ms 4usdelay_1ms(2):延時 2 003 2.003ms 3usdelay_1ms(3):延時 3 002 3.002ms 2usdelay_1ms(5):延時 5 000 5.000ms 0usdelay_1ms(10):延時 9 995 9.995ms 5usdelay_1ms(20):延時 19 985 19.985ms 15usdelay_1ms(40):延時 39 965 39.965ms 35usdelay_1ms(60):延時 59 945 59.945ms 55usdelay_1ms(100):延時 99 905 99.905ms 95usdelay

56、_1ms(200):延時 199 805 199.805ms 195usdelay_1ms(255):延時 254 750 254.750ms 250us*/-void delay_1ms (unsigned char t)unsigned char i,j; do j = 2;do i = 165;do _nop_(); while (-i); while (-j); while (-t); /-/ void delay_882us (void)/-/ 函數(shù)功能: 時基為 882us 的延時/ 入口參數(shù): 無/ 返回參數(shù): 無/ 全局變量: 無/ 調(diào)用模塊: 無 / 注意事項(xiàng): 延時時間為

57、881us,誤差為 1us/-38void delay_882us (void) uchar i,j;for (i=20; i0; i-) for(j=20; j0; j-) ; for (i=5; i0; i-) _nop_(); /-/ void decoder (void)/-/ 函數(shù)功能: 遙控解碼/ 入口參數(shù): 無/ 返回參數(shù): 無/ 全局變量: irvalidf:紅外解碼有效標(biāo)志位,為 1 表示有效/ ch:紅外原碼數(shù)據(jù)存放單元/ 調(diào)用模塊: delay_882us();delay_1ms(unsigned char) / 注意事項(xiàng): /-void decoder (void)uc

58、har i,j;uchar tmp2; / tmp0:暫存原碼數(shù)據(jù);tmp1:暫存反碼數(shù)據(jù)irvalidf = 1; / 先設(shè)紅外解碼有效for (i=0; i10; i+)/ 循環(huán) 10 次,檢測在 8.820ms 內(nèi)信號的電平狀態(tài)delay_882us(); / 延時 882usif (hongwai) / 若信號為高電平,則為干擾信號 irvalidf = 0; / 紅外解碼解碼無效39break;if (irvalidf)while (!hongwai); / 等待引導(dǎo)碼中的 9ms 低電平結(jié)束delay_1ms(5); / 延時 5ms,屏蔽引導(dǎo)碼中的 4.5ms高電平for (j=

59、0; j16; j+)/ 檢測 26 位系統(tǒng)識別碼while (!hongwai); / 等待系統(tǒng)識別碼第一位數(shù)據(jù)的上升沿delay_882us();/ 高電平開始后,用 882us 的時間尺檢測信號的電平狀態(tài)if (hongwai) / 若該信號為高電平,則延時 1ms等待高電平結(jié)束delay_1ms(1);/ 延時 1ms for (i=0; i2; i+) / 接收原碼和反碼數(shù)據(jù)并暫存 for (j=0; j= 1; / 先接收低位數(shù)據(jù)if (hongwai) / 若該信號為高電平,則延時 1ms 等待高電平結(jié)束delay_1ms(1); / 延時 1ms tmpi = tmpi | 0

60、 x80; / 暫存信號此時的電平狀態(tài) if (tmp0 = tmp1) / 將原碼取反后與反碼進(jìn)行比較,若兩者的值相同則完成解碼ch = tmp0; / 保存原碼數(shù)據(jù)else 40irvalidf = 0;/ 若原碼和反碼不等,則本次接收的數(shù)據(jù)無效 /-/ 中斷服務(wù)子程序/-/-/ void intx0_isr (void)/-/ 函數(shù)功能: 外 0 中斷服務(wù)程序,接收到紅外信號(下降沿)響應(yīng)中斷/ 入口參數(shù): 無/ 出口參數(shù): 無/ 全局變量: intx0f:初始為 0;為 1 表示響應(yīng)了外 0 中斷/ 調(diào)用模塊: 無 / 注意事項(xiàng): /-void intx0_isr (void) interrupt 0

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論