基于PIC單片機(jī)的電子密碼鎖單片機(jī)實(shí)驗(yàn)報(bào)告_第1頁
基于PIC單片機(jī)的電子密碼鎖單片機(jī)實(shí)驗(yàn)報(bào)告_第2頁
基于PIC單片機(jī)的電子密碼鎖單片機(jī)實(shí)驗(yàn)報(bào)告_第3頁
基于PIC單片機(jī)的電子密碼鎖單片機(jī)實(shí)驗(yàn)報(bào)告_第4頁
基于PIC單片機(jī)的電子密碼鎖單片機(jī)實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩75頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

.資料.小學(xué)期單片機(jī)設(shè)計(jì)實(shí)驗(yàn)報(bào)告題目:基于PIC單片機(jī)的電子密碼鎖班級:班內(nèi)序號:實(shí)驗(yàn)組號:學(xué)生姓名:指導(dǎo)教師:資料.期中檢查教師評語指導(dǎo)教師簽字:年月日基于PIC單片機(jī)的電子密碼鎖——xx班xx實(shí)驗(yàn)摘要在日常的生活和工作中,住宅與部門的安全防范、單位的文件檔案、財(cái)務(wù)報(bào)表以及一些個(gè)人資料的保存多以加鎖的辦法來解決。若使用傳統(tǒng)的機(jī)械式鑰匙開鎖,人們常需攜帶多把鑰匙,使用極不方便,且鑰匙丟失后安全性即大打折扣。隨著科學(xué)技術(shù)的不斷發(fā)展,人們對日常生活中的安全保險(xiǎn)器件的要求越來越高。為滿足人們對鎖的使用要求,增加其安全性,用密碼代替鑰匙的密碼鎖應(yīng)運(yùn)而生。密碼鎖具有安全性高、成本低、功耗低、易操作等優(yōu)點(diǎn)。在安全技術(shù)防范領(lǐng)域,具有防盜報(bào)警功能的電子密碼鎖逐漸代替?zhèn)鹘y(tǒng)的機(jī)械式密碼鎖,克服了機(jī)械式密碼鎖密碼量少、安全性能差的缺點(diǎn),使密碼鎖無論在技術(shù)上還是在性能上都大大提高一步。隨著大規(guī)模集成電路技術(shù)的發(fā)展,特別是單片機(jī)的問世,出現(xiàn)了帶微處理器的智能密碼鎖,它除具有電子密碼鎖的功能外,還引入了智能化管理、專家分析系統(tǒng)等功能,從而使密碼鎖具有很高的安全性、可靠性,應(yīng)用日益廣泛。設(shè)計(jì)本課題時(shí)構(gòu)思的方案是用以PIC16F877為核心的單片機(jī)控制方案。目前使用的電子密碼鎖大部分是基于單片機(jī)技術(shù),以單片機(jī)為主要器件,其編碼器與解碼器的生成為軟件方式。本系統(tǒng)由16F877單片機(jī)系統(tǒng)(美國微芯Microchip公司推出的高性能單片機(jī))、4×4矩陣鍵盤、LCD1602顯示和報(bào)警系統(tǒng)等組成,具有設(shè)置、修改四位用戶密碼、輸入提示、密碼錯(cuò)誤報(bào)警等功能。本系統(tǒng)成本低廉,功能實(shí)用。AbstractReplacethelockonthepreservationofthesafetyprecautionsintheirdailylifeandwork,housinganddepartment,unitfiles,financialstatements,andsomepersonalinformationtolockapproachtosolve.Iftheuseoftraditionalmechanicalkeyinthelock,peopleoftenneedtocarrymultiplekeys,useveryinconvenient,andthelossofkeysecuritythatisgreatlyreduced.Alongwiththescienceandtechnologyunceasingdevelopment,peopledailylifesafetyinsurancedevicerequirementsmoreandmorehigh.Inordertomeetthepeopleontherequirementsandincreasethesecurityofpasswordkeypasswordlockshipped.Passwordlockissafe,lowcostandpowerconsumptionislow,easytooperateandWhentheadventoftheshortcomingsoflesstype.Inthesecuritytechnologytoguardagainst,withanti-theftalarmfunctionelectronicpasswordlockgraduallyreplacethetraditionalmechanicalcipherlock,overcomethemechanicalpasswordlock,safetyperformanceispoor,thepasswordlockbothintechnologyandinperformancearegreatlyimprovedstep.Withlargescaleintegratedcircuittechnologydevelopment,inparticular,isasinglechip,themicroprocessorintelligentpasswordlock,whichisinadditiontotheelectronicpasswordlockfunction,butalsointroducedtheintelligentmanagement,expertanalysissystemandotherfunctions,whichenablepasswordlockhasahighsafetyandreliability,isappliedmoreandmorewidely.ThisdesigntopicconceptionschemeIsusedtoPIC16F877asthecoreofthemicrocontrollercontrolprogram.Atpresent,mostoftheelectronicpasswordlockisbasedonSCMtechnology,withthesinglechipmicrocomputerasthemaindevice,theencoderanddecoderaregeneratedasthesoftware.Thefunctionsofthissystemby16F877microcontrollersystem(Americanmicrochipmicrochipcompanylaunchedhighperformancemicrocontroller),4*4matrixkeyboard,LCD1602displayandalarmsystem,hassetup,modifythefouruserpassword,inputprompt,wrongpasswordalarmetc..Thesystemintothelow,functionalandpractical.關(guān)鍵字單片機(jī)——microcontroller密碼鎖——PasswordlockLCD1602——LCD1602 4*4矩陣鍵盤——4*4matrixkeyboard實(shí)驗(yàn)論證與比較1.實(shí)驗(yàn)總體方案的確定本系統(tǒng)電子密碼鎖的設(shè)計(jì)主要由4部分組成:PIC16F877單片機(jī),4×4矩陣鍵盤接口電路,LCD1602液晶顯示以及LED提示燈。本實(shí)驗(yàn)的核心是編寫程序,實(shí)驗(yàn)中采用匯編語言,通過軟件MPLAB進(jìn)行程序的燒寫,將一塊塊的子程序進(jìn)行嵌套最終融合起來成為整個(gè)項(xiàng)目的完整程序。為了實(shí)現(xiàn)密碼的保密性,采用一個(gè)4×4的矩陣式鍵盤來提高密碼的保密性。采用LCD1602液晶顯示器來作為顯示單元,提高了可讀性,使用戶對密碼鎖的運(yùn)行情況一目了然。2.PIC16F877系列單片機(jī)簡介PIC16F87X(含873P874P876P877)是美國微芯(Microchip)公司推出的高性能單片機(jī),除具有單片機(jī)的通用資源外,該系列單片機(jī)還采用哈佛總線結(jié)構(gòu)、二級指令流水線取指方式、精簡指令集(RISC)和內(nèi)部具有E2PROM數(shù)據(jù)存儲器及FLASH結(jié)構(gòu)的程序存儲器、僅35條單字節(jié)單周期指令、在系統(tǒng)串行編程技術(shù)和在線調(diào)試技術(shù)。因此采用該系列單片機(jī)的產(chǎn)品具有低成本、低功耗、高速度、高可靠性、體積小、性價(jià)比高等特點(diǎn)。其芯片引腳圖如圖1所示。另外,它內(nèi)部的EEPROM數(shù)據(jù)存儲器不僅具有掉電保護(hù)數(shù)據(jù)的功能,更重要的是它的讀寫操作均是由單片機(jī)內(nèi)部時(shí)序控制,即外部電路無法對其進(jìn)行訪問,因而具有極高的數(shù)據(jù)保密性,這使得PIC16F87X在加密性產(chǎn)品如智能IC卡、密碼鎖、電子防盜系統(tǒng)等方面有很廣泛的應(yīng)用。系統(tǒng)總體設(shè)計(jì)本設(shè)計(jì)主要由單片機(jī)、矩陣鍵盤和液晶顯示器等部分組成。其中矩陣鍵盤用于輸入數(shù)字密碼和進(jìn)行各種功能的實(shí)現(xiàn)。由用戶通過連接單片機(jī)的矩陣鍵盤輸入密碼,后經(jīng)過單片機(jī)對用戶輸入的密碼與自己保存的密碼進(jìn)行對比,從而判斷密碼是否正確,然后控制引腳的高低電平傳到開鎖電路或者報(bào)警電路控制開鎖還是報(bào)警,實(shí)際使用時(shí)只要將單片機(jī)的負(fù)載換成電子密碼鎖的電磁鐵吸合線圈即可。1.系統(tǒng)模塊總體框圖:鍵盤電路單片機(jī)鍵盤電路單片機(jī)16F877電源電路LCDLCD顯示電路復(fù)位電路復(fù)位電路LED報(bào)警電路晶振電路LED報(bào)警電路晶振電路電源電路模塊從電源插座進(jìn)來的是9V直流電,經(jīng)一片三端穩(wěn)壓器,將其轉(zhuǎn)換為5V的穩(wěn)定電壓。電源濾波的重要性,一個(gè)電路板的濾波特性如果不好,嚴(yán)重時(shí)將會影響整個(gè)電路板不能正常工作。所以要注意一個(gè)大電容和一個(gè)小電容并聯(lián)濾波,電源線要粗,走線要合理,模擬電路最好大面積接地。其主要作用是為電路提供工作電壓,保證電路正常工作。復(fù)位電路模塊主要是用于人工復(fù)位。晶振電路模塊Osc15vOsc15vGND空Osc15vGND空Osc15vGND空Osc15vGNDOsc15vGND空Osc15vGND空Osc15vGND空4*4矩陣鍵盤輸入模塊的設(shè)計(jì)VCCR1R2R3R4行線4.7kΩ4.7kΩ4.7kΩ4.7kΩ3行RD712342行RD65 6 7 8 1行RD590AB 0行RD4CDEF列線RB3RB2RB1RB03列2列1列0列鍵盤采用4*4矩陣鍵盤,行線連接到RD端口,列線連接到RB接口。行列式鍵盤,由橫豎兩排線路組成,每個(gè)行與列的交叉點(diǎn)有一個(gè)按鍵,當(dāng)鍵盤按下時(shí)就將相互交叉的兩條導(dǎo)通,能夠有效地提高單片機(jī)系統(tǒng)中I/O口的利用率。其中R1-R4是上拉電阻,16個(gè)鍵分別為0~9的數(shù)字鍵及A~F的功能鍵,F(xiàn)鍵則表示密碼重置。鍵盤主要用于輸入密碼或進(jìn)行功能、狀態(tài)切換。1.5LCD1602液晶顯示模塊的設(shè)計(jì)本系統(tǒng)設(shè)計(jì)的顯示電路是為了給使用者以提示而設(shè)置的為了達(dá)到界面友好的目的,顯示部分由液晶顯示器LCD1602取代普通的數(shù)碼管完成。開鎖時(shí),按下鍵盤上的開鎖按鍵后,利用鍵盤上的數(shù)字鍵0-9輸入密碼,每按下一個(gè)數(shù)字鍵后在顯示器上顯示一個(gè)*,輸入多少位就顯示多少個(gè)*。當(dāng)密碼輸入完成時(shí),如果輸入的密碼正確的話,LCD顯示“SUCCESS”;如果密碼不正確,LCD顯示屏?xí)@示“5TIMESLEFT”,若5次輸入都不正確,則LCD顯示“5TIMESFAILED”“LOCKED10S”。當(dāng)按下F鍵重置密碼時(shí),LCD顯示“PLEASERESET”“OLD”,輸入正確舊密碼之后,LCD顯示“NEW”,再輸入新密碼即可。1.5.1LCD1602A液晶顯示屏接線圖1VSSVDD2VDD3VLRE04RS5R/WRE16ENRD07D0RD18D1RD29 D2 RD310 D3RD411D4RD512D5RD613D6 RD714 D715LED+VCC16LED-編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6EN使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15LED+背光源正極8D1數(shù)據(jù)16LED-背光源負(fù)極1.5.2引腳功能引腳說明:第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地時(shí)對比度最高,對比度過高時(shí)產(chǎn)生“鬼影”,使用時(shí)通過一個(gè)10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時(shí)選數(shù)據(jù)寄存器、低電平時(shí)選指令寄存器。第5腳:R/W為讀寫信號線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號,當(dāng)RS為高電平R/W為低電平時(shí)可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。1.5.3時(shí)序讀狀態(tài)輸入RS=L,R/W=H,E=H輸出D0—D7=狀態(tài)字寫指令輸入RS=L,R/W=L,D0—D7=指令碼,E=高脈沖輸出無讀數(shù)據(jù)輸入RS=H,R/W=H,E=H輸出D0—D7=數(shù)據(jù)寫數(shù)據(jù)輸入RS=H,R/W=L,D0—D7=數(shù)據(jù),E=高脈沖輸出無說明:LCD通過RS,RW,E三個(gè)控制線來控制顯示屏的讀寫命令,由于本實(shí)驗(yàn)中只需要寫命令與寫數(shù)據(jù)兩種方式,以下是兩種方式下三個(gè)引腳的電平狀態(tài)寫命令RSR/WDB0DB1DB2DB3DB4DB5DB6DB700數(shù)據(jù)寫數(shù)據(jù)RSR/WDB0DB1DB2DB3DB4DB5DB6DB710數(shù)據(jù)LED燈報(bào)警電路主要用于密碼輸入時(shí),顯示已輸入。當(dāng)密碼輸入正確則燈一直亮,輸入錯(cuò)誤則一直閃爍,提醒用戶。硬件連接硬件連接仿真圖如下所示:四.系統(tǒng)軟件設(shè)計(jì)系統(tǒng)的軟件設(shè)計(jì)采用匯編語言編碼。1.系統(tǒng)主程序系統(tǒng)主程序如下圖所示,用戶在使用系統(tǒng)的過程中可能在任何時(shí)刻按下任何按鍵,而程序必須對此作出正確響應(yīng)。開始舊密碼輸入初始化新密碼輸入存入緩存區(qū)檢測鍵盤是否有按鍵按下檢測鍵盤是否有按鍵按下NO再次輸入密碼重新輸入YES設(shè)置完返開始模式選擇模式選擇F 其他識別按鍵識別按鍵N手動清除密碼輸入燈提示YNreset密碼比較燈提示報(bào)警開門2.初始化及按鍵識別系統(tǒng)的初始化包括堆棧起始地址的設(shè)定,兩個(gè)定時(shí)/計(jì)數(shù)器的設(shè)定,液晶顯示模式的設(shè)定,密碼緩沖區(qū)的初始化,一些自定義數(shù)據(jù)空間的初始化。系統(tǒng)初始化并讀取密碼完成后,液晶顯"PasswordControl",提示用戶可以輸入密碼。此時(shí)程序即不斷測試按鍵,檢查是否有按鍵被按下。如果有,則進(jìn)行按鍵識別;如果沒有按鍵按下,或者按下的按鍵沒有被識別,R3賦值0FFH,并跳轉(zhuǎn)至按鍵測試。實(shí)際程序運(yùn)行時(shí),絕大部分時(shí)間都在測試按鍵,等待用戶輸入。開始按鍵測試子程序否系統(tǒng)初始化有鍵按下延時(shí)0.5S是讀取密碼按鍵識別子程序載入否否初始密碼讀取成功識別成功是是提示輸入密碼按鍵重定位矩陣鍵盤的操作實(shí)際上分為兩個(gè)任務(wù),一是檢測是否有按鍵按下,二是識別被按下的鍵是哪一個(gè),這里采用的是反轉(zhuǎn)掃描法,可以同時(shí)完成上述兩項(xiàng)任務(wù)。其基本思路是,先讓行線全輸出邏輯0,然后讀取列線,得到與按鍵橫向位置對應(yīng)的4位列碼。如果有鍵被按下,則對應(yīng)的列線必然會被讀回邏輯0;如果無鍵被按下,則讀取的列碼必定為全1.當(dāng)有鍵按下時(shí),先從列線上讀取列碼;再從列線輸出,然后再讀取行線,得到與按鍵縱向位置對應(yīng)的4位行碼。最后,將先后兩次讀到的行碼和列碼組合在一起,就構(gòu)成了可以準(zhǔn)確確定按鍵位置的位置碼。為了防止干擾或者誤操作,軟件中設(shè)置了延時(shí)抖動功能。鍵盤掃描主程序如下所示:主程序設(shè)置RC口為輸出設(shè)置RB口為輸入點(diǎn)亮RC口D7-D4在RAM中建立位置碼表調(diào)用鍵盤掃描子程序調(diào)用鍵值翻譯子程序N檢測有鍵按下否鍵值送顯D3-D0Y預(yù)置時(shí)間常數(shù)為13 預(yù)置時(shí)間常數(shù)為117調(diào)用延時(shí)子程序調(diào)用延時(shí)子程序再調(diào)鍵盤掃描子程序 令發(fā)光管D7-D4閃爍N N檢測有鍵按下否檢測按鍵釋放否 YY 鍵盤掃描子程序鍵值翻譯子程序啟用RB上拉電阻 表頭地址送FSR設(shè)置RB口出,RC口入 FSR指定單元內(nèi)容送W行線全輸出低電平 比較W和VALUE讀取列線的4位列碼 是否相等YN屏蔽掉高4為后送VALUE FSR遞增N有鍵按下否 已查到表尾了嗎NYY再設(shè)置RC口出,RB口入 將特殊值FFH送FSR 列碼從列線輸出 子程序返回讀取行線的4位行碼 FSR減表頭地址得鍵值屏蔽掉低4位 子程序返回組合到VALUE中 子程序返回送FFH到VALUE子程序返回3.開鎖處理首先LCD初始化,輸入密碼,密碼正確則使開鎖電路動作,繼電器得電,開鎖指示燈亮。開鎖程序流程圖如圖4.3所示。開鎖LCD初始化輸入密碼確認(rèn)程序N輸入密碼正確報(bào)警程序Y開鎖成功返回4.改密處理改密鍵的處理流程跟開鎖鍵類似,都需檢查密碼是否正確,錯(cuò)誤的話,提示重新輸入,只有輸入密碼正確才可以進(jìn)行改密。然后再按更改鍵,密碼更改程序被調(diào)用,進(jìn)而更改密碼,此過程,LCD都會顯示信息。開始否密碼正確密碼錯(cuò)誤重新輸入是否提示輸入新密碼再次輸入新密碼對比兩次輸入相同 是更改成功 5.液晶顯示子程序液晶顯示子程序在每次更新顯示內(nèi)容時(shí)都會被調(diào)用,其流程如圖4.5所示。每次更新顯示內(nèi)容前,需清顯示清空LCD原先的顯示內(nèi)容,清屏指令的指令碼為01H,即將P0口賦值01H,然后寫入指令寄存器IR。LCD1602要顯示的內(nèi)容是根據(jù)其控制器內(nèi)置的字符碼表,事先列出要顯示的ASCII字符串。每次送一個(gè)字符的ASCII碼入P0口,然后寫入數(shù)據(jù)寄存器DR,最后將字符地址加一,LCD1602會將寫入的ASCII碼對應(yīng)的字符依次顯示出來。由于顯示字符串的長度不盡相同,約定每串字符以00H結(jié)尾;程序檢測到字符碼為00H時(shí),即停止寫入,返回。LCD顯示的內(nèi)容在下次更新前會一直保持。開始清除顯示屏寫指令入IR字符地址如DPTR 地址+1否字符=00H?字符代碼送入P0口寫數(shù)據(jù)如DR是 寫結(jié)束返回五.仿真調(diào)試與測試程序開始就進(jìn)入main,執(zhí)行初始設(shè)置后,進(jìn)行LCD屏幕初始化。單片機(jī)就開始執(zhí)行鍵盤掃描是否有輸入階段,根據(jù)采集到的鍵盤信息,做出分析,進(jìn)行密碼重置或者輸入密碼比較。調(diào)試過程中我遇到了很多問題,也就是在這些問題中,逐漸學(xué)會了MPLAB的使用和用匯編語言編程。在此,列舉幾個(gè)調(diào)試過程中比較典型的問題。對RB引腳的理解不到位剛開始學(xué)單片機(jī)的時(shí)候,沒有學(xué)到家,翻看過的內(nèi)容,也只是記得一些皮毛,沒有做到較為深刻或者說是真正的理解。我們按照書上的做法,將RB0-RB7作為矩陣鍵盤的連接引腳,一整天下來發(fā)現(xiàn)結(jié)果不盡如人意。后來在葛老師的悉心提示下,用引腳RD4-RD7代替了引腳RB4-RB7,矩陣鍵盤得以成功輸入。這個(gè)小波折告訴我,知識的積累和掌握不能僅僅依靠課本,還要結(jié)合實(shí)踐進(jìn)一步理解,這樣才能加深印象,融會貫通,也只有這樣才能真正學(xué)以致用。2.無法完成矩陣鍵盤掃描在小學(xué)期初期階段,我和小組搭檔都在看老師推薦的2本書,進(jìn)行單片機(jī)與匯編語言的學(xué)習(xí)。通過實(shí)現(xiàn)矩陣鍵盤掃描來熟悉單片機(jī)的應(yīng)用。然而,在匯編程序、各種儀器都正確的情況下,矩陣鍵盤掃描結(jié)果并不理想。最后,我們決定重新搭一遍電路,問題得以解決。3.對LCD屏幕初始化不能完成剛開始學(xué)單片機(jī)以及匯編語言的時(shí)候,翻看過的內(nèi)容,也只是記得一點(diǎn)點(diǎn)皮毛,沒有真正的理解。特別是看手冊時(shí)看不懂,學(xué)校發(fā)的兩本書上并沒有LCD初始化的程序。所以請教已經(jīng)成功LCD初始化的同學(xué),同學(xué)告訴我,手冊上有初始化的過程,需要認(rèn)真看看??戳税胩?,在編程的過程中調(diào)試buildall時(shí),有出現(xiàn)了一些error,通過改正,buildall終于成功,顯示success,初始化程序完成。軟硬件綜合調(diào)試分模塊仿真與調(diào)試時(shí),沒有任何問題,均可實(shí)現(xiàn)理想的功能。然而綜合起來之后,出現(xiàn)了各種問題。在小學(xué)期尾聲階段,我們專注于綜合調(diào)試,解決各種瑣碎的問題,其間不乏各種挫折,甚至都有想過放棄,好在我們互相鼓勵(lì),并在老師的指導(dǎo)下完成了綜合調(diào)試。六.總結(jié)一、在小學(xué)期以前我對單片機(jī)沒有任何概念。在剛剛接觸到單片機(jī)時(shí),我可以說是一竅不通,甚至對于單片機(jī)究竟是什么也不能很精確地表達(dá)出來。經(jīng)過網(wǎng)上查詢以及了解,定下幾個(gè)想做的目標(biāo),經(jīng)過一個(gè)個(gè)篩選,最后確定我們做一個(gè)密碼鎖。二、兩周單片機(jī)的學(xué)習(xí)讓我增強(qiáng)了自信心。學(xué)習(xí)單片機(jī)的過程中,我也不是沒有懷疑過自己的能力,而是我在學(xué)習(xí)的過程中,從對單片機(jī)的一無所知,對繁瑣的匯編語言的畏懼,到一步一步進(jìn)行單步調(diào)試,再到能夠發(fā)現(xiàn)問題并經(jīng)過思考來解決問題,我感覺到自己在進(jìn)步,也感受到只要每天努力一點(diǎn)點(diǎn),希望就會再接近一點(diǎn)點(diǎn),離成功的距離也就會再接近一點(diǎn)點(diǎn),也就是這些一點(diǎn)點(diǎn)的努力和距離告訴我要繼續(xù)堅(jiān)持,告訴我要相信自己,因?yàn)橹挥邢嘈抛约?,不斷努力,才能?zhàn)勝自己的弱勢,得到自己想要的結(jié)果。三、通過本次設(shè)計(jì),我不僅鞏固和加深理論課上所學(xué)的知識,而且鍛煉了分析問題和解決問題的能力,遇到問題能夠冷靜理性應(yīng)對;同時(shí)培養(yǎng)了良好的工作習(xí)慣和科學(xué)素養(yǎng),為以后參加工作打下了一定的基礎(chǔ)。同時(shí)認(rèn)識到慢工出細(xì)活,過程是很重要的,只有耐心細(xì)心努力地去把握過程,才能得到理想的結(jié)果。除此之外,也學(xué)會了合理高效地與人合作。最后,在這里要特別感謝指導(dǎo)老師葛老師,小組搭檔以及實(shí)驗(yàn)室的同學(xué)們,如果沒有你們給予的各種幫助和鼓勵(lì),我是不可能憑借一己之力完成本實(shí)驗(yàn)的。七.參考文獻(xiàn)PIC單片機(jī)實(shí)用教程——基礎(chǔ)篇李學(xué)海北京航空航天大學(xué)出版社使用說明:的確是一本不可或缺的教材,本書列舉了很多實(shí)用的具有實(shí)戰(zhàn)意義的例子,單片機(jī)入門就是通過把這本書里的好例子一字一行敲進(jìn)電腦去來實(shí)現(xiàn)的。PIC單片機(jī)實(shí)用教程——提高篇李學(xué)海北京航空航天大學(xué)出版社使用說明:繼承了前面基礎(chǔ)篇的風(fēng)格,例子也具有實(shí)戰(zhàn)意義,主要講RA、TMR2的使用和CCP模塊的PWM脈寬調(diào)制功能。PIC

單片機(jī)實(shí)踐

李學(xué)海北京航空航天大學(xué)出版社PIC單片機(jī)實(shí)驗(yàn)教程李榮正,陳學(xué)軍編著北京航空航天大學(xué)出版社PIC

單片機(jī)常用模塊與綜合系統(tǒng)設(shè)計(jì)實(shí)例精講

夏彬彬,任明全,屈金學(xué)編著

電子工業(yè)出版社單片機(jī)應(yīng)用系統(tǒng)開發(fā)綜合實(shí)例

張萌,和湘,姜斌編著清華大學(xué)出版社八.附錄源程序:LISTP=16F877,R=DEC;定義器件,默認(rèn)為十進(jìn)制#include<p16f877.inc>TMR0EQU01H;定義定時(shí)器/計(jì)數(shù)器0寄存地址PCLEQU02H;定義程序指針寄存器STATUSEQU3H;定義狀態(tài)寄存器地址OPTION_REGEQU81H;定義選項(xiàng)寄存地址INTCONEQU0BH;定義中斷控制寄存地址PORTBEQU6H;定義端口B的數(shù)據(jù)寄存器地址PORTCEQU7H;定義端口C的數(shù)據(jù)寄存器地址PORTDEQU8H;定義端口D的數(shù)據(jù)寄存器地址PORTEEQU9H;定義端口E的數(shù)據(jù)寄存器地址;TRISAEQU85H;定義端口A的方向寄存器TRISBEQU86H;定義端口B的方向寄存器TRISCEQU87H;定義端口C的方向寄存器TRISDEQU88H;定義端口D的方向寄存器TRISEEQU89H;定義端口E的方向寄存器COUNTEQU20H;定義一個(gè)計(jì)數(shù)器變量寄存地址TMR0BEQUD'252';定義TMR0寄存地址初始值256-4=252)RP0EQU5H;定義狀態(tài)寄存器中的頁選位RP0T0IFEQU2;定義TMR0溢出標(biāo)志位的位地址FEQU1;定義目標(biāo)寄存器指示標(biāo)號COUNT1EQU21H;定義計(jì)數(shù)器狀態(tài)變量COUNT2EQU23H;COUNT3EQU24H;COUNT4EQU25H;COUNT5EQU27H;COUNT6EQU28H;VALEQU30H;定義鍵盤的狀態(tài)變量WORD_1EQU22H;初始密碼WORD_2EQU26HWORD_3EQU2AHWORD_4EQU2BHKEY_1EQU47H;用戶輸入密碼KEY_2EQU48HKEY_3EQU49HKEY_4EQU4AHNEQU52H;定義外循環(huán)變量MMEQU53H;內(nèi)循環(huán)變量NTEMPEQU29HTOTEQU60H;總的錯(cuò)誤次數(shù)WEQU0;定義傳送目標(biāo)寄存器為W的指示位FEQU1;定義傳送目標(biāo)寄存器為RAM的指示位T0IFEQU2;定義TMR0中斷標(biāo)志位的地址位T0IEEQU5;定義TMR0中斷矢能位的地址位INTEEQU4;定義外部中斷矢能位的地址位INTFEQU1;定義外部中斷標(biāo)志位的地址位RBIFEQU0;定義RB口變化中斷標(biāo)志位的位地址OPTION_TEMPEQU0A6H;在bank1定義選項(xiàng)寄存器的備份寄存器地址;**************************************************ORG000H; NOPMAINBSFSTATUS,RP0;文件寄存到BANK1MOVLW00H;將端口C的方向控制字先送到WMOVWFTRISC;然后再轉(zhuǎn)送到端口C的方向寄存器MOVLW0FFH;將端口B的方向控制字先送到WMOVWFTRISB;然后再轉(zhuǎn)送到端口B的方向寄存器CLRFTRISD;CLRFTRISE;BCFSTATUS,RP0;恢復(fù)到文件寄存器BANK0CLRFPORTC;端口寄存器清0MOVLW31H;定義初始密碼MOVWFWORD_1;1MOVLW32HMOVWFWORD_2;2MOVLW33HMOVWFWORD_3;3MOVLW34HMOVWFWORD_4;4FIVE MOVLWD'5' MOVWFTOT;初始化最大錯(cuò)誤次數(shù) ;************************************************INITIAL MOVLWD'16';MOVWFCOUNT;初始化count為16DELAY16MS;延時(shí)16msCALLDELAY1MS;DECFSZCOUNT,1;(1/2)count送count并判斷結(jié)果是否為0?;是0,跳出循環(huán),否循環(huán)回去GOTODELAY16MS;MOVLW38H ;將38h送到wMOVWFPORTD;將38h送到portdMOVLW02H ;將02h送到wMOVWFPORTE;將02h送到porte,寫數(shù)據(jù)BCFPORTE,1;將porte的第一個(gè)位置清0MOVLWD'5';將5送到wMOVWFCOUNT;將count賦值為5DELAY5MS;延時(shí)5msCALLDELAY1MS;DECFSZCOUNT,1;GOTODELAY5MS;MOVLWB'00111000';將38h送到wMOVWFPORTD;將38h送到potdMOVLWB'00000010';將02h送到wMOVWFPORTE;將02h送到porte,寫數(shù)據(jù)BCFPORTE,1;將porte的第一個(gè)位置清0MOVLWD'3';MOVWFCOUNT;DELAY120US;延時(shí)120usCALLDELAY40US;DECFSZCOUNT,1;GOTODELAY120US;MOVLWB'00111000';MOVWFPORTD;MOVLWB'00000010';MOVWFPORTE;BCFPORTE,1;;*****************************************************************CALLDELAY40US;MOVLWB'00111000';MOVWFPORTD;MOVLWB'00000010';MOVWFPORTE;BCFPORTE,1;CALLDELAY40US;MOVLWB'00001000';將08h送到w,關(guān)顯示MOVWFPORTD;將o8h送到portdMOVLWB'00000010';將02h送到wMOVWFPORTE;將02h送到porteBCFPORTE,1;將porte的第一個(gè)位置清0CALLDELAY40US;MOVLWB'00000001';將01h送到w,清屏MOVWFPORTD;將o1h送到portdMOVLWB'00000010';MOVWFPORTE;將02h送到porteBCFPORTE,1;將porte的第一個(gè)位置清0CALLDELAY1MS;MOVLWD'16';MOVWFCOUNT;將count設(shè)置為16DELAY640US;延時(shí)640usCALLDELAY40US;DECFSZCOUNT,1;GOTODELAY640US;MOVLWB'00000110';將06h送到w,設(shè)置輸入方式MOVWFPORTD;MOVLWB'00000010';MOVWFPORTE;BCFPORTE,1;CALLDELAY40US;MOVLWB'00001101';將0DH送到w,*****MOVWFPORTD;將0DH送到portdMOVLWB'00000010';MOVWFPORTE;將02h送到porteBCFPORTE,1;將porte的第一個(gè)位置清0CALLDELAY40US;CALLPASSWORD;BSFPORTC,4;************************************START CALLKEYDOWN XORLW46H BTFSCSTATUS,2 GOTOSETS MOVFTEMP,0 MOVWFKEY_1 GOTONUM2;****************************************************SETSCALLDELAY40US;MOVLWB'00000001';將0DH送到w,*****MOVWFPORTD;將0DH送到portdMOVLW02H;MOVWFPORTE;將02h送到porteBCFPORTE,1CALLOLDCALLKEYDOWNMOVWFKEY_1CALLKEYDOWNMOVWFKEY_2CALLKEYDOWNMOVWFKEY_3CALLKEYDOWNMOVWFKEY_4MOVFKEY_1,0XORWFWORD_1,0;第一位密碼比較BTFSSSTATUS,2;相同,則比較第二位GOTOWARNMOVFKEY_2,0XORWFWORD_2,0;第一位密碼比較BTFSSSTATUS,2;相同,則比較第二位GOTOWARN MOVFKEY_3,0XORWFWORD_3,0;第一位密碼比較BTFSSSTATUS,2;相同,則比較第二位GOTOWARNMOVFKEY_4,0XORWFWORD_4,0;第一位密碼比較BTFSSSTATUS,2;相同,則比較第二位GOTOWARN;不同,則警告CALLDELAY40US;MOVLW01H; 將0DH送到w,*****MOVWFPORTD;將0DH送到portdMOVLW02H;MOVWFPORTE;將02h送到porteBCFPORTE,1 CALLNEW CALLKEYDOWNMOVWFWORD_1CALLKEYDOWNMOVWFWORD_2CALLKEYDOWNMOVWFWORD_3CALLKEYDOWNMOVWFWORD_4 CALLDELAY40US;MOVLW01H;將0DH送到w,*****MOVWFPORTD;將0DH送到portdMOVLW02H;MOVWFPORTE;將02h送到porteBCFPORTE,1 CALLSUCCESS MOVLW05H;將5送到wMOVWFCOUNT;將count賦值為5 DELAY800MS;延時(shí)1msCALLDELAY100MS;DECFSZCOUNT,1;GOTODELAY800MS; GOTOFIVE;************************************NUM1CALLKEYDOWNMOVWFKEY_1NUM2CALLKEYDOWNMOVWFKEY_2NUM3CALLKEYDOWNMOVWFKEY_3NUM4CALLKEYDOWNMOVWFKEY_4;-------------------------------------;****************密碼比較*********************************************COMP1MOVFKEY_1,0XORWFWORD_1,0;第一位密碼比較BTFSSSTATUS,2;相同,則比較第二位GOTOWARN;-----------------------------------------COMP2MOVFKEY_2,0XORWFWORD_2,0;第一位密碼比較BTFSSSTATUS,2;相同,則比較第二位GOTOWARN;--------------------------------------COMP3MOVFKEY_3,0XORWFWORD_3,0;第一位密碼比較BTFSSSTATUS,2;相同,則比較第二位GOTOWARN;---------------------------------------------COMP4MOVFKEY_4,0XORWFWORD_4,0;第一位密碼比較BTFSCSTATUS,2;相同,則比較第二位GOTOALLOWED;不同,則警告;**************警告*********************************WARN;顯示wrong,again;第三個(gè)燈閃爍幾下MOVLW0FH;MOVWFPORTCCALLDELAY100MS;閃爍間隔0.3sCALLDELAY100MS CALLDELAY100MSMOVLW00H;MOVWFPORTCCALLDELAY100MSMOVLW0FH;MOVWFPORTCCALLDELAY100MS;閃爍間隔0.3sCALLDELAY100MS CALLDELAY100MSMOVLW00H;MOVWFPORTCCALLDELAY100MS;MOVLW0FH;MOVWFPORTCCALLDELAY100MS;閃爍間隔0.3sCALLDELAY100MS CALLDELAY100MSMOVLW00H;MOVWFPORTC DECFSZTOT,1;TOT減一GOTORESET CALLFIVETIME GOTOFIVE ;***************亮燈(開鎖)*************************************ALLOWEDMOVLW0FH;燈亮MOVWFPORTC;--------------------------------------------JIDIANQI MOVLW80H MOVWFPORTB;--------------------------------------------OKMOVLWB'11000000';將01h送到w,清屏MOVWFPORTD;將o1h送到portdMOVLWB'00000010';MOVWFPORTE;將00H送到porteBCFPORTE,1MOVLWB'01001000';MOVWFPORTDCALLENABLECALLDELAY1MSMOVLWB'01001111';OMOVWFPORTDCALLENABLECALLDELAY1MSMOVLWB'01001011';KMOVWFPORTDCALLENABLECALLDELAY1MSSTOPGOTOSTOP;********************************************************************KEYDOWNCLRFPORTD;將PORTD清零MOVFPORTB,0;ANDLW0FH;將0fh與w寄存器內(nèi)容相與,結(jié)果存入wXORLW0FHBTFSCSTATUS,2;Z=1表明無按鍵按下,循環(huán)檢測GOTOKEYDOWNBCFSTATUS,0COMFPORTDCALLTRANSLATEMOVFTEMP,0 RETURN;*****************查表***************************CONVERT;查表程序ADDWFPCL,1;偏移量與pc相加TABLENOP;顯示碼,下同RETLW46H ;FRETLW45H ;ERETLW44H ;DRETLW43H ;CRETLW42H ;BRETLW41H ;ARETLW30H ;0RETLW39H ;9RETLW38H;8RETLW37H;7RETLW36H;6RETLW35H;5RETLW34H;4RETLW33H;3RETLW32H;2RETLW31H;1RETLW0FFH;黑方塊;*****************第二次檢測按鍵********************************TRANSLATE RRFPORTD,1;對鍵盤進(jìn)行列掃描,確定鍵值,高四位和低四位相加得valueMOVFPORTB,0ANDLW0FHXORLW0FHBTFSCSTATUS,2GOTOTRANSLATEMOVFPORTD,0ANDLW0F0HXORLW0F0HMOVWFVALMOVFPORTB,0ANDLW0FHXORLW0FHADDWFVAL,1CALLKEYUPCALLDELAY1MSRETURN;****************延時(shí)*****************************DELAY1MSMOVLWD'100';延遲1ms程序MOVWFCOUNT1;LOOP1MSNOPNOPNOPNOPNOPNOPNOPDECFSZCOUNT1,1;GOTOLOOP1MS;RETURN;********************************************DELAY40USMOVLWD'5';延遲40us程序MOVWFCOUNT2;LOOP40USNOPNOPNOPNOPNOPDECFSZCOUNT2,1;GOTOLOOP40US;NOPNOPRETURN;***************************************************KEYUPCLRFPORTD;檢測是否按鍵已經(jīng)松開,根據(jù)value及鍵盤的行列確定按下的鍵盤的鍵值MOVFPORTB,0ANDLW0FHXORLW0FHBTFSSSTATUS,2GOTOKEYUPCALLDELAY1MSMOVFPORTB,0ANDLW0FHXORLW0FHBTFSSSTATUS,2GOTOKEYUPCLRWBTFSCVAL,0ADDLW1BTFSCVAL,1ADDLW2BTFSCVAL,2ADDLW3BTFSCVAL,3ADDLW4BTFSCVAL,4ADDLW0BTFSCVAL,5ADDLW4BTFSCVAL,6ADDLW8BTFSCVAL,7ADDLWD'12'CALLCONVERTMOVWFTEMPGOTODISPLAYMOVLW80H;第八個(gè)燈亮MOVWFPORTCRETURN;******************輸入密碼時(shí)顯示******************************DISPLAYMOVLW01HMOVWFPORTC;第一個(gè)燈亮CALLDELAY100MSMOVLW00H;MOVWFPORTCMOVLW2AHMOVWFPORTD;顯示*MOVLW03HMOVWFPORTEBCFPORTE,1;將porte第一個(gè)位置清0CALLDELAY40US;RETURN;*************************************************PASSWORD;輸出password:MOVLW50H;PMOVWFPORTDCALLENABLECALLDELAY1MSMOVLW41H;AMOVWFPORTDCALLENABLECALLDELAY1MSMOVLW53H;SMOVWFPORTDCALLENABLECALLDELAY1MSMOVLW53H;SMOVWFPORTDCALLENABLECALLDELAY1MSMOVLW57H;WMOVWFPORTDCALLENABLECALLDELAY1MSMOVLW4FH;OMOVWFPORTDCALLENABLECALLDELAY1MSMOVLW52H;RMOVWFPORTDCALLENABLECALLDELAY1MSMOVLW44H;DMOVWFPORTDCALLENABLECAL

溫馨提示

  • 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

提交評論