微處理器程序設(shè)計(jì)-以51單片機(jī)為例 課件 項(xiàng)目1 智慧校園門禁智能控制 任務(wù)1.6_第1頁
微處理器程序設(shè)計(jì)-以51單片機(jī)為例 課件 項(xiàng)目1 智慧校園門禁智能控制 任務(wù)1.6_第2頁
微處理器程序設(shè)計(jì)-以51單片機(jī)為例 課件 項(xiàng)目1 智慧校園門禁智能控制 任務(wù)1.6_第3頁
微處理器程序設(shè)計(jì)-以51單片機(jī)為例 課件 項(xiàng)目1 智慧校園門禁智能控制 任務(wù)1.6_第4頁
微處理器程序設(shè)計(jì)-以51單片機(jī)為例 課件 項(xiàng)目1 智慧校園門禁智能控制 任務(wù)1.6_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

項(xiàng)目一智慧校園門禁系統(tǒng)設(shè)計(jì)

馮蓉珍

《微處理器程序設(shè)計(jì)》任務(wù)1.6企業(yè)案例——儲物柜門鎖智能控制任務(wù)目標(biāo)

通過本任務(wù)的設(shè)計(jì)和制作,培養(yǎng)學(xué)生利用微處理器矩陣鍵盤實(shí)現(xiàn)學(xué)生宿舍儲物柜門鎖的智能控制。

智能門禁密碼只設(shè)置了一位,電機(jī)直連仿真電路中的微處理器端口,本任務(wù)密碼可以設(shè)置多位,同時(shí)電機(jī)通過兩個(gè)繼電器連接微處理器輸出口。學(xué)生按鍵和設(shè)定的密碼一致,則開柜,否則柜子不開。知識準(zhǔn)備

首先需要了解繼電器的工作原理,微處理器端口的輸出電流很小,無法驅(qū)動(dòng)門鎖電機(jī)工作,因此需要在微處理器和門鎖之間加以一繼電器作為驅(qū)動(dòng)。繼電器線圈中有電流通過時(shí),開關(guān)被吸合到常開端,沒有電流時(shí),開關(guān)和常閉端連接。因此可以通過微處理器端口輸出高電平給繼電器線圈通電;輸出低電平,讓繼電器不工作。任務(wù)1.6

企業(yè)案例——儲物柜門鎖智能控制任務(wù)準(zhǔn)備

如果需要控制電機(jī)的正轉(zhuǎn)和反轉(zhuǎn),那就需要用兩個(gè)繼電器,同一個(gè)時(shí)刻只有一個(gè)繼電器導(dǎo)通,另一個(gè)繼電器是不工作的,通過電路的連接,我們可以做到第1個(gè)繼電器工作,第2個(gè)繼電器不工作的時(shí)候使得電機(jī)的兩端接通正向電壓,當(dāng)?shù)?個(gè)繼電器不工作,第2個(gè)繼電器工作的時(shí)候,使得電機(jī)的兩端接通負(fù)向電壓,從而控制兩個(gè)繼電器的導(dǎo)通狀態(tài)來控制電機(jī)的正反轉(zhuǎn)。如下圖1-92(a)所示。為簡化設(shè)計(jì),仿真時(shí)可先不考慮繼電器驅(qū)動(dòng),電機(jī)的正反轉(zhuǎn)直接由微處理器的P3.3和P3.4控制。如圖1-92(b)圖(a)繼電器與直流電機(jī)連接圖(b)直流電機(jī)與單片機(jī)直接連接圖1-92直流電機(jī)與繼電器或單片機(jī)的連接圖

任務(wù)1.6

企業(yè)案例——儲物柜門鎖智能控制任務(wù)實(shí)施

宿舍儲物柜門鎖密碼預(yù)先設(shè)置好三位密碼。學(xué)生開柜門前按下矩陣鍵盤中的某三個(gè)按鍵,若此按鍵的值和設(shè)置的密碼一致,則連接門鎖的電機(jī)轉(zhuǎn)動(dòng)而開柜門,同時(shí)柜門邊的照明燈點(diǎn)亮,數(shù)碼管顯示按鍵次數(shù)。若是按鍵錯(cuò)誤,則電機(jī)不轉(zhuǎn)動(dòng),門禁不打開,門邊燈不亮,蜂鳴器報(bào)警。1、硬件電路設(shè)計(jì)

門鎖用電機(jī)表示,仿真中圖電機(jī)連接微處理器的P3.3和P3.4,報(bào)警蜂鳴器通過三極管連接到微處理器的P3.7。數(shù)碼管連接到P2端口。仿真電路圖和智能門禁設(shè)計(jì)的圖一樣,任務(wù)1.6

企業(yè)案例——儲物柜門鎖智能控制任務(wù)實(shí)施任務(wù)1.6

企業(yè)案例——儲物柜門鎖智能控制任務(wù)實(shí)施2、軟件編程(1)設(shè)置密碼

定義一個(gè)變量password表示設(shè)定的三位密碼,在主函數(shù)中給password設(shè)置的初始值密碼為123。 password=123;(2)讀取矩陣鍵盤值

編寫scan_key();子函數(shù),得到按鍵值。(3)門禁打開還是關(guān)閉

判斷按鍵次數(shù)和讀取到的按鍵值,數(shù)碼管顯示按鍵的次數(shù),在第三次按鍵時(shí),對三次按鍵值進(jìn)行運(yùn)算,得到一個(gè)三位數(shù),判斷這個(gè)三位數(shù)是否和設(shè)置的密碼一致,如果一致則打開門禁,即點(diǎn)亮led燈,給電機(jī)正向通電,將電源正向加到電機(jī)上,電機(jī)轉(zhuǎn)動(dòng)延時(shí)一段時(shí)間后而開鎖。若是要關(guān)鎖則微處理器給電機(jī)反向通電,電源反向加到電機(jī)兩端,電機(jī)反轉(zhuǎn)一段時(shí)間后停止表示門鎖關(guān)閉。若是輸入錯(cuò)誤,led燈不亮,電機(jī)不工作,但是蜂鳴器導(dǎo)通報(bào)警。任務(wù)1.6

企業(yè)案例——儲物柜門鎖智能控制任務(wù)實(shí)施調(diào)用scan_key()子函數(shù)讀取按鍵值,keynum_rd=scan_key();在主函數(shù)的while循環(huán)中,讀按鍵值,如果還沒有按鍵,即按鍵次數(shù)為0,則燈不亮,蜂鳴器不報(bào)警,數(shù)碼管不顯示,處于初始狀態(tài)。if(press_count==0){

led=1;beep=1;P2=0xff;}

如果有按鍵按下,則數(shù)碼管顯示按鍵次數(shù),并且只有當(dāng)?shù)谌伟存I后,判斷三次按鍵的值是否和設(shè)置密碼一致,若一致,則亮燈,電機(jī)正轉(zhuǎn)一段時(shí)間后反轉(zhuǎn)一段時(shí)間,停止轉(zhuǎn)動(dòng)。若不一致,則燈不亮,蜂鳴器報(bào)警三次后停止。任務(wù)1.6

企業(yè)案例——儲物柜門鎖智能控制任務(wù)實(shí)施if(press_count==3){//第三次按鍵后得到一個(gè)三位數(shù)if((keynum_rd==password)&&(run_en)){//三次按鍵的三位數(shù)和設(shè)置密碼相同led=0; //燈亮

jdq1=1;jdq2=0;beep=1;//開鎖

delay(100);

jdq1=0;jdq2=1;beep=1;//關(guān)鎖

delay(100);

jdq1=0;jdq2=0;led=1;//電機(jī)停止,燈滅

run_en=0;//電機(jī)不允許轉(zhuǎn),

beep_en=1;//蜂鳴器允許報(bào)警

}if((keynum_rd!=password)&&(beep_en)){//輸入和設(shè)置不一致

任務(wù)1.6

企業(yè)案例——儲物柜門鎖智能控制任務(wù)實(shí)施

led=1;run_en=1;beep_en=0;//燈不亮,電機(jī)允許轉(zhuǎn),//蜂鳴器不允許報(bào)警

for(k=0;k<3;k++){//報(bào)警循環(huán)三次 beep=0;P2=table[14];delay(100); beep=1;P2=0xbf;;delay(100);

}

}

beep=1;//蜂鳴器不叫

}

elsebeep=1;//不是三次按鍵則不報(bào)警

}//按鍵次數(shù)不為0任務(wù)1.6

企業(yè)案例——儲物柜門鎖智能控制任務(wù)實(shí)施

其中,run_en和beep_en是位變量,控制電機(jī)轉(zhuǎn)動(dòng)和蜂鳴器報(bào)警的允許與否。

讀取按鍵的子函數(shù)和上個(gè)任務(wù)的子函數(shù)稍有區(qū)別。一旦有按鍵按下,給keynum變量賦予按鍵值的同時(shí),需要給按鍵次數(shù)變量press_count加1,按鍵的狀態(tài)變量立即更新為按下的狀態(tài),key_last1=0表示按鍵按下,否則,表示按鍵松開。下面是第一列的四行的四個(gè)按鍵的代碼。//讀取按鍵的值unsignedintscan_key(){//第一列四行 P1=0xfe;//11111110 temp=P1;

temp=temp&0xf0; if((temp!=0xf0)&&(key_last1)){ temp=P1;任務(wù)1.6

企業(yè)案例——儲物柜門鎖智能控制任務(wù)實(shí)施

switch(temp){ case0xee:keynum=0;press_count++;key_last1=0;break; case0xde:keynum=1;press_count++;key_last1=0;break;

case0xbe:keynum=2;press_count++;key_last1=0;break;

case0x7e:keynum=3;press_count++;key_last1=0;break;

default:break; }//switch }//if if(temp==0xf0){key_last1=1;}其他三列四行的代碼和上面的類似。任務(wù)1.6

企業(yè)案例——儲物柜門鎖智能控制任務(wù)實(shí)施

根據(jù)按鍵次數(shù),給三位按鍵值的百位十位和個(gè)位分別賦值,在第三次按鍵時(shí),將百位十位和個(gè)位數(shù)拼接成一個(gè)三位數(shù),這個(gè)就是要和設(shè)置密碼進(jìn)行比對的按鍵值。在生成了一個(gè)三位數(shù)后馬上返回這個(gè)數(shù)給主函數(shù)讀取按鍵的地方。任務(wù)1.6

企業(yè)案例——儲物柜門鎖智能控制任務(wù)實(shí)施//根據(jù)按鍵次數(shù)記錄三位數(shù)的值switch(press_count){

case1:keynum_bai=keynum;break;

case2:keynum_shi=keynum;break;

case3:if(add_en){

keynum3=keynum_bai*100+keynum_shi*10+keynum;

add_en=0;

}

returnkeynum3;

//break;

case4:press_count=0;//清除按鍵的值

keynum_bai=0;keynum_shi=0;keynum=0;keynum3=0;

add_en=1;

break;

default:press_count=0;//清除按鍵的值

keynum_bai=0;keynum_shi=0;keynum=0;keynum3=0;

add_en=1;

break;

}//switch

任務(wù)1.6

企業(yè)案例——儲物柜門鎖智能控制任務(wù)實(shí)施3、仿真調(diào)試

編譯調(diào)試程序下載到仿真電路,運(yùn)行hex,按下矩陣鍵盤按鍵,觀察電機(jī),數(shù)碼管,led燈和蜂鳴器的狀態(tài)。任務(wù)1.6

企業(yè)案例——儲物柜門鎖智能控制任務(wù)實(shí)施4、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論