




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、畢業設計(論文)設計(論文)題目基于單片機的電子密碼鎖的設計紅外模塊設計姓 名:劉寧學 號:20078001091學 院:機電與信息工程學院專 業:自動化年 級2007級指導教師:洪曉英目 錄摘 要iabstracti一、 引 言- 1 -(一)課題背景- 1 -(二)設計目標與意義- 1 -二、 系統總體方案設計- 2 -三、 紅外遙控簡介- 2 -(一)紅外遙控發展簡介- 2 -(二)紅外遙控編碼- 2 -四、 遙控模塊硬件設計- 4 -(一)遙控系統的構成- 4 -(二)選用芯片介紹- 4 -1. 遙控編碼芯片lc7461- 4 -2.一體化紅外接收頭- 4 -(三)遙控模塊硬件設計-
2、5 -五、 紅外模塊軟件設計- 5 -(一)hs0038的解調- 5 -(二)解碼- 6 -(三)紅外解碼流程圖- 7 -六、 密碼鎖系統硬件設計- 8 -(一)電源輸入模塊- 8 -(二)振蕩電路- 8 -(三)復位電路- 8 -(四)密碼掉電存儲模塊- 9 -(五)鍵盤- 9 -(六)液晶顯示模塊- 10 -(七)聲光報警電路- 10 -(八)開鎖電路- 10 -七、 系統軟件設計部分流程圖- 12 -(一)主程序流程圖- 12 -(二)密碼接收子程序流程圖- 13 -(三)開鎖判斷子程序流程圖- 14 -(四)更改密碼判定子程序流程圖- 15 -八、 總結- 15 -參考文獻- 16 -
3、附錄一 總電路原理圖- 17 -附錄二 實物圖- 18 -附錄三 程序清單- 19 -謝 辭- 32 -摘 要隨著人們生活水平的提高,防盜意識也隨之增強。由于集成電路的發展,電子密碼鎖以其方便、安全系數高、密碼可變更性等優點,在我們的生活中得到越來越廣泛的應用。本課題以單片機為主控單元,結合鍵盤、lcd顯示、at24c02存儲、遙控等外圍電路,使密碼鎖能夠在接受用戶設定的正確密碼時開鎖,反之報警提示。用戶可隨時更改開鎖密碼以提高安全性。設計中遙控功能更是應用廣泛的人性化設計。電子密碼鎖簡單實用,安全系數高,成本越來越低,具有很大市場前景。關 鍵 詞:單片機 密碼鎖 遙控abstractwith
4、 the development of our living standard, the sense of security is becoming stronger and stronger. as the development of ic, electronic combination lock is widely used in our life, because of its advantages such as convenience, high safety factor, the changeability of the passwords.in this design, si
5、ngle chip microcomputer (scm) is used as the main control unit. the design can unlock the door or make a warning, combined with the peripheral circuit, such as keyboard, lcd display, at24c02 (password memory), remote control module. in addition, users can change the password to improve the security
6、standard of the lock. whats more, the remote control is a design based on practicality and humanity.electronic combination lock has a bright market prospect, as its simplity, practicality and high security. keywords:scm combination lock remote control- 37 -一、 引 言(一)課題背景隨著科學技術發展與生活水平提高,人們的安全意識也越來越強。傳
7、統的機械鎖,人們仍在大量使用,但是在安全性能要求較高的場合,傳統的機械鎖由于其成本高、制造難度大、安全系數低等缺點,早已經不能滿足需求。而傳統鎖,再牢固,也只是機械裝置,總有辦法將其破壞,還要面臨攜帶鑰匙的麻煩。在鑰匙丟失的情況下,則會出現安全漏洞。為了填補此漏洞,有時候甚至需要更換鎖頭,造成不便的同時,還增加成本。由于電子技術與集成電路的迅速發展,各種新型電子產品誕生,而電子鎖則是產物之一。電子鎖有很多種類,目前比較實用的是按鍵式電子密碼鎖。其他電子鎖有指紋鎖,生物鎖,磁卡鎖,數碼鎖, ic卡鎖等。電子密碼鎖是由輸入密碼來控制電路或芯片工作,繼而控制機械開關的閉合,完成開鎖、閉鎖任務的電子產
8、品。它有很多的種類,有簡易的邏輯電路產品,也有性價比較高的基于芯片的產品。后者是通過編程實現控制的,應用較為廣泛,與機械鎖相比,性能與安全性都有了大幅提高。最近二三十年來,紅外遙控技術在各個領域已得到廣泛的應用,將其應用到電子鎖領域,則形成了紅外控制開啟的電子鎖。(二)設計目標與意義本課題以at89s52單片機作為主控芯片,并設計合理的外圍電路,從而構成電子密碼鎖系統,并對主控芯片編程實現以下功能:1. 輸入正確密碼后開鎖。用戶按開鎖鍵進入開鎖模式,正確鍵入6位密碼,實現開鎖。 2.用戶可隨時更改開鎖密碼。用戶按set鍵,進入密碼設置模式,可設置6位新密碼。但要求先正確輸入當前密碼,然后輸入新
9、密碼,以防用戶誤操作,需再次輸入新密碼進行確定。3.提示輸入密碼位數。本設計有lcd顯示電路,當用戶通過鍵盤或是遙控器輸入密碼時,不顯示輸入具體數值,而是顯示“*”,如此即方便了用戶輸入,同時增加了保密性。4.防盜報警。當用戶輸入錯誤密碼時,會提示輸入錯誤。當用戶連續3次輸入密碼錯誤時,會自動聲光報警,以增加防盜安全系數。5.遙控功能。本功能實現一定距離的遙控操作開鎖,在車庫倉庫等應用廣泛,用戶不需要下車,只需遙控操作,鍵入正確密碼開鎖。因此本功能是很人性化的擴展功能。通過對電子密碼鎖構成與系統組成的研究,學會控制系統的組成與單片機實際應用。在方案選取中,體會生產中的成本控制。在本設計完成過程
10、中,還需要對紅外技術的進行實際應用。在整個設計完成中提高自己發現問題、分析問題、解決問題的能力。二、 系統總體方案設計根據系統設計目標要求,其系統框圖如圖2.1所示。紅外接收開鎖電路報警電路lcd顯示at24c02密碼存儲鍵盤at89s52電源輸入復位電路振蕩電路圖2.1 密碼鎖系統框圖本人主要設計遙控模塊。三、 紅外遙控簡介(一)紅外遙控發展簡介1 紅外光又稱紅外輻射或紅外線,是一種人眼不可見的光波,是由物質內部的分子、原子的運動所產生的電磁輻射,是電磁頻譜的一部分, 其波段介于可見光和微波波段之間(0.761000 微米)。一般按波長把紅外光譜分成4個波段:近紅外(0.763 微米)、中紅
11、外(36 微米)、中遠紅外(620 微米)和遠紅外(201000 微米)。目前大量使用的遙控器波段在800940nm范圍。60 年代初,一些發達國家開始研究民用產品的遙控技術,但由于受當時技術條件的限制,遙控技術發展很緩慢。70年代末,隨著大規模集成電路和計算機技術的發展,遙控技術才得到快速發展。在遙控方式上大體經歷了從有線到無線的超聲波、從振動子到紅外線、再到使用總線的微機紅外遙控這樣幾個階段。最初的無線遙控裝置采用的是電磁波傳輸信號,由于電磁波容易產生干擾,也易受干擾,因此逐漸采用超聲波和紅外線媒介來傳輸信號。與紅外線相比,超聲傳感器頻帶窄,所能攜帶的信息量少,易受干擾而引起誤動作。較為理
12、想的是光控方式,采用紅外線的遙控方式逐漸取代了超聲波遙控方式,出現了紅外線多功能遙控器,并且成為當今時代的主流。紅外遙控技術是紅外技術、紅外通訊技術、遙控技術的結合。紅外線在頻譜上位于可見光之外,抗干擾性強,具有光波的直線傳播特性,不易產生相互間的干擾,是很好的信息傳輸媒體。紅外遙控技術十年來得到了迅猛發展,在家電和其他電子領域都得到了廣泛應用。(二)紅外遙控編碼2紅外發射電路的主要元件為紅外發光二極管。它實際上是一只特殊的發光二極管;由于其內部材料不同于普通發光二極管,因而在其兩端施加一定電壓時,它便發出的是紅外線而不是可見光。目前大量的使用的紅外發光二極管發出的紅外線波長為940mm左右,
13、外形與普通5發光二極管相同。通常的紅外遙控器是將遙控信號(二進制脈沖碼)調制在38khz的載波上,經緩沖放大后送至紅外發光二極管,轉化為紅外信號發射出去的。二進制脈沖碼的形式有多種,其中最為常用的是pwm碼(脈沖寬度調制碼)和ppm碼(脈沖位置調制碼,脈沖串之間的時間間隔來實現信號調制)。遙控編碼脈沖信號通常包括三大部分,即引導碼(起始碼)、系統碼(即識別碼,用戶碼或設備碼)和功能碼(鍵位數據碼)。各組成部分與結構情況簡介如下。1.引導碼,也稱引導脈沖,一般由高電平1和低電平0的脈沖組成,二者的寬度之比可為1:1,占9ms時間,也可為2:1,占13.5ms(寬度為9ms的高電平和寬度為4.5m
14、s的低電平組成),也可能有其他組成情況。引導碼的主要作用類似于穿行通信中的同步脈沖,用來標志遙控編碼脈沖信號的開始,使遙控接收器能由此判斷出所接收的信號是干擾還是系統的遙控代碼。2.系統碼,也稱用戶碼、識別碼、設備碼,通常由8位原碼和8位反碼組成。它用來指示遙控系統的種類,以區別其它遙控系統,防止各遙控系統的誤動作。這種碼是由生產廠商自行規定的,各廠均有不同,出廠時已經設置好,用戶難以更改。這是不同遙控器不能通用的主要原因。3. 功能碼,也稱鍵位數據碼。它與鍵盤的鍵位相對應,由它傳送所需要的遙控信息。功能碼通常也是由8位原碼和8位反碼組成。反碼的加入是為了能在接收端校對傳輸過程中是否產生差錯。
15、下面以lc7461編碼芯片為例介紹一下紅外遙控的編碼方式lc7461是采用pwm調制的串行二進制碼,所發送的一幀數據中含42位碼,包含一引導碼、13位用戶碼和 8位數據碼以及它們的反碼。這樣很大程度上減少了誤碼率。發射碼的格式如圖3.1所示:圖3.1 lc7461編碼格式圖3.2“1”和“0”的區分取決與脈沖之間的時間:以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進制的“1”。如下圖所示(圖中tm=0.56ms)圖3.3 四、 遙控模塊硬件設計(一)遙控系統的構成遙控系統主要由
16、紅外遙控發射裝置、接收裝置、微處理機等組成,見圖4.1.圖4.1 遙控系統框圖(二)選用芯片介紹1. 遙控編碼芯片lc74613lc7461是由sanyo公司生產能的遙控專用編碼芯片。osco和oscl之間接諧振器。由ko0ko7,ki0ki3構成鍵盤的行與列。out引腳輸出紅外發射管控制信號。圖4.2當發射機沒有按鍵按下時,7461不工作,其out輸出腳為低電平;當有按按下時,7461得電工作,其out輸出腳輸出經調制38khz的串行數據信號,并通過發射電路送出紅外信號 。7461產生的遙控編碼是連續的42位二進制碼組,其中前26位為用戶識別利,能區別不同的紅外遙控設備,防止不同機種遙控碼互
17、相干擾。后16位為8位的操作碼和8位的操作反碼用于核對數據是否接收準確。當遙控器上任意一個按鍵按下超過36ms時,lc7461芯片的振蕩器使芯片激活,將發射一個特定的同步碼,對于接收端而言就是一個9ms的低電平和一個45ms的高電平,使程序知道從這個同步碼之后可以開始接收數據。2.一體化紅外接收頭hs0038接收紅外信號頻率為38 khz,周期約26 s,同時將遙控信號的接收、放大、檢波、整形集于一身,是紅外接收電路一體化的紅外接收裝置。并能與ttl、coms 電路兼容,大大簡化了接收電路的復雜程度和電路的設計工作。圖4.3hs0038 為黑色環氧樹脂封裝,不受日光、熒光燈等光源干擾,內附磁屏
18、蔽,功耗低,靈敏度高。在用小功率發射管發射信號情況下,其接收距離可達35m。hs0038 為直立側面收光型,三個管腳分別是地、5 v 電源、解調信號輸出端。(三)遙控模塊硬件設計1. 遙控器硬件電路圖4.4 遙控器電路圖當鍵盤有鍵按下時,編碼芯片激活,發送相應紅外編碼信號。2.接收電路圖4.5 紅外接收電路圖由遙控器發送的紅外信號,經過紅外一體化接收頭接收、放大、解調之后,將信號送到單片機p3.2引腳。五、 紅外模塊軟件設計(一)hs0038的解調紅外一體化接收頭hs0038將接收到的紅外信號放大、解調才送給單片機的。接收頭接收到的是38khz的串行脈沖信號,經過解調之后轉換成ttl電平。接收
19、頭的解調可簡單理解為:在輸入脈沖串時輸出低電平,否則輸出高電平。一體化紅外接收頭解調前后的信號對比見下圖5.1. 可見解調后信號與編碼信號反相。表示“1”表示“0”紅外接收頭解調后的波形紅外接收頭接收到的波形圖5.1可知當按鍵按下后,經過hs0038解調輸出的一幀信號則如下圖5.2所示8位鍵數據碼反碼13.5ms引導碼9ms4.5ms13位用戶碼8位鍵數據碼13位用戶碼反碼圖5.2(二)解碼7461產生的遙控編碼是連續的42位二進制碼組,其中前26位為用戶識別碼,能區別不同的紅外遙控設備,防止不同機種遙控碼互相干擾。后16位為8位的操作碼和8位的操作反碼用于核對數據是否接收準確。單片機解碼是根
20、據一體化紅外接收頭的解調信號進行的,從上面的分析可知:任意按鍵按下后,都有9ms的低電平起始碼和4.5ms的高電平結果碼作為引導信號,因此應該在引導碼之后才能進行解碼。如何識別“0”和“1” 是解碼的關鍵。根據位定義:“0”、“1”均以0.56ms的低電平作為起始,兩者區別在于高電平的寬度不同,即“0”高電平為0.56ms,“1”高電平為1.68ms,因此解碼時須根據高電平的寬度來區別“0”和“1”。若從0.56ms低電平過后,開始延時,0.56ms之后,檢測到的為低電平,則該位為“0”,反之則為“1”。為了保證解碼的可靠性,高電平檢測延時應該在0.56ms 1.12ms之間,否則如果該位為“
21、0”,讀到的已是下一位的高電平,因此取(1.12ms+0.56ms)/2=0.84ms最為可靠,一般取0.84ms左右即可。(三)紅外解碼流程圖int010次882us檢測有無高電平跳動?等待4.5ms高電平yn延時4.74ms避開4.5ms結果碼避開前26位系統識別碼暫存8位操作碼暫存8位操作反碼操作碼與操作反碼互為反碼?n解碼成功操作碼賦予變量yreti圖5.3 紅外解碼流程圖六、 密碼鎖系統硬件設計圖6.1 電源電路(一)電源輸入模塊該電路將220v、50hz交流電轉換得到5v直流電,為整個密碼鎖系統提供電源。如上圖所示,220v交流電經過變壓器后得到12v交流電,再經過橋式整流電路,得
22、到直流電。但此時直流量含有較大交流分量,再經過低通濾波電路,使電壓平滑。最后經過7805穩壓芯片,輸出供電,且輸出直流電壓不受電網電壓波動與負載變化影響,有足夠穩定性。(二)振蕩電路圖6.2 振蕩電路c51系列單片機工作頻率不大于30mhz,c1、c2起穩定振蕩頻率、快速起振的作用,一般取值為1030pf。此處由22pf電容c1、c2與振蕩頻率為12mhz晶振構成晶振電路,為單片機提供振蕩時鐘脈沖。(三)復位電路圖6.3 復位電路此復位電路采用手動按鍵式復位。能夠上電自動復位。當程序出錯或系統處于死循環時,也可以通過按鍵手動復位。當按鍵按下時,rst輸出高電平,供單片機復位,當按鍵松開時,rs
23、t為低電平。r1用于限制按鍵按下瞬間c3放電電流,避免火花。為完成復位操作,應使復位高電平大于2個機器周期。(四)密碼掉電存儲模塊圖6.4 密碼存儲at24c02是美國atmel公司的低功耗cmos型e2prom,內含2568位存儲空間。該芯片采用了i2c總線式進行數據讀寫的串行器件,占用很少的資源和io線,并且支持在線編程,進行數據實時的存取十分方便。串行時鐘由單片機p3.6引腳提供,通過p3.7引腳對at24c02進行在線讀寫。由于該芯片數據掉電不丟失,故用于存放開鎖密碼。當需要開鎖和設置新密碼時,均需讀取at24c02中的密碼;設置新密碼后,在線寫at24c02,覆蓋原密碼。(五)鍵盤圖
24、6.5 鍵盤本設計采用44矩陣式鍵盤,將鍵盤接單片機p1口。當按鍵較多時,與獨立式鍵盤相比,矩陣式鍵盤可節約i/o口。16個按鍵,包含09的數字鍵之外,還有比如del、重置、取消等功能鍵。按鍵值的獲得,是采用行掃描法。鍵盤掃描時,首先由p1口低四位輸出高低電平,高四位輸出高電平,假若有鍵按下,那么在p1口低高位即可讀出低電平,接著延時消抖,再逐行送低電平,判斷是何鍵按下,從而獲得鍵值。(六)液晶顯示模塊圖6.6 液晶顯示本系統采用lcd1602液晶顯示,可顯示162個字符。液晶顯示控制端口分別是rs接p2.0,rw接p2.1,e接p2.2。數據口d0d7接p0口(p0口作i/o口需接上拉電阻)
25、,采用8位數據線方式。當無操作時候,顯示“*welcome*”字樣;當選擇開鎖模式時,會顯示“unlock operation”,并提示輸入密碼,每輸入以為密碼則顯示一個“*”;當選擇更改密碼模式時,會顯示“set code mode”,也會提示輸入舊密碼與新密碼;密碼正確會顯示“right”;密碼錯誤則會顯示“wrong”。(七)聲光報警電路圖6.7聲光報警聲光報警有紅色發光二極管d1與蜂鳴器組成,分別由p2.3與p2.6引腳控制,低電平有效。當輸入密碼錯誤時,在lcd顯示“wrong”的同時,紅色發光二極管閃爍兩次,同時伴隨滴滴的提示音。(八)開鎖電路圖6.8 開鎖電路開鎖電路由三極管、繼
26、電器、綠色發光二極管(代替鎖頭)組成,由p2.7引腳控制,低電平有效。按下鍵盤開鎖鍵進入開鎖模式,正確輸入6位密碼,按下ok鍵之后,單片機對輸入密碼與設定密碼進行對比,對比正確,則p27發出低電平,使三極管q3 導通,從而使得繼電器rl吸合,并由繼電器控制使得門禁得電打開。此設計為了便于觀察結果,用綠色led代替鎖頭,若是有開鎖動作,則綠色led燈亮。七、 系統軟件設計部分流程圖(一)主程序流程圖主程序初始化開鎖模式有鍵按下?開鎖鍵?set鍵?修改密碼模式顯示歡迎信息nynyyn圖7.1 主程序流程圖(二)密碼接收子程序流程圖 在輸入密碼過程中,可以重置、刪除、取消。當完成輸入時,按下ok鍵退
27、出該程序。若正確接收6位密碼,則輸入密碼存于數組中,且返回值為1。若取消操作,返回值為0。密碼接收子程序密碼位數計數器i置零獲取鍵值delete鍵?reset鍵?cancel鍵?按鍵為09&i6?計數器加1 存儲鍵值i=6&ok鍵?return 1return 0計數器減1 圖7.2密碼接收子程序流程圖nyynynnyyn(三)開鎖判斷子程序流程圖 該程序將輸入密碼進行對比。若密碼正確,則返回值為1,表明應該進行開鎖動作。密碼錯誤,返回值為0,不進行開鎖。有取消動作,則返回3,不進行密碼對比。開鎖判定子程序密碼接收子程序函數值為0?密碼正確?對6位密碼對比連續錯誤3次?return 3報警re
28、turn 1return 0nyynyn圖7.3 開鎖判定子程序流程圖(四)更改密碼判定子程序流程圖 改程序要求先輸入當前密碼,當前密碼正確后,連續兩次輸入新密碼,兩次輸入相同時,返回1,表明應該寫at24c02。否則返回0,表明修改密碼失敗,不對at24c02。即是否擦寫at24c02要根據此程序返回值而定。更改密碼判定輸入當前密碼密碼正確?輸入新密碼再輸入新密碼兩次輸入相同?return 1return 0nyyn連續3次錯?報警圖7.4更改密碼判定子程序流程圖ny八、 總結 本設計采用at89s52單片機作為主控芯片,結合相應的外圍電路,構成電子密碼鎖系統。該電子密碼鎖,開發簡單、安全性
29、高、成本低,適合辦公室、住宅小區、實驗室、檔案室等場所,其遙控功能更適合應用在車庫倉庫的安全防盜。在設計完成過程中,先進行proteus軟件仿真,最后進行實物調試,最終達到了預期的設計目標,但ups供電還有待解決。電子密碼鎖安全性能較高,具有較好的市場前景。參考文獻1吳媛媛,葉茂森. 紅外遙控技術淺析j. 廣西輕工業,2009,(01):72-732郭凱杰.智能家居人性化設計d.同濟大學電子與信息工程學院,20083 李偉,閆君杰.紅外遙控器系統的設計研究j.河南機電高等專科學校學報,2009,1:11-134曹立軍.單片機原理及其應用m.西安:西安電子科技大學出版社,20095紀宗南.紅外遙
30、控發射的原理及其應用j.國外電子元件,1999,106李明喜.新型電子密碼鎖的設計j.機電產品開發與創新,2004,(8):77-797陳春燕.單片機紅外遙控密碼鎖j.電子制作,2002,12:27-308董繼成.一種新型安全的單片機密碼鎖j.電子技術,2004,(3):55-609何麗輝,戴峻峰.紅外遙控智能密碼鎖設計j.世界電子元器件, 2002,08:3710金月,陳安民,胡志杰.國產彩電遙控器系統電路、元器件、維修m.北京:科學普及出版社,199211趙春紅,楊勇.基于單片機和無線電技術的密碼鎖設計j.西北工業大學學報,2005,9:9-1212 葉啟明.單片機制作的新型安全密碼鎖j.
31、家庭電子,2000,(6):24-27附錄一總電路原理圖附錄二 實物圖附錄三 程序清單/* * * 對24c02的讀、寫* * at24c02drvier.c* */#include #definewritedeviceaddress 0xa0#definereaddviceaddress 0xa1 extern void delayms(int);sbitscl=p36;sbitsda=p37;void start() sda=1;scl=1;sda=0;scl=0;void stop() scl=0;sda=0;scl=1;sda=1;void ack() sda=0;scl=1;scl=
32、0;sda=1;void noack() sda=1;scl=1;scl=0;bit testack() bit errorbit;sda=1;scl=1;errorbit=sda;scl=0;return(errorbit);void write8bit( char input) unsigned char temp;for(temp=8;temp!=0;temp-) sda=(bit)(input&0x80);scl=1;scl=0;input=input1;extern void write24c02( char *wdata,unsigned char romaddress,unsig
33、ned char number) start();write8bit(writedeviceaddress);testack();write8bit(romaddress);testack();for(;number!=0;number-) write8bit(*wdata);testack();wdata+;stop();delayms(1);unsigned char read8bit() unsigned char temp,rbyte=0;for(temp=8;temp!=0;temp-) scl=1;rbyte=rbyte1;rbyte=rbyte|(unsigned char)(s
34、da);scl=0;return(rbyte);extern void read24c02( char *ramaddress,unsigned char romaddress,unsigned char bytes) start();write8bit(writedeviceaddress);testack();write8bit(romaddress);testack();start();write8bit(readdviceaddress);testack();while(bytes!=1) *ramaddress=read8bit();ack();ramaddress+;bytes-;
35、*ramaddress=read8bit();noack();stop();/* * lcd1602驅動 *lcddriver.c */#include #include #include #include #define uchar unsigned char#define uint unsigned int#define busy 0x80 /lcd忙檢測標志#define dataport p0 /定義p0口為lcd通訊端口sbit light=p13;sbit lcm_rs=p20; /數據/命令端sbit lcm_rw=p21; /讀/寫選擇端sbit lcm_en=p22;void
36、 delay_lcm(uint); /lcd延時子程序void lcd_wait(void); /lcd檢測忙子程序void writecommandlcm(uchar wclcm,uchar busyc); /寫指令到icm子函數void writedatalcm(uchar wdlcm); /寫數據到lcm子函數void displayonechar(uchar x,uchar y,uchar ddata); /顯示指定坐標的一個字符子函數void initlcm( void); /lcd初始化子程序void displaylistchar(uchar x,uchar y, unsigne
37、d char *ddata); /顯示指定坐標的一串字符子函數/*延時k*1ms,12.000mhz*/void delay_lcm(uint k) uint i,j; for(i=0;ik;i+) for(j=0;j0)mx+=0x40; /若y為1(顯示第二行),地址碼+0x40 mx+=0x80; /指令碼為地址碼+0x80 writecommandlcm(mx,0); writedatalcm(ddata);/*顯示指定坐標的一串字符子函數*/void displaylistchar(uchar x,uchar y, unsigned char *ddata) uchar i=0,n;
38、 y&=0x01; x&=0x0f;n=strlen(ddata); while(in) displayonechar(x,y,ddatai); i+; x+; /* * * * 主程序 * * * */#include #include stdio.h#include stdlib.h#include string.h#include /循環右移的函數頭文件#define uchar unsigned char#define uint unsigned intsbit buzzer=p26;/p2_6蜂鳴器,低電平有效sbit lock=p27;/p2_7開鎖,低電平有效sbit warni
39、ng=p23; /p2_3報警,低電平有效sbit red=p32; /紅外接收管的數據輸出端接單片機的p3.2,低電平有效static char wrong_count=0; /wrong輸入密碼次數計數器 extern void initlcm( void); /lcd初始化子程序extern void displaylistchar(uchar x,uchar y, unsigned char *ddata); /顯示指定坐標的一串字符子函數extern void read24c02(unsigned char *ramaddress,unsigned char romaddress,u
40、nsigned char bytes); /at24c02驅動extern void write24c02(unsigned char *ramaddress,unsigned char romaddress,unsigned char bytes);unsigned char _cror_( /字節的多次循環右移unsigned char ,/需要循環右移的變量unsigned char ); /移動位數 uchar key_val;/*延時ms函數*/externvoid delayms( int k) unsigned int i,j ; for(i=1000;i0;i-) for(j=
41、k;j0;j-) ;/*紅外中斷解碼程序*/voiddelay(intn)/(16*n+24)us inti; for(i=0;in;i+); getredcode()interrupt 0 bitbitstate;/紅外接收管高低電平狀態 暫存 uchar s; uchar code=0;/操作碼 uchar _code=0;/操作反碼 ex0=0;/暫時關中斷 for(s=0;s10;s+)/重復10次,檢測8.882ms內如果出現高電平則退出解碼,因為有可能不小心按下了按鍵或者由外部干擾。 delay(54);/延時882us if(red=1)/只要出現高電平就退出解碼 ex0=1;
42、return; while(red=0);/等待高電平,避開9ms低電平的引導脈沖 delay(295);/延時4.74ms避開4.5ms的引導高電平 for(s=0;s16;s+)/忽略前26位的系統識別碼 while(red=0);/等待地址碼第一位的高電平 delay(54);/高電平開始后用882us的時間尺去判斷信號此時的高低電平 if(red) 如果為高電平 delay(61); /檢測到高電平,延時1ms等待脈沖高電平結束 for(s=0;s16;s+) while(red=0);/等待地址碼第一位的高電平 delay(54);/高電平開始后用882微秒的時間尺去判斷信號的高低狀
43、態 bitstate=red; if(red) delay(61);/檢測到高電平,延時1ms等待脈沖高電平結束 if(s8)/得到操作碼 code=code|bitstate; code=_cror_(code,1); else/得到反操作碼 _code=_code|bitstate; _code=_cror_(_code,1); if(code=(_code)/比對操作碼和反操作碼,檢測數據傳輸中是否出錯key_val= code; /數據傳輸無錯誤,返回得到的信息ex0=1;/*鍵盤掃描程序獲得鍵值*/uchar key_scan() key_val=0xff; p1=0xf0;低四位送低電平,高四位送高電平 while(key_val=0xff&p1_4&p1_5&p1_6&p1_7) p1=0xf0; if( key_val!=0xff) return key_val; p1=0xfe; if(!p1_4)key_val= 0x00; if(!p1_5)key_val= 0x01; if(!p1_6)key_val= 0x02; if(!p1_7)key_val= 0x03; p1=0xfd; if(!p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年網絡編輯師證書考試思維方式試題及答案
- 2025年特許金融分析師典型案例試題及答案
- 2025年銀行從業資格證高效復習試題及答案
- 網絡編輯師職業素養試題及答案
- 解鎖特許金融分析師考試難點試題及答案
- 國際金融理財師的職業規劃試題及答案
- 2024小語種證書考試核心目標設定試題及答案
- 畜牧業基礎知識試題及答案
- 2025年國際金融理財師考試經濟學概論試題及答案
- 小語種證書考試的聽力材料如何選擇試題及答案
- 中國反恐形勢的現狀和對策分析研究
- 籃球協會章程和規章制度
- 技師學院高層次人才引進和管理辦法
- 水輪機選型畢業設計及solidworks建立轉輪模型
- 無創正壓通氣急診臨床實踐專家共識
- 【精選】人教版四年級下冊數學《脫式計算》(含簡便運算)專項練習題
- 常用檢驗項目的醫學決定水平
- 急診及重癥醫學-機械通氣
- YY/T 1248-2014乙型肝炎病毒表面抗體測定試劑(盒)(化學發光免疫分析法)
- 重癥醫學科各項規章制度匯編
- 平面位置(軸線)測量記錄表
評論
0/150
提交評論