密碼鎖資料.rar
(2.05 MB, 下載次數(shù): 688)
課題設(shè)計的目的以及主要內(nèi)容
社會在不斷發(fā)展、物質(zhì)生活水平在不斷的提高,人們對自己的生活水平也提出了更高的要求,尤其是在安全隱私方面。因此洗安全易用的密碼鎖又顯得極其重要,而且它已經(jīng)成為人們?nèi)粘I畹闹匾M成部分。
本系統(tǒng)設(shè)計了一款性價比較高的基于LCD1602和單片機(jī)為控制核心的電子密碼鎖系統(tǒng)。
本課題設(shè)計功能主要包括如下幾個方面:
1. 按下“存包”按鍵生成隨機(jī)的四位數(shù)密碼;
2. 按下“取包”按鍵后,進(jìn)行密碼輸入并自動校驗;
3. 密碼校驗時對錯與否,通過不同的LED指示燈來指示;
4. LCD實時顯示相關(guān)信息;
5. 用protues仿真軟件實現(xiàn)上述功能。
二、系統(tǒng)硬件設(shè)計
為了達(dá)到系統(tǒng)要求,硬件應(yīng)該包括如下部分:
單片機(jī)最小系統(tǒng),最小系統(tǒng)主要包括時鐘電路和復(fù)位電路;
LCD電路,為了能直觀的看到生成的密碼,以及用戶輸入的密碼,就需要一個顯示設(shè)備,而在單片機(jī)系統(tǒng)中,比較常見的顯示設(shè)備就是LED和LCD,相比較于LED來說,LCD顯示效果更加美觀,更加真實;
按鍵電路,為了做到密碼的提取以及校驗,就需要有人機(jī)交互的操作,本設(shè)計采用了機(jī)械按鍵充當(dāng)此功能。
LED電路,本設(shè)計有紅綠兩個LED,當(dāng)密碼校驗正確時,綠燈亮;相反當(dāng)密碼校驗錯誤時,紅燈亮。
繼電器電路,為了模擬鎖的開和關(guān),用到了繼電器的開關(guān)來模擬。
系統(tǒng)整體框圖如圖2-1所示
本課題設(shè)計的電熱洗腳盆溫控系統(tǒng)主控制芯片選型為STC89C52單片機(jī),其特點(diǎn)如下:
1.STC89C52單片機(jī)簡介目前,不管是在工業(yè),農(nóng)業(yè)還是消費(fèi)電子領(lǐng)域,51系列單片機(jī)的身影隨處可見,例如,我們可以利用單片機(jī)來檢測溫濕度,來檢測空氣質(zhì)量,我們?nèi)粘J褂玫碾娮訒r鐘等等都能很方便的使用51單片機(jī)來實現(xiàn)。STC89C52單片機(jī)是深圳宏晶科技有限公司生產(chǎn)的一種單片機(jī),它是在一小塊很小的集成電路上集成了一個微型計算機(jī)。每一個單片機(jī)的組成都離不開如下幾種組成成分:
CPU:51系列單片機(jī)內(nèi)部集成的CPU都是8位的;
IO口;數(shù)據(jù)輸入輸出的并行口,51單片機(jī)有32個IO口,分別是P0,P1,P2,P3,每種有8條數(shù)據(jù)線;
ROM:片內(nèi)程序存儲器,它主要用來存儲程序的,一般大小為4K;
RAM:片內(nèi)數(shù)據(jù)存儲器,它主要用來存儲臨時數(shù)據(jù),一般大小為512K;
中斷源;它主要用來引發(fā)中斷的,有5個中斷源;
定時器:它主要用來計數(shù)定時用,51單片機(jī)有2個,分別是定時器0和定時器1;
2.STC89C52單片機(jī)時序任何一個單片機(jī)的運(yùn)行都離不開時鐘,時鐘就好比是人的心臟,只有心臟起搏,系統(tǒng)才能運(yùn)轉(zhuǎn),那么單片機(jī)的時鐘信號是由晶振產(chǎn)生的,而晶振又分為外部晶振和內(nèi)部晶振,一般來說,采用外部晶振的穩(wěn)定性要高很多,有了晶振,那個系統(tǒng)的各個部分就在這個晶振所產(chǎn)生的時鐘下有條不紊的按自己的節(jié)拍工作了。
51單片機(jī)的時序可以分成如下幾個名詞:節(jié)拍,震蕩周期,機(jī)器周期,他們的關(guān)系為,一個機(jī)器周期分為12個震蕩周期,而一個震蕩周期又分成6個節(jié)拍。
一個CPU的運(yùn)算分為算術(shù)運(yùn)算和邏輯運(yùn)算,以及運(yùn)算完成后數(shù)據(jù)的傳輸,比如從寄存器到寄存器的傳輸。那么大部分情況下,運(yùn)算操作發(fā)送在P1器件,而傳輸操作發(fā)生在P2期間。并且對于不同類型的指令,其時序也是不一樣的,大致分為如下:
對于單周期指令,當(dāng)指令操作碼讀人指令寄存器時,使從S1P2開始執(zhí)行指令。如果是雙字節(jié)指令,則在同一機(jī)器周期的s4讀入第二字節(jié)。
3.STC89C52單片機(jī)引腳介紹STC89C52單片機(jī)總共有40個引腳,其中有32個IO口,分別是P0(8個),P1(8個),P2(8個)和P3(8個),還有8個專用引腳,現(xiàn)在將他們分成四個大部分分別介紹如下:
(1)電源引腳Vcc和Vss
Vcc(40腳):接+5V電源正端;
Vss(20腳):接+5V電源正端。
XTAL1是單片機(jī)的第19腳,XTAL2是單片機(jī)的第18腳,這兩個引腳就是用來接晶體振蕩器的,當(dāng)我們不用外部晶體振蕩器,只是使用內(nèi)部振蕩器的話,這兩個管腳就懸空;當(dāng)我們接外部晶體振蕩器時,它又有兩種接法,最常用的接法就是這兩個腳分別接上晶體振蕩器的兩個腳(沒有極性之分),然后分別并聯(lián)一個電容到地(電容的大小根據(jù)晶振大小來定);另外一種接法就是,XTAL1接晶體振蕩器的一個引腳,晶振的另外一個接地,而XTAL2就懸空或接地。
單片機(jī)總共有四種狀態(tài)的控制信號引腳,它們分別是 RST,EA,PSEN以及ALE。
(a).RST/VPD:該引腳是單片機(jī)的第九腳,從名稱就可以看出來它具有兩個功能,第一個就是復(fù)位功能(RST即為RESET的意思,復(fù)位),當(dāng)單片機(jī)上電后,晶體振蕩器開始工作之時,如果該引腳是出現(xiàn)連續(xù)兩個震蕩周期的高電平,就能正常的復(fù)位,也就是單片機(jī)進(jìn)入工作狀態(tài),否則,復(fù)位不成功,單片機(jī)可能無法工作;第二個功能就是掉電保護(hù)功能,它可以接上備用電源以防止VCC發(fā)生故障。
(b).ALE/ P :該引腳是單片機(jī)的第三十腳,當(dāng)內(nèi)部程序空間不夠用,需要外接外部程序存儲器時,該引腳便派上了用場,不接時該引腳恒定的接高電平,接外部的時候,該引腳接低電平。
(c).PSEN:該引腳是單片機(jī)的第二十九腳,當(dāng)接了外部程序存儲器的時候,該引腳就是用來決定是否開始讀取外部存儲器的,當(dāng)該引腳為低電平時,單片機(jī)就可以讀取外部存儲器,相反,當(dāng)它是高電平的時候,就禁止讀取。同時,此引腳對于外部數(shù)據(jù)存儲器的讀寫不起作用。
(d).EA/Vpp:該引腳是單片機(jī)的第三十一腳,當(dāng)內(nèi)部程序空間不夠用,需要外接外部程序存儲器時,該引腳便派上了用場,不接時該引腳恒定的接高電平,接外部的時候,該引腳接低電平。
(4)IO口P0、P1、P2及P3
(a).P0口:該組引腳有8跟數(shù)據(jù)線,分別是P0.0到P0.7,位于單片機(jī)的第三十九腳到第二十二腳。該引腳主要有三個功能,正常情況下,他作為普通的IO口,數(shù)據(jù)的輸入跟輸出;當(dāng)接了外部存儲器的時候,它作為地址總線的高8位;同時,如果單片機(jī)內(nèi)部有EEPROM,對該EEPROM讀寫操作的時候,也要從P0口輸入或輸出指令。
(b).P1口:該組引腳有8跟數(shù)據(jù)線,分別是P1.0到P1.7,位于單片機(jī)的第一腳到第八腳。該引腳主要有兩個功能,正常情況下,他作為普通的IO口,數(shù)據(jù)的輸入跟輸出;另外,對于本設(shè)計使用的STC89C52單片機(jī)來說,P1.0和P1.1還有另外的功能:作為兩個計數(shù)脈沖輸入端,可以統(tǒng)計脈沖的個數(shù),此舉很多應(yīng)用在測試頻率、速度的場合。
(c).P2口:該組引腳有8跟數(shù)據(jù)線,分別是P2.0到P2.7,位于單片機(jī)的第二十一腳到第二十八腳。該引腳主要有兩個功能,正常情況下,他作為普通的IO口,數(shù)據(jù)的輸入跟輸出;當(dāng)接有外部程序存儲器時,P2口用于地址總線的高8位。
(d).P3口(10腳~17腳):該組引腳有8跟數(shù)據(jù)線,分別是P2.0到P2.7,位于單片機(jī)的第十腳到第十七腳。該引腳主要有兩個功能,正常情況下,他作為普通的IO口,數(shù)據(jù)的輸入跟輸出;同時它的每個口都有第二功能。P3口的第2功能見下表
表1 單片機(jī)P3.0管腳含義
引腳 | 第2功能 |
P3.0 | RXD(串行口輸入端0) |
P3.1 | TXD(串行口輸出端) |
P3.2 | INT0(部中斷0請求輸入端,低電平有效) |
P3.3 | INT1(中斷1請求輸入端,低電平有效) |
P3.4 | T0(時器/計數(shù)器0計數(shù)脈沖端) |
P3.5 | T1(時器/計數(shù)器1數(shù)脈沖端) |
P3.6 | WR(部數(shù)據(jù)存儲器寫選通信號輸出端,低電平有效) |
P3.7 | RD(部數(shù)據(jù)存儲器讀選通信號輸出端,低電平有效) |
綜上所述,STC89C52單片機(jī)的引腳作用可歸納為以下兩點(diǎn):
1).可以用少數(shù)幾根數(shù)據(jù)線實現(xiàn)多樣化的功能;
2).IO口除了作為通用的數(shù)據(jù)輸入輸出外,還有地址總線和數(shù)據(jù)總線分時復(fù)用的功能。
任何一個處理器,都有與之對應(yīng)的最小系統(tǒng),該系統(tǒng)能保證處理器啟動起來,并能夠連續(xù)不斷的正常運(yùn)轉(zhuǎn)下去,除此之外并沒有其他多余的功能,所以成為最小系統(tǒng),對51單片機(jī)來說,最小系統(tǒng)一般包括:單片機(jī)、復(fù)位電路和晶振電路。最小系統(tǒng)如圖2-2所示。
電阻和電容組成的電路經(jīng)常用在單片機(jī)的復(fù)位電路中,它的工作過程如下,當(dāng)系統(tǒng)一上電時,RST引腳瞬間將會出現(xiàn)高電平,同時,電阻和電容之積(RC)決定了高電平的持續(xù)時間,51單片機(jī)對于此時間的要求是2個機(jī)器周期以上。所以,適當(dāng)組合RC的取值就可以保證可靠的復(fù)位,一般來說,C 取10UF,R取10K,也可以去其他參數(shù)值,原則就是要讓RC組合可以在RST腳產(chǎn)生不少于2個機(jī)器周期的高電平,保證可靠的復(fù)位。
晶振電路中的晶振采用典型的11.0592M ,因為這個頻率的晶振可以產(chǎn)生更準(zhǔn)確的波特率,用于RS232通訊的場合,它經(jīng)過內(nèi)部12分頻后,產(chǎn)生11.0592/12M的機(jī)器頻率。同時,為了保證晶振能夠穩(wěn)定可靠的起振,一般還需要在晶振兩端分別并接兩個電容,電容取值一般在10~47pf之間
另外注意,單片機(jī)的第31腳是用來決定上電時是從內(nèi)部ROM讀取數(shù)據(jù)還是從外部ROM讀取數(shù)據(jù),當(dāng)為高電平時,表示從內(nèi)部ROM讀取;當(dāng)為低電平時,表示從外部ROM,本設(shè)計中,考慮到實際程序的大小不是特別大,無需外界ROM,所以就將該引腳接了高電平。
2.4 LCD選型
隨著人機(jī)界面的越來越人性化,液晶屏應(yīng)運(yùn)而生,十九世紀(jì)八十年代,奧地利科學(xué)家賴倪次在一種植物身上提取出了看起來很奇怪的物質(zhì),它既不是液態(tài)的,也不是固態(tài)的,徘徊于兩者之間,但是他即具有固態(tài)的特征,也有液態(tài)的特征,所以,當(dāng)時的人們就把它叫做成液態(tài)的晶體,這就是當(dāng)今液晶的前身。
市面上的LCD顯示屏可謂是林林總總,大型的有拼接墻,數(shù)十寸的等等,從才子上來分,有TFT、LED等等,但對于單片機(jī)系統(tǒng)來說,常用的LCD有兩種:分別是1602和12864型號。
12864的意思就是該LCD的點(diǎn)陣是128行*64列,總共有8192個像素點(diǎn), 控制器AIP31020。可顯示漢字及圖形, 內(nèi)置8192 個中文漢字 (16X16 點(diǎn)陣)、 128 個字符 (8X16點(diǎn)陣)及64X256點(diǎn)陣顯示RAM(GDRAM)。可與CPU 直接接口,提供兩種界面來連接微處理機(jī):8-位并行及串行兩種連接方式。具有多種功能:光標(biāo)顯示、畫面移位、睡眠模式等。其硬件結(jié)構(gòu)如圖2-3所示。
圖 2-3 12864內(nèi)部結(jié)構(gòu)
而1602的意思就是該LCD的點(diǎn)陣是16行*2列,總共有32個像素點(diǎn),1602LCD分為帶背光和不帶背光兩種,帶背光的用起來就比較方便,但缺點(diǎn)就是比較厚,而不帶背光的需要自己加一個背光片,不方便使用,但他比較輕薄。
編號 | 符號 | 引腳說明 | 編號 | 符號 | 引腳說明 |
1 | VSS | 電源地 | 9 | D2 | 數(shù)據(jù) |
2 | VDD | 電源正極 | 10 | D3 | 數(shù)據(jù) |
3 | VL | 顯示偏壓 | 11 | D4 | 數(shù)據(jù) |
4 | RS | 數(shù)據(jù)/命令選擇 | 12 | D5 | 數(shù)據(jù) |
5 | R/W | 讀寫/選擇 | 13 | D6 | 數(shù)據(jù) |
6 | E | 使能 | 14 | D7 | 數(shù)據(jù) |
7 | D0 | 數(shù)據(jù) | 15 | BLA | 背光源正極 |
8 | D1 | 數(shù)據(jù) | 16 | BLK | 背光源負(fù)極 |
第3腳:VL為液晶顯示器對比度調(diào)整端,,當(dāng)該腳接5V時,由于電壓差幾乎為0,所以對比度最弱,幾乎看不見顯示內(nèi)容,該腳接地時,由于電壓差幾乎為最大,對比度最高,有可能會產(chǎn)生“鬼影”,因此為了是顯示有個舒適的感覺,使用時可以通過一個10K的電位器調(diào)整對比度,根據(jù)不同的外界光線靈活的調(diào)整亮度。
RS | RW | 操作 |
0 | 0 | 寫入指令或者顯示地址 |
0 | 1 | 讀忙信號 |
1 | 0 | 寫入數(shù)據(jù) |
1 | 1 | 讀取數(shù)據(jù) |
LCD的8個數(shù)據(jù)口跟單片機(jī)的P1的8個口相連,控制信號RS接P30,RW接P31以及E接P32。
2.6 LED提示電路本設(shè)計 用到了一個紅色LED和一個綠色LED來指示輸入密碼的正確與否。每個LED的正極通過一個限流電阻接到電源正極,然后負(fù)極分別接到P33和P34,當(dāng)IO口為高電平時,燈熄滅,當(dāng)LED為低電平時,燈亮起來。圖2-5是其連線圖。
圖2-5 LED提示燈電路
2.7 繼電器電路
本設(shè)計用繼電器來模擬鎖的動作,當(dāng)繼電器吸合表示開始鎖關(guān)閉,當(dāng)繼電器斷開表示斷開,繼電器的控制引腳接在單片機(jī)的P37口,高電平讓其吸合,低電平讓其斷開,圖2-6是其連接圖。
圖2-6 繼電器跟單片機(jī)連接圖
2.8 按鍵電路
為了滿足輸入功能的需要,本設(shè)計采用了14個按鍵,如果全部接成獨(dú)立式按鍵,那么就需要14個IO口,資源占用過多,所以這里采用了矩陣式4*4規(guī)格的鍵盤,多余兩個按鍵做備用。它總共占用8個IO口,分別接到了P0口上,由于P0口的特殊結(jié)構(gòu),必須接一個上拉電阻,才能輸出高電平。
鍵盤電路如圖2-7所示。
系統(tǒng)的軟件主要是采用單片機(jī)特定的C語言--C51,對單片機(jī)進(jìn)行編程實現(xiàn)所有功能。主程序?qū)δK進(jìn)行初始化,而后調(diào)用按鍵掃描程序、顯示子程序、LED子程序以繼電器模塊程序。圖3-1是其主程序流程圖。
圖3-1 主流程圖
主程序里面首先對單片機(jī)的硬件資源進(jìn)行初始化,硬件資源的初始化包括:
基本的資源初始化完畢后,程序然后進(jìn)入了一個while(1)死循環(huán),這樣保證了程序不斷的運(yùn)行,在該循環(huán)中,多個任務(wù)逐一按順序的執(zhí)行。
從時序圖可以看出,首先判斷RS和RW,從硬件那一章我們得知,RS代表了是指令的操作(高電平)還是數(shù)據(jù)的操作(低電平),而RW代表了是往LCD里面寫數(shù)據(jù)(高電平)還是從LCD里面讀出數(shù)據(jù)(低電平),所以圖3-5就表示讀時序,而圖3-6就表示寫時序。
然后再通過控制器把使能端拉低(通過上面一章,我們知道此管腳為高表示禁用該芯片,此管腳為低表示使能該芯片),拉低后需要延時一段時間,至于要不要 延時,延時的時間多長,對于51單片機(jī)來說,其實關(guān)系都不大,不影響其使用。
以上兩步準(zhǔn)備操作完成后,就可以開始讀和寫了,也就是從這時候開始數(shù)據(jù)或地址信號就被送上了數(shù)據(jù)總線,數(shù)據(jù)送完之后,然后又將使能端拉高(禁止芯片),當(dāng)然,這中間需要一個建立時間的延遲,改時間最短為40納秒。然后再將使能端拉低(啟用),就可以將剛才數(shù)據(jù)總線上的數(shù)據(jù)送入LCD了。
根據(jù)上面描述的時序,可以得出如圖3-4所示的流程圖
16個按鍵接在了P0的8個口,其中P00-P03為四行,P04-P07為四列,本設(shè)計采用的是行掃描法,也就是說每次給四行當(dāng)中的一行輸出低電平(其他三行為高電平),然后再讀取四列的值,如果發(fā)現(xiàn)四列全部為高電平,那么就表示沒有按鍵按下,如果有某一列為低電平,就表示有按鍵按下了。
其工作流程圖如3-5所示
圖3-5 按鍵流程圖
3.4 LED指示燈流程圖在密碼校驗過程中,如果密碼正確,就亮起綠燈,如果密碼校驗錯誤,就讓紅燈亮起。流程圖如3-6所示
圖3-6 LED指示燈流程圖
參考文獻(xiàn)
[1] 李廣弟,朱月秀,王秀山.《單片機(jī)基礎(chǔ)》北京航空航天大學(xué)出版社,2001(07).
[2] 蔡美琴,張為民等.《MCS-51系列單片機(jī)系統(tǒng)及其應(yīng)用》高等教育出版社,2004(06).
[3] 張毅剛,等.MCS-51單片機(jī)應(yīng)用設(shè)計[M].哈爾濱工業(yè)大學(xué)出版社,1997.
[4] 劉瑞星,胡健等.《Protel DXP 實用教程》機(jī)械工業(yè)出版社,2003(04).
[5] 于海生. 《計算機(jī)控制技術(shù)》 機(jī)械工業(yè)出版社 2007(05).
[6] 譚浩強(qiáng). 《C程序設(shè)計》 清華大學(xué)出版社.
[7] 康華光. 《電子技術(shù)基礎(chǔ) 模擬部分》 高等教育出版社 1998(08).
[8] 余錫存. 《單片機(jī)原理與接口技術(shù)》 西安電子科技大學(xué)出版社,2003.
致謝
本論文是在我的指導(dǎo)老師密切關(guān)心和悉心指導(dǎo)下完成的。老師在課題開題期間和論文寫作的過程中給予了我許多指導(dǎo),導(dǎo)師總是以認(rèn)真負(fù)責(zé)、一絲不茍的工作態(tài)度閱讀并修改文章中不足的地方,他優(yōu)良的作風(fēng)和嚴(yán)謹(jǐn)治學(xué)的態(tài)度深深影響著我,至此,向恩師致以最真摯的感謝和最崇高的敬意!
同時我要感謝我的同學(xué),特別是我的室友們,正是他們在這幾年里陪我一起成長,一起學(xué)習(xí),才讓我有了今天的成績。他們在平時的學(xué)習(xí)和生活中他們給予了我無私的關(guān)懷和幫助,在此表示我最誠摯的謝意。
| 歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |