版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 基于單片機的紅外遙控密碼鎖設計</p><p><b> 1 緒論 </b></p><p> 1.1 課題背景及目的</p><p> 電子技術的飛速發(fā)展,給古老的鎖具生產(chǎn)帶來了巨大的變革,現(xiàn)代的電子技術與機械技術相結合,產(chǎn)生了一大批如聲控鎖、磁控鎖、密碼鎖、遙控鎖,指紋鎖等先進的鎖具。 </p>&
2、lt;p> 目前國內外密碼鎖系統(tǒng)的主要方向的發(fā)展是:接觸式密碼鎖系統(tǒng),非接觸式密碼鎖系統(tǒng),智能識別密碼鎖系統(tǒng),但是他們都相應的存在著不同的缺點。例如:接觸式密碼鎖系統(tǒng)成本較低,體積小,卡片本身無須電源,但使用不太方便,而且有接觸磨損。相比之下,紅外遙控密碼鎖系統(tǒng)的成本與接觸式密碼鎖系統(tǒng)相當,而且可以進行近距離遙控,使用十分方便。而且它已經(jīng)與 PC 機的數(shù)據(jù)庫相結合,可以組成一套酒店房間的門禁管理系統(tǒng)。 </p>&
3、lt;p> 由于紅外遙控具有許多優(yōu)點, 例如紅外線發(fā)射裝置采用紅外發(fā)光二極管遙控發(fā)射器易于小型化且價格低廉; 采用數(shù)字信號編碼和二次調制方式,不僅可以實現(xiàn)多路信息的控制,增加遙控功能,提高信號傳輸?shù)目垢蓴_性,減少誤動作,而且功率消耗低;紅外線不會向室外泄露,不會產(chǎn)生信號串擾;反應速度快、傳輸效率高、工作穩(wěn)定可靠等。工業(yè)設備中,在高壓、輻射、有毒氣體、粉塵等環(huán)境下,采用紅外線遙控不僅完全可靠而且能有效地隔離電氣干擾。所以紅外線遙控
4、是目前使用最廣泛的一種通信和遙控手段。 在本設計中,紅外遙控密碼鎖和 PC 機、數(shù)據(jù)庫相結合,能夠實現(xiàn)適時的、強大的管理,使得整個紅外遙控系統(tǒng)得到更好的完善。 </p><p> 1.2 國內外研究現(xiàn)狀</p><p> 目前大部分的鎖采用的都是機械式的,其最大的缺點是利用簡單工具就能很容易地把鎖打開。針對這種情況,我們設計了一種紅外遙控密碼鎖,而一般設備都采用專用的遙控編碼及解碼集成
5、電路,其制作簡單、容易,但由于特定功能的限制,只適用于專用的電器產(chǎn)品,其應用范圍受到限制。而設計的紅外遙控密碼鎖系統(tǒng)能提高門禁系統(tǒng)的可靠性和安全性,適應市場需要。該系統(tǒng)具有普通電子密碼鎖功能的同時,還增加了遙控功能。該系統(tǒng)具有較強的實際應用價值,所涉及的技術包括:紅外載波數(shù)據(jù)傳輸技術、單片機控制技術、紅外遙控系統(tǒng)編碼及譯碼技術、電路設計與演示板制作技術等。</p><p> 1.3 課題研究方法</p&g
6、t;<p> 本設計基于STC8952單片機系列,運用了兩塊單片機芯片,一片實現(xiàn)紅外解碼,一塊用來按鍵控制,數(shù)碼管顯示以及數(shù)據(jù)存儲,通過查找資料確定各個模塊的功能及實現(xiàn)方法,先在軟件上進行調試,再根據(jù)硬件修改調試軟件,最后將各個模塊合理組合在一起,達到預計的功能與目標。</p><p><b> 1.4 本章小結</b></p><p> 本章介紹
7、了紅外遙控密碼鎖技術的課題背景,紅外技術在現(xiàn)代生活中的應用以及該課題的國內外研究現(xiàn)狀,探討與確定研究本課題的方法。</p><p> 2 基本原理及方案的論證 </p><p> 2.1 紅外通訊原理</p><p> 紅外遙控是單工的紅外通信方式,本設計的紅外遙控采用以通信方式為基礎的紅外遙控,而且本設計也使用了紅外通信技術,故著重分析紅外通信的基本原理。&
8、lt;/p><p> 紅外通信是利用紅外技術實現(xiàn)兩點間的近距離保密通信和信息轉發(fā)。它一般由紅外發(fā)射和接收系統(tǒng)兩部分組成。發(fā)射系統(tǒng)對一個紅外輻射源進行調制后發(fā)射紅外信號,而接收系統(tǒng)用光學裝置和紅外探測器進行接收,就構成紅外通信系統(tǒng)。</p><p> 紅外線是波長在 750nm至1mm之間的電磁波[5],它的頻率高于微波而低于可見光,是一種人的眼睛看不到的光線。紅外通信一般采用紅外波段內的近
9、紅外線,波長在 0.75um至 25um之間。紅外數(shù)據(jù)協(xié)會(IrDA)成立后,為了保證不同廠商的紅外產(chǎn)品能夠獲得最佳的通信效果,紅外通信協(xié)議將紅外數(shù)據(jù)通信所采用的光波波長的范圍限定在 850 至 900nm之內。</p><p> 紅外通信的基本原理[6]是發(fā)送端將基帶二進制信號調制為一系列的脈沖串信號(載波信號) ,通過紅外發(fā)射管發(fā)射紅外信號。常用的有通過脈沖寬度來實現(xiàn)信號調制的脈寬調制(PWM)和通過脈沖串
10、之間的時間間隔來實現(xiàn)信號調制的脈時調制(PPM)兩種方法。脈時調制(PPM)[7,8,9,10]是紅外數(shù)據(jù)協(xié)會(IrDA)和國際電子電工委員會(IEEE)都推薦的調制方式,本設計采用脈時調制方法,即用兩個脈沖串之間的時間間隔來表示二進制信息,數(shù)據(jù)比特的傳送仿照不帶奇偶校驗的RS232 [8]通信,首先產(chǎn)生一個同步頭,然后接著 8 位數(shù)據(jù)比特。如圖 2.1所示。</p><p> 圖 2.1 PPM 調制波形圖
11、</p><p> 普通的紅外遙控采用面向指令的幀結構,數(shù)據(jù)幀由同步碼,地址碼和指令碼組成,指令碼長度多為 8~16 個比特,傳送多字節(jié)遙控協(xié)議時效率偏低,而增加指令碼的長度不利于接收器同步,為此本設計選用一種面向字節(jié)的幀結構,采用類似于異步串行通信的幀結構,每幀由一個起始位(二進制數(shù) 0) 、8 個數(shù)據(jù)位和 2 個停止位(二進制數(shù) 1)構成,如圖 2.2 所示。每幀傳送 1 個字節(jié)的數(shù)據(jù),幀與幀間隔大于 2m
12、s,幀結構不含地址信息,尋址問題由高層協(xié)議解決[8]。</p><p> 圖 2.2 數(shù)據(jù)幀結構示意圖</p><p> 由于紅外光存在反射,在全雙工的方式下發(fā)送的信號也可能會被本身接收,因此,紅外通信應采用異步半雙工方式,即通信的某一方發(fā)送和接收是交替進行的。</p><p> 2.2 89C52芯片介紹</p><p> 89C5
13、2的引腳圖如圖2.3所示</p><p> 圖2.3 89C52芯片引腳圖</p><p> 主電源及時鐘引腳--此類引腳包括電源引腳Vcc、Vss、時鐘引腳XTAL1、XTAL2。</p><p> ?。?)Vcc(40腳):接+5V電源,為單片機芯片提供電能。</p><p> ?。?)Vss(20腳)接地。</p>
14、<p> ?。?)XTAL1(19腳)在單片機內部,它是一個反向放大器的輸入端,該放大器構</p><p> 了片內的振蕩器,可提供單片機的時鐘控制信號。</p><p> ?。?)XTAL2(18腳)在單片機內部,接至上述振蕩器的反向輸出端。</p><p> 控制引腳—此類引腳包括RESET(即RSR/VPD)、ALE/PROG、PSEN、EA/V
15、PP,可以提供控制信號,有些具有復用功能。</p><p> (1)RSR/ VPD(9腳):復位信號輸入端,高電平有效,當振蕩器運行時,在此引</p><p> 加上兩個機器周期的高電平將使單片機復位(REST)。復位后應使此引腳電平保持為不高于0.5V的低電平,以保證單片機正常工作。掉電期間,此引腳可接上備用電源(VPD),以保持內部RAM中的數(shù)據(jù)不丟失。當Vcc下降到低于規(guī)定值,
16、而VPD在其規(guī)定的電壓范圍內(5±0.5V)時,VPD就向內部RAM提供備用電源。</p><p> (2)ALE/PROG(30腳):ALE為地址鎖存允許信號。當單片機訪問外部存儲器時,(地址鎖存允許)輸出脈沖的下降沿用于鎖存16位地址的低8位。即使不訪問外部存儲器,ALE端仍有周期性正脈沖輸出,其頻率為振蕩器頻率的1/6。但是每當訪問外部數(shù)據(jù)存儲器時,在兩個機器周期中ALE只出現(xiàn)一次,即丟失一個A
17、LE脈沖。ALE端可以驅動8個LSTTL負載。</p><p> ?。?)PSEN(29腳):程序存儲器允許輸出控制端。此輸出為單片內訪問外部程序存儲器的讀選通信號。在從外部程序存儲器取指令(或取常數(shù))期間,每個機器周期均PSEN兩次有效。但在此期間,每當訪問外部數(shù)據(jù)存儲器時,這兩次有效的PSEN信號將不會出現(xiàn)。PSEN同樣可以驅動8個LSTTL負載。</p><p> ?。?)EA/VP
18、P(31腳):EA功能為內外程序存儲器選擇控制端。當EA端保持高電平時單片機訪問內部程序存儲器,但在PC(程序計數(shù)器)值超過0FFFH時將自動轉向執(zhí)行外部程序存儲器內的程序。</p><p> 輸入/輸出引腳—此類引腳包括P0口、P1口、P2口和P3口。</p><p> (1)P0(P0.0~P0.7)是一個8位三態(tài)雙向I/0口,在不訪積壓外部存儲器,做通用I/0口使用,用于傳送CP
19、U的輸入/輸出數(shù)據(jù),當訪問外部存儲器時,此口為地址總路線</p><p> 低8位及數(shù)據(jù)總路線分時復用口,可帶8個LSTTL負載。</p><p> ?。?)P1(P1.0~P2.7)是一個8位準雙向I/O口(作為輸入時,口鎖存器置1),帶有內部上拉電阻,可帶4個LSTTL負載。</p><p> ?。?)P2(P2.0~P2.7)是一個8位準雙向I/O口,與地址
20、總路線高8位復用,可驅動4個LSTTL負載。</p><p> 2.3 方案的比較及確定</p><p> 本設計的重點在于遙控解碼,遙控解碼的方式有硬件解碼與軟件解碼。</p><p><b> 方案一:硬件解碼。</b></p><p> 硬件解碼:在接受遙控的一邊可以連接一個專用解碼芯片,只要按鍵盤上的鍵值
21、,它就能直接把這個鍵值解碼出來并存儲,當你調用這個鍵值的時候只要從里面去讀取就行了,所以它的解碼率高,讀取顯示簡單,這是它的優(yōu)點??墒窃撔酒瑑r格昂貴,而且只能解碼對應的遙控器,兼容性差,成本昂貴,不適合用作市場量產(chǎn)。</p><p><b> 方案二:軟件解碼。</b></p><p> 軟件解碼:根據(jù)遙控器選擇的芯片不同,其遙控碼格式也有不同?,F(xiàn)在市場上主要有日
22、本的NEC標準和飛利浦標準,通過軟件的方式解碼時解碼的正確率就是一個很重要的指標了。在單片機編程的時候是選擇用執(zhí)行效率高的匯編語言還是選用可讀性編寫容易的C語言呢?不可否認匯編的執(zhí)行效率是C語言的幾倍甚至幾十倍,而且誤碼率低,可是如果選擇匯編的話編寫難度可想而知,可是如果用C語言編寫的話誤碼率及實時性又會變得比較差。綜合以上考慮,如果我們能夠在解碼這部分用匯編,而顯示及控制這部分用C語言編寫的話,就能較好的完成我們預期的目標。因此我選用
23、了兩塊C52單片機芯片,一塊負責紅外解碼,一塊負責顯示與控制。事實證明,我的選擇和預想中的一樣,很好的解決了匯編與C語言難以共存的問題。</p><p> 基于上述比較,我們選擇了方案二,采用匯編與C語言共同的軟件解碼方式。</p><p><b> 2.4本章小結</b></p><p> 本章介紹了基于單片機紅外遙控密碼鎖設計的兩個重
24、點--紅外通訊基本原理與單片機芯片89C51的基礎知識。通過介紹實現(xiàn)他的關鍵技術提出了系統(tǒng)設計的方案--硬件解碼方案和軟件解碼方案。而后對兩個方案的優(yōu)缺點進行比較,最終確定了實現(xiàn)設計的方案--軟件解碼方案。</p><p> 3 模塊功能介紹及實現(xiàn) </p><p> 3.1 紅外遙控技術 </p><p> 3.1.1 硬件介紹: </p>
25、<p> 遙控器里面是一個鍵盤編碼器,每個按鍵對應一個編碼,在把編碼調制到一個高頻信號上,其目的是為了降低發(fā)射的功率損耗;再把調制好的信號送給紅外發(fā)光管把信號發(fā)送出去。接收過程恰好與此相反,首先由紅外接收管收到微弱的信號,經(jīng)放大后解解調(把高頻載波去掉),再進行解碼,就可得到遙控器發(fā)過來的數(shù)據(jù)。如圖3.1所示。</p><p> 圖3.1 紅外遙控流程圖</p><p>
26、圖3.1中遙控接收器部分的“光/電放大”和“解調”由一體化接收頭完成,單片機要做的只是“解碼” 。實驗板上一體化接收頭的數(shù)據(jù)輸出線經(jīng)過了 INT0 切換開關連接到單片機的 P32 腳(即 INT0) ,INT0 切換開關彈起時連通。</p><p> 3.1.2 實現(xiàn)方法: </p><p> 經(jīng)遙控器發(fā)送的是串行數(shù)據(jù), 通過脈沖的占空比來區(qū)別 ‘0’ 和 ‘1’ ; 以脈寬為 0.5
27、65ms,間隔 0.56ms,周期為 1.125ms 的組合表示二進制‘0’ ;以脈寬為 0.565ms,間隔為 1.685ms,周期為 2.25ms 的組合表示二進制‘1’ 。其波形如下圖。</p><p> 圖3.2 遙控碼的“0”和“1”</p><p> 遙控器產(chǎn)生的遙控編碼是連續(xù)的32位二進制碼組,其中前16位為用戶識別碼,能區(qū)別不同的電器設備;后 16 位為 8 位操作碼
28、及其反碼,最多可產(chǎn)生128 個不同的編碼。 當遙控器一個鍵按下超過36ms,震蕩器使芯片激活,將發(fā)射一組 108ms 的編碼脈沖,這 108ms 發(fā)射代碼由一個起始碼 (9ms) , 一個結果碼 (4.5ms) , 低8位地址碼(9ms~18ms) ,高 8位地址碼(9ms~18ms) ,8 位數(shù)據(jù)碼(9ms~18ms)及其反碼(9ms~18ms)組成。如果鍵按下超過 108ms 仍未松開,接下來發(fā)送的代碼(連發(fā)碼)就只由起始碼(9ms
29、)和結束碼(4.5ms)組成。</p><p> 解碼關鍵在于如何識別‘0’和‘1’ , ‘0’和‘1’均以 0.56ms 的低電平開始,不同的是高電平的寬度不同, ‘0’為0.56ms, ‘1’為1.68ms,所以必須根據(jù)高電平的寬度區(qū)別‘0’和‘1’ 。如果從 0.56ms 過后開始延時,0.56ms 后若讀到低電平,說明該位為‘0’ ,反之為‘1’ ;為了可靠起見,延時必須比 0.56ms 長一些,但又不
30、能超過1.12ms,否則如果該位為‘0’ ,讀到的已是下一位的高電平,因此?。?.12+0.56)/2=0.84ms比較可靠。過程如圖3.3所示。</p><p> 圖3.3 數(shù)據(jù)碼的組成</p><p> 3.2 4*4矩陣鍵盤</p><p> 因為本設計用到的按鍵較多,所以本設計采用行列式鍵盤,同時也能減少所占用的I/O線的數(shù)目,節(jié)省資源。</p&
31、gt;<p> 圖3.4行列式鍵盤原理電路圖</p><p> 每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過一個按鍵來連通,利用這種行列式矩陣結構只需要N條行線和M條列線,即可組成具有N×M個按鍵的鍵盤。本設計發(fā)射部分采用4*3鍵盤,接收部分采用4*4鍵盤。鍵盤掃描時,首先由I/O口低四位輸出高電平,高四位輸出低電平,假若有鍵按下,那么在I/O口低四位即可讀出低電平,接著
32、延時消抖,再具體判斷是何鍵按下。</p><p> 判斷鍵盤中有無鍵按下 </p><p> 將全部行線 X0-X3 置低電平 然后檢測列線的狀態(tài) 只要有一列的電平為低 則表示鍵盤中有鍵被按下 而且閉合的鍵位于低電平線與4根行線相交叉的 4個按鍵之中 若所有列線均為高電平 則表示鍵盤中無鍵按下 </p><p> 判斷閉合鍵所在的位置。 </p>
33、<p> 在確認有鍵按下后 即可進入確定具體閉合鍵的過程 其方法是 依次將行線置為低電平 即在置某根行線為低電平時 其它線為高電平 當確定某根行線為低電平后 再逐行檢測各列線的電平狀態(tài) 若某列為低 則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵. </p><p> 現(xiàn)將接收部分的鍵盤功能做一下說明。如圖,0至9號鍵為數(shù)字鍵,六位密碼從中產(chǎn)生?!按_認”鍵,“更改”鍵,“取消”鍵和“MAS”
34、鍵為功能按鍵,具有控制開鎖,更改密碼和取消相關操作等功能。剩余的兩個鍵在本設計中未用,可作為今后的功能擴展鍵使用。</p><p> 3.3 I2C總線技術</p><p> 3.3.1 I2C總線特點 </p><p> I2C總線最主要的優(yōu)點是其簡單性和有效性。由于接口直接在組件之上,因此I2C總線占用的2C總線是由數(shù)據(jù)線SDA和時鐘SCL構成的串行總線,
35、可發(fā)送和接收數(shù)據(jù)。在CPU與被控IC串行 EEPROM24C02 讀寫實驗 I2I2空間非常小,減少了電路板的空間和芯片管腳的數(shù)量,降低了互聯(lián)成本??偩€的長度可高達 25 英尺,并且能夠以10Kbps的最大傳輸速率支持 40 個組件。I2C總線的另一個優(yōu)點是,它支持多(multimastering),其中任何能夠進行發(fā)送和接收的設備都可以成為主總線。一個主控能夠控制信號的傳輸和時鐘頻率。當然,在任何時間點上只能有一個主控。 I之間、IC
36、與IC之間進行雙向傳送,最高傳送速率 100kbps。各種被控制電路均并聯(lián)在這條總線上,但就像電話機一樣只有撥通各自的號碼才能工作,所以每個電路和模塊都有唯一的地址,在信息的傳輸過程中,I2C總線上并接的每一模塊電路既是主控器 (或被控器) ,又是發(fā)送器(或接收器),這取決于它所要完成的功能。 </p><p> 3.3.2 I2C通信原理 </p><p> ?。?)數(shù)據(jù)傳輸:SDA
37、線上的數(shù)據(jù)必須在時鐘的高電平時期保持穩(wěn)定,SDA線上的電平狀態(tài)I21 數(shù)據(jù)傳輸:SDA 線只有在時鐘的低電平時期才能改變。</p><p> 圖3.5 SDA和SCL相互關系</p><p> (2)開始信號:SCL 為高電平時,SDA 由高電平向低電平跳變,開始傳送數(shù)據(jù)。 </p><p> (3)結束信號:SCL為高電平時,SDA由低電平向高電平跳變,結束
38、傳送數(shù)據(jù)。 </p><p> (4)應答信號:接收數(shù)據(jù)的 IC 在接收到 8bit 數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC 發(fā)出低電平脈</p><p> (5)總線基本操作:I2C規(guī)程運用主/從雙向通訊。器件發(fā)送數(shù)據(jù)到總線上,則定義為發(fā)送沖,表示已收到數(shù)據(jù)。CPU向受控單元發(fā)出一個信號后,等待受控單元發(fā)出一個應答信號,CPU接收到應答信號后,根據(jù)實際情況作出是否繼續(xù)傳遞信號的判斷。若未收到應答信
39、號,則判斷為受控單元出現(xiàn)故障。器,器件接收數(shù)據(jù)則定義為接收器。主器件和從器件都可以工作于接收和發(fā)送狀態(tài)??偩€必須由主器件(通常為微控制器)控制,主器件產(chǎn)生串行時鐘(SCL)控制總線的傳輸方向,并產(chǎn)生起始和停止條件。SDA線上的數(shù)據(jù)狀態(tài)僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA狀態(tài)的改變被用來表示起始和停止條件。參見圖3.6</p><p> 圖3.6 SCL與SDA波形關系</p>
40、;<p> 3.3.3 硬件介紹: </p><p> 24C04是CMOS 2048位串行EEPROM,內部組織成 256×8位。16 字節(jié)頁面寫。與MCS-51單片機接口如圖 40所示。由于SDA是漏極開路輸出,且可以與任何數(shù)目的漏極開路或集電極 開路輸出“線或”(wire-Ored)連接。上拉電阻的選擇可參考 24C02 的數(shù)據(jù)手冊(一般為 10K)。下面是通過I2C接口對 2
41、4C04 進行單字節(jié)寫操作的例程。</p><p> 圖3.7 24C02電路圖</p><p><b> 3.4 顯示模塊</b></p><p> 3.4.1 LCD液晶顯示 </p><p> LCD1602 可顯示兩行英文字符,并且內帶 ASCII 字符庫。LCD1602 模塊內部可以完成顯示掃描,單片機
42、只要向 LCD1602 發(fā)送命令和顯示內容的 ASCII 碼。</p><p> 表3-1 引腳功能說明</p><p> 圖3.8 LCD1602引腳圖</p><p> 表3-2寄存器選擇控制表</p><p> 1602液晶模塊內部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯數(shù)字、英文
43、字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。</p><p> 因為1602識別的是ASCII碼,試驗可以用ASCII碼直接賦值,在單片機編程中還可以用字符型常量或變量賦值,如'A’。</p><p> 圖3.9是160
44、2的16進制ASCII碼值:</p><p> 讀的時候,先讀上面那列,再讀左邊那行,如:感嘆號!的ASCII為0x21,字母B的ASCII為0x42(前面加0x表示十六進制)。</p><p> 圖3.9 1602的16進制ASCII碼值</p><p><b> 表3-3 顯示地址</b></p><p>&l
45、t;b> 指令集</b></p><p> 1602通過D0~D7的8位數(shù)據(jù)端傳輸數(shù)據(jù)和指令。</p><p> 顯示模式設置: (初始化)</p><p> 0011 0000 [0x38] 設置16×2顯示,5×7點陣,8位數(shù)據(jù)接口;</p><p> 顯示開關
46、及光標設置: (初始化)</p><p> 0000 1DCB D顯示(1有效)、C光標顯示(1有效)、B光標閃爍(1有效)</p><p> 0000 01NS N=1(讀或寫一個字符后地址指針加1 &光標加1),</p><p> N=0(讀或寫一個字符后地址指針減1 &光標減1),</p><p> S
47、=1 且 N=1 (當寫一個字符后,整屏顯示左移)</p><p> s=0 當寫一個字符后,整屏顯示不移動</p><p><b> 數(shù)據(jù)指針設置:</b></p><p> 數(shù)據(jù)首地址為80H,所以數(shù)據(jù)地址為80H+地址碼(0-27H,40-67H)</p><p><b> 其他設置:</b
48、></p><p> 01H(顯示清屏,數(shù)據(jù)指針=0,所有顯示=0);02H(顯示回車,數(shù)據(jù)指針=0)。</p><p> 通常推薦的初始化過程:</p><p><b> 延時15ms</b></p><p><b> 寫指令38H</b></p><p>&
49、lt;b> 延時5ms</b></p><p><b> 寫指令38H</b></p><p><b> 延時5ms</b></p><p><b> 寫指令38H</b></p><p><b> 延時5ms</b></
50、p><p> ?。ㄒ陨隙疾粰z測忙信號)</p><p> ?。ㄒ韵露家獧z測忙信號)</p><p><b> 寫指令38H</b></p><p> 寫指令08H 關閉顯示</p><p> 寫指令01H 顯示清屏</p><p> 寫指令06H 光標移動設置</
51、p><p> 寫指令0cH 顯示開及光標設置</p><p> 3.4.2 數(shù)碼管顯示</p><p> 數(shù)碼管顯示有動態(tài)掃描顯示與靜態(tài)顯示。其中動態(tài)掃描顯示是最常用的顯示方法。在本次設計中,通過動態(tài)掃描方式顯示密碼及其狀態(tài)。</p><p> 由于人類的眼睛有視覺余留的特性,對快速變化的圖象分辨不清,利用這點我們</p>
52、<p> 制一數(shù)碼管處于點亮的時間為 10ms,接著關閉它,鎖存數(shù)據(jù)的顯示碼,選通這位,控制它點亮 10ms,以此下去直到第六個數(shù)碼管也點亮 10ms,在從第一位開始重復上面的步驟。</p><p> 圖3.10 數(shù)碼管顯示流程圖</p><p><b> 3.5 本章小結</b></p><p> 本章具體介紹了紅外通訊模塊
53、,鍵盤模塊,密碼存儲模塊以及顯示模塊的基本知識與其實現(xiàn)的方法。紅外通訊模塊解決遙控解碼問題,通過弄清楚紅外的編碼格式,就能通過軟件解碼方式讀取遙控發(fā)射的數(shù)據(jù)。鍵盤部分介紹了4*4矩陣鍵盤的原理與實現(xiàn)。密碼存儲模塊運用了I2C總線技術,詳細介紹了I2C總線技術的優(yōu)缺點。顯示部分詳細說明了LCD1602液晶顯示的基本原理與運用操作,而且還提到了數(shù)碼管的動態(tài)掃描顯示原理。</p><p><b> 4 總結
54、</b></p><p> 本設計利用兩塊89C52單片機芯片完成了基于紅外遙控密碼鎖的設計,實現(xiàn)了紅外遙控和鍵盤雙輸入控制,密碼儲存部分采用24C02芯片實現(xiàn)了斷電保護問題,顯示部分實現(xiàn)了數(shù)碼管六位動態(tài)顯示狀態(tài)功能,并擴展到了LCD1602液晶屏上顯示,在報警部分設計了蜂鳴器在密碼輸入錯誤三次蜂鳴器報警的功能。它的創(chuàng)新點在于用了一塊單獨的89C52芯片進行紅外解碼,而且解碼部分軟件設計用的是匯編語
55、言,而顯示鍵盤部分用的是C語言,通過兩塊89C52芯片使得這兩種語言很好的組合在一起,使得他們既能夠很好的完成各自的任務也能很好的兼容在一起完成整個系統(tǒng)的任務。</p><p> 然而系統(tǒng)還是存在如下一些不足:沒有考慮過多外部因素對系統(tǒng)的影響,比如密碼丟失,誤操作對系統(tǒng)的影響。報警與提示功能做得不夠完善,遙控的有效距離沒有進行系統(tǒng)的論證。這些因素有待進一步完善。</p><p><
56、b> 參考文獻</b></p><p> [1] 林伸茂.8051單片機徹底研究基礎篇[M].北京:人民郵電出版社,2003:24-153.</p><p> [2] 趙廣林.Protel 99SE電路設計與制作[M].北京:電子工業(yè)出版社,2005:15-342.</p><p> [3] 馮耀輝等.PowerPCB 5.0入門與提高[M
57、].北京:人民郵電出版社,2004:17-48.</p><p> [4] 康華光等.電子技術基礎第2版[M].北京:高等教育出版社,2004:10-156.</p><p> [5] 胡凱,張穎超.生化分析儀的設計及與PC機的通信[J].微計算機信息,2006:208-209.</p><p> [6] 馬鴻文.基于AT89C52單片機的自動存取柜的設計與實
58、現(xiàn)[M].微計算機信息,2006:101-103.</p><p> [7] 曹巧媛.單片機原理及應用[M].北京:電子工業(yè)出版社,2002.</p><p> [8] 牛翌光.單片機原理及接口技術[M].北京:電子工業(yè)出版社,2008:32-79.</p><p> [9] 楊路明.C語言程序設計[M].北京:北京郵電大學出版社,2005:52-268.&l
59、t;/p><p> [10] 張文崢,李先亮,張其善.IrDA 紅外通信在導航儀中的應用[J]. 2000,10.</p><p> [11] 邱玉春,李文俊.單片機系統(tǒng)中的紅外通信接口[J].2000:56-163. </p><p> [12] 黃耀軍,周云,嚴國萍.計算機紅外無線互連的設計幾實現(xiàn)[J].2000,2. </p><p>
60、; [13] 麥山,皮佑國.基于單片機的協(xié)議紅外遙控系統(tǒng)[J].1998,5.</p><p> [14] Jimemez Petal. Improved PPM schemes for infrared wireless LAN [J].Electronics Lettrs,1996,10. </p><p> [15] Serial Infrared Link Access Pr
61、otocol(IrLAP),Version 1.1. June 16,1996,IBM Corporation , Hewlett-Packard Company, Apple Computer, Inc.,Counterpoint Systems Foundry, Inc.</p><p><b> 附錄 源程序</b></p><p><b> O
62、RG 0000H</b></p><p><b> MAIN:</b></p><p> JNB P3.2,IR ;遙控掃描</p><p> LJMP MAIN ;主循環(huán)</p><p><b> IR: ;解碼開始</b></p><p> MO
63、V R6,#10</p><p><b> IR_SB:</b></p><p><b> ;CPL P1.0</b></p><p> ;LCALL DELAY882;延時882微秒</p><p> MOV R7,#202</p><p> DELAY882_
64、A:;882us延時</p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R7,DELAY882_A</p><p> JB P3.2,IR_ERROR;數(shù)據(jù)錯誤退出解碼</p><p> DJNZ R6
65、,IR_SB;重復10次檢測</p><p><b> ;識別連發(fā)碼</b></p><p> JNB P3.2,$;等待高電平避開9MS低電平引導脈沖</p><p> ;LCALL DELAY2400</p><p> MOV R7,#245</p><p> DELAY2400_A
66、:</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP<
67、/b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R7,DELAY2400_A </p><p> JNB P3.2,IR_RP;這里為低電平,認為是連發(fā)碼</p><p> ;LCALL
68、 DELAY2400 ;延時4.74MS避開4.5MS的結果碼</p><p> MOV R7,#245</p><p> DELAY2400_B:</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b>
69、 NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJ
70、NZ R7,DELAY2400_B</p><p><b> ;讀取32位數(shù)據(jù)碼</b></p><p> MOV R1,#1AH;存放數(shù)據(jù)的起始地址</p><p><b> MOV R2,#4</b></p><p><b> IR_4BYTE:</b></
71、p><p><b> MOV R3,#8</b></p><p> IR_8BIT: </p><p> JNB P3.2,$;等待地址碼第一位的高電平信號</p><p> ;LCALL DELAY882;高電平來后開始延時882uS</p><p> MOV R7,#202</
72、p><p> DELAY882_B:;882us延時</p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R7,DELAY882_B</p><p> MOV C,P3.2</p><p
73、> JNC IR_8BIT_0;延時后為為低電平則跳到IR_8BIT_0</p><p> ;LCALL DELAY1000</p><p> MOV R7,#229</p><p> DELAY1000_A:</p><p><b> NOP</b></p><p><b&
74、gt; NOP</b></p><p> DJNZ R7,DELAY1000_A</p><p> IR_8BIT_0:</p><p> MOV A,@R1;將R1中的地址給累加器A</p><p> RRC A;將C移入A的最低位</p><p> MOV @R1,A;保存A中的值到RAM
75、中</p><p> DJNZ R3,IR_8BIT;接收地址碼的高8位</p><p> INC R1;下一地址</p><p> DJNZ R2,IR_4BYTE;接收完成8位數(shù)據(jù),8位數(shù)據(jù)碼和16位地址碼</p><p> LJMP IR_GOTO ;解碼結束</p><p><b>
76、IR_RP:</b></p><p> LJMP IR_GOTO</p><p><b> IR_ERROR:</b></p><p><b> LJMP MAIN</b></p><p> IR_GOTO: ;執(zhí)行部分</p><p> MOV
77、 A,1CH</p><p><b> CPL A</b></p><p> CJNE A,1DH,IR_ERROR</p><p> MOV P1,1DH ;接收到的數(shù)據(jù)顯示到P1口</p><p> MOV 1AH,#00H ;接收區(qū)清0</p><p> MOV 1
78、BH,#00H</p><p> MOV 1CH,#00H</p><p> MOV 1DH,#00H</p><p> DELAY2400_1:</p><p><b> NOP</b></p><p><b> NOP</b></p><p&
79、gt;<b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p>&
80、lt;p> DJNZ R7,DELAY2400_1</p><p> DELAY2400_2:</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p>
81、;<b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R7,DELAY2400_2</p><p
82、> DELAY2400_3:</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p>&
83、lt;b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R7,DELAY2400_3</p><p> DELAY2400_4:</p><p><b>
84、; NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><
85、;b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R7,DELAY2400_4</p><p> DELAY2400_5:</p><p><b> NOP</b></p><p><b>
86、 NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b
87、> NOP</b></p><p> DJNZ R7,DELAY2400_5</p><p> DELAY2400_6:</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> N
88、OP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJNZ
89、 R7,DELAY2400_6</p><p> DELAY2400_7:</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP
90、</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R7,DELAY2400_7</p><p> DELAY2400
91、_8:</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP&l
92、t;/b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R7,DELAY2400_8</p><p> DELAY2400_9:</p><p><b> NOP</b>
93、;</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP<
94、/b></p><p><b> NOP</b></p><p> DJNZ R7,DELAY2400_9</p><p> DELAY2400_10:</p><p><b> NOP</b></p><p><b> NOP</b>
95、</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</
96、b></p><p> DJNZ R7,DELAY2400_10</p><p> DELAY2400_11:</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b>
97、</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R7,DELAY240
98、0_11</p><p> DELAY2400_12:</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b>
99、</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R7,DELAY2400_12</p><p> DELAY2400_13:</
100、p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b>
101、</p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R7,DELAY2400_13</p><p> DELAY2400_14:</p><p><b> NOP</b></
102、p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b>
103、</p><p><b> NOP</b></p><p> DJNZ R7,DELAY2400_14</p><p> DELAY2400_15:</p><p><b> NOP</b></p><p><b> NOP</b></
104、p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b>
105、</p><p> DJNZ R7,DELAY2400_15</p><p> DELAY2400_16:</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></
106、p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R7,DELAY2400_16&
107、lt;/p><p> DELAY2400_17:</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></
108、p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R7,DELAY2400_17</p><p> DELAY2400_18:</p>
109、<p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></
110、p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R7,DELAY2400_18</p><p> DELAY2400_19:</p><p><b> NOP</b></p>
111、<p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></
112、p><p><b> NOP</b></p><p> DJNZ R7,DELAY2400_19</p><p> DELAY2400_20:</p><p><b> NOP</b></p><p><b> NOP</b></p>
113、<p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></
114、p><p> DJNZ R7,DELAY2400_20</p><p> DELAY2400_21:</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p>
115、<p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> DJNZ R7,DELAY2400_21</p
116、><p> MOV P1,#255 ;接收到的數(shù)據(jù)顯示4.8ms后清零</p><p> LJMP MAIN;回到主循環(huán)</p><p> ;DELAY1000:</p><p> ; MOV R7,#229</p><p> ;DELAY1000_A:</p><p><b
117、> ; NOP</b></p><p><b> ; NOP</b></p><p> ; DJNZ R7,DELAY1000_A</p><p><b> ; RET</b></p><p> ;DELAY2400:</p><p> ;
118、 MOV R7,#245</p><p> ; DELAY2400_A:</p><p><b> ; NOP</b></p><p><b> ; NOP</b></p><p><b> ; NOP</b></p><p>&l
119、t;b> ; NOP</b></p><p><b> ; NOP</b></p><p><b> ; NOP</b></p><p><b> ; NOP</b></p><p> ; DJNZ R7,DELAY2400_A
120、</p><p><b> ; RET</b></p><p> ; DELAY882: ;延時函數(shù)</p><p> ; MOV R7,#202</p><p> ; DELAY882_A:;882us延時</p><p><b> ; NOP</b><
121、;/p><p><b> ; NOP</b></p><p> ;DJNZ R7,DELAY882_A</p><p><b> ;RET</b></p><p><b> END</b></p><p> #include<reg52.h&
122、gt;</p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> sbit addr0 = P1^4;//系統(tǒng)片選地址線0</p><p> sbit addr1 = P1^5;//系統(tǒng)片選地址線1</p><
123、;p> sbit addr2 = P1^6;//系統(tǒng)片選地址線2</p><p> sbit addr3 = P1^7;//系統(tǒng)片選地址線3</p><p> sbit SCL=P1^0;//I2C時鐘線</p><p> sbit SDA=P1^1;//I2C數(shù)據(jù)線</p><p> sbit lck = P3^5;<
124、/p><p><b> //行掃描數(shù)組</b></p><p> uchar code scan[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//row0--row7</p><p> //數(shù)碼管顯示的段碼表</p><p> uchar code table[18]
125、 ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,//0,1,2,3,4,5</p><p> 0x82,0xf8,0x80,0x90,0x88,0x83,//6,7,8,9,a,b</p><p> 0xc6,0xa1,0x86,0x8e,0xbf,0xff};//c,d,e,f,-,空格</p><p> uchar dispbuf[8];
126、 //顯示緩沖區(qū) </p><p> uchar buffer[4];//發(fā)送字符個數(shù) </p><p> uchar keybit,count,input,state,mode,IR_data,IR_command,i; </p><p> unsigned int password,newpassword,temp; </p><
127、;p> void Start_I2c();</p><p> void Stop_I2c();</p><p> uchar RcvB();</p><p> extern void Ack_I2c(bit a);</p><p> extern void SendB(uchar c);</p><p>
128、; extern void delay(unsigned int loop); </p><p> /*****************************延時函數(shù)**************************/</p><p> void delay(unsigned int loop) </p><p> {
129、unsigned int i ; //loop 為執(zhí)行空指令的次數(shù),改變它可一改變延時時長</p><p> for(i=0;i<loop;i++);//循環(huán)執(zhí)行空指令loop次,達到延時目的</p><p><b> }</b></p><p> /********************************
130、*按鍵音****************************/</p><p> void keybuzz()</p><p><b> {</b></p><p> addr0 = 1;</p><p> addr1 = 0;</p><p> addr2 = 1;//片選地址&l
131、t;/p><p> P0 = 0x40;//開蜂鳴器</p><p> addr3 = 1;</p><p> addr3 = 0;//數(shù)據(jù)鎖存到U13(74HC574)</p><p> delay(500);//延時</p><p> addr0 = 1;</p><p> addr
132、1 = 0;</p><p> addr2 = 1;//片選地址</p><p> P0 = 0x00;//關蜂鳴器</p><p> addr3 = 1;</p><p> addr3 = 0;//數(shù)據(jù)鎖存到U13(74HC574?</p><p><b> }</b></p&g
133、t;<p> /*********************************OK提示音****************************/</p><p> void okbuzz()</p><p><b> {</b></p><p> keybuzz();</p><p> de
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機紅外遙控密碼鎖設計
- 基于單片機紅外遙控電子密碼鎖畢業(yè)論文
- 基于51單片機的紅外遙控密碼鎖
- 基于單片機的紅外遙控智能密碼鎖設計
- 紅外遙控智能密碼鎖
- 基于單片機紅外遙控密碼鎖的設計【畢業(yè)設計】
- 紅外遙控密碼鎖畢業(yè)設計
- 遠紅外遙控電子密碼鎖畢業(yè)論文
- 基于單片機的紅外遙控電子密碼鎖設計畢業(yè)設計論文
- 單片機紅外遙控密碼鎖課程設計2
- 基于單片機的紅外遙控電子密碼鎖設計畢業(yè)設計論文
- 畢業(yè)設計---基于單片機的紅外遙控智能密碼鎖設計
- 基于-單片機的紅外遙控電子密碼鎖設計畢業(yè)設計資料論文
- 紅外遙控智能電子密碼鎖(硬件)
- 紅外遙控密碼鎖的設計開題報告
- 紅外線遙控密碼鎖的設計
- 基于at89c51單片機的紅外遙控密碼鎖畢業(yè)設計
- 紅外遙控電子密碼鎖設計—硬件設計【畢業(yè)設計】
- 紅外遙控電子密碼鎖設計—硬件設計【開題報告】
- 紅外遙控電子密碼鎖設計—硬件設計【文獻綜述】
評論
0/150
提交評論