本科畢業(yè)設(shè)計(jì)-基于51單片機(jī)的紅外遙控密碼鎖設(shè)計(jì)._第1頁
本科畢業(yè)設(shè)計(jì)-基于51單片機(jī)的紅外遙控密碼鎖設(shè)計(jì)._第2頁
本科畢業(yè)設(shè)計(jì)-基于51單片機(jī)的紅外遙控密碼鎖設(shè)計(jì)._第3頁
本科畢業(yè)設(shè)計(jì)-基于51單片機(jī)的紅外遙控密碼鎖設(shè)計(jì)._第4頁
本科畢業(yè)設(shè)計(jì)-基于51單片機(jī)的紅外遙控密碼鎖設(shè)計(jì)._第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于51單片機(jī)的紅外遙控密碼鎖摘 要:關(guān)于如何加強(qiáng)家庭住房安全問題日益突出。傳統(tǒng)的機(jī)械防盜鎖構(gòu)造過于簡單,盡管有些經(jīng)過加固以及增加相應(yīng)的防護(hù)措施,但是鎖被撬現(xiàn)象屢見不鮮,無法保障人們的安全。本次設(shè)計(jì)中制作的一種密碼鎖,具有很好的保密性。另外,此處采用的是雙控模式,即使用鍵盤控制的同時(shí),也可以使用遙控器。操作中的提示語用LCD來顯示。密碼由六位0到9的數(shù)字夠成,加大保密強(qiáng)度,此外,本設(shè)計(jì)中采用的AT24c02具有防止掉電丟失數(shù)據(jù)的作用。關(guān)鍵詞:51單片機(jī);密碼鎖;紅外;LCD1602Based on 51 SCM Infrared Remote Control Combination Lock

2、Abstract: Security issues have become increasingly prominent on how to strengthen the family home. Traditional mechanical anti-theft lock structure is too simple, although some had been strengthened and increased appropriate protective measures, but lock pry common occurrences, can not guarantee the

3、 safety of people. A lock made in the design, with good confidentiality. In addition, here is the dual-control mode that is controlled using the keyboard at the same time, you can also use the remote control. Prompt operation using the LCD display. Password by six 0-9 of digital enough increase conf

4、identiality strength, In addition, the design used in AT24c02 prevent power-down data loss.Key words: 51 SCM; Combination lock;Infrared;LCD1602目 錄1 引言- 1 -1.1研究背景與意義- 1 -1.2 研究現(xiàn)狀- 1 -1.3 研究內(nèi)容- 1 -2 系統(tǒng)設(shè)計(jì)方案- 2 -2.1 總體方案- 2 -2.2 系統(tǒng)框圖- 2 -3 系統(tǒng)硬件電路設(shè)計(jì)- 3 -3.1 單片機(jī)最小系統(tǒng)設(shè)計(jì)- 3 -3.2 LCD顯示電路設(shè)計(jì)- 4-3.3 矩陣鍵盤電路設(shè)計(jì)- 5

5、 -3.4 存儲(chǔ)電路設(shè)計(jì)-6 -3.5紅外發(fā)送接收電路設(shè)計(jì)- 7 -3.6 模擬鎖與報(bào)警電路設(shè)計(jì)- 10 -3.7系統(tǒng)PCB設(shè)計(jì)- 11 -4 系統(tǒng)軟件設(shè)計(jì)- 12 -4.1 程序設(shè)計(jì)思路- 12 -4.2 算法與流程圖-13 -5 系統(tǒng)仿真與硬件調(diào)試- 14 -5.1系統(tǒng)仿真和調(diào)試方案- 14 -5.2 系統(tǒng)硬件調(diào)試- 16 -5.3 調(diào)試結(jié)果- 17 -6 總結(jié)與展望- 17 -致謝-17 -參考文獻(xiàn)- 18-附錄- 18 -1元器件清單- 18 -2源程序-18 -1 引言1.1 研究背景與意義我們知道當(dāng)某一個(gè)公司研發(fā)一些新產(chǎn)品時(shí)都會(huì)特別重視其資料的安全問題,在競爭日益激烈的當(dāng)下,新研發(fā)

6、的產(chǎn)品資料,科研項(xiàng)目,以及單位的文件檔案、財(cái)務(wù)報(bào)表,個(gè)人資料等等,都是特別保護(hù)的對象,萬一泄露將直接關(guān)系到一個(gè)企業(yè)的存亡。再從我們身邊來說,家庭住房多采用一般的機(jī)械鎖。這樣不僅不安全,而且,每天都要帶鑰匙很不方便。若不慎丟失鑰匙更會(huì)產(chǎn)生事倍功半的效果。本次設(shè)計(jì)的密碼鎖將滿足人們的要求。在科技高速發(fā)展的今天,非接觸式控制越來越受大家歡迎,利用紅外遙控,方便又安全。另外,紅外線不會(huì)產(chǎn)生信號(hào)干擾,反應(yīng)速度迅速、工作穩(wěn)定度高等特點(diǎn)。而在工業(yè)制造中,在高壓、輻射、腐蝕等惡劣環(huán)境下,采用紅外遙控能夠很好地隔離這些干擾。在本次設(shè)計(jì)中,為了更加方便操作,除了采用矩陣鍵盤對密碼鎖進(jìn)行控制外,還可以用遙控器進(jìn)行控

7、制,以達(dá)到雙控的目的。1.2 研究現(xiàn)狀目前大部分的家庭用鎖采用的都是機(jī)械式的,一種鑰匙對應(yīng)一把鎖,但鑰匙可復(fù)制,這無疑給人們的安全帶來極大威脅。另外,其最大的缺點(diǎn)是利用簡單工具就能很容易地把鎖撬開。加深了人們的安全隱患。針對這種情況,本次設(shè)計(jì)制作了一種紅外遙控密碼鎖,遙控器型號(hào)很常見,應(yīng)用及為廣泛,若突然摔壞或丟失即可到商店購買。由于本設(shè)計(jì)采用的存儲(chǔ)器可防止斷電數(shù)據(jù)丟失,因此更換遙控器或在整個(gè)電路斷電又重啟的情況下密碼仍為先前設(shè)定值,具有很好的保密性。此外,密碼共有六位,每位由0到9,十個(gè)數(shù)字構(gòu)成,因此可設(shè)定106種密碼,提高密保安全。然而,一般設(shè)備都采用專用的遙控編碼及解碼集成電路,此類電路

8、雖然制作簡單,但由于某些特定功能的限制,例如編碼解碼等協(xié)議限制,只適用于專用的電器產(chǎn)品,配套性強(qiáng),應(yīng)用范圍也因此受到限制。1.3 研究內(nèi)容主要的設(shè)計(jì)實(shí)施過程:本次設(shè)計(jì)選用ATMEL公司的單片機(jī)AT89C51,用于控制的LCD等。第二步,使用Altium Designer 6完成原理圖,并設(shè)計(jì)PCB圖完成人工布線。并腐蝕電路板。第三步,在Keil uVision4軟件中用C語言進(jìn)行編程,外加仿真軟件對程序進(jìn)行修改,調(diào)試。第四部,結(jié)合軟、硬件對電路板進(jìn)行調(diào)試。最后完成本次設(shè)計(jì)。2 系統(tǒng)設(shè)計(jì)方案2.1 總體方案方案一:采用矩陣按鍵,通過單片機(jī)將字符送到數(shù)碼管顯示,另外,密碼鎖部分用電磁繼電器來進(jìn)行模

9、擬。 存儲(chǔ)密碼為防止斷電丟失,用存儲(chǔ)器進(jìn)行存儲(chǔ)。報(bào)警部分采用比較常用的蜂鳴器,外圍驅(qū)動(dòng)電路較簡單。方案二:同樣采用矩陣鍵盤,考慮到需要顯示多個(gè)字符的問題,此時(shí)采用液晶顯示LCD1602。此處的模擬鎖用發(fā)光二極管來代替。用存儲(chǔ)器AT24c02來存儲(chǔ)密碼,報(bào)警部分依然采用蜂鳴器。通過兩個(gè)方案的比較綜合,考慮到外圍設(shè)備,成本等問題,本次設(shè)計(jì)將采用第二種方案。硬件方面解決單片機(jī)與外圍電路的設(shè)計(jì),主控模塊采用方案二來進(jìn)行設(shè)計(jì),另外用遙控器作為發(fā)送端的同時(shí),應(yīng)在主控模塊加上接收模塊,對遙控器發(fā)射的信號(hào)進(jìn)行接收,解碼等處理。由于鍵碼值由商家提供,因此只需將每個(gè)鍵碼值賦予特定的功能,以此來控制密碼鎖的開關(guān),改

10、密等,并送到LCD1602上顯示。另外,還有單片機(jī)最小系統(tǒng)。軟件方面,首先是按鍵掃描問題,如何判斷哪一個(gè)按鍵按下,如何讓其并以何種形式顯示到LCD1602上,這里就要考慮到1602的顯示,地址寫入等問題。紅外的控制是本設(shè)計(jì)的難點(diǎn),遙控器是以紅外波的方式將特定的信號(hào)送給紅外接收頭。由于本設(shè)計(jì)采用的遙控器比較普遍,因此編碼解碼問題可以很容易查閱到。2.2 系統(tǒng)框圖本文所設(shè)計(jì)的作品系統(tǒng)由AT89S51單片機(jī)及其最小系統(tǒng)、矩陣鍵盤、紅外接收頭、遙控器、蜂鳴器、模擬鎖、LCD1602液晶顯示等部分組成。其系統(tǒng)框架圖如圖1所示4*4按鍵 51 單 片 機(jī) 蜂鳴器模擬鎖LCD紅 外 發(fā) 射 器上鍵復(fù)位紅 外

11、 發(fā) 射 器晶振電路紅外接收頭圖1 總體系統(tǒng)框架圖3 系統(tǒng)硬件電路設(shè)計(jì)3.1 單片機(jī)最小系統(tǒng)設(shè)計(jì)本次設(shè)計(jì)的單片機(jī)采用ATMEL公司推出的AT89S51系列單片機(jī)。最小系統(tǒng)包括上電復(fù)位電路和晶振電路【1】【2】。上電復(fù)位電路結(jié)構(gòu)如圖2中R1,R2,C3和sw1.其中R1和R2分別為1K和10K。通過手動(dòng)來進(jìn)行復(fù)位。圖2 上電復(fù)位電路晶振電路結(jié)構(gòu)如圖3中Y1,C1,C2.本設(shè)計(jì)選擇12MHz頻率的石英晶體,補(bǔ)償電容采用30pF左右的瓷片電容.圖3 晶振電路3.2 LCD顯示電路設(shè)計(jì)從設(shè)計(jì)成本來考慮,顯示電路部分首先會(huì)想到用數(shù)碼管,但由于一個(gè)數(shù)碼管只可以顯示一個(gè)字符,例如本次設(shè)計(jì)中,進(jìn)入界面要顯示w

12、elcome,輸入密碼是也要提示input code等等,就要用到10多個(gè)數(shù)碼管。此外,每個(gè)數(shù)碼管的位選端必須要通過單片機(jī)的IO口進(jìn)行控制,這就要占用多個(gè)IO口,且在PCB板中進(jìn)行手動(dòng)布線時(shí)會(huì)很復(fù)雜。因此這次設(shè)計(jì)中,采用LCD1602。由于采用的LCD1602是16×2兩行顯示。第一行顯示提示內(nèi)容,第二行顯示鍵入的數(shù)值。LCD1602具有很高的性價(jià)比,且應(yīng)用很廣泛。另外本設(shè)計(jì)使用插針將1602接到電路中,若1602出現(xiàn)故障更換方便。1602外觀如下圖4所示:圖4 LCD1602管腳圖LCD1602在電路中的連接方式,如下圖所示: 圖5 LCD硬件連接圖3.3 矩陣鍵盤電路設(shè)計(jì)本次設(shè)計(jì)

13、要運(yùn)用按鍵來控制,這時(shí)會(huì)想到有獨(dú)立式鍵盤和矩陣式鍵盤兩種連接方式,其中,獨(dú)立鍵盤需要使用多個(gè)IO口,由于本次設(shè)計(jì)要用到16個(gè)按鍵,因此若用獨(dú)立按鍵會(huì)極大降低IO口的利用率。因此,本次實(shí)驗(yàn)采用的是4×4矩陣鍵盤,電路連接比較復(fù)雜,但同時(shí)提高了IO口的利用率。如下圖所示,16個(gè)按鍵上分別實(shí)現(xiàn)不同功能,其中輸入數(shù)字鍵:0、1、2、3、4、5、6、7、8、9;以及相應(yīng)的功能鍵。鍵盤的每個(gè)按鍵所代表的功能如下圖所示:圖6 4×4矩陣鍵盤3.4 存儲(chǔ)電路設(shè)計(jì)關(guān)于密碼保護(hù)問題,除了由六位隨機(jī)數(shù)字組成,還要考慮到斷電之后數(shù)據(jù)會(huì)丟失的問題,為了防止掉電丟失,本設(shè)計(jì)采用AT24c02存儲(chǔ)器。是

14、一個(gè)2K位串行CMOS E2PROM。內(nèi)部含有256個(gè)8位字節(jié),CATALYST公司的先進(jìn)CMOS技術(shù)實(shí)質(zhì)上減少了器件的功耗。管腳圖如圖7所示: 圖7 AT24c02管腳圖表1 AT24c02管腳功能管腳名稱管腳功能A0、A1、A2器件地址選擇SDA串行數(shù)據(jù)/地址SCL串行時(shí)鐘WP寫保護(hù)Vcc+1.8-6.0工作電壓Vss接地圖8存儲(chǔ)器地址位下圖為24C02在硬件中的的連接圖,根據(jù)各個(gè)管腳功能只需把A0、A1、A2、wp接地,按照I2C協(xié)議,時(shí)鐘線SCL和數(shù)據(jù)線SDA需接10K上拉電阻。圖9 AT24c02硬件連接圖3.5 紅外發(fā)送接收電路設(shè)計(jì)1)紅外發(fā)送模塊這次設(shè)計(jì)中用到的遙控器其實(shí)物圖如下

15、圖所示: 圖10 小型遙控器 特點(diǎn):通過無線來控制,攜帶方便,低成本,低功耗等。遙控器應(yīng)用范圍:電器、兒童玩具等。按編碼分類,有兩種編碼方式,主要分為RC5碼和NEC碼【3-5】。由于本次設(shè)計(jì)用到的遙控器采用的是NEC編碼協(xié)議,下面將重點(diǎn)描述NEC碼特性。NEC格式的特征:(1)使用16位客戶代碼(2)使用8位數(shù)據(jù)代碼(3)引導(dǎo)碼間隔是9 ms + 4.5 ms(4)使用38 kHz載波頻率下圖為接收頭上觀察到的波形: 圖11 遙控信號(hào)周期波形圖12 引導(dǎo)碼間隔圖NEC碼編碼原理如下:(1)數(shù)據(jù)幀結(jié)構(gòu)(組成) 圖13 數(shù)據(jù)幀結(jié)構(gòu)圖(2)“0”、“1”的表示方法: 圖14 “0”和“1”的發(fā)射圖

16、 2)紅外接收本次設(shè)計(jì)采用的紅外遙控信號(hào)的接收集紅外接收和放大于一體,不需要添加其他外圍電路,就可以輸出與TTL電平兼容的信號(hào)。以此來完成紅外遙控的發(fā)送于接收。本次設(shè)計(jì)采用的是VS_1838b。外觀如下: 圖15 紅外接收頭VS_1838b由于密碼采用雙控模式,在主控模塊采用矩陣鍵盤進(jìn)行密碼的輸入及修改,因此,將紅外接收端接到單片機(jī)的外部中斷1來檢測是否有紅外信號(hào),進(jìn)而判斷遙控器是否有按鍵按下,并進(jìn)行密碼的輸入與修改。由原理圖可知,接收頭的三個(gè)管腳,只需要將GND接地VCC接入電源,另一根輸出線接入到單片機(jī)的外部中斷1口即可。紅外接收頭與單片機(jī)的連接硬件電路如下圖所示: 圖16 紅外接收頭連接

17、圖3.6 模擬鎖與報(bào)警電路設(shè)計(jì)本次設(shè)計(jì)采用led來模擬鎖,將發(fā)光二極管接到單片機(jī)的IO口上,實(shí)際應(yīng)用中接上一個(gè)1K電阻以保證發(fā)光二極管的亮度。如下圖所示:圖17 led連接圖 報(bào)警電路采用的是蜂鳴器,由于蜂鳴器的工作電流一般比較大,這將導(dǎo)致單片機(jī)的IO口無法直接進(jìn)行驅(qū)動(dòng)【6】【7】。以至于單片機(jī)的I/O 口是無法直接驅(qū)動(dòng),所以要使用放大電路用以驅(qū)動(dòng)蜂鳴器,本次設(shè)計(jì)采用三極管來進(jìn)行蜂鳴器的驅(qū)動(dòng)。蜂鳴器驅(qū)動(dòng)電路的外圍設(shè)計(jì):蜂鳴器、三極管再加上一個(gè)1K電阻接到單片機(jī)的IO口上。蜂鳴器外圍電路如下: 圖18 蜂鳴器連接圖3.7 系統(tǒng)PCB設(shè)計(jì)根據(jù)上述每個(gè)模塊的設(shè)計(jì),以及單片機(jī)的各個(gè)管腳特性整體電路如圖

18、19。由于LCD接的是單片機(jī)的P0口所以每個(gè)管腳要接一個(gè)10K的上拉電路,即10K排阻。電源部分采用的是USB給單片機(jī)提供+5V的電源,發(fā)光二極管來指示有沒有給單片機(jī)供電。再考慮每個(gè)模塊需要加入的外圍電路,以及接入到單片機(jī)相應(yīng)的IO口,為了方便程序的修改,要嚴(yán)格按照仿真的接法接到單片機(jī)的管腳,本設(shè)計(jì)總體原理圖如下圖所示:圖19 總體原理圖4 系統(tǒng)軟件設(shè)計(jì)4.1 程序設(shè)計(jì)思路本次設(shè)計(jì)的密碼鎖,采用的是雙控模式,即在主控模塊中有4×4矩陣鍵盤可以輸入數(shù)字來進(jìn)行改密等功能,同時(shí)也可以用遙控器來實(shí)現(xiàn)。首先考慮到矩陣鍵盤的掃描問題,單片機(jī)IO口默認(rèn)為高電平,如上面矩陣鍵盤圖所示,鍵盤的列和行分

19、別接P1口的高低電平,可以先固定在某一行進(jìn)行掃描,利用switch語句返回每個(gè)按鍵鎖表示的數(shù)值及跳轉(zhuǎn)到某個(gè)功能函數(shù)中去,以此來實(shí)現(xiàn)按鍵控制。其次是1602LCD顯示問題,先將LCD初始化,首行顯示提示語例如登陸界面 顯示welcome,開鎖是顯示input code等。第二行用來顯示密碼??紤]到安全性,將會(huì)將數(shù)字顯示成*,提示語及密碼均顯示在LCD的正中間以保證屏幕的整體美觀效果。其中密碼為六位數(shù)。然后是AT24c02存儲(chǔ)器,防止密碼斷電丟失。先寫24c02的驅(qū)動(dòng)程序,時(shí)鐘信號(hào),讀寫數(shù)據(jù)等等,要考慮怎么將密碼寫入到24c02中,以及從中讀取等問題。讓LCD顯示字符的同時(shí)保存到AT24c02中。

20、最后要考慮遠(yuǎn)程遙控問題,遙控器來發(fā)送紅外波,并由接收頭接收信號(hào)經(jīng)過處理之后傳到單片機(jī)中,再經(jīng)過程序運(yùn)行處理來進(jìn)行開鎖、改密等。由前面的硬件介紹部分可知接收頭連接的是外部中斷1,當(dāng)發(fā)射器發(fā)送信號(hào)時(shí),外部中斷1打開,此時(shí)進(jìn)入中斷程序,遙控器的21個(gè)按鍵有各自的鍵碼值,同上述按鍵掃描采用switch語句可返回各個(gè)按鍵代表的數(shù)字及功能,以此來實(shí)現(xiàn)遙控器對密碼鎖的控制。另外,密碼鎖是用發(fā)光二極管來模擬,只需用高低電平來控制IO口即可。即當(dāng)接發(fā)光二極管接的IO口為低電平時(shí)led點(diǎn)亮(可認(rèn)為開鎖)。當(dāng)IO口味高電平時(shí)led熄滅,此時(shí)認(rèn)為上鎖。蜂鳴器是用三極管來驅(qū)動(dòng)接入到單片機(jī)的IO口,如發(fā)光二極管,當(dāng)IO口

21、為低電平時(shí)蜂鳴器響。所以,當(dāng)密碼錯(cuò)誤時(shí),給IO口送低電平即可達(dá)到報(bào)警效果。4.2 算法與流程圖鑒于密碼鎖在輸入密碼時(shí)可有矩陣按鍵及遙控器進(jìn)行雙控,紅外遙控采用中斷的方式進(jìn)行接收信號(hào),先是按鍵的掃描,判斷是執(zhí)行某個(gè)任務(wù)還是將輸入密碼輸送到LCD1602上面。接收頭的輸出管腳連接的是單片機(jī)的外部中斷1口,因此,在程序運(yùn)行時(shí),首先要判斷是否產(chǎn)生中斷。先是遙控器發(fā)射出紅外波,由接收部分將發(fā)射過來的信號(hào)轉(zhuǎn)換為電信號(hào),再經(jīng)過放大電路等將其還原成相應(yīng)的編碼信號(hào),然后通過譯碼器譯碼,將相應(yīng)的解碼賦予不同的功能,從而進(jìn)行對密碼鎖的控制,實(shí)現(xiàn)遙控效果。本設(shè)計(jì)的主流程圖如下圖所示:開始有紅外中斷?接收碼正確否?密碼

22、對否?調(diào)用中斷解碼程序紅外解碼報(bào)警開鎖中斷返回 圖20 主程序流程圖5 系統(tǒng)仿真與硬件調(diào)試5.1 系統(tǒng)仿真和調(diào)試方案根據(jù)上述各個(gè)模塊的功能以及PCB設(shè)計(jì)可用PROTEUS來進(jìn)行仿真,修改程序。仿真圖如下圖21所示: 圖21整體仿真圖仿真圖與PCB原理圖稍有差異,例如圖5.1中的存儲(chǔ)器24c02實(shí)物為8個(gè)管腳,但在PROTEUS仿真中卻只有六個(gè)管腳,其中少的兩個(gè)管腳:管腳4為GND即直接接地,管腳8為VCC,為電源。SCK接時(shí)鐘線即為SCL,SDA接數(shù)據(jù)線,其余均接地。另外,1602本為16個(gè)管腳,在PROTEUS仿真中是14個(gè)管腳,管腳3調(diào)節(jié)1602亮度接1K滑動(dòng)變阻器。實(shí)際電路中,管腳3應(yīng)接

23、10K滑動(dòng)變阻器,管腳15接10歐電阻。為了保證程序可在實(shí)物中使用,每個(gè)芯片接入到單片機(jī)的IO口都會(huì)與PCB原理圖保持一致。然后分模塊逐一進(jìn)行調(diào)試。由于本次設(shè)計(jì)采用的是市場賣的遙控器,在PROTEUS中無法進(jìn)行仿真,所以在PROTEUS仿真中只有主控模塊的原理圖。因此,先寫矩陣鍵盤控制密碼鎖的程序。根據(jù)程序設(shè)計(jì)思路首先對矩陣鍵盤進(jìn)行掃描,將對應(yīng)的數(shù)字以*的形式顯示到1602上,這里要考慮1602的寫地址。以及24c02的讀寫操作。5.2 系統(tǒng)硬件調(diào)試1)1602顯示模塊電源能夠供電并芯片沒有出現(xiàn)發(fā)熱等不正?,F(xiàn)象說明焊接正確。將1602的顯示程序通過學(xué)習(xí)板燒到做好的電路板中,檢測1602是否正常

24、顯示,若1602只亮屏不顯示字符此時(shí)調(diào)節(jié)滑動(dòng)變阻器改變對比度。若調(diào)節(jié)滑動(dòng)變阻器1602依然不顯示,此時(shí)再看看程序中1602初始化函數(shù)是否有錯(cuò),再看硬件有沒有問題,本人在調(diào)試1602的時(shí)候就遇到類似問題,電路與程序都完全正確,1602卻依然不能正常顯示,有時(shí)會(huì)出現(xiàn)亂碼的現(xiàn)象,最后發(fā)現(xiàn)竟然是單片機(jī)沒有與插槽接觸完全,導(dǎo)致1602的控制端與單片機(jī)接觸不良,因此,會(huì)出現(xiàn)時(shí)而亂碼時(shí)而不顯示的狀況。單片機(jī)固定牢固之后1602便可正常顯示。2)按鍵掃描1602能夠正常顯示之后再看通過按鍵掃描能不能將數(shù)字傳遞到1602顯示,首先檢測硬件電路是否完全通路,再將程序燒進(jìn)單片機(jī)中,按下數(shù)字鍵看能否將數(shù)字顯示到160

25、2制定的位置上,此時(shí)還要注意密碼不能超過六位數(shù)。一般按鍵如果電路正確,并且程序和硬件都無差錯(cuò)則在仿真中運(yùn)行正確實(shí)物也可以輕松實(shí)現(xiàn)器功能。3)存儲(chǔ)器硬件調(diào)試在本次設(shè)計(jì)中,如上述介紹為了防止掉電丟失采用AT24c02進(jìn)行存儲(chǔ)數(shù)據(jù)。主要是將按鍵按下的值保存到存儲(chǔ)器中,并能夠從中讀取。按下解鎖鍵,LCD1602首行顯示提示語,令一行則是顯示將要輸進(jìn)去的密碼。此時(shí)程序中還要進(jìn)行密碼的對比,若正確,led亮,說明鎖已經(jīng)打開。錯(cuò)誤,則燈滅,說明鎖已經(jīng)關(guān)閉。本人在調(diào)試過程中發(fā)現(xiàn)輸入密碼時(shí)不能夠正常開鎖,而真正能通過的密碼無從得知,若不通過存儲(chǔ)器的讀取,將初始值直接與鍵入值比較,此時(shí)密碼正確。說明存儲(chǔ)器在讀密碼

26、的時(shí)出現(xiàn)某些未知的錯(cuò)誤。經(jīng)過對程序的調(diào)試,讓此時(shí)存儲(chǔ)器隨機(jī)出現(xiàn)的密碼顯示到1602上,然后再在開鎖時(shí)鍵入對應(yīng)的密碼,此時(shí)密碼正確。這說明原始設(shè)定的密碼在調(diào)用的過程中被某一句程序改寫。此時(shí)再回到PROTEUS仿真,看下存儲(chǔ)器接線與PCB是否一致,以及芯片是否安置正確。經(jīng)過檢查發(fā)現(xiàn)電路板上放置的芯片并不是AT24c02,更換芯片后便能夠?qū)崿F(xiàn)開鎖,改密等功能。4)紅外遙控模塊首先寫一個(gè)紅外遙控發(fā)送接收程序,看是否將字符正確顯示到1602上。參考網(wǎng)上給的遙控器鍵碼值使用swith語句同矩陣按鍵掃描返回?cái)?shù)字及調(diào)用功能函數(shù)。經(jīng)過參考網(wǎng)上給出的例程,加上外部中斷1程序,使用中斷,檢測是否發(fā)送信號(hào)。再將寫好的

27、程序燒到單片機(jī)中,驗(yàn)證通過則證明遙控器可以正確使用,再將兩個(gè)程序綜合到一起來實(shí)現(xiàn)雙控。5.3 調(diào)試結(jié)果本次設(shè)計(jì)整體調(diào)試結(jié)果:給電路板送入+5V電源,1602第一行中間顯示welcome,然后按解鎖鍵,1602第一行顯示input code 此時(shí)輸入密碼再按確定鍵。若密碼正確模擬鎖led點(diǎn)亮并顯示right,密碼不正確顯示error蜂鳴器鳴叫并跳轉(zhuǎn)到最初的界面。按下改密按鍵,1602第一行顯示input old code,輸入舊密碼(密碼錯(cuò)誤則提示,并重新輸入),若密碼正確,畫面提示input new code,此時(shí)鍵入新密碼(六位數(shù)),然后按確定鍵,畫面顯示input new code aga

28、in。再一次鍵入設(shè)置的新密碼。若兩次密碼相同,則1602顯示complete。然后切斷電源,重新給電路板供電,再次輸入密碼(輸入剛才設(shè)定的新密碼),1602顯示right并模擬鎖發(fā)光二極管點(diǎn)亮。然后用遙控器如上操作,同樣可以進(jìn)行開鎖及修改密碼。6 總結(jié)與展望確定研究課題之后,查閱相關(guān)資料,設(shè)計(jì)相應(yīng)的原理圖。由于相同功能的芯片有很多,經(jīng)過對比其實(shí)用性,是否易操作,外圍電路以及程序設(shè)計(jì)難易等等來選擇較合理的芯片。另外要考慮仿真與實(shí)物的不同,所以在畫PCB板時(shí),除了注意與仿真保持一致還要注意在實(shí)物中的效果,因此要考慮元器件封裝及接入器件的電阻大小等等。寫程序時(shí)為了達(dá)到預(yù)期效果,對新接觸的芯片進(jìn)行研究

29、,通過多次修改完成每個(gè)模塊的運(yùn)行。最艱難的應(yīng)該是對電路板的調(diào)試,雖然在仿真中效果了令人滿意,但當(dāng)在實(shí)物中時(shí)卻達(dá)不到仿真的效果,這就要通過多次檢測,從每根線的焊接到每個(gè)芯片的管腳接通情況都要一一測量。每一次失敗都會(huì)離成功又進(jìn)一步。本次畢業(yè)設(shè)計(jì)不僅僅是對我大學(xué)四年的檢測也是對我毅力的考驗(yàn),讓我在一次次的打擊之后變得更堅(jiān)強(qiáng)。 致謝從開始選定課題到現(xiàn)在經(jīng)歷了將近半年的時(shí)間,在這期間遇到一些困難想要放棄的時(shí)候室友們都會(huì)鼓勵(lì)我,讓我再次有了信心。遇到不懂的問題實(shí)驗(yàn)室那些經(jīng)驗(yàn)豐富的同學(xué)都會(huì)過來給予建議,感謝他們的幫助。另外,還要感謝趙老師,總是在百忙之余指導(dǎo)我,幫我解決了不少難題,讓我順利完成了設(shè)計(jì)。參考文

30、獻(xiàn)1 張毅剛. 單片機(jī)原理及應(yīng)用(第二版)M. 北京:高等教育出版社, 2010: 16-42. 2 林伸茂. 8051單片機(jī)徹底研究基礎(chǔ)篇M. 北京:人民郵電出版社,2003:24-150. 3 麥山,皮佑國.基于單片機(jī)的協(xié)議紅外遙控系統(tǒng)J.1998.4 邱玉春,李文俊.單片機(jī)系統(tǒng)中的紅外通信接口J.2000:56-163.5 張文崢,李先亮,張其善.IrDA 紅外通信在導(dǎo)航儀中的應(yīng)用J. 2000.6 康華光等.電子技術(shù)基礎(chǔ)第2版M.北京:高等教育出版社,2004:10-156.7 牛翌光.單片機(jī)原理及接口技術(shù)M.北京:電子工業(yè)出版社,2008:32-79.附錄1元器件清單元器件名稱及規(guī)格

31、數(shù)量51單片機(jī)1晶振12MHZ1瓷片電容30PF2電解電容10 uF 2USB1發(fā)光二極管2蜂鳴器1三極管PNP1AT24C021滑動(dòng)變阻器10K1排阻10K1電阻1K4按鍵17自鎖按鍵1電阻10K3電阻10歐12源程序#include<at89x52.h>#include<intrins.h> /包含_nop_()函數(shù)定義的頭文件#define uchar unsigned char#define uint unsigned int#define delayNOP(); _nop_();_nop_();_nop_();_nop_();#define dword uns

32、igned long#define keypad P1#define PASSWORD_LENGTH 6 /不要超過9#define PASSWORD_ADDR 0x10#define PASSWORD_ENTRY 0x08#define AddWr 0xa0 /寫數(shù)據(jù)地址,需要參考24c02芯片文檔#define AddRd 0xa1 /讀數(shù)據(jù)地址#define default_passwords 123456#define default_entrywords 20130411#define wait_time 600 /等待600s后關(guān)閉顯示屏,節(jié)電uchar IRCOM7;/*紅外延時(shí)

33、函數(shù)聲明*/void delay(uint);void delay1ms();void delay(unsigned char x) ;void display();void delay1(int ms);sbit IRIN=P33; /外部中斷1/sbit lock=P23;/模擬鎖sbit buzzer=P24;/蜂鳴器void delay(unsigned char x) /x*0.14MSunsigned char i;while(x-)for (i = 0; i<13; i+) sbit sda=P26;sbit scl=P25;dword time_value=0,passw

34、ords=123456;bit key_flag=0,currentdisflag=1,lastdisflag=1,keystatusflag=0,dispassword_com=0,dispassword_flag=0;uchar second=0,minute=0,hour=0;uchar key=0,keycounts=0,t_num=0;uchar code tab1="Input code "uchar code tab2=" Right! "uchar code tab3="Error "uchar code tab4=&

35、quot;Welcome enter "uchar code tab5="Input old code "uchar code tab6="Input new code "uchar code tab7="Input code again"uchar code tab8="Complete! "uchar code cls= " "uchar code open="Welcome. "uchar code tab9="- "uchar code

36、message16="0123456789abcdef"/*LCD1602驅(qū)動(dòng)*/#define LCD_Data P0/數(shù)據(jù)接口sbit rs=P20;/定義接口sbit rw=P21;sbit en=P22;sbit led=P23;void LCD_Init(void);void LCD_WriteData(uchar WDLCD);void LCD_WriteCommand(uchar WCLCD);void DisplayOneChar(uchar X, uchar Y, uchar DData);void DisplayListChar(uchar X, uch

37、ar Y, uchar code *DData);/*延時(shí)函數(shù)*/void delay11();void delay2(uint t) /延時(shí)函數(shù)msuint x,y;for(x=t;x>0;x-)for(y=110;y>0;y-); /*1602寫數(shù)據(jù)函數(shù)*/void LCD_WriteData(uchar WDLCD) rs=1;rw=0;en=1;LCD_Data=WDLCD;delay2(1);en=0;/*1602寫指令函數(shù)*/void LCD_WriteCommand(uchar WCLCD)/BusyC為0時(shí)忽略忙檢測 rs=0; rw=0; en=1; LCD_Da

38、ta=WCLCD; delay2(1); en=0;/*1602初始化函數(shù)*/void LCD_Init(void)LCD_WriteCommand(0x38); /設(shè)置顯示模式:16X2,5X7,8位數(shù)據(jù)接口 LCD_WriteCommand(0x0c); /開顯示,顯示光標(biāo),光標(biāo)閃爍 LCD_WriteCommand(0x06); /讀寫一個(gè)字符后,地址指針及光標(biāo)加一,且光標(biāo)加一整屏顯示不移動(dòng) LCD_WriteCommand(0x80); /設(shè)置光標(biāo)指針/*1602按指定位置顯示一個(gè)字符函數(shù)*/void DisplayOneChar(uchar X, uchar Y, uchar DDa

39、ta) Y &= 0x1; X &= 0xF;/限制X不能大于15,Y不能大于1 if (Y) X |= 0x40;/當(dāng)要顯示第二行時(shí)地址碼+0x40; X |= 0x80;/ 算出指令碼 LCD_WriteCommand(X);/這里不檢測忙信號(hào),發(fā)送地址碼 /delay(1); LCD_WriteData(DData); /delay(1);/*1602按指定位置顯示一串字符函數(shù)*/void DisplayListChar(uchar X, uchar Y, uchar code *DData) uchar ListLength; ListLength = 0; Y &am

40、p;= 0x1; X &= 0xF;/限制X不能大于15,Y不能大于1 while (DDataListLength!='0')/若到達(dá)字串尾則退出 if (X <= 0xF)/X坐標(biāo)應(yīng)小于0xF DisplayOneChar(X, Y, DDataListLength);/顯示單個(gè)字符 ListLength+; X+; /*LCD1602驅(qū)動(dòng)*/*24C02驅(qū)動(dòng)*/void start() /開始信號(hào)sda=1;delay11();scl=1;delay11();sda=0;delay11();scl=0;void stop() /停止信號(hào)sda=0;delay

41、11();scl=1;delay11();sda=1;delay11();scl=0;sda=0;void respons() /應(yīng)答uchar i;sda=0;scl=1;delay11();while(sda=1)&&(i<250)i+;scl=0;delay11();void write_byte(uchar indata) /寫一個(gè)字節(jié)uchar i,temp;temp=indata;for(i=0;i<8;i+)temp=temp<<1;scl=0;delay11();sda=CY;delay11();scl=1;delay11();scl=0

42、;delay11();sda=1;delay11();uchar read_byte() /讀一個(gè)字節(jié)uchar i,k=0;scl=0;delay11();sda=1;delay11();for(i=0;i<8;i+)scl=1;delay11();k=(k<<1)|sda;scl=0;delay11();return k;void WrToROM_Byte(uchar address,uchar indata)start();write_byte(AddWr);respons();write_byte(address);respons();write_byte(indat

43、a);respons();stop();uchar RdFromROM_Byte(uchar address)uchar indata;start();write_byte(AddWr);respons();write_byte(address);respons();start();write_byte(AddRd);respons();indata=read_byte();stop();return indata;void WrToROM_dword(uchar address,dword indata) uchar temp=0,i=0; /refresh_display(0,1,cls)

44、; for(i=0;i<4;i+) temp=(indata>>(8*i)&0xff; /DisplayOneChar(7-2*i,1,messagetemp%0x10); /DisplayOneChar(6-2*i,1,messagetemp/0x10); delay2(1); WrToROM_Byte(address+i,temp); delay2(1); /DisplayData(indata);dword RdFromROM_dword(uchar address) uchar i=0,temp=0; dword indata=0; /refresh_disp

45、lay(0,1,cls); for(i=0;i<4;i+) temp=RdFromROM_Byte(address+3-i); indata=(indata<<8)+temp; /DisplayOneChar(2*i+1,1,messagetemp%0x10); /DisplayOneChar(2*i,1,messagetemp/0x10); delay2(1); /DisplayData(indata);delay2(1); return indata;void init_24C02() /初始化sda=1;delay11();scl=1;delay11();/*24C02

46、驅(qū)動(dòng)*/*定時(shí)器1中斷*/void IR_IN() interrupt 1unsigned char j,k,N=0;unsigned char q=0;TH0=(65536-50000)/256; TL0=(65536-50000)%256;EX1 = 0; delay(15);if (IRIN=1) EX1 =1;return; /確認(rèn)IR信號(hào)出現(xiàn)/*/while (!IRIN) /等IR變?yōu)楦唠娖剑^9ms的前導(dǎo)低電平信號(hào)。delay(1);for (j=0;j<4;j+) /收集四組數(shù)據(jù) for (k=0;k<8;k+) /每組數(shù)據(jù)有8位while (IRIN) /等 I

47、R 變?yōu)榈碗娖剑^4.5ms的前導(dǎo)高電平信號(hào)。delay(1);while (!IRIN) /等 IR 變?yōu)楦唠娖絛elay(1);while (IRIN) /計(jì)算IR高電平時(shí)長delay(1);N+; if (N>=30) EX1=1;return; /0.14ms計(jì)數(shù)過長自動(dòng)離開。 /高電平計(jì)數(shù)完畢 IRCOMj=IRCOMj >> 1; /數(shù)據(jù)最高位補(bǔ)“0”if(N>=8)IRCOMj = IRCOMj | 0x80; /數(shù)據(jù)最高位補(bǔ)“1” N=0;if(IRCOM2!=IRCOM3) EX1=1;return; IRCOM5=IRCOM2 & 0x0F; /取鍵碼的低四位IRCOM6=IRCOM2 >> 4; /右移4次,高四位變?yōu)榈退奈籭f(IRCOM5>9) IRCOM5=IRCOM5+0x37;el

溫馨提示

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

評論

0/150

提交評論