221232ip5ja51wc588rr8a.png (73.01 KB, 下載次數(shù): 71)
下載附件
2017-2-11 00:18 上傳
存包柜設(shè)計的完整資料下載(含源碼 仿真 ppt教程 論文等等很全):
http://www.zg4o1577.cn/bbs/dpj-77166-1.html
存包柜硬件電路講解
一、硬件概況
總個硬件分成五大部分,分別是: 最小系統(tǒng) 液晶顯示 矩陣鍵盤 繼電器電路 LED 電路
二、最小系統(tǒng)
0.png (98.11 KB, 下載次數(shù): 98)
下載附件
2017-2-10 23:46 上傳
最小系統(tǒng)分成晶振電路和復(fù)位電路,晶振電路的作用就是給單片機(jī)提供工作的
時鐘頻率,相當(dāng)于人體的心臟,沒有它就掛。 復(fù)位電路由一個電阻和一個電容構(gòu)成,學(xué)過模電又聰明的的你應(yīng)該懂得這叫阻容 復(fù)位電路,它的輸出加載在單片機(jī)的復(fù)位引腳就是給單片機(jī)一個上電的緩沖時 間,保證單片機(jī)正常工作。 但是,但是,但是(重要的事情說三遍),上述電路在仿真軟件里面是不起作用 的,也就是說你把他們統(tǒng)統(tǒng)刪掉,單片機(jī)照樣飛奔。并且,你看到那個晶振的頻 率為11.0592,其實(shí)那個也是虛的,真實(shí)的單片機(jī)晶振在這里(雙擊單片機(jī)本身)
1.003.jpg (16.19 KB, 下載次數(shù): 74)
下載附件
2017-2-11 00:01 上傳
三、液晶顯示 這里的顯示采用的是液晶顯示器 LCD1602,該顯示器有三類引腳,分別是 數(shù) 據(jù)引腳,控制引腳和電源引腳 其中的數(shù)據(jù)引腳有 8 根線,剛好傳送一個字節(jié),該數(shù)據(jù)線是地址和數(shù)據(jù)共用
0.png (58.42 KB, 下載次數(shù): 73)
下載附件
2017-2-10 23:46 上傳
的。 控制引腳有三根:
RS -- 這個是用來選擇發(fā)送的是地址還是數(shù)據(jù)的,(因?yàn)?1602 的顯示是需要 先發(fā)送地址,告訴人家我要在哪個地方顯示,然后再發(fā)送數(shù)據(jù),告訴人家我要在 這個地方顯示什么內(nèi)容),所以如果發(fā)送地址的時候,RS 就要設(shè)為 0;發(fā)送數(shù)據(jù) 時,RS 就要設(shè)為 1. RW -- 這個是用來進(jìn)行讀寫控制的,如果要往 LCD 里面寫(就是讓它顯示), RW 要設(shè)為 0 E -- 使能引腳 當(dāng)該引腳為 1 時,表示 LCD 禁止被寫入,為 0 表示允許被寫 入;所以如果我們要往里面寫數(shù)據(jù)時,就需要拉低它,寫完后,再拉高。
本設(shè)計里面,8 位數(shù)據(jù)口接到了 P1 口(P10-D0......P17-D7),RS 接 P30,RW 接 P31,E 接 P32.
四、矩陣鍵盤
由于該設(shè)計使用的按鍵較多,拍屁股一想,只能用矩陣鍵盤,節(jié)約 IO 口, 還顯得高大上。矩陣鍵盤最明顯的優(yōu)勢就是占用的 IO口少,比如 16 個按鍵,要 接獨(dú)立按鍵就需要 16 個 IO 口,但是如果接成矩陣鍵盤就只需要 8 個 IO 口。現(xiàn) 在來看一下矩陣鍵盤的工作原理。在矩陣鍵盤里面,每一個按鍵的兩端各占一個 IO 口,每一行的所有按鍵共用一個 IO 口,每一列的所有按鍵也共用一個 IO 口。
0.png (39.59 KB, 下載次數(shù): 71)
下載附件
2017-2-10 23:48 上傳
如上圖所示,A,B 各表示一個 IO 口,當(dāng) A 口輸出為低電平的同時來檢測 B 的電 平,如果讀到 B 口為高電平,則表示該按鍵沒有按下,如果讀到 B 口為低電平, 則表示該按鍵被按下。 本設(shè)計中的矩陣鍵盤如下所示
0.png (321.24 KB, 下載次數(shù): 67)
下載附件
2017-2-10 23:48 上傳
包括 0-9 總共 10 個數(shù)字按鍵,以及 1 個“存包”,1 個“取包”,1 個“清空” 和 1 個“確認(rèn)”按鍵,都接在 P0 口的 8 個引腳上。
另外,由于 P0 口的特殊結(jié)構(gòu),需要接上上拉電阻,否則,它無法輸出高電平。
五、繼電器電路 這里的繼電器用來模擬鎖的開關(guān),當(dāng)從軟件庫里面拿出來一個繼電器是,其默認(rèn)
開關(guān)電壓為 12V 的,為了兼容 51 單片機(jī)的控制,把它改成了 5V 的。
0.png (101.28 KB, 下載次數(shù): 82)
下載附件
2017-2-10 23:48 上傳
在接線上,線圈的一段固定接地,另外一段接 IO 口(P37),當(dāng) P37 為高電平時, 線圈導(dǎo)通,繼電器吸合。 六、LED電路 LED 電路就很簡單了,不過這里面特別要說明的是,LED 的限流電阻大小不能 超過 1K,否則看不到 LED 被點(diǎn)亮,這里面選取的是100 歐姆。
超市存包柜軟件程序講解
如果你想看程序,請你務(wù)必安裝 KEIL4 軟件,這樣才能看的心 安理得,切忌懶惰!!! 1、雙擊【密碼鎖.uvproj】文件
0.png (130.49 KB, 下載次數(shù): 84)
下載附件
2017-2-11 00:02 上傳
就能自然打開如下界面(前提是你安裝了 KEIL4 軟件)
0.png (177.93 KB, 下載次數(shù): 83)
下載附件
2017-2-11 00:02 上傳
看左邊紅色方框里面的內(nèi)容,可以知道這個程序分成了 3 個 c 文件(實(shí)際上還 是一 個整體)。 每個文件的功能大致如下: Main.c --- 主文件,調(diào)用其他文件中的函數(shù) Key.c --- 按鍵文件,處理矩陣按鍵 Lcd1602.c --- 顯示器文件,處理液晶顯示
一、程序入口
看程序首先要找到入口,不然就是無頭蒼蠅,相信稍微有點(diǎn)基礎(chǔ)的人都知道程 序入口是 main 函數(shù),該函數(shù)在 main.c 文件中,如下
1.002.jpg (25.91 KB, 下載次數(shù): 70)
下載附件
2017-2-11 00:04 上傳
二、Main 函數(shù)框架
0.png (103.21 KB, 下載次數(shù): 88)
下載附件
2017-2-11 00:03 上傳
對于 main 函數(shù),其核心思想就是狀態(tài)機(jī)(就是把整個軟件分成多個狀態(tài),在 不同的觸發(fā)條件下,切換到不同的狀態(tài)下運(yùn)行)。 整個軟件分成三個狀態(tài):初始化狀態(tài),密碼生成狀態(tài),密碼輸入狀態(tài)。 程序里面用一個變量 global_state 來存儲各種狀態(tài),并且各個狀態(tài)的用如下數(shù) 字來表示:
初始化狀態(tài) --- 0 密碼生成狀態(tài) --- 1 密碼輸入狀態(tài) --- 2 各個狀態(tài)之間的切換關(guān)系如下圖所示
三、密碼的生成 隨機(jī)密碼的生成是取自與定時器 0 寄存器 TL0
1.006.jpg (12.35 KB, 下載次數(shù): 72)
下載附件
2017-2-11 00:04 上傳
四、矩陣鍵盤的掃描
對于 4*4 的矩陣鍵盤來說,從邏輯上將其劃分成四行四列,然后采用行掃描 法(或列掃描法)來進(jìn)行鍵值的采集。
0.png (281.77 KB, 下載次數(shù): 72)
下載附件
2017-2-11 00:03 上傳
如上圖所示,16 個按鍵接在了 P0 的 8個口,其中 P00-P03 為四行,P04-P07 為 四列,本設(shè)計采用的是行掃描法,也就是說每次給四行當(dāng)中的一行輸出低電平(其 他三行為高電平),然后再讀取四列的值,如果發(fā)現(xiàn)四列全部為高電平,那么就 表示沒有按鍵按下,如果有某一列為低電平,就表示有按鍵按下了。 比如我讓四行當(dāng)中的第一行(P00)為0,同時讀取四列,發(fā)現(xiàn)第一列(P04)為 低電平,那么就說明”1”按鍵被按下。
五、LCD1602 顯示程序 先來普及一下 1602 的基本知識,該液晶顯示 2 行,每行顯示 16 個字符,并 且它不能顯示中文。 對于每個字符來說都有相應(yīng)的地址,第一行的 16 個字符的地址是 0x80-0x8f, 第二行的 16 個字符的地址是 0xc0-0xcf。如下表所示
0x80 | 0x81 | 0x82 | 0x83 | 0x84 | 0x85 | 0x86 | 0x87 | 0x88 | 0x89 | 0x8a | 0x8b | 0x8c | 0x8d | 0x8e | 0x8f | 0xc0 | 0xc1 | 0xc2 | 0xc3 | 0xc4 | 0xc5 | 0xc6 | 0xc7 | 0xc8 | 0xc9 | 0xca | 0xcb | 0xcc | 0xcd | 0xce | 0xcf |
程序控制液晶,想讓液晶顯示字符時,需要分兩步,第一步就是給它輸入地
址(告訴它我要在哪里顯示),第二部給它輸入要顯示的字符(告訴它我要在這 里顯示什么東西)。并且要注意的是,顯示的內(nèi)容是需要字符形式,比如要顯示 數(shù)字 1,就不能直接給 1,而是需要將整數(shù) 1 換算成字符的‘1’(1+0x30=’1’)才 能正確顯示。
現(xiàn)在我們想讓液晶在左上角顯示字母‘a(chǎn)’,從上表得知,左上角的地址為 0x80。 所以分如下兩步,就可以顯示 Wr_com(0x80);Wr_dat(‘a(chǎn)’); 上面的兩個函數(shù)是作者自己編的,具體內(nèi)容參考程序。
超市存包柜密碼鎖操作說明
一、功能概述 該設(shè)計主要是實(shí)現(xiàn)利用密碼來開鎖的功能。系統(tǒng)主要設(shè)置了“存包”和“取包”的功 能,當(dāng)存包時,系統(tǒng)會生成一個四位的隨機(jī)數(shù)密碼,供用戶記憶;然后取包時,用戶輸入剛 才的密碼,如果密碼正確就開鎖,如果錯誤就不開鎖,并做出警告提示。
二、操作步驟
1、雙擊運(yùn)行【仿真文件/密碼鎖.DSN】,并往單片機(jī)里面添加程序【密碼鎖.hex】
2、回到仿真主界面,點(diǎn)擊開始按鈕,
0.png (16.02 KB, 下載次數(shù): 79)
下載附件
2017-2-11 00:07 上傳
,就會看到液 晶顯示
0.png (36.35 KB, 下載次數(shù): 80)
下載附件
2017-2-11 00:09 上傳
“welcome”
并且繼電器處于閉合狀態(tài),表示門是關(guān)著的。
3、找到矩陣鍵盤中的“存包”按鍵,并按下此鍵,繼電器會斷開,表示開 門。然后液晶顯示“close door”,表示提示用戶存好東西后關(guān)門。
1.002.jpg (6.87 KB, 下載次數(shù): 90)
下載附件
2017-2-11 00:11 上傳
1.003.jpg (10.18 KB, 下載次數(shù): 86)
下載附件
2017-2-11 00:11 上傳
4、大約三秒后,系統(tǒng)自動關(guān)門,繼電器閉合,并且液晶顯示當(dāng)前生成的四位隨機(jī)數(shù)密碼。 大約 3 秒后,系統(tǒng)回到最初的頁面。
1.004.jpg (34.61 KB, 下載次數(shù): 94)
下載附件
2017-2-11 00:11 上傳
5、找到“取包”按鍵,并按下它,LCD 就會提示輸入密碼
此時按下數(shù)字按鍵,輸入四位密碼,然后按下“確認(rèn)”按鍵,如果輸入的密碼錯 誤,就會有紅色 LED 亮。并且繼電器保存關(guān)閉狀態(tài)。三秒后,紅燈熄滅,系統(tǒng)返 回主頁面。
1.005.jpg (4.66 KB, 下載次數(shù): 93)
下載附件
2017-2-11 00:11 上傳
1.006.jpg (5.8 KB, 下載次數(shù): 82)
下載附件
2017-2-11 00:11 上傳
如果輸入的密碼正確,就會有綠色 LED 亮。并且繼電器保存開啟狀態(tài)。三秒 后,綠燈燈熄滅,系統(tǒng)返回主頁面。
1.007.jpg (5.5 KB, 下載次數(shù): 75)
下載附件
2017-2-11 00:11 上傳
在輸入密碼過程中,可以按下“清除”按鍵來清掉剛剛輸入的密碼,而重新輸入。
0.png (24.14 KB, 下載次數(shù): 87)
下載附件
2017-2-11 00:10 上傳
超市存包柜設(shè)計的完整資料下載(含源碼 仿真 ppt教程 論文等等很全):
http://www.zg4o1577.cn/bbs/dpj-77166-1.html
|