2.硬件電路設(shè)計(jì)
為了達(dá)到系統(tǒng)要求,硬件應(yīng)該包括如下部分:
單片機(jī)最小系統(tǒng),最小系統(tǒng)主要包括時(shí)鐘電路和復(fù)位電路;
LCD電路,為了能直觀的看到生成的密碼,以及用戶輸入的密碼,就需要一個(gè)顯示設(shè)備,而在單片機(jī)系統(tǒng)中,比較常見的顯示設(shè)備就是LED和LCD,相比較于LED來說,LCD顯示效果更加美觀,更加真實(shí);
按鍵電路,為了做到密碼的提取以及校驗(yàn),就需要有人機(jī)交互的操作,本設(shè)計(jì)采用了機(jī)械按鍵充當(dāng)此功能。
LED電路,本設(shè)計(jì)有紅綠兩個(gè)LED,當(dāng)密碼校驗(yàn)正確時(shí),綠燈亮;相反當(dāng)密碼校驗(yàn)錯(cuò)誤時(shí),紅燈亮。
繼電器電路,為了模擬鎖的開和關(guān),用到了繼電器的開關(guān)來模擬。
2.1 單片機(jī)最小系統(tǒng)
本次選用的主控芯片為單片機(jī)STC89C52。其引腳圖如圖2.1-1所示。
圖2.1-1 STC89C52引腳圖
目前,不管是在工業(yè),農(nóng)業(yè)還是消費(fèi)電子領(lǐng)域,51系列單片機(jī)的身影隨處可見,例如,我們可以利用單片機(jī)來檢測溫濕度,來檢測空氣質(zhì)量,我們?nèi)粘J褂玫碾娮訒r(shí)鐘等等都能很方便的使用51單片機(jī)來實(shí)現(xiàn)。STC89C52單片機(jī)是深圳宏晶科技有限公司生產(chǎn)的一種單片機(jī),它是在一小塊很小的集成電路上集成了一個(gè)微型計(jì)算機(jī)。每一個(gè)單片機(jī)的組成都離不開如下幾種組成成分:
CPU:51系列單片機(jī)內(nèi)部集成的CPU都是8位的;
IO口;數(shù)據(jù)輸入輸出的并行口,51單片機(jī)有32個(gè)IO口,分別是P0,P1,P2,P3,每種有8條數(shù)據(jù)線;
ROM:片內(nèi)程序存儲器,它主要用來存儲程序的,一般大小為4K;
RAM:片內(nèi)數(shù)據(jù)存儲器,它主要用來存儲臨時(shí)數(shù)據(jù),一般大小為512K;
中斷源;它主要用來引發(fā)中斷的,有5個(gè)中斷源;
定時(shí)器:它主要用來計(jì)數(shù)定時(shí)用,51單片機(jī)有2個(gè),分別是定時(shí)器0和定時(shí)器1;
圖2.1-2 STC89C52最小系統(tǒng)
2.2 液晶顯示電路
隨著人機(jī)界面的越來越人性化,液晶屏應(yīng)運(yùn)而生,十九世紀(jì)八十年代,奧地利科學(xué)家賴倪次在一種植物身上提取出了看起來很奇怪的物質(zhì),它既不是液態(tài)的,也不是固態(tài)的,徘徊于兩者之間,但是他即具有固態(tài)的特征,也有液態(tài)的特征,所以,當(dāng)時(shí)的人們就把它叫做成液態(tài)的晶體,這就是當(dāng)今液晶的前身。
市面上的LCD顯示屏可謂是林林總總,大型的有拼接墻,數(shù)十寸的等等,從才子上來分,有TFT、LED等等,但對于單片機(jī)系統(tǒng)來說,常用的LCD有兩種:分別是1602和12864型號。
12864的意思就是該LCD的點(diǎn)陣是128行*64列,總共有8192個(gè)像素點(diǎn), 控制器AIP31020?娠@示漢字及圖形, 內(nèi)置8192 個(gè)中文漢字 (16X16 點(diǎn)陣)、 128 個(gè)字符 (8X16點(diǎn)陣)及64X256點(diǎn)陣顯示RAM(GDRAM)?膳cCPU 直接接口,提供兩種界面來連接微處理機(jī):8-位并行及串行兩種連接方式。具有多種功能:光標(biāo)顯示、畫面移位、睡眠模式等。而1602的意思就是該LCD的點(diǎn)陣是16行*2列,總共有32個(gè)像素點(diǎn),1602LCD分為帶背光和不帶背光兩種,帶背光的用起來就比較方便,但缺點(diǎn)就是比較厚,而不帶背光的需要自己加一個(gè)背光片,不方便使用,但他比較輕薄。
本次設(shè)計(jì)采用了LCD1602液晶顯示器,本次設(shè)計(jì)采用了LCD1602液晶顯示器。
圖2.2-1 液晶顯示電路
2.3 矩陣按鍵模塊
本實(shí)驗(yàn)選用矩陣按鍵來輸入密碼值。矩陣按鍵電路如下圖2.3-1所示:
圖2.3-1 矩陣按鍵電路
為了滿足輸入功能的需要,本設(shè)計(jì)采用了14個(gè)按鍵,如果全部接成獨(dú)立式按鍵,那么就需要14個(gè)IO口,資源占用過多,所以這里采用了矩陣式4*4規(guī)格的鍵盤,多余兩個(gè)按鍵做備用。它總共占用8個(gè)IO口,分別接到了P0口上,由于P0口的特殊結(jié)構(gòu),必須接一個(gè)上拉電阻,才能輸出高電平。
其按鍵功能如下所示:
0-9的數(shù)字按鍵用來輸入密碼;
“存包”按鍵 -- 按下此鍵生成四位隨機(jī)數(shù)密碼
“取包”按鍵 -- 按下此按鍵,提示輸入密碼
“清空”按鍵 -- 在輸入密碼過程中,按下此鍵清掉剛才輸入的數(shù)字
“確認(rèn)”按鍵 -- 密碼輸入完畢后,按下此鍵進(jìn)行密碼的校驗(yàn)。
2.4 i2C 24C02模塊
串行E2PROM是基于I2C-BUS 的存儲器件,遵循二線制協(xié)議,由于其具有接口方便,體積小,數(shù)據(jù)掉電不丟失等特點(diǎn),在儀器儀表及工業(yè)自動化控制中得到大量的應(yīng)用。
24C02與單片機(jī)的接口非常簡單,如下圖2.4-1所示
圖2.4-1 24C02電路
E0,E1,E2為器件地址線,WP為寫保護(hù)引腳,SCL,SDA為二線串行接口,符合I2C總線協(xié)議。在一般單片機(jī)系統(tǒng)中,24C02 數(shù)據(jù)受到干擾的情況是很少的。
本實(shí)驗(yàn)采用AT24C02。AT24WC02是一個(gè)2K位串行CMOS,EEPROM內(nèi)部含有256個(gè)8位字節(jié)CATALYST公司的先進(jìn)CMOS技術(shù)實(shí)質(zhì)上減少了器件的功耗。AT24WC02有一個(gè)16字節(jié)頁寫緩沖器,該器件通過I2C總線接口進(jìn)行操作有一個(gè)專門的寫保護(hù)功能。
其引腳說明如表2.4-1:
表2.4-1 AT24C02引腳說明
2.5.蜂鳴器電路
在單片機(jī)應(yīng)用的設(shè)計(jì)上,很多方案都會用到蜂鳴器,大部分都是使用蜂鳴器來做提示或報(bào)警,比如按鍵按下、開始工作、工作結(jié)束或是故障等等。
蜂鳴器電路如圖2.5-1所示。
圖2.5-1 蜂鳴器電路
本次設(shè)計(jì)使用了ULN2003D來驅(qū)動蜂鳴器。其電路如圖2.5-2所示
圖2.5-2 蜂鳴器驅(qū)動電路
本設(shè)計(jì) 用到了一個(gè)紅色LED和一個(gè)綠色LED來指示輸入密碼的正確與否。每個(gè)LED的正極通過一個(gè)限流電阻接到電源正極,然后負(fù)極分別接到P33和P34,當(dāng)IO口為高電平時(shí),燈熄滅,當(dāng)LED為低電平時(shí),燈亮起來。圖2.5-3是其連線圖。
圖2.5-3 LED提示燈電路
2.6 繼電器電路本設(shè)計(jì)用繼電器來模擬鎖的動作,當(dāng)繼電器吸合表示開始鎖關(guān)閉,當(dāng)繼電器斷開表示斷開,繼電器的控制引腳接在單片機(jī)的P37口,高電平讓其吸合,低電平讓其斷開,圖2-6是其連接圖。
主程序里面首先對單片機(jī)的硬件資源進(jìn)行初始化,硬件資源的初始化包括:
基本的資源初始化完畢后,程序然后進(jìn)入了一個(gè)while(1)死循環(huán),這樣保證了程序不斷的運(yùn)行,在該循環(huán)中,多個(gè)任務(wù)逐一按順序的執(zhí)行。
3.2 LCD顯示子程序
LCD1602的讀時(shí)序如圖3-2-1所示。
圖3-2-1 LCD1602讀時(shí)序
LCD1602的寫時(shí)序如圖3-2-2 所示。
圖3-2-3 LCD2602寫時(shí)序
從時(shí)序圖可以看出,首先判斷RS和RW,從硬件那一章我們得知,RS代表了是指令的操作(高電平)還是數(shù)據(jù)的操作(低電平),而RW代表了是往LCD里面寫數(shù)據(jù)(高電平)還是從LCD里面讀出數(shù)據(jù)(低電平)。
然后再通過控制器把使能端拉低(通過上面一章,我們知道此管腳為高表示禁用該芯片,此管腳為低表示使能該芯片),拉低后需要延時(shí)一段時(shí)間,至于要不要 延時(shí),延時(shí)的時(shí)間多長,對于51單片機(jī)來說,其實(shí)關(guān)系都不大,不影響其使用。
以上兩步準(zhǔn)備操作完成后,就可以開始讀和寫了,也就是從這時(shí)候開始數(shù)據(jù)或地址信號就被送上了數(shù)據(jù)總線,數(shù)據(jù)送完之后,然后又將使能端拉高(禁止芯片),當(dāng)然,這中間需要一個(gè)建立時(shí)間的延遲,改時(shí)間最短為40納秒。然后再將使能端拉低(啟用),就可以將剛才數(shù)據(jù)總線上的數(shù)據(jù)送入LCD了。
1602液晶顯示子程序主要是對內(nèi)部控制指令進(jìn)行指定如液晶初始化,顯示空白,讀,寫,判斷液晶是否忙及指定字符的位置等函數(shù)構(gòu)成。液晶顯示子程序流程圖如圖所示。首先進(jìn)行液晶初始化,再寫地址命令到LCD,然后放發(fā)送字符串,最終液晶顯示。
根據(jù)上面描述的時(shí)序,可以得出如圖3-2-4所示的流程圖
3.3 矩陣按鍵子程序
16個(gè)按鍵接在了P0的8個(gè)口,其中P00-P03為四行,P04-P07為四列,本設(shè)計(jì)采用的是行掃描法,也就是說每次給四行當(dāng)中的一行輸出低電平(其他三行為高電平),然后再讀取四列的值,如果發(fā)現(xiàn)四列全部為高電平,那么就表示沒有按鍵按下,如果有某一列為低電平,就表示有按鍵按下了。
3.4 密碼比對子程序
密碼比對過程主要是將按鍵輸入的密碼與正確密碼進(jìn)行比較的過程。該過程要求把密碼放入24C02芯片中存儲,每按下一個(gè)按鍵則與芯片中相應(yīng)位進(jìn)行比較。流程如圖3.4-1所示
4.系統(tǒng)調(diào)試
整個(gè)系統(tǒng)設(shè)計(jì)完成后,要進(jìn)行運(yùn)行調(diào)試,排除軟件和硬件的故障,同時(shí)驗(yàn)證系統(tǒng)的可靠性及穩(wěn)定性,使系統(tǒng)符合設(shè)計(jì)要求。本系統(tǒng)的調(diào)試主要分兩個(gè)步驟:單片機(jī)系統(tǒng)調(diào)試(硬件調(diào)試和軟件調(diào)試)及整個(gè)控制系統(tǒng)試運(yùn)行調(diào)試。
單片機(jī)系統(tǒng)的調(diào)試應(yīng)包括硬件及軟件兩部分,主要是通過調(diào)試發(fā)現(xiàn)硬件及軟件中存在的問題,查看其運(yùn)行結(jié)果是否符合設(shè)計(jì)要求。
系統(tǒng)硬件和軟件的研制可以相互獨(dú)立的平行進(jìn)行,軟件調(diào)試可以在硬件完成之前,硬件也可以在無完整應(yīng)用軟件的情況下進(jìn)行調(diào)試,但它們需要借助另外的工具提供調(diào)試環(huán)境。硬件和軟件分調(diào)完成之后,還要再進(jìn)行軟件和硬件的聯(lián)調(diào),在調(diào)試中找出問題,判斷故障源,修改軟硬件。
4.1 硬件調(diào)試
靜態(tài)調(diào)試主要是排除明顯的硬件故障。在電路搭建好后,對其進(jìn)行仔細(xì)檢查,查看端口是否正確連接,連接是否可靠。同時(shí)還應(yīng)當(dāng)用萬用表檢查電路,看應(yīng)當(dāng)開路的地方是否開路,應(yīng)當(dāng)短路的地方是否短路,電源地線連接是否可靠。在焊接后,查看焊接是否牢固,有無虛焊或短路等。在將芯片、傳感器等元件插到電路板上時(shí),要保證各處電源極性、電壓正確,以防止因電源極性接反或電壓過高損壞芯片或傳感器。此外,插入芯片必須在斷電的情況下進(jìn)行,特別注意芯片的方向不要插反。
4.2 軟件調(diào)試
系統(tǒng)軟件程序在編制好以后,可通過匯編軟件對源程序進(jìn)行匯編,變?yōu)榭蓤?zhí)行的目標(biāo)代碼,在匯編過程中出現(xiàn)的錯(cuò)誤,要及時(shí)糾正。在軟件調(diào)試時(shí)采用軟件模擬開發(fā)系統(tǒng)對程序進(jìn)行調(diào)試,這種模擬開發(fā)系統(tǒng)是在計(jì)算機(jī)上利用模擬軟件實(shí)現(xiàn)對單片機(jī)的硬件模擬、指令模擬及運(yùn)行狀態(tài)模擬,從而完成應(yīng)用軟件開發(fā)的全過程。調(diào)試過程中的運(yùn)行狀態(tài)、各寄存器狀態(tài)、端口狀態(tài)等都可以在指定的窗口區(qū)域顯示出來,通過這些顯示結(jié)果隨時(shí)跟蹤程序運(yùn)行狀態(tài),以確定程序運(yùn)行無誤。
4.3動態(tài)調(diào)試
控制系統(tǒng)的軟件和硬件是密切相關(guān)的,軟件模擬開發(fā)系統(tǒng)不能對硬件部分進(jìn)行診斷,同時(shí)也不能實(shí)時(shí)在線仿真,所以用戶程序還需跟硬件連接起來進(jìn)行聯(lián)調(diào),同時(shí)對軟件和硬件進(jìn)行檢查和診斷。整個(gè)單片機(jī)系統(tǒng)進(jìn)行在線調(diào)試時(shí),需借助仿真開發(fā)工具來對用戶軟件及硬件電路進(jìn)行診斷、調(diào)試。在應(yīng)用系統(tǒng)各電路板調(diào)試成功后,將用戶程序加載到在線仿真器上,這時(shí)就能單步、多步或連續(xù)地執(zhí)行目標(biāo)程序,同時(shí)也可以根據(jù)需要分段設(shè)置斷點(diǎn)執(zhí)行用戶程序。系統(tǒng)中的硬件故障(如各個(gè)部件內(nèi)部存在的故障和部件之間連接的邏輯錯(cuò)誤)主要是靠聯(lián)機(jī)仿真來排除的。對于與硬件無聯(lián)系的用戶程序,例如定時(shí)標(biāo)志等,雖然已經(jīng)沒有語法錯(cuò)誤,但可能存在邏輯錯(cuò)誤,這時(shí),就借助于動態(tài)在線調(diào)試手段發(fā)現(xiàn)邏輯錯(cuò)誤,直至邏輯錯(cuò)誤糾正為止。而對于一些與硬件相關(guān)的用戶程序,如接口驅(qū)動程序等,則需要配合硬件,進(jìn)行在線調(diào)試,如果有邏輯錯(cuò)誤,也要及時(shí)糾正修改。程序調(diào)試完畢后,利用在線編程器將程序固化到單片機(jī)中,使整個(gè)系統(tǒng)運(yùn)行起來。
4.4 實(shí)驗(yàn)圖
按下取包鍵,獲取密碼,得到密碼為2392,此時(shí)繼電器為關(guān)閉狀態(tài):
調(diào)試圖a:
調(diào)試圖a
當(dāng)輸入密碼錯(cuò)誤時(shí)紅燈亮,即D1燈亮,此時(shí)繼電器為關(guān)閉狀態(tài):
調(diào)試圖b:
調(diào)試圖b
當(dāng)輸入密碼正確是綠燈亮,即D2燈亮,此時(shí)繼電器為打開狀態(tài):
結(jié)果圖:
結(jié)果圖
附錄
附錄1:電路原理圖
SterneC 發(fā)表于 2019-5-30 22:58
樓主我找到你的仿真圖了 但是運(yùn)行不出來呀 按鍵沒反應(yīng)
哆啦B夢 發(fā)表于 2021-4-29 15:41
請問,仿真的連線圖有沒有高清版本的
姬火火 發(fā)表于 2019-1-9 19:14
可惜仿真沒有Proteus7.5版本的,附件里面仿真是8.8高版本的,我沒安裝啊
哆啦B夢 發(fā)表于 2021-4-29 15:41
請問,仿真的連線圖有沒有高清版本的
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |