




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
湖南理工學院課程設計第第頁湖南理工學院單片微機原理課程設計說明書設計題目:基于AT24C02的簡易電子密碼鎖院部:機械學院專業:機械電子工程組長姓名:學號:組員姓名:學號:學號:學號:起迄日期:2016年6月19日2016年6月30日指導教師:教研室主任:第第35頁共35頁目錄1引言41.1電子密碼鎖簡介41.2電子密碼鎖的發展趨勢 41.3本設計所要實現的目標 52設計方案的選擇52.1方案一:采用數字電路控制方案5 2.2方案二:采用無線遙控方式控制方案52.3方案三:采用以單片機為核心的控制方案5 3主要元器件介紹63.1主控芯片AT89S5163.1.1AT89S51性能簡介63.1.2AT89S51引角功能說明73.2存儲芯片AT24C029 3.3LCD1602顯示器103.3.1接口信號說明103.3.2主要技術參數113.3.3基本操作程序113.4晶體振蕩器12 4系統硬件構成12 4.1設計原理124.2電路總體構成134.3鍵盤輸入部分13 4.4密碼存儲部分14 4.5復位部位15 4.6晶振部分15 4.7顯示部分 154.8報警部分174.9開鎖部分18 5系統軟件設計19 6總結22參考文獻23附錄一23附錄二33 1引言1.1電子密碼鎖簡介電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關的閉合,完成開鎖、閉鎖任務的電子產品。它的種類很多,有簡易的電路產品,也有基于芯片的性價比較高的產品。現在應用較廣的電子密碼鎖是以芯片為核心,通過編程來實現的。其性能和安全性已大大超過了機械鎖。其特點如下:1)保密性好,編碼量多,遠遠大于彈子鎖。隨機開鎖成功率幾乎為零。
2)密碼可變,用戶可以隨時更改密碼,防止密碼被盜,同時也可以避免因人員的更替而使鎖的密級下降。
3)誤碼輸入保護,當輸入密碼多次錯誤時,報警系統自動啟動。4)無活動零件,不會磨損,壽命長。5)使用靈活性好,不像機械鎖必須佩帶鑰匙才能開鎖。6)電子密碼鎖操作簡單易行,一學即會。1.2電子密碼鎖的發展趨勢在日常生活和工作中,住宅與部門的安全防范、單位的文件檔案、財務報表以及一些個人資料的保存多以加鎖的辦法來解決。目前門鎖主要用彈子鎖,其鑰匙容易丟失;保險箱主要用機械密碼鎖,其結構較為復雜,制造精度要求高,成本高,且易出現故障,人們常需攜帶多把鑰匙,使用極不方便,且鑰匙丟失后安全性即大打折扣。針對這些鎖具給人們帶來的不便若使用機械式鑰匙開鎖,為滿足人們對鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應運而生。它的出現為人們的生活帶來了很大的方便,有很廣闊的市場前景。由于電子器件所限,以前開發的電子密碼鎖,其種類不多,保密性差,最基本的就是只依靠最簡單的模擬電子開關來實現的,制作簡單但很不安全,在后為多是基于EDA來實現的,其電路結構復雜,電子元件繁多,也有使用早先的20引角的2051系列單片機來實現的,但密碼簡單,易破解。隨著電子元件的進一步發展,電子密碼鎖也出現了很多的種類,功能日益強大,使用更加方便,安全保密性更強,由以前的單密碼輸入發展到現在的,密碼加感應元件,實現了真真的電子加密,用戶只有密碼或電子鑰匙中的一樣,是打不開鎖的,隨著電子元件的發展及人們對保密性需求的提高出現了越來越多的電子密碼鎖。出于安全、方便等方面的需要許多電子密碼鎖已相繼問世。但這類產品的特點是針對特定有效卡、指紋或聲音有效,且不能實現遠程控制,只能適用于保密要求高且供個人使用的箱、柜、房間等。由于數字、字符、圖形圖像、人體生物特征和時間等要素均可成為鑰匙的電子信息,組合使用這些信息能夠使電子防盜鎖獲得高度的保密性,如防范森嚴的金庫,需要使用復合信息密碼的電子防盜鎖,這樣對盜賊而言是“道高一尺、魔高一丈”。組合使用信息也能夠使電子防盜鎖獲得無窮擴展的可能,使產品多樣化,對用戶而言是“千挑百選、自得其所”。可以看出組合使用電子信息是電子密碼鎖以后發展的趨勢。1.3本設計所要實現的目標 該密碼鎖初次使用時的原始密碼為123456,用戶輸入正確的密碼信息則能夠發出開鎖信號。功能要求:能夠修改密碼。只有輸入原設定的正確密碼后才能修改密碼。三次輸入開鎖密碼錯誤,則啟動報警。顯示按鍵信息,而且要有按鍵音。系統設0~9十個數字鍵,一個密碼修改鍵,一個確認鍵。按下密碼修改鍵,先輸入原密碼,解密正確后鍵入新密碼,按確認鍵生效。解密錯誤啟動報警,5秒鐘后報警自動解除。技術要求:1、系統停電后,密碼信息不會丟失,上電后仍能正常執行開鎖操作。2、系統安全可靠,不會出現死機現象。3、密級<106。2設計方案的選擇 2.1方案一:采用數字電路控制方案 用以74LS112雙JK觸發器構成的數字邏輯電路作為密碼鎖的核心控制,共設了9個用戶輸入鍵,其中只有4個是有效的密碼按鍵,其它的都是干擾按鍵,若按下干擾鍵,鍵盤輸入電路自動清零,原先輸入的密碼無效,需要重新輸入;如果用戶輸入密碼的時間超過10秒(一般情況下,用戶不會超過10秒,若用戶覺得不便,還可以修改)電路將報警20秒,若電路連續報警三次,電路將鎖定鍵盤2分鐘,防止他人的非法操作。采用數字電路設計的方案好處就是設計簡單但控制的準確性和靈活性差。故不采用。2.2方案二:采用無線遙控方式控制方案采用無線電磁波發射模式,此方案的優點在于遙控距離更遠,也無需要對準電子鎖的位置,但是缺點就是由于本設計是要求設計成為一個一鍵式發射解鎖方式,這樣就容易造成無意識的解鎖,比如說孩子,或者是自己在無意識的情況下進行了解鎖,不利于電子鎖的安全防盜。2.3方案三:采用以單片機為核心的控制方案由于單片機種類繁多,各種型號都有其一定的應用環境,因此在選用時要多加比較,合理選擇,以期獲得最佳的性價比。一般來說在選取單片機時從下面幾個方面考慮:性能、存儲器、運行速度、I/O口、定時/計數器、串行接口、模擬電路功能、工作電壓、功耗、封裝形式、抗干擾性、保密性,除了以上的一些的還有一些最基本的比如:中斷源的數量和優先級、工作溫度范圍、有沒有低電壓檢測功能、單片機內有無時鐘振蕩器、有無上電復位功能等。在開發過程中單片機還受到:開發工具、編程器、開發成本、開發人員的適應性、技術支持和服務等等因素。基于以上因素本設計選用單片機AT89S51作為本設計的核心元件,利用單片機靈活的編程設計和豐富的I/O端口,及其控制的準確性,實現基本的密碼鎖功能。在單片機的外圍電路外接輸入鍵盤用于密碼的輸入和一些功能的控制,外接AT24C02芯片用于密碼的存儲,外接LCD1602顯示器用于顯示作用。當用戶需要開鎖時,先按鍵盤開鎖鍵之后按鍵盤的數字鍵0-9輸入密碼。密碼輸完后按下確認鍵,如果密碼輸入正確則開鎖,不正確顯示密碼錯誤重新輸入密碼,當三次密碼錯誤則發出報警;當用戶需要修改密碼時,先按下鍵盤設置鍵后輸入原來的密碼,只有當輸入的原密碼正確后才能設置新密碼。新密碼輸入無誤后按確認鍵使新密碼將得到存儲,密碼修改成功。可以看出方案三控制靈活準確性好且保密性強還具有擴展功能,根據現實生活的需要此次設計采用此方案。3主要元器件介紹 3.1主控芯片AT89S51AT89S51是一個低功耗,高性能CMOS8位單片機,片內含4kBytesISP(In-systemprogrammable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統及80C51引腳結構,芯片內集成了通用8位中央處理器和ISPFlash存儲單元,功能強大的微型計算機的AT89S51可為許多嵌入式控制應用系統提供高性價比的解決方案。3.1.1AT89S51性能簡介AT89S51具有如下特點:40個引腳,4kBytesFlash片內程序存儲器,128bytes的隨機存取數據存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優先級2層中斷嵌套中斷,2個16位可編程定時計數器,2個全雙工串行通信口,看門狗(WDT)電路,片內時鐘振蕩器。此外,AT89S51設計和配置了振蕩頻率可為0Hz并可通過軟件設置省電模式。空閑模式下,CPU暫停工作,而RAM定時計數器,串行口,外中斷系統可繼續工作,掉電模式凍結振蕩器而保存RAM的數據,停止芯片其它功能直至外中斷激活或硬件復位。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應不同產品的需求。圖3-1AT89S51PDIP封裝引腳圖其主要功能特性:兼容MCS-51指令系統4k可反復擦寫(>1000次)ISPFlashROM32個雙向I/O口4.5-5.5V工作電壓2個16位可編程定時/計數器時鐘頻率0-33MHz全雙工UART串行中斷口線128x8bit內部RAM2個外部中斷源低功耗空閑和省電模式中斷喚醒省電模式3級加密位看門狗(WDT)電路軟件設置空閑和省電功能靈活的ISP字節和分頁編程雙數據寄存器指針可以看出AT89S51提供以下標準功能:4K字節Flash閃速存儲器,128字節內部RAM,32個I/O口線,看門狗(WDT),兩個數據指針,兩個16位定時器/計數器,一個5向量兩級中斷結構,一個全雙工串行通信口,片內振蕩器及時鐘。同時,AT89S51可降至0Hz的靜態邏輯操作,并支持兩種軟件可選的節電工作模式。空閑方式停止CPU的工作,但允許RAM,定時/計數器,串行通信口及中斷系統繼續工作。掉電方式何在RAM中的內容,但振蕩器停止工作并禁止其它所有部件工作直接到一個硬件復位。3.1.2AT89S51引角功能說明Vcc:電源電壓GND:地P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數據總線復用口,作為輸出口用時,每位能驅動8個TTL邏輯門電路,對端口寫“1”可作為高阻抗輸入端口。在訪問外部數據存儲器或程序存儲器時,這組口線分時轉換地址(低8位)和數據總線復用,在訪問期間激活內部上拉電阻。在Flash編程時,P0口接收指令字節,而在程序校驗時,輸出指令字節,校驗時,要求外接上拉電阻。P1口:P1是一個帶內部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號校驗期間,P1接收低8位地址。表3-1為P1口第二功能。表3-1P1口第二功能端口引腳第二功能P1.5MOSI(用于ISP編程)P1.6MISO(用于ISP編程)P1.7SCK(用于ISP編程)P2口:P2是一個帶有內部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅動4個TTL邏輯門電路。對端口寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流I。在訪問8位地址的外部數據存儲器(如執行:MOVX@Ri指令)時,P2口線上的內(也即特殊功能寄存器,在整個訪問期間不改變。Flash編程或校驗時,P2也接收高位地址和其它控制信號。P3口:P3口是一組帶有內部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內部上拉電阻拉高并可作為輸入端口。作輸入端口時,被外部拉低的P3口將用上拉電阻輸出電流I。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,P3口的第二功能如下表3-2。表3-2P3口的第二功能端口功能第二功能端口引腳第二功能RXD(P3.0)串行輸入口T0(P3.4)定時/計數器0外部輸入TXD(P3.1)串行輸出口T1(P3.5)定時/計數器1外部輸入INT0(P3.2)外中斷0WR(P3.6)外部數據存儲器寫選通INT1(P3.3)外中斷1RD(P3.7)外部數據存儲器讀選通RST:復位輸入。當振蕩工作時,RST引腳出現兩個機器周期上高電平將使單片機復位。WDT益出將使該引腳輸出高電平,設置SFRAUXR的DISRTO位(地址8EH)可打開或關閉該功能。DISRTO位缺省為RESET輸出高電平打開狀態。ALE/PROG:當訪問外部程序存儲器或數據存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節。即使不訪問外部存儲器,ALE仍以時鐘振蕩頻率的1/6輸出的正脈沖信號,因此它可對外輸出時鐘或用于定時目地,要注意的是:第當訪問外部數據存儲器時將跳過一個ALE脈沖。如有必要,可通過對特殊功能寄存器(SFR)區中的8EH單元的D0位置位,可禁止ALE操作。該位禁位后,只有一條MOVX和MOVC指令ALE才會被激活。此外,該引腳伎被微弱拉高,單片機執行外部程序時,應設置ALE無效。PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當AT89S51由外部程序存儲器取指令(或數據)時,每個機器周期兩次PSEN有效,即輸出兩個脈沖。當訪問外部數據存儲器,高有兩次有效的PSEN信號。EA/VPP:外部訪問允許。欲使CPU公訪問外部程序存儲器(地址0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內部會鎖存EA端狀態。如EA端為高電平(接Vcc端),CPU則執行內部程序存儲器中的指令。Flash存儲器編程時,該引腳加上+12V的編程電壓Vpp。XTAL1:振蕩器反相放大器及內部時鐘發生器的輸入端。XTAL2:振蕩器反相放大器的輸出端。3.2存儲芯片AT24C02AT24C02是美國Atmel公司的低功耗CMOS型E2PROM,內含256×8位存儲空間,具有工作電壓寬(2.5~5.5V)、擦寫次數多(大于10000次)、寫入速度快(小于10ms)、抗干擾能力強、數據不易丟失、體積小等特點。而且他是采用了I2C總線式進行數據讀寫的串行器件,占用很少的資源和I/O線,并且支持在線編程,進行數據實時的存取十分方便。AT24C02中帶有的片內地址寄存器。每寫入或讀出一個數據字節后,該地址寄存器自動加1,以實現對下一個存儲單元的讀寫。所有字節均以單一操作方式讀取。為降低總的寫入時間,一次操作可寫入多達8個字節的數據。I2C總線是一種用于IC器件之間連接的二線制總線。他通過SDA(串行數據線)及SCL(串行時鐘線)兩根線在連到總線上的器件之間傳送信息,并根據地址識別每個器件。AT24C02正是運用了I2C規程,使用主/從機雙向通信,主機(通常為單片機)和從機(AT24C02)均可工作于接收器和發送器狀態。主機產生串行時鐘信號(通過SCL引腳)并發出控制字,控制總線的傳送方向,并產生開始和停止的條件。無論是主機還是從機,接收到一個字節后必須發出一個確認信號ACK。AT24C02的控制字由8位二進制數構成,在開始信號發出以后,主機便會發出控制字,以選擇從機并控制總線傳送的方向。SOICPDIP圖3-2AT24C02的兩種引腳圖圖3-3AT24C02的電路接線圖圖中AT24C02的1、2、3腳是三條地址線,用于確定芯片的硬件地址。在AT89C51試驗開發板上它們都接地,第8腳和第4腳分別為正、負電源。第5腳SDA為串行數據輸入/輸出,數據通過這條雙向I2C總線串行傳送,在AT89C51試驗開發板上和單片機的P3.7連接。第6腳SCL為串行時鐘輸入線,在AT89C51試驗開發板上和單片機的P3.6連接。SDA和SCL都需要和正電源間各接一個5.1K的電阻上拉。第7腳需要接地。24C02中帶有片內地址寄存器。每寫入或讀出一個數據字節后,該地址寄存器自動加1,以實現對下一個存儲單元的讀寫。所有字節均以單一操作方式讀取。為降低總的寫入時間,一次操作可寫入多達8個字節的數據。3.3LCD1602顯示器 現在的字符型液晶模塊已經是單片機應用設計中最常用的信息顯示器件了。1602型LCD顯示模塊具有體積小,功耗低,顯示內容豐富等特點。1602型LCD可以顯示2行16個字符,有8位數據總線D0~D7和RS,R/W,EN三個控制端口,工作電壓為5V,并且具有字符對比度調節和背光功能。3.3.1接口信號說明1602型LCD的接口信號說明如表3-3所示:表3-31602型LCD的接口信號說明編號符號引腳說明編號符號引腳說明1VSS電源地9D2DataI/O2VDD電源正極10D3DataI/O3V0液晶顯示偏壓信號11D4DataI/O4RS數據/命令選擇端(H/L)12D5DataI/O5R/W讀寫選擇端(H/L)13D6DataI/O6E使能信號14D7DataI/O7D0DataI/O15BLA背光源正極8D1DataI/O16BLK背光源負極3.3.2主要技術參數1602型LCD的主要技術參數如下表所示:表3-41602型LCD的主要技術參數顯示容量16X2個字符芯片工作電壓4.5~5.5V工作電流2.0mA(5.0V)模塊最佳工作電壓5.0V字符尺寸2.95X4.35(WXH)mm3.3.3基本操作程序讀狀態:輸入:RS=L,RW=L, E=H 輸出:D0~D7=狀態字讀數據:輸入:RS=H,RW=H,E=H 輸出:無寫指令:輸入:RS=L,RW=L,D0~D7=指令碼,E=高脈沖輸出:D0~D7=數據寫數據:輸入:RS=H,RW=L,D0~D7=數據,E=高脈沖輸出:無3.4晶體振蕩器 晶體振蕩器,簡稱晶振,其作用在于產生原始的時鐘頻率,這個頻率經過頻率發生器的放大或縮小后就成了電腦中各種不同的總線頻率。以聲卡為例,要實現對模擬信號44.1kHz或48kHz的采樣,頻率發生器就必須提供一個44.1kHz或48kHz的時鐘頻率。如果需要對這兩種音頻同時支持的話,聲卡就需要有兩顆晶振。但是現在的娛樂級聲卡為了降低成本,通常都采用SCR將輸出的采樣頻率固定在48kHz,但是SRC會對音質帶來損害,而且現在的娛樂級聲卡都沒有很好地解決這個問題。現在應用最廣泛的是石英晶體振蕩器。
石英晶體振蕩器是一種高精度和高穩定度的振蕩器,石英晶體振蕩器也稱石英晶體諧振器,它用來穩定頻率和選擇頻率,是一種可以取代LC諧振回路的晶體諧振元件。石英晶體振蕩器廣泛地應用在電視機、影碟機、錄像機、無線通訊設備、電子鐘表、單片機、數字儀器儀表等電子設備中。為數據處理設備產生時鐘信號和為特定系統提供基準信號。在單片機中為其提供時鐘頻率。石英晶體振蕩器是利用石英晶體(二氧化硅的結晶體)的壓電效應制成的一種諧振器件,它的基本構成大致是:從一塊石英晶體上按一定方位角切下薄片(簡稱為晶片,它可以是正方形、矩形或圓形等),在它的兩個對應面上涂敷銀層作為電極,在每個電極上各焊一根引線接到管腳上,再加上封裝外殼就構成了石英晶體諧振器,簡稱為石英晶體或晶體、晶振。其產品一般用金屬外殼封裝,也有用玻璃殼、陶瓷或塑料封裝的。只要在晶體振子板極上施加交變電壓,就會使晶片產生機械變形振動,此現象即所謂逆壓電效應。當外加電壓頻率等于晶體諧振器的固有頻率時,就會發生壓電諧振,從而導致機械變形的振幅突然增大。4系統硬件構成 4.1設計原理 本設計主要由單片機、矩陣鍵盤、液晶顯示器和密碼存儲等部分組成。其中矩陣鍵盤用于輸入數字密碼和進行各種功能的實現。由用戶通過連接單片機的矩陣鍵盤輸入密碼,后經過單片機對用戶輸入的密碼與自己保存的密碼進行對比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報警電路控制開鎖還是報警,實際使用時只要將單片機的負載由繼電器換成電子密碼鎖的電磁鐵吸合線圈即可,當然也可以用繼電器的常開觸點去控制電磁鐵吸合線圈。本系統共有兩部分構成,即硬件部分與軟件部分。其中硬件部分由電源輸入部分、鍵盤輸入部分、密碼存儲部分、復位部分、晶振部分、顯示部分、報警部分、開鎖部分組成,軟件部分對應的由主程序、初始化程序、LCD顯示程序、鍵盤掃描程序、啟動程序、關閉程序、建功能程序、密碼設置程序、EEPROM讀寫程序和延時程序等組成。其原理框圖如圖4-1所示。AT89AT89S51鍵盤輸入復位電路密碼存儲電路晶振電路顯示電路報警電路開鎖電路圖4-1電子密碼鎖原理框圖4.2電路總體構成 在確定了選用什么型號的單片機后,就要確定在外圍電路,其外圍電路包括電源輸入部分、鍵盤輸入部分、密碼存儲部分、復位部分、晶振部分、顯示部分、報警部分、開鎖部分組成,根據實際情況鍵盤輸入部分選擇4*4矩陣鍵盤,顯示部分選擇字符型液晶顯示LCD1602,密碼存儲部分選用AT24C02芯片來完成。其原理圖如圖4-2所示:圖4-2電路原理圖4.3鍵盤輸入部分由于本設計所用到的按鍵數量較多而不適合用獨立按鍵式鍵盤。采用的是矩陣式按鍵鍵盤,它由行線和列線組成,也稱行列式鍵盤,按鍵位于行列的交叉點上,密碼鎖的密碼由鍵盤輸入完成,與獨立式按鍵鍵盤相比,要節省很多I/O口。本設計中使用的這個4*4鍵盤不但能完成密碼的輸入還能作特別功能鍵使用,比如清空顯示功能等。鍵盤的每個按鍵功能在程序設計中設置。其大體功能(看鍵盤按鍵上的標記)及與單片機引腳接法如圖4-3所示:圖4-3鍵盤輸入原理圖4.4密碼存儲部分 用EPROM芯片AT24C02存儲密碼。AT24C02是美國Atmel公司的低功耗CMOS型E2PROM,內含256×8位存儲空間,具有工作電壓寬(2.5~5.5V)、擦寫次數多(大于10000次)、寫入速度快(小于10ms)、抗干擾能力強、數據不易丟失、體積小等特點。而且他是采用了I2C總線式進行數據讀寫的串行器件,占用很少的資源和I/O線,并且支持在線編程,進行數據實時的存取十分方便。AT24C02中帶有的片內地址寄存器。每寫入或讀出一個數據字節后,該地址寄存器自動加1,以實現對下一個存儲單元的讀寫。所有字節均以單一操作方式讀取。為降低總的寫入時間,一次操作可寫入多達8個字節的數據。I2C總線是一種用于IC器件之間連接的二線制總線。他通過SDA(串行數據線)及SCL(串行時鐘線)兩根線在連到總線上的器件之間傳送信息,并根據地址識別每個器件。AT24C02正是運用了I2C規程,使用主/從機雙向通信,主機(通常為單片機)和從機(AT24C02)均可工作于接收器和發送器狀態。主機產生串行時鐘信號(通過SCL引腳)并發出控制字,控制總線的傳送方向,并產生開始和停止的條件。無論是主機還是從機,接收到一個字節后必須發出一個確認信號ACK。AT24C02的控制字由8位二進制數構成,在開始信號發出以后,主機便會發出控制字,以選擇從機并控制總線傳送的方向。其接線如圖4-4所示:圖4-4密碼存儲電路原理圖4.5復位部位 單片機復位是使CPU和系統中的其他功能部件都處在一個確定的初始狀態,并從這個狀態開始工作,例如復位后PC=0000H,使單片機從第—個單元取指令。無論是在單片機剛開始接上電源時,還是斷電后或者發生故障后都要復位。在復位期間(即RST為高電平期間),P0口為高組態,P1-P3口輸出高電平;外部程序存儲器讀選通信號PSEN無效。地址鎖存信號ALE也為高電平。根據實際情況選擇如圖4-5所示的復位電路。該電路在最簡單的復位電路下增加了手動復位按鍵,在接通電源瞬間,電容C1上的電壓很小,復位下拉電阻上的電壓接近電源電壓,即RST為高電平,在電容充電的過程中RST端電壓逐漸下降,當RST端的電壓小于某一數值后,CPU脫離復位狀態,由于電容C1足夠大,可以保證RST高電平有效時間大于24個振蕩周期,CPU能夠可靠復位。增加手動復位按鍵是為了避免死機時無法可靠復位。當復位按鍵按下后電容C1通過R5放電。當電容C1放電結束后,RST端的電位由R5與R6分壓比決定。由于R5<<R6因此RST為高電平,CPU處于復位狀態,松手后,電容C1充電,RST端電位下降,CPU脫離復位狀態。R5的作用在于限制按鍵按下瞬間電容C1的放電電流,避免產生火花,以保護按鍵觸電。圖4-5復位電路原理圖4.6晶振部分 AT89S51引腳XTAL1和XTAL2與晶體振蕩器及電容C2、C1按圖4-6所示方式連接。晶振、電容C1/C2及片內與非門(作為反饋、放大元件)構成了電容三點式振蕩器,振蕩信號頻率與晶振頻率及電容C1、C2的容量有關,但主要由晶振頻率決定,范圍在0~33MHz之間,電容C1、C2取值范圍在5~30pF之間。根據實際情況,本設計中采用12MHZ做為系統的外部晶振。電容取值為20pF。圖4-6晶振電路原理圖4.7顯示部分 為了提高密碼鎖的密碼顯示效果能力。本設計的顯示部分由液晶顯示器LCD1602取代普通的數碼管來完成。只有按下鍵盤上的開啟按鍵后,顯示器才處于開啟狀態。同理只有按下關閉按鍵后顯示器才處于關閉狀態。否則顯示器將一直處于初始狀態,當需要對密碼鎖進行開鎖時,按下鍵盤上的開鎖按鍵后利用鍵盤上的數字鍵0-9輸入密碼,每按下一個數字鍵后在顯示器上顯示一個*,輸入多少位就顯示多少個*。當密碼輸入完成時,按下確認鍵,如果輸入的密碼正確的話,LCD子顯示“RIGHT”,單片機其中P3.0引角會輸出低電平,使三極管Q2導通,電磁鐵吸合,電子密碼鎖被打開,如果密碼不正確,LCD顯示屏會顯示“ERROR”,P3.0輸出的是高電平,電子密碼鎖不能被打開。通過LCD顯示屏,可以清楚的判斷出鎖所處的狀態。其顯示部分引腳接口如圖4-7所示:圖4-7顯示電路原理圖4.8報警部分 報警部分由蜂鳴器發聲裝置及外圍電路組成,加電后不發聲,當有鍵按下時,“嘀”聲,每按一下,發聲一次,密碼正確時,不發聲直接開鎖,當密碼輸入錯誤時,單片機的P3.5引腳為低電平,三極管Q1導通轟鳴器發出噪鳴聲報警。如圖4-8所示:圖4-8報警電路原理圖4.9開鎖部分 開鎖控制電路的功能是當輸入正確的密碼后將鎖打開。系統使用單片機其中一引腳線發出信號,經三極管放大后,由繼電器驅動電磁閥動作將鎖打開。用戶通過鍵盤任意設置密碼,并儲存在EEPROM中作為鎖碼指令。只有用戶操作鍵盤時,單片機的電源端才能得到5V電源,否則.單片機處于節電工作方式。開鎖步驟如下:首先按下鍵盤上的開鎖按鍵,然后利用鍵盤上的數字鍵0-9輸入密碼,最后按下確認鍵。當用戶輸入一密碼后,單片機自動識碼,如果識碼不符,則報警。只有當識碼正確,單片機才能控制電子鎖內的微型繼電器吸臺。當繼電器吸臺以后帶動鎖桿伸縮,這時,鎖勾在彈簧的作用下彈起,完成本次開鎖。開鎖以后,單片機自動清除掉由用戶輸人的這個密碼。如圖4-9所示:圖4-9開鎖電路原理圖5系統軟件設計本系統軟件設計由主程序、初始化程序、LCD顯示程序、鍵盤掃描程序、鍵功能程序、密碼設置程序、EEPROM讀寫程序和延時程序等組成。主要程序設計流程圖如下所示: 初始化初始化鍵盤掃描啟動程序鍵盤掃描鍵功能程序關閉程序開始結束圖5-1主程序流程圖鍵值=鍵值=‘0-9’?鍵值=‘開鎖’?鍵值=‘清除’?鍵值=‘設置’?鍵值=‘確認’?密碼輸入程序設置程序清除程序開鎖程序確認程序YYYYYNNNNN鍵值=‘清零’?清零程序YN返回功能鍵程序圖5-2鍵功能流程圖YYNNYNY初始化按下設置鍵輸舊密碼確認程序所輸入舊密碼正確?輸新密碼確認程序輸入次數加1次數>3?報警程序確認程序再次輸新密碼兩次新密碼輸入相同?返回設置成功設置程序圖5-3密碼設置流程圖開鎖成功N開鎖成功NNYY初始化按開鎖鍵輸入密碼確認程序所輸入密碼正確?輸入次數加1次數>3?報警程序返回開鎖程序圖5-4開鎖流程圖6總結 隨著期末的到來,各種課程設計都在有序進行中。經過兩周的奮戰,我的單片機課程設計終于完成了。在沒有做課程設計以前覺得課程設計只是對這門課程所學知識的單純總結,但是通過這次做課程設計發現自己的看法有點太片面。課程設計不僅是對前面所學知識的一種檢驗,而且也是對自己能力的一種提高。通過這次課程設計使我明白了自己原來課堂所學知識還比較欠缺。自己要學習的東西還太多,以前老是覺得自己什么東西都會,什么東西都懂,有點眼高手低。通過這次課程設計,我才明白學習是一個長期積累的過程,在以后的工作、生活中都應該不斷的學習,努力提高自己知識和綜合素質。在此要感謝老師的指導,感謝同學給我的幫助。在設計過程中,我通過查閱大量有關資料,與同學交流經驗和自學,并向同學請教等方式,使自己學到了不少知識,也經歷了不少艱辛,但收獲同樣巨大。在整個設計中我懂得了許多東西,也培養了我獨立工作的能力,樹立了對自己工作能力的信心,相信會對今后的學習工作生活有非常重要的影響。而且大大提高了實踐的能力,使我充分體會到了在創造過程中探索的艱難和成功時的喜悅。雖然這個設計做的也不太好,但是在設計過程中所學到的東西是這次課程設計的最大收獲和財富,使我終身受益。課程設計組2016年6月29日于湖南理工學院參考文獻:[1]彭偉編著.單片機C語言程序設計實訓100例.電子工業出版社[2]趙全利主編.單片機原理及應用教程.機械工業出版社.第3版[3]郭天祥編著.51單片機C語言教程.電子工業出版社[4]張文祥等編著.單片機系統設計與開發教程.電子工業出版社[5]康光華主編.電子技術基礎.高等教育出版社.第五版[6]楊路明主編.C語言程序設計教程.北京郵電大學出版社.第2版 附錄一程序清單:#include<reg51.h>#include<string.h>#include<intrins.h> #defineucharunsignedchar#defineuintunsignedint#defineLCDIOP2#definedelay4us()_nop_();_nop_();_nop_();_nop_();ucharbuffer[6]={0};sbitsda=P3^7;sbitscl=P3^6;sbitbeep=P3^5;sbitrs=P0^4;sbitrd=P0^3;sbitlcden=P0^2;sbitled=P3^0;bitflag=0,a=0,b=0,d=0,aa;unsignedintn=0;unsignedcharfrq,j=0; ucharDSY_BUFFER[16]="";ucharDSY_BUFFER1[16]="";ucharUserpassword[6]={0};ucharcodetable2[]="123456";ucharcodetable[]="YourPassword...";voiddelayms(uintz) //延時Zms程序{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voidbaojin() //報警發聲子程序{TMOD=0x01;frq=0x00;TH0=0x00;TL0=0xff;TR0=1;EA=1;ET0=1;n=0;while(n<5003){if(n>5000){TR0=0;beep=0;}frq++;n++;delayms(1);}}voidtimer0()interrupt1 //定時器0中斷程序{TH0=0xfe;TL0=frq;{beep=~beep;}}voidBeep() //按鍵發聲和報警發聲程序{uchari;if(j==3||(b==1&&d==0)) baojin(); else{for(i=0;i<100;i++){delayms(1); beep=~beep;}beep=0;}}voiddelay() //微秒延時程序 {;;}voidwrite_com(ucharcom){ rs=0; rd=0; lcden=0; P2=com; delayms(3); lcden=1; delayms(3); lcden=0; }voidwrite_date(uchardate){ rs=1; rd=0; lcden=0; P2=date; delayms(3); lcden=1; delayms(3); lcden=0; }voidDisplay_String(uchar*p,ucharcom){uchari;write_com(com);for(i=0;i<16;i++){write_date(p[i]); }}voidinit_lcd() //液晶顯示初始化{ lcden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80);Display_String(table,0x80); Display_String("LockOK!",0xc0);}voidstart() //啟動信號{ sda=1; scl=1; delay4us(); sda=0; delay4us(); scl=0;}voidstop() //停止信號{ sda=0; scl=1; delay4us(); sda=1; delay4us(); scl=0;}voidinit() //總線初始化 {sda=1;delay();scl=1;delay();}voidack() //應答信號{ sda=0; scl=1; delay4us(); scl=0; sda=1;}voidnoack() //非應答信號{ sda=1; scl=1; delay4us(); scl=0; sda=0;}ucharrecbyte() //寫一個字節{ uchari,rd; rd=0x00; sda=1; for(i=0;i<8;i++) { scl=1; rd<<=1; rd|=sda; delay4us(); scl=0; delay4us(); } scl=0; delay4us(); returnrd;}ucharsendbyte(ucharwd) //讀一個字節{ uchari; bitack0; for(i=0;i<8;i++) { sda=(bit)(wd&0x80); _nop_(); _nop_(); scl=1; delay4us(); scl=0; wd<<=1; } delay4us(); sda=1; scl=1; delay4us(); ack0=!sda; scl=0; delay4us(); returnack0;}ucharRecstring(ucharslave,ucharsubaddr,uchar*buffer,ucharn){uchari;start();if(!sendbyte(slave))return0;if(!sendbyte(subaddr))return0;start();if(!sendbyte(slave+1))return0;for(i=0;i<n-1;i++){ buffer[i]=recbyte(); ack();}buffer[n-1]=recbyte();noack();stop();return1;}ucharSendstring(ucharslave,ucharsubaddr,uchar*buffer,ucharn){ uchari; start(); if(!sendbyte(slave))return0; if(!sendbyte(subaddr))return0; for(i=0;i<n;i++) { if(!sendbyte(buffer[i]))return0; } stop(); return1;}voidclear_password(){ uchari; for(i=0;i<6;i++) { Userpassword[i]=''; } for(i=0;i<16;i++) { DSY_BUFFER[i]=''; }}ucharKeys_Scan() //鍵盤掃描程序{ uchartemp,keynum; P1=0x0F; delayms(5); temp=P1^0x0F; switch(temp) { case1:keynum=0;break; case2:keynum=1;break; case4:keynum=2;break; case8:keynum=3;break; break; } P1=0xF0; delayms(5); temp=P1>>4^0x0F; while(P1==0xF0){ switch(temp) { case1:keynum+=0;break; case2:keynum+=4;break; case4:keynum+=8;break; case8:keynum+=12;break; break; } d=1;Beep(); d=0; delayms(600);returnkeynum;}voidmain() //主程序{uchartemp,i=0,k=0,n; ucharIS_valid_user; beep=1; init(); init_lcd(); delayms(5); aa=Sendstring(0xa0,1,table2,6); delayms(5); aa=Recstring(0xa0,1,buffer,6); delayms(10); P1=0x0f; while(1) { if(P1!=0x0f) { temp=Keys_Scan(); switch(temp) //數字鍵{case0:case1:case2:case3:case4:case5:case6:case7:case8:case9:if(i<=5){Userpasswor
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年經濟師考試財經知識試題及答案
- 2022年全國中學生數學奧林匹克競賽(預賽)暨2022年全國高中數學聯合競賽一試(A卷)參考答案及評分標準
- 快遞合作協議和勞動合同
- 橡膠輸送帶合同協議
- 商場進場裝修協議書范本
- 正骨專家簽合同協議
- 商務禮儀培訓合同協議
- 微電影廣告制作合同協議
- 2025年請教下亞馬遜銷售培訓生的待遇合同及職業發展前景
- 2025授權合同范本:國際專利許可協議
- 2023年江蘇省環保集團有限公司長期招聘筆試參考題庫附帶答案詳解
- GB/T 45369-2025吸收性衛生用紙制品及原材料消臭效果評價方法
- 第一章+動量守恒定律+章末復習高二上學期物理人教版(2019)選擇性必修第一冊
- 信創產業面試題及答案
- 小學教育學(第5版)課件 第5章 小學教育目標
- 警衛安檢任務流程
- 展覽會議展前展中展后服務方案(技術方案)
- 高中家長會 高一下學期期中考試家長會課件
- 慢性病護理的畢業論文范文
- 線雕提升專業知識
- 2025年部編版新教材語文一年級下冊期末測試題及答案(一)
評論
0/150
提交評論