版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)應(yīng)用技術(shù)項(xiàng)目式教程—基于Proteus和KeilCSINGLE-CHIP
COMPUTER
APPLICATION
TECHNOLOGY
簡(jiǎn)易密碼鎖的設(shè)計(jì)獨(dú)立式鍵盤原理01行列鍵盤原理02簡(jiǎn)易密碼鎖的設(shè)計(jì)03知識(shí)要點(diǎn)05
簡(jiǎn)易密碼鎖的設(shè)計(jì)
能夠使用C語(yǔ)言實(shí)現(xiàn)按鍵去抖01能夠?qū)崿F(xiàn)獨(dú)立式按鍵掃描編程0203能夠應(yīng)用狀態(tài)機(jī)編程04學(xué)習(xí)要求05實(shí)現(xiàn)簡(jiǎn)易密碼鎖的設(shè)計(jì)能夠?qū)崿F(xiàn)行列式按鍵掃描編程7.1獨(dú)立式鍵盤原理如果應(yīng)用系統(tǒng)僅需要幾個(gè)鍵,則選用獨(dú)立鍵盤,一般采用查詢方式識(shí)別按鍵的狀態(tài)。此外,由于按鍵的機(jī)械特性會(huì)產(chǎn)生抖動(dòng)現(xiàn)象,在按鍵的處理中還要考慮去抖動(dòng)的問(wèn)題。獨(dú)立式鍵盤可采用如圖7.1所示的按鍵輸入電路。按鍵直接用I/O接口線構(gòu)成單個(gè)按鍵電路。7.1獨(dú)立式鍵盤原理每個(gè)獨(dú)立式按鍵單獨(dú)占有一根I/O接口線,每根I/O接口線的工作狀態(tài)不影響其他I/O接口線的工作狀態(tài),屬于最簡(jiǎn)單的一種按鍵結(jié)構(gòu)。當(dāng)某一個(gè)按鍵Sn(n=0~7)閉合時(shí),P1.n輸入為低電平,釋放時(shí)P1.n輸入為高電平。按鍵為輸入開關(guān)量,所以P1口事先寫入“1”,當(dāng)無(wú)鍵按下時(shí),P1.n端由內(nèi)部上拉電阻上拉為高電平,而有鍵按下時(shí),P1.n端與地相連,輸入電壓值為低電平。若為P0口,內(nèi)部無(wú)上拉電阻,需外加上拉電阻。7.1獨(dú)立式鍵盤原理實(shí)際上,在按下一次Sn時(shí),機(jī)械按鍵的簧片存在著輕微的彈跳現(xiàn)象,P1.n的輸入波形在鍵閉合和釋放過(guò)程中存在抖動(dòng)現(xiàn)象,呈現(xiàn)一串抖動(dòng)脈沖波(如圖7.2所示),其時(shí)間長(zhǎng)短與按鍵的機(jī)械特性有關(guān),一般為5~20ms。為了確保CPU對(duì)按鍵的一次閉合僅做一次處理,必須去除抖動(dòng)。按鍵去抖主要有軟件去抖和硬件去抖兩種方法,目前在單片機(jī)應(yīng)用系統(tǒng)中,主要采用軟件去抖方法,本書也只介紹軟件去抖方法。1.按鍵掃描(不支持連續(xù)按下)編程不支持連續(xù)按下按鍵掃描編程的算法如下:算法說(shuō)明:1)定義靜態(tài)局部變量key_up,表示按鍵的狀態(tài),1時(shí)表示彈起狀態(tài),這里不能用動(dòng)態(tài)的局部變量,可以使用全局變量。2)在按鍵彈起狀態(tài)檢測(cè)按鍵是否按下。3)如果按下,延時(shí)10ms。4)設(shè)置為按下狀態(tài),檢測(cè)是否按下。5)如果按下,返回鍵值(對(duì)于獨(dú)立按鍵,鍵值可以自定義),如果沒(méi)按下,設(shè)置為彈起狀態(tài)。2.按鍵掃描(支持連續(xù)按下)編程
支持連續(xù)按下按鍵掃描編程的算法如下:算法說(shuō)明:1)檢測(cè)按鍵是否按下。2)如果按下,延時(shí)10ms。3)檢測(cè)是否按下。4)如果按下,返回鍵值(對(duì)于獨(dú)立按鍵,鍵值可以自定義),如果沒(méi)按下,返回?zé)o效值。對(duì)于這兩種情況可以混合為一個(gè)程序。3.按鍵掃描(兩種模式合二為一)編程
按鍵掃描(兩種模式合二為一)編程的算法如下:mode=1時(shí)為支持連續(xù)按下,mode=0時(shí)為不支持連續(xù)按下。4.應(yīng)用案例(1)設(shè)計(jì)要求設(shè)計(jì)加1、減1功能鍵各1個(gè)。當(dāng)按加1、減1功能鍵時(shí),187項(xiàng)目7簡(jiǎn)易密碼鎖的設(shè)計(jì)。計(jì)數(shù)器做加1或減1操作,計(jì)數(shù)器值送4位LED數(shù)碼管顯示。(2)仿真原理圖仿真原理圖如圖7.3所示,P0口接數(shù)碼管a~g段,P2.0~P2.3接數(shù)碼管公共端,數(shù)碼管為共陽(yáng)極數(shù)碼管,P3.0接“+”鍵,P3.1接“-”鍵。(3)軟件代碼
實(shí)現(xiàn)代碼如下:7.2行列式鍵盤原理7.2.1設(shè)計(jì)原理
當(dāng)按鍵數(shù)較多時(shí),獨(dú)立式按鍵電路占用較多的I/O接口線,因此通常多采用行列式(也稱矩陣式)鍵盤電路。
圖7.4表示一個(gè)5×5的行列式鍵盤陣列。鍵盤中共有25個(gè)鍵,對(duì)每個(gè)鍵都進(jìn)行編號(hào),鍵號(hào)按從上到下、從左到右的規(guī)律,分別為0,1,2,…,24。在應(yīng)用系統(tǒng)中,鍵盤上的按鍵可按需要定義其功能。X0、X1、X2、X3、X4分別代表第0行、第1行、第2行、第3行、第4行。Y0、Y1、Y2、Y3、Y4分別代表第0列、第1列、第2列、第3列、第4列。在不需要外接并行擴(kuò)展芯片的情況下,代表各個(gè)行的5根引出線分別和CPU的通用I/O接口P1的5個(gè)引腳連接(這5個(gè)引腳是單向輸入,芯片內(nèi)無(wú)上拉電阻,需外加上拉電阻),代表各個(gè)列的5根線分別和P2的5個(gè)引腳連接。矩陣鍵盤工作時(shí)首先要確定有無(wú)按鍵按下,其次確定鍵值、鍵碼,分述如下。1.有無(wú)按鍵的確認(rèn)由行線或列線輸出低電平,然后讀取列線或行線電平,如果讀取值不全是高電平則代表有鍵按下,否則沒(méi)有。其中要有鍵盤消抖措施。2.按鍵的識(shí)別掃描算法:逐行置低電平,其余各行為高電平,檢查各列電平的變化,如果某列線電平為低電平,即可確定此行列線交叉點(diǎn)處的按鍵被按下。交換行列線的輸出讀取關(guān)系也可以實(shí)現(xiàn)。線反轉(zhuǎn)法:首先將行線編程為輸入線,列線編程為輸出線,然后使列線全輸出低電平,讀取行線電平,行線從高電平轉(zhuǎn)為低電平的行線為按下按鍵所在行;然后將列線編程為輸入線,行線編程為輸出線,然后使行線全輸出低電平,讀取列線電平,列線從高電平轉(zhuǎn)為低電平的列線為按下按鍵所在列。3.掃描算法的鍵號(hào)確定矩陣式鍵盤中按鍵的物理位置唯一,按鍵由行號(hào)和列號(hào)唯一確定,所以可以由行列號(hào)對(duì)按鍵編碼,如0行0列的按鍵編碼為00H,2行3列為13,編碼時(shí)以處理問(wèn)題方便為準(zhǔn)。根據(jù)識(shí)別的行列號(hào)可以確定鍵號(hào):鍵號(hào)=所在行號(hào)×鍵盤列數(shù)+所在列號(hào)編制程序時(shí)可以把鍵號(hào)制成表,查表實(shí)現(xiàn)按鍵功能的處理或直接用case語(yǔ)句處理。7.2.2編程實(shí)例1.設(shè)計(jì)要求4×4鍵盤對(duì)應(yīng)十六進(jìn)制數(shù)碼0~9、A~F。當(dāng)按下按鍵時(shí),對(duì)應(yīng)的數(shù)碼在數(shù)碼管上顯示。
行列式鍵盤仿真原理圖如圖7.5所示,P0口接單個(gè)數(shù)碼管,P2口接行列式鍵盤。P2.0~P2.3接列線,P2.4~P2.7接行線。2.程序設(shè)計(jì)(1)按鍵掃描程序按鍵掃描程序按照上面所講內(nèi)容編程,分為有無(wú)按鍵的確認(rèn)、按鍵的識(shí)別和掃描算法的鍵號(hào)確定三部分,其中按鍵的識(shí)別采用線反轉(zhuǎn)法,行列式按鍵掃描程序也可分為支持連續(xù)按下和不支持連續(xù)按下兩種情況,為了更好地支持應(yīng)用,本書程序?yàn)榛旌暇幊谭绞健#ǎ玻┏绦虼a及說(shuō)明程序代碼如下:7.3簡(jiǎn)易數(shù)碼鎖設(shè)計(jì)7.3.1任務(wù)要求3×4行列式鍵盤,分別代表數(shù)字0~9、?、#,密碼在程序中事先設(shè)定,為0~9之間的6位數(shù)字,用1602字符液晶顯示屏顯示密碼輸入過(guò)程,用發(fā)光二極管表示密碼鎖的開關(guān)狀態(tài)。密碼鎖操作過(guò)程如下:1)上電復(fù)位后,密碼鎖初始狀態(tài)為關(guān)閉(發(fā)光二極管滅)液晶顯示屏顯示“wel?come!”。2)按下“?”號(hào)鍵,液晶顯示屏第一行顯示“PleaseInputCode”,第二行顯示6個(gè)“-”。3)輸入6位密碼,并以“#”號(hào)鍵結(jié)束,輸入過(guò)程中,液晶屏不顯示輸入的字符,只顯示“?”號(hào),如果輸入數(shù)字超過(guò)6位,重新顯示。4)輸入的密碼與原先設(shè)定的密碼相同,則液晶顯示屏第二行顯示字符“Suc”,打開鎖(發(fā)光二極管亮),3s后恢復(fù)鎖定狀態(tài),等待下一次密碼輸入(返回1),否則顯示字符“ERR”持續(xù)3s,保持鎖定狀態(tài)并等待下次密碼輸入(返回1)。簡(jiǎn)易數(shù)碼鎖的LCD液晶和行列式鍵盤的仿真電路圖分別如圖7.6和圖7.7所示,其中1602的數(shù)據(jù)線接P3口,控制端RS、RW和E分別接P2.0、P2.1和P2.2。發(fā)光二極管接P2.3。行列式鍵盤行線接P1.4~P1.7,列線接P1.0~P1.2。7.3.2仿真電路7.3.
3程序設(shè)計(jì)簡(jiǎn)易數(shù)碼鎖程序可以采用分步編程設(shè)計(jì),首先編寫LCD1602程序并驗(yàn)證,之后編寫鍵盤程序并驗(yàn)證,再編寫整體程序,簡(jiǎn)易數(shù)碼鎖程序采用狀態(tài)機(jī)編程實(shí)現(xiàn)。1.LCD1602程序LCD1602驅(qū)動(dòng)程序的編寫見6.3和6.4節(jié),本章程序需要修改引腳,同時(shí)在液晶屏上顯示簡(jiǎn)易數(shù)碼鎖需要顯示的字符“welcome,InputtheCode,Err,Suc”。實(shí)現(xiàn)結(jié)果可參考圖7.8。2.按鍵測(cè)試編程在7.3節(jié)講解了行列式鍵盤的應(yīng)用,在簡(jiǎn)易數(shù)碼鎖應(yīng)用中,行列式鍵盤用于輸入密碼,按鍵編程測(cè)試部分主要測(cè)試按鍵的硬件及軟件驅(qū)動(dòng)程序是否正確,按鍵測(cè)試程序主要通過(guò)液晶顯示按鍵的數(shù)值證明按鍵電路及軟件驅(qū)動(dòng)程序是否正確。程序代碼如下:1)按鍵掃描代碼基本和7.3節(jié)相同,需要有相應(yīng)改動(dòng),書中不再給出。2)主程序代碼如下:3.狀態(tài)機(jī)編程狀態(tài)機(jī)(可以參考數(shù)字電子技術(shù)中的狀態(tài)圖,如圖7.9所示)編程是嵌入式設(shè)備C語(yǔ)言編程。狀態(tài)機(jī)編程屬于一種比較流行的方法,適用于以下應(yīng)用:1)菜單設(shè)置。2)芯片接口程序(一些芯片手冊(cè)中有狀態(tài)機(jī))。3)協(xié)議棧編程(某些協(xié)議棧中有狀態(tài)圖)。4)通信程序。5)其他適合的應(yīng)用。狀態(tài)機(jī)編程主要分為以下幾個(gè)步驟:1)確定狀態(tài)。2)確定每個(gè)狀態(tài)的輸入和輸出情況。3)確定狀態(tài)轉(zhuǎn)移條件,以上3個(gè)步驟為繪制狀態(tài)圖的過(guò)程。4)用switch-case語(yǔ)句(C語(yǔ)言)根據(jù)狀態(tài)圖編程,這一步為軟件實(shí)現(xiàn)過(guò)程。狀態(tài)機(jī)編程由于狀態(tài)明確,相對(duì)于用標(biāo)志位編程具有邏輯清楚、編程容易的優(yōu)勢(shì)。4.簡(jiǎn)易密碼鎖軟件編程簡(jiǎn)易密碼鎖軟件主要由液晶初始化、顯示“welcome”、按鍵掃描及主狀態(tài)機(jī)組成,其框圖如圖7.10所示。液晶初始化見6.3節(jié)內(nèi)容,通過(guò)按鍵掃描程序掃描按鍵,得到按鍵的鍵碼,主狀態(tài)機(jī)實(shí)現(xiàn)密碼鎖的功能。(1)主狀態(tài)機(jī)軟件的主狀態(tài)機(jī)由4個(gè)狀態(tài)組成,分別為空閑狀態(tài)、輸入密碼狀態(tài)、密碼正確狀態(tài)和密碼錯(cuò)誤狀態(tài)。下面說(shuō)明各個(gè)狀態(tài)的功能及狀態(tài)轉(zhuǎn)移條件。1)空閑狀態(tài)。在該狀態(tài)液晶顯示“welcome??!”,并且密碼鎖閉合(用LED滅表示),當(dāng)檢測(cè)到‘?’號(hào)鍵按下時(shí),液晶屏第一行顯示“InputtheCode”,第二行顯示“”,并且狀態(tài)轉(zhuǎn)到輸入密碼狀態(tài)。2)輸入密碼狀態(tài)。輸入密碼狀態(tài)是狀態(tài)機(jī)中最復(fù)雜的狀態(tài),其軟件框圖如圖7.11所示。其具體實(shí)現(xiàn)如下:①判斷按下的按鍵。②如果按下的按鍵是#號(hào)鍵,當(dāng)按下密碼小于6位,則轉(zhuǎn)到密碼錯(cuò)誤狀態(tài),否則,判斷密碼是否正確,正確則轉(zhuǎn)到密碼正確狀態(tài),否則轉(zhuǎn)到密碼錯(cuò)誤狀態(tài)。③按下其他按鍵,當(dāng)按鍵次數(shù)為7次時(shí),重置為1次,并且已按下的按鍵無(wú)效,保存密碼,并在液晶屏上順序顯示‘?’號(hào)。3)密碼正確狀態(tài)。清屏,顯示“SUC”,密碼鎖打開(LED亮),延時(shí)3s,密碼鎖關(guān)閉(LED滅),液晶屏顯示“welcome??!”,狀態(tài)轉(zhuǎn)換到空閑狀態(tài)。4)密碼錯(cuò)誤狀態(tài)。清屏,顯示“ERR”,密碼鎖關(guān)閉(LED滅),延時(shí)3s,液晶屏顯示“welcome??!”,狀態(tài)轉(zhuǎn)換到空閑狀態(tài)。(2)簡(jiǎn)易密碼鎖程序代碼程序代碼沒(méi)有包括按鍵和液晶子程序,具體如下:1.無(wú)按鍵鍵盤這個(gè)造型奇怪的產(chǎn)品就是ORBITOUCH無(wú)按鍵鍵盤(圖7.12)。這款鍵盤在外觀上十分特立獨(dú)行,兩個(gè)巨大的圓球裝在一塊塑料板上,圓球上面還有類似鼠標(biāo)形狀的手托。這款鍵盤使用起來(lái)需要左手選擇字母,右手選擇顏色。不同字母對(duì)應(yīng)的顏色也不一樣,雙手配合起來(lái)才能打字。ORBITOUCH的說(shuō)明書看上去很難,但研發(fā)者表示,從買回家到入門只需要30分鐘。上面的鍵位也不是完全隨機(jī)設(shè)計(jì)的,而是參考了人們最常用的字母,并且把這些字母放在最合適的位置,方便記憶。走進(jìn)科學(xué)2.激光投影鍵盤像投影虛擬操作這種場(chǎng)景,以前只在科幻電影中才會(huì)見到。有了這個(gè)激光投影鍵盤(圖7.13),平時(shí)放在桌面上并不起眼,但在你操作鍵盤的時(shí)候,相信你會(huì)成為萬(wàn)眾矚目的焦點(diǎn),足夠炫酷,充滿未來(lái)科技感。3.玻
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年魯科版七年級(jí)歷史上冊(cè)階段測(cè)試試卷含答案870
- 2024年人教版一年級(jí)語(yǔ)文下冊(cè)月考試卷含答案543
- 人教版高中語(yǔ)文必修上冊(cè)第六單元第11課課時(shí)作業(yè)13含答案
- 物聯(lián)網(wǎng)課程設(shè)計(jì)智能XX系統(tǒng)
- 直播兒童美術(shù)課程設(shè)計(jì)
- 2022-2023學(xué)年貴州銅仁印江縣五年級(jí)下冊(cè)語(yǔ)文期末試卷及答案
- 2024年魯科版七年級(jí)物理上冊(cè)月考試卷390
- 2020-2021學(xué)年甘肅省平?jīng)鍪嗅轻紖^(qū)四年級(jí)上學(xué)期期末語(yǔ)文真題及答案
- 人教版高中地理必修第一冊(cè)第四章地貌第一節(jié)第2課時(shí)風(fēng)沙地貌海岸地貌練習(xí)含答案
- 消防建筑學(xué) 課程設(shè)計(jì)
- 金匱要略知到智慧樹章節(jié)測(cè)試課后答案2024年秋浙江中醫(yī)藥大學(xué)
- 【MOOC】有機(jī)化學(xué)實(shí)驗(yàn)-南京工業(yè)大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 2024年婦保科工作總結(jié)及計(jì)劃
- (T8聯(lián)考)2025屆高三部分重點(diǎn)中學(xué)12月第一次聯(lián)考評(píng)物理試卷(含答案詳解)
- 北京理工大學(xué)《數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)》2022-2023學(xué)年第一學(xué)期期末試卷
- 2024年公安機(jī)關(guān)理論考試題庫(kù)500道
- 2024年中國(guó)主題公園競(jìng)爭(zhēng)力評(píng)價(jià)報(bào)告-中國(guó)主題公園研究院
- 2024年有限合伙股權(quán)代持
- 廣東珠海市駕車沖撞行人案件安全防范專題培訓(xùn)
- 跟著音樂(lè)游中國(guó)智慧樹知到期末考試答案章節(jié)答案2024年廣州大學(xué)
- 消化道出血的PBL教學(xué)查房
評(píng)論
0/150
提交評(píng)論