基于單片機(jī)的紅外遙控密碼鎖設(shè)計(jì)-紅外遙控密碼鎖畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  基于單片機(jī)的紅外遙控密碼鎖設(shè)計(jì)</p><p><b>  1 緒論 </b></p><p>  1.1 課題背景及目的</p><p>  電子技術(shù)的飛速發(fā)展,給古老的鎖具生產(chǎn)帶來(lái)了巨大的變革,現(xiàn)代的電子技術(shù)與機(jī)械技術(shù)相結(jié)合,產(chǎn)生了一大批如聲控鎖、磁控鎖、密碼鎖、遙控鎖,指紋鎖等先進(jìn)的鎖具。 </p>&

2、lt;p>  目前國(guó)內(nèi)外密碼鎖系統(tǒng)的主要方向的發(fā)展是:接觸式密碼鎖系統(tǒng),非接觸式密碼鎖系統(tǒng),智能識(shí)別密碼鎖系統(tǒng),但是他們都相應(yīng)的存在著不同的缺點(diǎn)。例如:接觸式密碼鎖系統(tǒng)成本較低,體積小,卡片本身無(wú)須電源,但使用不太方便,而且有接觸磨損。相比之下,紅外遙控密碼鎖系統(tǒng)的成本與接觸式密碼鎖系統(tǒng)相當(dāng),而且可以進(jìn)行近距離遙控,使用十分方便。而且它已經(jīng)與 PC 機(jī)的數(shù)據(jù)庫(kù)相結(jié)合,可以組成一套酒店房間的門(mén)禁管理系統(tǒng)。 </p>&

3、lt;p>  由于紅外遙控具有許多優(yōu)點(diǎn), 例如紅外線發(fā)射裝置采用紅外發(fā)光二極管遙控發(fā)射器易于小型化且價(jià)格低廉; 采用數(shù)字信號(hào)編碼和二次調(diào)制方式,不僅可以實(shí)現(xiàn)多路信息的控制,增加遙控功能,提高信號(hào)傳輸?shù)目垢蓴_性,減少誤動(dòng)作,而且功率消耗低;紅外線不會(huì)向室外泄露,不會(huì)產(chǎn)生信號(hào)串?dāng)_;反應(yīng)速度快、傳輸效率高、工作穩(wěn)定可靠等。工業(yè)設(shè)備中,在高壓、輻射、有毒氣體、粉塵等環(huán)境下,采用紅外線遙控不僅完全可靠而且能有效地隔離電氣干擾。所以紅外線遙控

4、是目前使用最廣泛的一種通信和遙控手段。 在本設(shè)計(jì)中,紅外遙控密碼鎖和 PC 機(jī)、數(shù)據(jù)庫(kù)相結(jié)合,能夠?qū)崿F(xiàn)適時(shí)的、強(qiáng)大的管理,使得整個(gè)紅外遙控系統(tǒng)得到更好的完善。 </p><p>  1.2 國(guó)內(nèi)外研究現(xiàn)狀</p><p>  目前大部分的鎖采用的都是機(jī)械式的,其最大的缺點(diǎn)是利用簡(jiǎn)單工具就能很容易地把鎖打開(kāi)。針對(duì)這種情況,我們?cè)O(shè)計(jì)了一種紅外遙控密碼鎖,而一般設(shè)備都采用專(zhuān)用的遙控編碼及解碼集成

5、電路,其制作簡(jiǎn)單、容易,但由于特定功能的限制,只適用于專(zhuān)用的電器產(chǎn)品,其應(yīng)用范圍受到限制。而設(shè)計(jì)的紅外遙控密碼鎖系統(tǒng)能提高門(mén)禁系統(tǒng)的可靠性和安全性,適應(yīng)市場(chǎng)需要。該系統(tǒng)具有普通電子密碼鎖功能的同時(shí),還增加了遙控功能。該系統(tǒng)具有較強(qiáng)的實(shí)際應(yīng)用價(jià)值,所涉及的技術(shù)包括:紅外載波數(shù)據(jù)傳輸技術(shù)、單片機(jī)控制技術(shù)、紅外遙控系統(tǒng)編碼及譯碼技術(shù)、電路設(shè)計(jì)與演示板制作技術(shù)等。</p><p>  1.3 課題研究方法</p&g

6、t;<p>  本設(shè)計(jì)基于STC8952單片機(jī)系列,運(yùn)用了兩塊單片機(jī)芯片,一片實(shí)現(xiàn)紅外解碼,一塊用來(lái)按鍵控制,數(shù)碼管顯示以及數(shù)據(jù)存儲(chǔ),通過(guò)查找資料確定各個(gè)模塊的功能及實(shí)現(xiàn)方法,先在軟件上進(jìn)行調(diào)試,再根據(jù)硬件修改調(diào)試軟件,最后將各個(gè)模塊合理組合在一起,達(dá)到預(yù)計(jì)的功能與目標(biāo)。</p><p><b>  1.4 本章小結(jié)</b></p><p>  本章介紹

7、了紅外遙控密碼鎖技術(shù)的課題背景,紅外技術(shù)在現(xiàn)代生活中的應(yīng)用以及該課題的國(guó)內(nèi)外研究現(xiàn)狀,探討與確定研究本課題的方法。</p><p>  2 基本原理及方案的論證 </p><p>  2.1 紅外通訊原理</p><p>  紅外遙控是單工的紅外通信方式,本設(shè)計(jì)的紅外遙控采用以通信方式為基礎(chǔ)的紅外遙控,而且本設(shè)計(jì)也使用了紅外通信技術(shù),故著重分析紅外通信的基本原理。&

8、lt;/p><p>  紅外通信是利用紅外技術(shù)實(shí)現(xiàn)兩點(diǎn)間的近距離保密通信和信息轉(zhuǎn)發(fā)。它一般由紅外發(fā)射和接收系統(tǒng)兩部分組成。發(fā)射系統(tǒng)對(duì)一個(gè)紅外輻射源進(jìn)行調(diào)制后發(fā)射紅外信號(hào),而接收系統(tǒng)用光學(xué)裝置和紅外探測(cè)器進(jìn)行接收,就構(gòu)成紅外通信系統(tǒng)。</p><p>  紅外線是波長(zhǎng)在 750nm至1mm之間的電磁波[5],它的頻率高于微波而低于可見(jiàn)光,是一種人的眼睛看不到的光線。紅外通信一般采用紅外波段內(nèi)的近

9、紅外線,波長(zhǎng)在 0.75um至 25um之間。紅外數(shù)據(jù)協(xié)會(huì)(IrDA)成立后,為了保證不同廠商的紅外產(chǎn)品能夠獲得最佳的通信效果,紅外通信協(xié)議將紅外數(shù)據(jù)通信所采用的光波波長(zhǎng)的范圍限定在 850 至 900nm之內(nèi)。</p><p>  紅外通信的基本原理[6]是發(fā)送端將基帶二進(jìn)制信號(hào)調(diào)制為一系列的脈沖串信號(hào)(載波信號(hào)) ,通過(guò)紅外發(fā)射管發(fā)射紅外信號(hào)。常用的有通過(guò)脈沖寬度來(lái)實(shí)現(xiàn)信號(hào)調(diào)制的脈寬調(diào)制(PWM)和通過(guò)脈沖串

10、之間的時(shí)間間隔來(lái)實(shí)現(xiàn)信號(hào)調(diào)制的脈時(shí)調(diào)制(PPM)兩種方法。脈時(shí)調(diào)制(PPM)[7,8,9,10]是紅外數(shù)據(jù)協(xié)會(huì)(IrDA)和國(guó)際電子電工委員會(huì)(IEEE)都推薦的調(diào)制方式,本設(shè)計(jì)采用脈時(shí)調(diào)制方法,即用兩個(gè)脈沖串之間的時(shí)間間隔來(lái)表示二進(jìn)制信息,數(shù)據(jù)比特的傳送仿照不帶奇偶校驗(yàn)的RS232 [8]通信,首先產(chǎn)生一個(gè)同步頭,然后接著 8 位數(shù)據(jù)比特。如圖 2.1所示。</p><p>  圖 2.1 PPM 調(diào)制波形圖

11、</p><p>  普通的紅外遙控采用面向指令的幀結(jié)構(gòu),數(shù)據(jù)幀由同步碼,地址碼和指令碼組成,指令碼長(zhǎng)度多為 8~16 個(gè)比特,傳送多字節(jié)遙控協(xié)議時(shí)效率偏低,而增加指令碼的長(zhǎng)度不利于接收器同步,為此本設(shè)計(jì)選用一種面向字節(jié)的幀結(jié)構(gòu),采用類(lèi)似于異步串行通信的幀結(jié)構(gòu),每幀由一個(gè)起始位(二進(jìn)制數(shù) 0) 、8 個(gè)數(shù)據(jù)位和 2 個(gè)停止位(二進(jìn)制數(shù) 1)構(gòu)成,如圖 2.2 所示。每幀傳送 1 個(gè)字節(jié)的數(shù)據(jù),幀與幀間隔大于 2m

12、s,幀結(jié)構(gòu)不含地址信息,尋址問(wèn)題由高層協(xié)議解決[8]。</p><p>  圖 2.2 數(shù)據(jù)幀結(jié)構(gòu)示意圖</p><p>  由于紅外光存在反射,在全雙工的方式下發(fā)送的信號(hào)也可能會(huì)被本身接收,因此,紅外通信應(yīng)采用異步半雙工方式,即通信的某一方發(fā)送和接收是交替進(jìn)行的。</p><p>  2.2 89C52芯片介紹</p><p>  89C5

13、2的引腳圖如圖2.3所示</p><p>  圖2.3 89C52芯片引腳圖</p><p>  主電源及時(shí)鐘引腳--此類(lèi)引腳包括電源引腳Vcc、Vss、時(shí)鐘引腳XTAL1、XTAL2。</p><p> ?。?)Vcc(40腳):接+5V電源,為單片機(jī)芯片提供電能。</p><p> ?。?)Vss(20腳)接地。</p>

14、<p> ?。?)XTAL1(19腳)在單片機(jī)內(nèi)部,它是一個(gè)反向放大器的輸入端,該放大器構(gòu)</p><p>  了片內(nèi)的振蕩器,可提供單片機(jī)的時(shí)鐘控制信號(hào)。</p><p> ?。?)XTAL2(18腳)在單片機(jī)內(nèi)部,接至上述振蕩器的反向輸出端。</p><p>  控制引腳—此類(lèi)引腳包括RESET(即RSR/VPD)、ALE/PROG、PSEN、EA/V

15、PP,可以提供控制信號(hào),有些具有復(fù)用功能。</p><p> ?。?)RSR/ VPD(9腳):復(fù)位信號(hào)輸入端,高電平有效,當(dāng)振蕩器運(yùn)行時(shí),在此引</p><p>  加上兩個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位(REST)。復(fù)位后應(yīng)使此引腳電平保持為不高于0.5V的低電平,以保證單片機(jī)正常工作。掉電期間,此引腳可接上備用電源(VPD),以保持內(nèi)部RAM中的數(shù)據(jù)不丟失。當(dāng)Vcc下降到低于規(guī)定值,

16、而VPD在其規(guī)定的電壓范圍內(nèi)(5±0.5V)時(shí),VPD就向內(nèi)部RAM提供備用電源。</p><p> ?。?)ALE/PROG(30腳):ALE為地址鎖存允許信號(hào)。當(dāng)單片機(jī)訪問(wèn)外部存儲(chǔ)器時(shí),(地址鎖存允許)輸出脈沖的下降沿用于鎖存16位地址的低8位。即使不訪問(wèn)外部存儲(chǔ)器,ALE端仍有周期性正脈沖輸出,其頻率為振蕩器頻率的1/6。但是每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),在兩個(gè)機(jī)器周期中ALE只出現(xiàn)一次,即丟失一個(gè)A

17、LE脈沖。ALE端可以驅(qū)動(dòng)8個(gè)LSTTL負(fù)載。</p><p>  (3)PSEN(29腳):程序存儲(chǔ)器允許輸出控制端。此輸出為單片內(nèi)訪問(wèn)外部程序存儲(chǔ)器的讀選通信號(hào)。在從外部程序存儲(chǔ)器取指令(或取常數(shù))期間,每個(gè)機(jī)器周期均PSEN兩次有效。但在此期間,每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的PSEN信號(hào)將不會(huì)出現(xiàn)。PSEN同樣可以驅(qū)動(dòng)8個(gè)LSTTL負(fù)載。</p><p> ?。?)EA/VP

18、P(31腳):EA功能為內(nèi)外程序存儲(chǔ)器選擇控制端。當(dāng)EA端保持高電平時(shí)單片機(jī)訪問(wèn)內(nèi)部程序存儲(chǔ)器,但在PC(程序計(jì)數(shù)器)值超過(guò)0FFFH時(shí)將自動(dòng)轉(zhuǎn)向執(zhí)行外部程序存儲(chǔ)器內(nèi)的程序。</p><p>  輸入/輸出引腳—此類(lèi)引腳包括P0口、P1口、P2口和P3口。</p><p> ?。?)P0(P0.0~P0.7)是一個(gè)8位三態(tài)雙向I/0口,在不訪積壓外部存儲(chǔ)器,做通用I/0口使用,用于傳送CP

19、U的輸入/輸出數(shù)據(jù),當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),此口為地址總路線</p><p>  低8位及數(shù)據(jù)總路線分時(shí)復(fù)用口,可帶8個(gè)LSTTL負(fù)載。</p><p> ?。?)P1(P1.0~P2.7)是一個(gè)8位準(zhǔn)雙向I/O口(作為輸入時(shí),口鎖存器置1),帶有內(nèi)部上拉電阻,可帶4個(gè)LSTTL負(fù)載。</p><p> ?。?)P2(P2.0~P2.7)是一個(gè)8位準(zhǔn)雙向I/O口,與地址

20、總路線高8位復(fù)用,可驅(qū)動(dòng)4個(gè)LSTTL負(fù)載。</p><p>  2.3 方案的比較及確定</p><p>  本設(shè)計(jì)的重點(diǎn)在于遙控解碼,遙控解碼的方式有硬件解碼與軟件解碼。</p><p><b>  方案一:硬件解碼。</b></p><p>  硬件解碼:在接受遙控的一邊可以連接一個(gè)專(zhuān)用解碼芯片,只要按鍵盤(pán)上的鍵值

21、,它就能直接把這個(gè)鍵值解碼出來(lái)并存儲(chǔ),當(dāng)你調(diào)用這個(gè)鍵值的時(shí)候只要從里面去讀取就行了,所以它的解碼率高,讀取顯示簡(jiǎn)單,這是它的優(yōu)點(diǎn)??墒窃撔酒瑑r(jià)格昂貴,而且只能解碼對(duì)應(yīng)的遙控器,兼容性差,成本昂貴,不適合用作市場(chǎng)量產(chǎn)。</p><p><b>  方案二:軟件解碼。</b></p><p>  軟件解碼:根據(jù)遙控器選擇的芯片不同,其遙控碼格式也有不同。現(xiàn)在市場(chǎng)上主要有日

22、本的NEC標(biāo)準(zhǔn)和飛利浦標(biāo)準(zhǔn),通過(guò)軟件的方式解碼時(shí)解碼的正確率就是一個(gè)很重要的指標(biāo)了。在單片機(jī)編程的時(shí)候是選擇用執(zhí)行效率高的匯編語(yǔ)言還是選用可讀性編寫(xiě)容易的C語(yǔ)言呢?不可否認(rèn)匯編的執(zhí)行效率是C語(yǔ)言的幾倍甚至幾十倍,而且誤碼率低,可是如果選擇匯編的話(huà)編寫(xiě)難度可想而知,可是如果用C語(yǔ)言編寫(xiě)的話(huà)誤碼率及實(shí)時(shí)性又會(huì)變得比較差。綜合以上考慮,如果我們能夠在解碼這部分用匯編,而顯示及控制這部分用C語(yǔ)言編寫(xiě)的話(huà),就能較好的完成我們預(yù)期的目標(biāo)。因此我選用

23、了兩塊C52單片機(jī)芯片,一塊負(fù)責(zé)紅外解碼,一塊負(fù)責(zé)顯示與控制。事實(shí)證明,我的選擇和預(yù)想中的一樣,很好的解決了匯編與C語(yǔ)言難以共存的問(wèn)題。</p><p>  基于上述比較,我們選擇了方案二,采用匯編與C語(yǔ)言共同的軟件解碼方式。</p><p><b>  2.4本章小結(jié)</b></p><p>  本章介紹了基于單片機(jī)紅外遙控密碼鎖設(shè)計(jì)的兩個(gè)重

24、點(diǎn)--紅外通訊基本原理與單片機(jī)芯片89C51的基礎(chǔ)知識(shí)。通過(guò)介紹實(shí)現(xiàn)他的關(guān)鍵技術(shù)提出了系統(tǒng)設(shè)計(jì)的方案--硬件解碼方案和軟件解碼方案。而后對(duì)兩個(gè)方案的優(yōu)缺點(diǎn)進(jìn)行比較,最終確定了實(shí)現(xiàn)設(shè)計(jì)的方案--軟件解碼方案。</p><p>  3 模塊功能介紹及實(shí)現(xiàn) </p><p>  3.1 紅外遙控技術(shù) </p><p>  3.1.1 硬件介紹: </p>

25、<p>  遙控器里面是一個(gè)鍵盤(pán)編碼器,每個(gè)按鍵對(duì)應(yīng)一個(gè)編碼,在把編碼調(diào)制到一個(gè)高頻信號(hào)上,其目的是為了降低發(fā)射的功率損耗;再把調(diào)制好的信號(hào)送給紅外發(fā)光管把信號(hào)發(fā)送出去。接收過(guò)程恰好與此相反,首先由紅外接收管收到微弱的信號(hào),經(jīng)放大后解解調(diào)(把高頻載波去掉),再進(jìn)行解碼,就可得到遙控器發(fā)過(guò)來(lái)的數(shù)據(jù)。如圖3.1所示。</p><p>  圖3.1 紅外遙控流程圖</p><p>  

26、圖3.1中遙控接收器部分的“光/電放大”和“解調(diào)”由一體化接收頭完成,單片機(jī)要做的只是“解碼” 。實(shí)驗(yàn)板上一體化接收頭的數(shù)據(jù)輸出線經(jīng)過(guò)了 INT0 切換開(kāi)關(guān)連接到單片機(jī)的 P32 腳(即 INT0) ,INT0 切換開(kāi)關(guān)彈起時(shí)連通。</p><p>  3.1.2 實(shí)現(xiàn)方法: </p><p>  經(jīng)遙控器發(fā)送的是串行數(shù)據(jù), 通過(guò)脈沖的占空比來(lái)區(qū)別 ‘0’ 和 ‘1’ ; 以脈寬為 0.5

27、65ms,間隔 0.56ms,周期為 1.125ms 的組合表示二進(jìn)制‘0’ ;以脈寬為 0.565ms,間隔為 1.685ms,周期為 2.25ms 的組合表示二進(jìn)制‘1’ 。其波形如下圖。</p><p>  圖3.2 遙控碼的“0”和“1”</p><p>  遙控器產(chǎn)生的遙控編碼是連續(xù)的32位二進(jìn)制碼組,其中前16位為用戶(hù)識(shí)別碼,能區(qū)別不同的電器設(shè)備;后 16 位為 8 位操作碼

28、及其反碼,最多可產(chǎn)生128 個(gè)不同的編碼。 當(dāng)遙控器一個(gè)鍵按下超過(guò)36ms,震蕩器使芯片激活,將發(fā)射一組 108ms 的編碼脈沖,這 108ms 發(fā)射代碼由一個(gè)起始碼 (9ms) , 一個(gè)結(jié)果碼 (4.5ms) , 低8位地址碼(9ms~18ms) ,高 8位地址碼(9ms~18ms) ,8 位數(shù)據(jù)碼(9ms~18ms)及其反碼(9ms~18ms)組成。如果鍵按下超過(guò) 108ms 仍未松開(kāi),接下來(lái)發(fā)送的代碼(連發(fā)碼)就只由起始碼(9ms

29、)和結(jié)束碼(4.5ms)組成。</p><p>  解碼關(guān)鍵在于如何識(shí)別‘0’和‘1’ , ‘0’和‘1’均以 0.56ms 的低電平開(kāi)始,不同的是高電平的寬度不同, ‘0’為0.56ms, ‘1’為1.68ms,所以必須根據(jù)高電平的寬度區(qū)別‘0’和‘1’ 。如果從 0.56ms 過(guò)后開(kāi)始延時(shí),0.56ms 后若讀到低電平,說(shuō)明該位為‘0’ ,反之為‘1’ ;為了可靠起見(jiàn),延時(shí)必須比 0.56ms 長(zhǎng)一些,但又不

30、能超過(guò)1.12ms,否則如果該位為‘0’ ,讀到的已是下一位的高電平,因此?。?.12+0.56)/2=0.84ms比較可靠。過(guò)程如圖3.3所示。</p><p>  圖3.3 數(shù)據(jù)碼的組成</p><p>  3.2 4*4矩陣鍵盤(pán)</p><p>  因?yàn)楸驹O(shè)計(jì)用到的按鍵較多,所以本設(shè)計(jì)采用行列式鍵盤(pán),同時(shí)也能減少所占用的I/O線的數(shù)目,節(jié)省資源。</p&

31、gt;<p>  圖3.4行列式鍵盤(pán)原理電路圖</p><p>  每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過(guò)一個(gè)按鍵來(lái)連通,利用這種行列式矩陣結(jié)構(gòu)只需要N條行線和M條列線,即可組成具有N×M個(gè)按鍵的鍵盤(pán)。本設(shè)計(jì)發(fā)射部分采用4*3鍵盤(pán),接收部分采用4*4鍵盤(pán)。鍵盤(pán)掃描時(shí),首先由I/O口低四位輸出高電平,高四位輸出低電平,假若有鍵按下,那么在I/O口低四位即可讀出低電平,接著

32、延時(shí)消抖,再具體判斷是何鍵按下。</p><p>  判斷鍵盤(pán)中有無(wú)鍵按下 </p><p>  將全部行線 X0-X3 置低電平 然后檢測(cè)列線的狀態(tài) 只要有一列的電平為低 則表示鍵盤(pán)中有鍵被按下 而且閉合的鍵位于低電平線與4根行線相交叉的 4個(gè)按鍵之中 若所有列線均為高電平 則表示鍵盤(pán)中無(wú)鍵按下 </p><p>  判斷閉合鍵所在的位置。 </p>

33、<p>  在確認(rèn)有鍵按下后 即可進(jìn)入確定具體閉合鍵的過(guò)程 其方法是 依次將行線置為低電平 即在置某根行線為低電平時(shí) 其它線為高電平 當(dāng)確定某根行線為低電平后 再逐行檢測(cè)各列線的電平狀態(tài) 若某列為低 則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵. </p><p>  現(xiàn)將接收部分的鍵盤(pán)功能做一下說(shuō)明。如圖,0至9號(hào)鍵為數(shù)字鍵,六位密碼從中產(chǎn)生。“確認(rèn)”鍵,“更改”鍵,“取消”鍵和“MAS”

34、鍵為功能按鍵,具有控制開(kāi)鎖,更改密碼和取消相關(guān)操作等功能。剩余的兩個(gè)鍵在本設(shè)計(jì)中未用,可作為今后的功能擴(kuò)展鍵使用。</p><p>  3.3 I2C總線技術(shù)</p><p>  3.3.1 I2C總線特點(diǎn) </p><p>  I2C總線最主要的優(yōu)點(diǎn)是其簡(jiǎn)單性和有效性。由于接口直接在組件之上,因此I2C總線占用的2C總線是由數(shù)據(jù)線SDA和時(shí)鐘SCL構(gòu)成的串行總線,

35、可發(fā)送和接收數(shù)據(jù)。在CPU與被控IC串行 EEPROM24C02 讀寫(xiě)實(shí)驗(yàn) I2I2空間非常小,減少了電路板的空間和芯片管腳的數(shù)量,降低了互聯(lián)成本??偩€的長(zhǎng)度可高達(dá) 25 英尺,并且能夠以10Kbps的最大傳輸速率支持 40 個(gè)組件。I2C總線的另一個(gè)優(yōu)點(diǎn)是,它支持多(multimastering),其中任何能夠進(jìn)行發(fā)送和接收的設(shè)備都可以成為主總線。一個(gè)主控能夠控制信號(hào)的傳輸和時(shí)鐘頻率。當(dāng)然,在任何時(shí)間點(diǎn)上只能有一個(gè)主控。 I之間、IC

36、與IC之間進(jìn)行雙向傳送,最高傳送速率 100kbps。各種被控制電路均并聯(lián)在這條總線上,但就像電話(huà)機(jī)一樣只有撥通各自的號(hào)碼才能工作,所以每個(gè)電路和模塊都有唯一的地址,在信息的傳輸過(guò)程中,I2C總線上并接的每一模塊電路既是主控器 (或被控器) ,又是發(fā)送器(或接收器),這取決于它所要完成的功能。 </p><p>  3.3.2 I2C通信原理 </p><p> ?。?)數(shù)據(jù)傳輸:SDA

37、線上的數(shù)據(jù)必須在時(shí)鐘的高電平時(shí)期保持穩(wěn)定,SDA線上的電平狀態(tài)I21 數(shù)據(jù)傳輸:SDA 線只有在時(shí)鐘的低電平時(shí)期才能改變。</p><p>  圖3.5 SDA和SCL相互關(guān)系</p><p> ?。?)開(kāi)始信號(hào):SCL 為高電平時(shí),SDA 由高電平向低電平跳變,開(kāi)始傳送數(shù)據(jù)。 </p><p> ?。?)結(jié)束信號(hào):SCL為高電平時(shí),SDA由低電平向高電平跳變,結(jié)束

38、傳送數(shù)據(jù)。 </p><p> ?。?)應(yīng)答信號(hào):接收數(shù)據(jù)的 IC 在接收到 8bit 數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC 發(fā)出低電平脈</p><p> ?。?)總線基本操作:I2C規(guī)程運(yùn)用主/從雙向通訊。器件發(fā)送數(shù)據(jù)到總線上,則定義為發(fā)送沖,表示已收到數(shù)據(jù)。CPU向受控單元發(fā)出一個(gè)信號(hào)后,等待受控單元發(fā)出一個(gè)應(yīng)答信號(hào),CPU接收到應(yīng)答信號(hào)后,根據(jù)實(shí)際情況作出是否繼續(xù)傳遞信號(hào)的判斷。若未收到應(yīng)答信

39、號(hào),則判斷為受控單元出現(xiàn)故障。器,器件接收數(shù)據(jù)則定義為接收器。主器件和從器件都可以工作于接收和發(fā)送狀態(tài)??偩€必須由主器件(通常為微控制器)控制,主器件產(chǎn)生串行時(shí)鐘(SCL)控制總線的傳輸方向,并產(chǎn)生起始和停止條件。SDA線上的數(shù)據(jù)狀態(tài)僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA狀態(tài)的改變被用來(lái)表示起始和停止條件。參見(jiàn)圖3.6</p><p>  圖3.6 SCL與SDA波形關(guān)系</p>

40、;<p>  3.3.3 硬件介紹: </p><p>  24C04是CMOS 2048位串行EEPROM,內(nèi)部組織成 256×8位。16 字節(jié)頁(yè)面寫(xiě)。與MCS-51單片機(jī)接口如圖 40所示。由于SDA是漏極開(kāi)路輸出,且可以與任何數(shù)目的漏極開(kāi)路或集電極 開(kāi)路輸出“線或”(wire-Ored)連接。上拉電阻的選擇可參考 24C02 的數(shù)據(jù)手冊(cè)(一般為 10K)。下面是通過(guò)I2C接口對(duì) 2

41、4C04 進(jìn)行單字節(jié)寫(xiě)操作的例程。</p><p>  圖3.7 24C02電路圖</p><p><b>  3.4 顯示模塊</b></p><p>  3.4.1 LCD液晶顯示 </p><p>  LCD1602 可顯示兩行英文字符,并且內(nèi)帶 ASCII 字符庫(kù)。LCD1602 模塊內(nèi)部可以完成顯示掃描,單片機(jī)

42、只要向 LCD1602 發(fā)送命令和顯示內(nèi)容的 ASCII 碼。</p><p>  表3-1 引腳功能說(shuō)明</p><p>  圖3.8 LCD1602引腳圖</p><p>  表3-2寄存器選擇控制表</p><p>  1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,這些字符有:阿拉伯?dāng)?shù)字、英文

43、字母的大小寫(xiě)、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫(xiě)的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”。</p><p>  因?yàn)?602識(shí)別的是ASCII碼,試驗(yàn)可以用ASCII碼直接賦值,在單片機(jī)編程中還可以用字符型常量或變量賦值,如'A’。</p><p>  圖3.9是160

44、2的16進(jìn)制ASCII碼值:</p><p>  讀的時(shí)候,先讀上面那列,再讀左邊那行,如:感嘆號(hào)!的ASCII為0x21,字母B的ASCII為0x42(前面加0x表示十六進(jìn)制)。</p><p>  圖3.9 1602的16進(jìn)制ASCII碼值</p><p><b>  表3-3 顯示地址</b></p><p>&l

45、t;b>  指令集</b></p><p>  1602通過(guò)D0~D7的8位數(shù)據(jù)端傳輸數(shù)據(jù)和指令。</p><p>  顯示模式設(shè)置: (初始化)</p><p>  0011 0000 [0x38] 設(shè)置16×2顯示,5×7點(diǎn)陣,8位數(shù)據(jù)接口;</p><p>  顯示開(kāi)關(guān)

46、及光標(biāo)設(shè)置: (初始化)</p><p>  0000 1DCB D顯示(1有效)、C光標(biāo)顯示(1有效)、B光標(biāo)閃爍(1有效)</p><p>  0000 01NS N=1(讀或?qū)懸粋€(gè)字符后地址指針加1 &光標(biāo)加1),</p><p>  N=0(讀或?qū)懸粋€(gè)字符后地址指針減1 &光標(biāo)減1),</p><p>  S

47、=1 且 N=1 (當(dāng)寫(xiě)一個(gè)字符后,整屏顯示左移)</p><p>  s=0 當(dāng)寫(xiě)一個(gè)字符后,整屏顯示不移動(dòng)</p><p><b>  數(shù)據(jù)指針設(shè)置:</b></p><p>  數(shù)據(jù)首地址為80H,所以數(shù)據(jù)地址為80H+地址碼(0-27H,40-67H)</p><p><b>  其他設(shè)置:</b

48、></p><p>  01H(顯示清屏,數(shù)據(jù)指針=0,所有顯示=0);02H(顯示回車(chē),數(shù)據(jù)指針=0)。</p><p>  通常推薦的初始化過(guò)程:</p><p><b>  延時(shí)15ms</b></p><p><b>  寫(xiě)指令38H</b></p><p>&

49、lt;b>  延時(shí)5ms</b></p><p><b>  寫(xiě)指令38H</b></p><p><b>  延時(shí)5ms</b></p><p><b>  寫(xiě)指令38H</b></p><p><b>  延時(shí)5ms</b></

50、p><p> ?。ㄒ陨隙疾粰z測(cè)忙信號(hào))</p><p>  (以下都要檢測(cè)忙信號(hào))</p><p><b>  寫(xiě)指令38H</b></p><p>  寫(xiě)指令08H 關(guān)閉顯示</p><p>  寫(xiě)指令01H 顯示清屏</p><p>  寫(xiě)指令06H 光標(biāo)移動(dòng)設(shè)置</

51、p><p>  寫(xiě)指令0cH 顯示開(kāi)及光標(biāo)設(shè)置</p><p>  3.4.2 數(shù)碼管顯示</p><p>  數(shù)碼管顯示有動(dòng)態(tài)掃描顯示與靜態(tài)顯示。其中動(dòng)態(tài)掃描顯示是最常用的顯示方法。在本次設(shè)計(jì)中,通過(guò)動(dòng)態(tài)掃描方式顯示密碼及其狀態(tài)。</p><p>  由于人類(lèi)的眼睛有視覺(jué)余留的特性,對(duì)快速變化的圖象分辨不清,利用這點(diǎn)我們</p>

52、<p>  制一數(shù)碼管處于點(diǎn)亮的時(shí)間為 10ms,接著關(guān)閉它,鎖存數(shù)據(jù)的顯示碼,選通這位,控制它點(diǎn)亮 10ms,以此下去直到第六個(gè)數(shù)碼管也點(diǎn)亮 10ms,在從第一位開(kāi)始重復(fù)上面的步驟。</p><p>  圖3.10 數(shù)碼管顯示流程圖</p><p><b>  3.5 本章小結(jié)</b></p><p>  本章具體介紹了紅外通訊模塊

53、,鍵盤(pán)模塊,密碼存儲(chǔ)模塊以及顯示模塊的基本知識(shí)與其實(shí)現(xiàn)的方法。紅外通訊模塊解決遙控解碼問(wèn)題,通過(guò)弄清楚紅外的編碼格式,就能通過(guò)軟件解碼方式讀取遙控發(fā)射的數(shù)據(jù)。鍵盤(pán)部分介紹了4*4矩陣鍵盤(pán)的原理與實(shí)現(xiàn)。密碼存儲(chǔ)模塊運(yùn)用了I2C總線技術(shù),詳細(xì)介紹了I2C總線技術(shù)的優(yōu)缺點(diǎn)。顯示部分詳細(xì)說(shuō)明了LCD1602液晶顯示的基本原理與運(yùn)用操作,而且還提到了數(shù)碼管的動(dòng)態(tài)掃描顯示原理。</p><p><b>  4 總結(jié)

54、</b></p><p>  本設(shè)計(jì)利用兩塊89C52單片機(jī)芯片完成了基于紅外遙控密碼鎖的設(shè)計(jì),實(shí)現(xiàn)了紅外遙控和鍵盤(pán)雙輸入控制,密碼儲(chǔ)存部分采用24C02芯片實(shí)現(xiàn)了斷電保護(hù)問(wèn)題,顯示部分實(shí)現(xiàn)了數(shù)碼管六位動(dòng)態(tài)顯示狀態(tài)功能,并擴(kuò)展到了LCD1602液晶屏上顯示,在報(bào)警部分設(shè)計(jì)了蜂鳴器在密碼輸入錯(cuò)誤三次蜂鳴器報(bào)警的功能。它的創(chuàng)新點(diǎn)在于用了一塊單獨(dú)的89C52芯片進(jìn)行紅外解碼,而且解碼部分軟件設(shè)計(jì)用的是匯編語(yǔ)

55、言,而顯示鍵盤(pán)部分用的是C語(yǔ)言,通過(guò)兩塊89C52芯片使得這兩種語(yǔ)言很好的組合在一起,使得他們既能夠很好的完成各自的任務(wù)也能很好的兼容在一起完成整個(gè)系統(tǒng)的任務(wù)。</p><p>  然而系統(tǒng)還是存在如下一些不足:沒(méi)有考慮過(guò)多外部因素對(duì)系統(tǒng)的影響,比如密碼丟失,誤操作對(duì)系統(tǒng)的影響。報(bào)警與提示功能做得不夠完善,遙控的有效距離沒(méi)有進(jìn)行系統(tǒng)的論證。這些因素有待進(jìn)一步完善。</p><p><

56、b>  參考文獻(xiàn)</b></p><p>  [1] 林伸茂.8051單片機(jī)徹底研究基礎(chǔ)篇[M].北京:人民郵電出版社,2003:24-153.</p><p>  [2] 趙廣林.Protel 99SE電路設(shè)計(jì)與制作[M].北京:電子工業(yè)出版社,2005:15-342.</p><p>  [3] 馮耀輝等.PowerPCB 5.0入門(mén)與提高[M

57、].北京:人民郵電出版社,2004:17-48.</p><p>  [4] 康華光等.電子技術(shù)基礎(chǔ)第2版[M].北京:高等教育出版社,2004:10-156.</p><p>  [5] 胡凱,張穎超.生化分析儀的設(shè)計(jì)及與PC機(jī)的通信[J].微計(jì)算機(jī)信息,2006:208-209.</p><p>  [6] 馬鴻文.基于AT89C52單片機(jī)的自動(dòng)存取柜的設(shè)計(jì)與實(shí)

58、現(xiàn)[M].微計(jì)算機(jī)信息,2006:101-103.</p><p>  [7] 曹巧媛.單片機(jī)原理及應(yīng)用[M].北京:電子工業(yè)出版社,2002.</p><p>  [8] 牛翌光.單片機(jī)原理及接口技術(shù)[M].北京:電子工業(yè)出版社,2008:32-79.</p><p>  [9] 楊路明.C語(yǔ)言程序設(shè)計(jì)[M].北京:北京郵電大學(xué)出版社,2005:52-268.&l

59、t;/p><p>  [10] 張文崢,李先亮,張其善.IrDA 紅外通信在導(dǎo)航儀中的應(yīng)用[J]. 2000,10.</p><p>  [11] 邱玉春,李文俊.單片機(jī)系統(tǒng)中的紅外通信接口[J].2000:56-163. </p><p>  [12] 黃耀軍,周云,嚴(yán)國(guó)萍.計(jì)算機(jī)紅外無(wú)線互連的設(shè)計(jì)幾實(shí)現(xiàn)[J].2000,2. </p><p>

60、;  [13] 麥山,皮佑國(guó).基于單片機(jī)的協(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: ;解碼開(kāi)始</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;延時(shí)882微秒</p><p>  MOV R7,#202</p><p>  DELAY882_

64、A:;882us延時(shí)</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ù)錯(cuò)誤退出解碼</p><p>  DJNZ R6

65、,IR_SB;重復(fù)10次檢測(cè)</p><p><b>  ;識(shí)別連發(fā)碼</b></p><p>  JNB P3.2,$;等待高電平避開(kāi)9MS低電平引導(dǎo)脈沖</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;這里為低電平,認(rèn)為是連發(fā)碼</p><p>  ;LCALL

68、 DELAY2400 ;延時(shí)4.74MS避開(kāi)4.5MS的結(jié)果碼</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,$;等待地址碼第一位的高電平信號(hào)</p><p>  ;LCALL DELAY882;高電平來(lái)后開(kāi)始延時(shí)882uS</p><p>  MOV R7,#202</

72、p><p>  DELAY882_B:;882us延時(shí)</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;延時(shí)后為為低電平則跳到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 ;解碼結(jié)束</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í)函數(shù)</p><p>  ; MOV R7,#202</p><p>  ; DELAY882_A:;882us延時(shí)</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時(shí)鐘線</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ā)送字符個(gè)數(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í)函數(shù)**************************/</p><p>  void delay(unsigned int loop) </p><p>  {

129、unsigned int i ; //loop 為執(zhí)行空指令的次數(shù),改變它可一改變延時(shí)時(shí)長(zhǎng)</p><p>  for(i=0;i<loop;i++);//循環(huán)執(zhí)行空指令loop次,達(dá)到延時(shí)目的</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;//開(kāi)蜂鳴器</p><p>  addr3 = 1;</p><p>  addr3 = 0;//數(shù)據(jù)鎖存到U13(74HC574)</p><p>  delay(500);//延時(shí)</p><p>  addr0 = 1;</p><p>  addr

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

評(píng)論

0/150

提交評(píng)論