版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上等級(jí):湖南工程學(xué)院 課 程 設(shè) 計(jì)課程名稱 單片機(jī)技術(shù)與應(yīng)用 課題名稱 智能電子密碼鎖 專 業(yè) 自動(dòng)化 班 級(jí) 學(xué) 號(hào) 姓 名 指導(dǎo)教師 李曉秀、王迎旭 2013年 12月 09日湖南工程學(xué)院課 程 設(shè) 計(jì) 任 務(wù) 書(shū)課程名稱 單片機(jī)原理及應(yīng)用 課 題 智能密碼鎖設(shè)計(jì) 專業(yè)班級(jí) 自 動(dòng) 化1191 學(xué)生姓名 學(xué) 號(hào) 指導(dǎo)老師 審 批 任務(wù)書(shū)下達(dá)日期 2013年 12月 2日 任務(wù)完成日期 2013年 12月 15日設(shè)計(jì)內(nèi)容與設(shè)計(jì)要求設(shè)計(jì)內(nèi)容:本課題是要發(fā)設(shè)計(jì)一種基于單片機(jī)控制的智能電子密碼鎖,主要功能有:按用戶使用要求可設(shè)置、修改密碼,遙控或按鍵開(kāi)鎖,錯(cuò)誤報(bào)警、顯示等
2、輔助功能。密碼可設(shè)48位,并可在線修改并存儲(chǔ);密碼輸錯(cuò)3次應(yīng)有報(bào)警信號(hào)提示,并有特殊密碼解除;出開(kāi)鎖時(shí)外的時(shí)候,要求顯示的是北京時(shí)間;信號(hào)可以通過(guò)繼電器輸出。設(shè)計(jì)要求:1)根據(jù)課題要求,確定智能電子密碼鎖的硬件; 2)進(jìn)行系統(tǒng)的硬件設(shè)計(jì);3)完成必要的參數(shù)計(jì)算與元器件選擇;4)完成應(yīng)用程序設(shè)計(jì);5)進(jìn)行單元電路及應(yīng)用程序的調(diào)試;主 要 設(shè) 計(jì) 條 件1、MCS-51單片機(jī)實(shí)驗(yàn)操作臺(tái)1臺(tái);2、PC機(jī)及單片機(jī)調(diào)試軟件,仿真軟件proteus;3、開(kāi)發(fā)板1塊; 4、制作工具1套;5、系統(tǒng)設(shè)計(jì)所需的元器件。 說(shuō) 明 書(shū) 格 式封面課程設(shè)計(jì)任務(wù)書(shū)目錄第1章 概述(課題設(shè)計(jì)的要求、目的及意義)第2章 系統(tǒng)
3、總體方案選擇與說(shuō)明(系統(tǒng)硬件電路設(shè)計(jì)框圖與工作原理)第3章 硬件電路設(shè)計(jì)(各部分電路設(shè)計(jì)、原理、參數(shù)計(jì)算、I/O分配等)第4章 應(yīng)用軟件設(shè)計(jì)(流程圖、算法等)*第5章 系統(tǒng)仿真調(diào)試第6章 硬件調(diào)試與結(jié)果分析(開(kāi)發(fā)板焊接、性能測(cè)試、結(jié)果、操作說(shuō)明)第7章 結(jié)束語(yǔ)(系統(tǒng)設(shè)計(jì)小結(jié):已完成的工作、效果、特色、不足與展望)致謝參考文獻(xiàn) 附錄A 系統(tǒng)硬件電路原理圖附錄B 程序清單評(píng)分表進(jìn) 度 安 排設(shè)計(jì)時(shí)間為兩周第一周星期一、上午:布置課題任務(wù),講課及課題介紹 下午:借閱有關(guān)資料,總體方案討論星期二、確定總體設(shè)計(jì)方案星期三、硬件模塊方案設(shè)計(jì)星期四、軟件模塊方案設(shè)計(jì)星期五 小系統(tǒng)焊接與調(diào)試;第二周星期一、各
4、硬件模塊設(shè)計(jì)星期二、各軟件模塊設(shè)計(jì)星期三、各軟件模塊設(shè)計(jì)星期四、寫說(shuō)明書(shū)星期五、上午:寫說(shuō)明書(shū),整理資料下午:交設(shè)計(jì)資料,答辯參 考 文 獻(xiàn)參考文獻(xiàn)1 王迎旭等.單片機(jī)原理及及應(yīng)用M 機(jī)械工業(yè)出版社.2012年2 龔建偉、熊光明等.Visual.c.Tubor.c串口通信M 3 康華光等.模擬電子技術(shù) 第五版M 高等教育出版社 2011年4 杜樹(shù)春等.單片機(jī)C語(yǔ)言M 北京航空航天大學(xué)出版社目錄專心-專注-專業(yè)第1章 概述1.1 課題設(shè)計(jì)要求1.1.1 設(shè)計(jì)內(nèi)容:本課題是要發(fā)設(shè)計(jì)一種基于單片機(jī)控制的智能電子密碼鎖,主要功能有:按用戶使用要求可設(shè)置、修改密碼,遙控或按鍵開(kāi)鎖,錯(cuò)誤報(bào)警、顯示等輔助功
5、能。密碼可設(shè)48位,并可在線修改并存儲(chǔ);密碼輸錯(cuò)3次應(yīng)有報(bào)警信號(hào)提示,并有特殊密碼解除;出開(kāi)鎖時(shí)外的時(shí)候,要求顯示的是北京時(shí)間;信號(hào)可以通過(guò)繼電器輸出。1.1.2 設(shè)計(jì)要求:根據(jù)課題要求,確定智能電子密碼鎖的硬件;進(jìn)行系統(tǒng)的硬件設(shè)計(jì); 完成必要的參數(shù)計(jì)算與元器件選擇; 完成應(yīng)用程序設(shè)計(jì);進(jìn)行單元電路及應(yīng)用程序的調(diào)試;1.2 課題設(shè)計(jì)目的及意義學(xué)會(huì)靈活運(yùn)用單片機(jī),包括編程、下載和運(yùn)行等,學(xué)會(huì)使用keil和protues編程和仿真。通過(guò)本次課題設(shè)計(jì)真正的掌握單片機(jī)的設(shè)計(jì)和運(yùn)用技術(shù)。學(xué)會(huì)IIC虛擬總線、矩陣鍵盤、LCD1602的編程方法及使用第2章 系統(tǒng)總體設(shè)計(jì)方案與說(shuō)明2.1 系統(tǒng)硬件設(shè)計(jì)框圖復(fù)位
6、電路指示燈電路顯示電路存儲(chǔ)密碼電路晶振電路 MCU-51 STC89C52RC電源電路報(bào)警電路按鍵電路 模擬開(kāi)鎖電路 根據(jù)本系統(tǒng)設(shè)計(jì)的要求,以STC89C52RC單片機(jī)為核心設(shè)計(jì)了LCD1602顯示電路,按鍵電路,AT24C02的IIC虛擬總線電路,蜂鳴器報(bào)警電路,指示燈顯示電路,繼電器模擬開(kāi)鎖電路。同時(shí)也包括了單片機(jī)的最小系統(tǒng)(復(fù)位電路、晶振電路、電源電路)。 圖2.1 系統(tǒng)結(jié)構(gòu)圖2.2 系統(tǒng)硬件工作原理 系統(tǒng)由單片機(jī)最小系統(tǒng)、1602液晶顯示電路、矩陣鍵盤按鍵、LED顯示電路和蜂鳴器報(bào)警電路等組成本電路是由STC89C52RC單片機(jī)為控制核心,具有與8051系列單片機(jī)完全兼容的效果。51單
7、片機(jī)為CPU,進(jìn)行對(duì)外圍電路的控制,當(dāng)有密碼輸入時(shí),檢測(cè)所輸入的密碼是否正確,如果正確則CPU發(fā)送信號(hào)給顯示電路,顯示解鎖信息,同時(shí)繼電器打開(kāi),指示燈亮,表示解鎖。如果密碼錯(cuò)誤,1602提示錯(cuò)誤,如果輸入三次密碼錯(cuò)誤,則報(bào)警,同時(shí)鎖住鍵盤。只有通過(guò)PC機(jī)才能解除警報(bào)。在解鎖狀態(tài)下,可以查看用戶信息。當(dāng)上鎖時(shí),顯示時(shí)間,每次顯示的時(shí)間都存入24C02,以便下次上鎖繼續(xù)從此時(shí)間顯示,在這期間是不能輸入密碼的。當(dāng)輸入密碼的時(shí)候想取消上次操作,可以按下取消鍵撤銷。如果忘記密碼,可以通過(guò)PC機(jī)初始化密碼。第3章 硬件電路設(shè)計(jì)3.1 I/O端口分配表 對(duì)于本系統(tǒng)設(shè)計(jì)的需求和圖2.1的系統(tǒng)結(jié)構(gòu)圖,其端口分配
8、如表3-1所示。 表3-1 I/O端口分配表 P0.0P0.71602 D0D7 P3.524C02 SDAP2.0P2.7矩陣鍵盤 P3.61602 E P3.21602 RS P3.7蜂鳴器 P3.31602 RW P1.7LED和繼電器 P3.424C02 SCK RXD、TXD PC串口線3.2 時(shí)鐘電路設(shè)計(jì)時(shí)鐘電路是采用內(nèi)部時(shí)鐘電路,晶體頻率是采用12MHZ的石英晶體,兩個(gè)30pf的陶瓷電容諧振,機(jī)器周期為1us。分別接在單片機(jī)的18和19管腳,電路圖如圖3.2所示。 圖3.2 時(shí)鐘電路3.3 復(fù)位電路設(shè)計(jì)該系統(tǒng)設(shè)計(jì)是采用的按鍵上電復(fù)位電路,其中電阻是采用10K,22uF的電解電容,
9、還有一個(gè)按鍵產(chǎn)生按鍵復(fù)位接在單片機(jī)機(jī)的第9管腳。其電路圖如圖3.3所示。 圖3.3按鍵上電復(fù)位電路3.4 顯示電路設(shè)計(jì)本系統(tǒng)設(shè)計(jì)所用的是背光的液晶1602,其作用是顯示用戶的當(dāng)前操作。LCD1602是一個(gè)16列×2行的顯示屏。 其中數(shù)據(jù)管腳D0D7接單片機(jī)的P0P3管腳,寄存器選擇管腳RS接單片機(jī)的P3.2管腳, 讀寫管腳R/W接P3.3,使能管腳E接P3.6。電源正極VDD和背光正極A接VCC,電源負(fù)極VSS和背光負(fù)極K接GND,對(duì)比度管腳VEE接一個(gè)電位器來(lái)調(diào)節(jié)對(duì)比度。其電路圖如圖3.4所示(由于仿真圖的原因圖中的電源管腳、電位器、背光正負(fù)極為畫出) 圖3.4 LCD1602液晶
10、顯示電路3.5 按鍵電路設(shè)計(jì)根據(jù)本系統(tǒng)設(shè)計(jì)的結(jié)構(gòu)圖,需要用到16個(gè)鍵,作用和功能分別為10個(gè)數(shù)字鍵、修改密碼、查看用戶信息、解鎖、上鎖、確定、撤銷。為了節(jié)省單片機(jī)的I/O口,采用4×4的矩陣鍵盤方式,即鍵盤組合方式是4行4列。其中行由上到下依次接P2.0P2.3,列由左到右依次接P2.4P2.7。其功能和作用如圖3.5所示。 圖3.5 矩陣鍵盤按鍵電路 3.6 報(bào)警電路設(shè)計(jì)當(dāng)密碼輸錯(cuò)三次時(shí),系統(tǒng)要求產(chǎn)生一個(gè)報(bào)警信號(hào),用一個(gè)蜂鳴器來(lái)實(shí)現(xiàn)這一功能。由P3.7引出接NPN三極管來(lái)控制三極管的導(dǎo)通與截止, 三極管的發(fā)射極接100的電阻。其電路圖如圖3.6所示。 圖3.6 蜂鳴器報(bào)警電路3.7
11、 模擬開(kāi)鎖電路和指示燈電路設(shè)計(jì)根據(jù)本系統(tǒng)設(shè)計(jì)要求要以一個(gè)繼電器模擬開(kāi)鎖開(kāi)關(guān),當(dāng)開(kāi)鎖的時(shí)候就可以產(chǎn)生一個(gè)開(kāi)鎖的信號(hào),由P1.7引出接繼電器,同時(shí)接一個(gè)指示燈的陰極來(lái)表示已開(kāi)鎖。其電路圖如圖3.7所示。 圖3.7 繼電器模擬開(kāi)關(guān)電路 第4章 應(yīng)用軟件設(shè)計(jì)根據(jù)本系統(tǒng)設(shè)計(jì)需要實(shí)現(xiàn)的功能,采用了模塊化編程。因此設(shè)計(jì)了主程序,還有若干子程序。其中主程序負(fù)責(zé)掃描鍵盤,負(fù)責(zé)對(duì)鍵盤的輸入的命令進(jìn)入子程序進(jìn)行處理。所有的子程序包括判斷密碼子程序,上鎖子程序,修改密碼子程序,查看用戶信息和報(bào)警子程序。判斷密碼子程序上鎖子程序修改密碼子程序查看信息子程序報(bào)警子程序 主程序 初始化 圖4 軟件設(shè)計(jì)總流程圖 判斷密碼子程
12、序的算法: 將原密碼讀出存在一個(gè)數(shù)組b中,也將其長(zhǎng)度存在一個(gè)變量longth中,將輸入的密碼也存在一個(gè)數(shù)組a中。當(dāng)按下確定鍵,兩個(gè)數(shù)組比較是否相等。 上鎖子程序算法:?jiǎn)⒂枚〞r(shí)器中斷,定時(shí)一秒變量sec加一,然后判斷秒是否到60,再判斷分是否到60,之后就分秒時(shí)都存入24C02的地址20,21,22當(dāng)中。 修改密碼子程序算法:沿用判斷子程序的算法,同時(shí)用變量step來(lái)記錄執(zhí)行到第幾步。 查看用戶信息算法:不停的顯示幾個(gè)用戶信息。報(bào)警子程序算法:錯(cuò)誤三次將蜂鳴器接通,之后一直掃描是否接收到PC機(jī)解除警報(bào)的信號(hào)。4.1 主程序流程圖用戶輸入密碼,輸入正確則開(kāi)鎖,錯(cuò)三次報(bào)警,接收到初始化信號(hào)則密碼初始
13、化為1234,判斷是否按下了查看用戶信息鍵,在密碼輸入正確的情況下觀看用戶信息。圖如下:NYNYNYNYYN 初始化 動(dòng)態(tài)掃描鍵盤密碼錯(cuò)3次?初始密碼?報(bào)警子程序密碼初始化為1234按下查看用戶信息鍵?顯示用戶信息 按鍵處理 判斷密碼子程序按下上鎖鍵?顯示上鎖時(shí)間 設(shè)置密碼子程序 設(shè)置密碼成功? 圖4.1 主程序流程圖4.2 子程序流程框圖4.2.1 判斷密碼子程序流程圖YNNYNN 密碼正確? 按下撤銷鍵? 按下確定鍵?取消上次存儲(chǔ)的數(shù)字1602顯示Unlock,繼電器接通,LED燈亮掃描矩陣鍵盤存儲(chǔ)數(shù)字從24C02中讀出密碼1602顯示Error,鎖鍵盤三秒 圖4.2.1判斷密碼子程序流程
14、圖NNYY初始化開(kāi)定時(shí)器中斷秒為60?秒清零、分加一分清零、時(shí)加一分為60?1602顯示時(shí)、分、秒4.2.2 上鎖子程序流程圖 圖4.2.2上鎖子程序流程圖YNYNNNY掃描矩陣鍵盤存儲(chǔ)數(shù)字按下設(shè)置密碼鍵?與原密碼相符?第1步?第2步?1602顯示Error,鎖鍵盤3秒按下確定鍵? 讀出原密碼存儲(chǔ)第一次新密碼輸入新密碼兩次一樣? 設(shè)置失敗設(shè)置成功N4.2.3 修改密碼子程序流程圖 Y 圖4.2.3 修改密碼子程序流程圖4.2.4 查看用戶信息子程序流程圖 YNYN顯示用戶信息按下解鎖鍵? 返回主程序密碼正確? 返回主程序 圖4.2.4 查看用戶子程序流程圖Y 蜂鳴器打開(kāi) 鎖住鍵盤PC 機(jī)發(fā)來(lái)信
15、號(hào)?解除警報(bào)、程序復(fù)位N初始化串口通信4.2.5 報(bào)警子程序流程圖 Y 圖4.2.5 報(bào)警子程序流程圖第5章 系統(tǒng)仿真5.1 系統(tǒng)仿真通過(guò)keil將源程序編譯成16進(jìn)制 HEX文件,再加入到C51單片機(jī)中。如下圖所示。 圖5.1.1 未運(yùn)行時(shí)的仿真圖 通過(guò)點(diǎn)擊運(yùn)行按鈕之后,仿真圖開(kāi)始運(yùn)行。 圖5.1.2 運(yùn)行之后的仿真圖第6章 硬件調(diào)試與結(jié)果分析6.1 硬件調(diào)試將keil編譯生成的HEX16進(jìn)制文件下載到單片機(jī)中,實(shí)物圖如下 圖6.1.1 正在輸入密碼 圖6.1.3 查看用戶信息 圖6.1.4 修改密碼輸入舊密碼界面 圖6.1.5 修改密碼輸入新密碼界面 圖6.1.6 修改密碼成功界面 圖6.
16、1.7 電腦初始化密碼界面 圖6.1.8 電腦解除警報(bào)界面6.2 系統(tǒng)性能與操作說(shuō)明該密碼鎖的密碼長(zhǎng)度隨用戶自己設(shè)定(12位以內(nèi)),中間輸錯(cuò)數(shù)字時(shí)可以撤銷上次操作。在密碼正確的情況下可以查看用戶信息,在密碼錯(cuò)誤三次的情況下,蜂鳴器會(huì)報(bào)警,需要在電腦用正確的用戶名才能解除警報(bào)。當(dāng)忘記密碼時(shí),可以通過(guò)電腦用正確的用戶名把密碼初始化。軟件程序中在設(shè)定密碼的尾部加了個(gè)字符a,作為一個(gè)簡(jiǎn)單的加密工作。電源一接通,LCD1602液晶顯示屏顯示“Input Password” 用矩陣鍵盤掃描的方式進(jìn)行查詢按鍵,當(dāng)按下的“確定”鍵,密碼與所設(shè)定的密碼相符合時(shí),LCD1602顯示“Unlock”,同時(shí)繼電器模擬
17、接通,指示燈也亮表示解鎖。解鎖狀態(tài)按下“查看用戶信息鍵”的時(shí)候,可以循環(huán)查看用戶信息。此時(shí)按下“解鎖”鍵可以進(jìn)入主界面,即輸入密碼的界面。按下了“修改密碼”鍵,LCD1602顯示“Old Password”,即輸入舊密碼,密碼正確是才開(kāi)始修改密碼,LCD1602顯示“New Password”, 兩次輸入一樣則設(shè)置成功,LCD1602顯示“Set Success”和你所設(shè)定的新密碼,下次要輸入的密碼則需要新密碼才能解鎖。如果兩次新密碼設(shè)置不一樣則表示設(shè)置不成功,LCD1602顯示“Set fail”。 如果輸入舊密碼錯(cuò)誤則顯示“Error”,鎖定鍵盤三秒后進(jìn)入主界面。 按下了“上鎖”鍵,則LC
18、D1602顯示時(shí)間(由于缺少DS1302等時(shí)鐘芯片,所以用總共上鎖了多少時(shí)間來(lái)模擬顯示北京時(shí)間)。在輸入密碼的過(guò)程中想取消上次所輸入的一個(gè)數(shù)字時(shí),按下“撤銷”鍵,可以取消上次所輸入的數(shù)字。如果輸出三次密碼則蜂鳴器報(bào)警。6.3 系統(tǒng)結(jié)果分析在實(shí)物的調(diào)試過(guò)程中,解除警報(bào)這個(gè)操作是我調(diào)試用的最長(zhǎng)時(shí)間,剛開(kāi)始每次解除警報(bào)之后,下次輸入密碼反應(yīng)很慢,而且錯(cuò)三次之后不能準(zhǔn)確報(bào)警,但是復(fù)位之后才能再次正確運(yùn)行。因此我就想到了用軟件復(fù)位,通過(guò)定義ISP_CONTR的SWRET位置1,使單片機(jī)復(fù)位,完美解決以上問(wèn)題。 在所有程序測(cè)試完成之后,以前還行,目前沒(méi)有發(fā)現(xiàn)問(wèn)題。第7章 系統(tǒng)設(shè)計(jì)總結(jié)本系統(tǒng)可以隨意修改密碼
19、(12位數(shù)字以內(nèi)的數(shù)字),查看用戶信息,上鎖顯示時(shí)間,可以撤銷很多上次輸入。通過(guò)PC機(jī)才可以解除警報(bào),當(dāng)忘記密碼時(shí),可以用PC機(jī)初始化密碼。其中程序里面的密碼的后面加上字符a,從而起到一種簡(jiǎn)單的加密,以便存儲(chǔ)的密碼不再是單一的數(shù)字。本系統(tǒng)設(shè)計(jì)當(dāng)中遇到主要問(wèn)題如下解除警報(bào)。通過(guò)定ISP_CONTR的SWRET位置1,使單片機(jī)復(fù)位,完美解決問(wèn)題。容易被破解密碼。例如密碼是1234,如果輸入,也能解鎖。因此在程序里面自動(dòng)在密碼的后面加入了字符a,作為一個(gè)程序讀取密碼的結(jié)束標(biāo)志,起到簡(jiǎn)單的加密。本系統(tǒng)的缺陷在與要用串口線和PC機(jī)相連,這樣既不方便。希望將來(lái)能通過(guò)手機(jī)控制密碼鎖,當(dāng)錯(cuò)誤三次時(shí),只有用戶通
20、過(guò)自己的手機(jī)發(fā)送短信才能解除警報(bào)和初始化密碼。 參考文獻(xiàn)參考文獻(xiàn)1 王迎旭等.單片機(jī)原理及及應(yīng)用M 機(jī)械工業(yè)出版社.2012年2 龔建偉、熊光明等.Visual.c.Tubor.c串口通信M 3 康華光等.模擬電子技術(shù) 第五版M 高等教育出版社 2011年4 杜樹(shù)春等.單片機(jī)C語(yǔ)言M 北京航空航天大學(xué)出版社附錄A 系統(tǒng)硬件電路原理圖附錄B 程序清單/*AT24C02.c*/#include <reg52.h>#include <intrins.h> #include "delay.h"#define uchar unsigned charsbit S
21、CL=P34; /定義串行時(shí)鐘線sbit SDA=P35; /定義串行應(yīng)答線void init_24C02() /初始化24C02 SCL=1; _nop_(); /延時(shí)一個(gè)機(jī)器周期 SDA=1; _nop_();void start() SDA=1; _nop_(); SCL=1; _nop_(); SDA=0; /當(dāng)時(shí)鐘線為高電平時(shí)數(shù)據(jù)線拉低,AT24C02開(kāi)始工作 _nop_(); SCL=0; /時(shí)鐘線清零便于后續(xù)操作 _nop_();void stop() /停止信號(hào) SDA=0; _nop_(); SCL=1; _nop_(); SDA=1; /當(dāng)時(shí)鐘線為高電平時(shí),數(shù)據(jù)線拉高AT2
22、4C02停止 _nop_();void Write_Byte_24C02(uchar date) /寫一個(gè)字節(jié)的數(shù)據(jù) uchar i; for(i=0;i<8;i+) /傳送八位數(shù)據(jù) date=date<<1; /每次傳送一位 SCL=0; _nop_(); SDA=CY; _nop_(); SCL=1; _nop_(); /左移一位,將發(fā)送的最高位舍棄 SCL=0; _nop_(); SDA=1; _nop_(); /等待AT24C02的應(yīng)答信號(hào)uchar Read_Byte_24C02() /讀取一個(gè)字節(jié)數(shù)據(jù) uchar i,j,result; SCL=0; _nop_(
23、); SDA=1; for(i=0;i<8;i+) /每次讀取一位 _nop_(); SCL=1; _nop_(); if(SDA=1) /讀出高電平 j=1; else/讀出低電平 j=0; result=(result<<1)|j; /將讀出來(lái)的數(shù)值放在最低位 SCL=0; _nop_();return result; /返回讀出來(lái)的數(shù)值void clock() /等待AT24C02的應(yīng)答 uchar i=1; SCL=1; _nop_(); / SDA=1; / _nop_(); while(SDA=1) /等待拉低做出應(yīng)答 i+; SCL=0; _nop_();uch
24、ar Read_24C02(uchar address) uchar ReadData; start(); Write_Byte_24C02(0xa0); /寫入寫數(shù)據(jù)的命令 clock(); Write_Byte_24C02(address); /寫入地址 clock(); start(); /將數(shù)據(jù)線和時(shí)鐘線拉低 Write_Byte_24C02(0xa1); /寫入讀數(shù)據(jù)命令 clock(); ReadData=Read_Byte_24C02(); stop(); delay(200); return ReadData;void Write_24C02(uchar address,uch
25、ar date) /在指定地址處寫入數(shù)據(jù) start(); /開(kāi)始AT24C02 Write_Byte_24C02(0xa0); /寫入寫數(shù)據(jù)的命令 clock(); Write_Byte_24C02(address); /寫入地址 clock(); Write_Byte_24C02(date); /寫入讀數(shù)據(jù)的命令 clock(); stop(); /停止24C02 delay(200);/*delay.c*/#include "delay.h"void delay1ms(int ms) uchar i,j; for(;ms>0;ms-) for(i=0;i<
26、3;i+) for(j=0;j<99;j+) ; void delay(unsigned char x) /x*0.14MS unsigned char i; while(x-) for (i = 0; i<13; i+) /*單片機(jī)密碼鎖main.c*/#include <reg52.h>#include <intrins.h>#include "dianzisuo.h"#include "1602.h"#define uchar unsigned char/sfr ISP_CONTR=0xe7; /定義ISP特殊寄
27、存器sbit Led=P10;bit Solve=0;bit ChuShi=0;bit led=0; /定義報(bào)警燈標(biāo)識(shí)sbit bell=P37;sbit r=P01;uchar code t="1234a" /初始化密碼為1234,a是密碼的結(jié)束標(biāo)志位uchar code numtable=""uchar h,fen,miao;uchar sec=0;uchar Warn=0;/*void soft_reset(void) (void (code *) (void) 0x0000) (); /程序從零開(kāi)始執(zhí)行*/void Bell_() uchar i
28、=0,judge=0xff; Init_ser(); /TR0=1; while(1) /錯(cuò)誤三次鎖定鍵盤開(kāi)始報(bào)警 bell=0; led=0; if(led) P1=(0xf0|Unlock); delay(200); delay(200); led=0; else led=1; P1=(0xff|Unlock); delay(200); delay(200); /Init_ser(); if(Solve=1) /接收到PC機(jī)發(fā)送的解除警報(bào)則解除警報(bào) Solve=0; bell=1; Warn=0; delay(100); /延時(shí)一段時(shí)間等硬件做好準(zhǔn)備ISP_CONTR=0x20; /將SW
29、RET位置1,使單片機(jī)復(fù)位 /Init_Timer(); void Lock_Time() /bit Flag; uchar i,judge; uchar shi,ge; /十位和個(gè)位 Init_Timer(); /初始化時(shí)間設(shè)置 TR0=1; lcd_cmd(0x01); /清屏幕 lcd_cmd(0x0c); h=Read_24C02(20); fen=Read_24C02(21); miao=Read_24C02(22);while(1) if(miao=60) fen+;miao=0; / Flag=1; if(fen=60)h+;fen=0; /Flag=1;/ Flag=0; sh
30、i=h/10; ge=h%10; lcd_cmd(0x80+4); lcd_date(numtableshi); lcd_date(numtablege); lcd_date(':'); shi=fen/10; ge=fen%10; lcd_date(numtableshi); lcd_date(numtablege); lcd_date(':'); shi=miao/10; ge=miao%10; lcd_date(numtableshi); lcd_date(numtablege); i=key_scan(); judge=keyHandle(i);Writ
31、e_24C02(20,h);Write_24C02(21,fen);Write_24C02(22,miao); if(judge='u') Write_24C02(20,h);Write_24C02(21,fen);Write_24C02(22,miao);Init_ser();Init();Init_PM();TR0=0;break; ISP_CONTR=0x20; void main() bit New=0; uchar i=0,judge=0xff; init_24C02(); Init(); /初始化1602 Init_PM(); /初始化屏幕 Init_ser();
32、/Write_24C02(20,0);/Write_24C02(21,0);/Write_24C02(22,0); while(1) if(Warn>=3) Init_ser();Bell_();/if(i=1) /return; if(ChuShi) /接收到初始信號(hào) ChuShi=0; for(i=0;i<5;i+) Write_24C02(i,ti); /初始為1234ISP_CONTR=0x20; i=key_scan(); judge=keyHandle(i); judge_key(judge);if(judge='c') Look_information
33、(); if(judge='j') Lock_Time(); New=JugdeNewPassWord(judge); /設(shè)置新密碼if(New=1) /如果設(shè)置了新密碼程序從頭執(zhí)行以便密碼立即生效 return; void INT_T0() interrupt 1 static uchar num=0; TH0=0x3c; TL0=0xb0; num+; if(num=20) miao+; led=1; num=0; sec+; void INT_ser() interrupt 4 uchar a; a=SBUF; if(a='a') ChuShi=1; if
34、(a='s') Solve=1;/*1602.c*/#include <reg52.h>#include "1602.h"sbit rs=P32;sbit rw=P33;sbit EN=P36;/*/判忙函數(shù):bit lcd_bz() 所返回的值寫數(shù)據(jù)函數(shù): void lcd_date(uchar dat) 參數(shù)dat是要寫入的數(shù)據(jù)寫命令函數(shù): void lcd_cmd(uchar cmd) 參數(shù)cmd是要寫入的命令 1602初始化函數(shù): void Init()/*/bit lcd_bz() bit result; uchar temp; rs=
35、0; rw=1; EN=1; P0=0xff; temp=P0; result=(bit)(temp&0x80); delay1ms(1); EN=0; return result;void lcd_date(uchar dat) while(lcd_bz(); rs=1; rw=0; EN=1; P0=dat; delay1ms(1); EN=0;void lcd_cmd(uchar cmd) while(lcd_bz(); rs=0; rw=0; EN=1; P0=cmd; delay1ms(1); EN=0;void Init() lcd_cmd(0x38); delay1ms(
36、1); lcd_cmd(0x0c); /光標(biāo)不閃爍 delay1ms(1); lcd_cmd(0x06); /光標(biāo)左移 delay1ms(1); lcd_cmd(0x01); /清屏幕 delay1ms(1); /*key.c*/#include <reg52.h>#include "delay.h"#define uchar unsigned charuchar key_scan() staticuchar result=0xff; uchar key_h,key_l; P2=0xf0;if(P2!=0xf0) delay1ms(10);if(P2!=0xf0
37、) P2=0xf0; key_l=(P2&0xf0)|0x0f; /屏蔽低位 P2=0x0f; key_h=(P2&0x0f)|0xf0; /屏蔽高位 P2=0x0f; while(P2&0x0f)!=0x0f) P2=0x0f; /等待按鍵釋放 result=(key_l)+(key_h); return result; return 0xff;uchar keyHandle(uchar key_zhi) /鍵值處理 uchar result; switch(key_zhi) case 0x11: result='1'break; case 0x12: result='4'break; case 0x14: result='7'break; case 0x21: result='2'break; case 0x22: result='5'break;case 0x24: result='8'break;case 0x41: resu
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 全國(guó)電子工業(yè)版初中信息技術(shù)第一冊(cè)第2單元2.3活動(dòng)3《了解電子郵件傳輸協(xié)議》教學(xué)實(shí)錄
- 臨沂房產(chǎn)借款合同范例
- 2025年南充a2駕駛證貨運(yùn)從業(yè)資格證模擬考試
- 2025年三亞c1貨運(yùn)從業(yè)資格證模擬考試題
- 特殊工種應(yīng)聘合同范例
- 月餅券訂購(gòu)合同范例
- 買房中介返現(xiàn)合同范例
- 店鋪鋪面合同范例
- 產(chǎn)品保本合同范例
- 唐山職業(yè)技術(shù)學(xué)院《工程經(jīng)濟(jì)學(xué)與管理》2023-2024學(xué)年第一學(xué)期期末試卷
- Camtasia-Studio使用教程課件
- 新生兒危重癥識(shí)別及處理課件
- ACS抗栓治療出血和血栓的平衡之道課件
- 空調(diào)檢驗(yàn)報(bào)告
- 五年級(jí)上冊(cè)數(shù)學(xué)課件-9.3 圖形王國(guó)丨蘇教版 (共16張PPT)
- 陜西省西安市碑林區(qū)鐵一中學(xué)2020-2021學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題(含答案解析)
- 職業(yè)病危害告知卡(紫外線)
- 簡(jiǎn)支梁、懸臂梁撓度計(jì)算程序(自動(dòng)版)
- 艾肯MICU聲卡安裝調(diào)試教程
- 埋地鋼管結(jié)構(gòu)計(jì)算
- 除氧給水系統(tǒng).
評(píng)論
0/150
提交評(píng)論