單片機課程設計報告_第1頁
單片機課程設計報告_第2頁
單片機課程設計報告_第3頁
單片機課程設計報告_第4頁
單片機課程設計報告_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

.PAGE.題目:基于51單片機的四位密碼鎖設計專業(yè):車輛工程班級: 機093-2姓名:王本江、王登志、王海亮、王曉輝、吳強指導教師:姜風國辯論日期:2012年6月10日目錄第1章緒論3第2章課程設計分析3第3章硬件電路設計43.1單片機最小系統(tǒng)43.2LED顯示電路設計53.3鍵盤電路設計6第4章系統(tǒng)軟件設計74.1軟件總體設計思路74.2各子程序的設計7第5章參考文獻15第6章心得體會11附錄12附錄A源程序清單17附錄B硬件原理圖23一、緒論電子密碼鎖是一種通過單片機來控制機械開關的閉合,完成開鎖、閉鎖任務的電子產(chǎn)品。它的種類很多,有簡易的電路產(chǎn)品,也有基于芯片的性價比擬高的產(chǎn)品?,F(xiàn)在應用較廣的電子密碼鎖是以芯片為核心,通過編程來實現(xiàn)的。其性能和平安性已大大超過了機械鎖。在平安技術防X領域,具有防盜報警功能的電子密碼鎖逐漸代替?zhèn)鹘y(tǒng)的機械式密碼鎖,克制了機械式密碼鎖密碼量少、平安性能差的缺點,使密碼鎖無論在技術上還是在性能上都大大提高一步。隨著大規(guī)模集成電路技術的開展,特別是單片機的問世,出現(xiàn)了帶微處理器的智能密碼鎖,它除具有電子密碼鎖的功能外,還引入了智能化管理、專家分析系統(tǒng)等功能,從而使密碼鎖具有很高的平安性、可靠性,應用日益廣泛。二、課程設計分析1、任務要求:1、密碼鎖由4X4鍵盤和4位數(shù)碼管組成。2、當輸入密碼時,只顯示"8.〞,當密碼位數(shù)輸入完畢按下確認鍵時,對輸入的密碼與設定的密碼進展比擬,假設密碼正確,那么門開,此處用LED發(fā)光二極管亮一秒鐘做為提示。假設密碼不正確,那么可以從新輸入密碼。如連續(xù)三次輸入錯誤,那么制止輸入。2、總體開發(fā)方案如下:通過討論,本課程設計可劃分為硬件局部與軟件局部,硬件局部主要分為以下幾個模塊:系統(tǒng)主控制模塊〔最小系統(tǒng)板〕,顯示模塊以及按鍵模塊,這些模塊都是通過單片機來控制的。硬件電路通過PROTEUS繪制,軟件局部主要是用KEIL編寫程序,實現(xiàn)各個模塊的功能,最后將KEIL編寫的程序通過PROTEUS仿真。3、系統(tǒng)總原理框圖如下:AT89CAT89C51單片機矩陣鍵盤矩陣鍵盤控制LED顯示電路單片機控制方案4、設計要實現(xiàn)以下的功能:①翻開電源后,顯示器顯示初始狀態(tài);②設置一個初始密碼,通電時只要輸入此密碼便可開鎖;③輸入密碼用矩形鍵盤,包括數(shù)字鍵和功能鍵:④設置"輸入〞鍵,在每次要輸入密碼要先按"輸入〞鍵,否那么無法輸入密碼,假設密碼與設定密碼一樣,提示正確信息,否那么提示錯誤信息,連續(xù)三次輸入密碼錯誤后,鎖住鍵盤一小時后才可以再次輸入密碼;⑤設置"確定〞鍵,用于輸完密碼鎖時識別密碼,再次按下確認鍵二極管閃一秒用來表示開鎖;⑥設置"取消〞鍵,按下時返回最初的狀態(tài)即點輸入按鍵前的狀態(tài);⑥設置"重填〞鍵,按下時,可以重新輸入密碼;⑦LED數(shù)碼管顯示是否輸入密碼及已輸入的密碼的位數(shù);三、系統(tǒng)硬件電路圖單片機最小系統(tǒng)主控芯片以及晶振電路,采用12MHZ晶振,一個機器周期為1us復位電路本設計中,采用P0口作為LED數(shù)據(jù)輸入端,P2口作為掃描端,P1外接4x4鍵盤。數(shù)碼管顯示電路本設計中采用動態(tài)顯示,數(shù)碼管顯示電路采用了1片74LS245芯片和0.1k限流電阻接P0口作為數(shù)據(jù)輸入端,PNP三極管加限流電阻接P2作為掃描端。74LS245引腳圖以及功能表:LED數(shù)碼管選用7SEG-MPX4-CA-BLUE的共陽極四位數(shù)碼管,引腳圖如下:3、4x4鍵盤的設計采用4x4矩陣式鍵盤,矩陣式鍵盤又稱為行列式鍵盤,是將I/O口線的一局部作為行線,另一局部作為列線,按鍵設置在行線和列線的穿插點上,這種設計減少鍵盤與單片機I/O口接線的數(shù)目。只需要N個行線和M個列線就可以實現(xiàn)N*M個鍵的操作。與P1口相連接。外接5v電源和5.1k的上拉電阻,保證鍵盤穩(wěn)定運行。軟件上采用100ms延時去抖。系統(tǒng)的軟件設計1、軟件設計思路電子密碼鎖工作的主要過程是LED數(shù)碼管提示開場輸入密碼,通過鍵盤輸入密碼,同時LED顯示密碼輸入情況,按下確認鍵后識別密碼的對與錯,并做出相應的處理。密碼的設定,原始密碼的存放地址為31H—34H,修改后的密碼存放地址為41H—43H。通電時,讓數(shù)碼管顯示4個"—〞,每次要輸入密碼要先進入輸入狀態(tài),初始的輸入狀態(tài)無顯示,否那么無法輸入密碼。還未輸完4位密碼時點確定、輸入鍵沒反響,如果按下取消鍵跳回初始狀態(tài),按下重填鍵返回輸入初始狀態(tài),輸滿4位,點確定,立即識別密碼。密碼正確顯示4個"P〞,再次按下確認鍵,外界的發(fā)光二極管導通閃爍1s表示開箱,然后跳回初始狀態(tài)。密碼不正確時,顯示4個"E〞,后跳回初始狀態(tài),連續(xù)三次輸入密碼錯誤后,系統(tǒng)鎖定,等待1h后才可在此輸入密碼,提高了系統(tǒng)的平安可靠性。2、初始密碼以及功能按鍵的定義:MM1DATA31HMM2DATA32HMM3DATA33HMM4DATA34HXEQU00HYEQU00HWEQU00HZEQU00HMOVMM1,#XMOVMM2,#YMOVMM3,#WMOVMM4,#Z;設定初始密碼為"0000〞MOVR7,#03H;設定允許連續(xù)輸入錯誤的次數(shù)MOV35H,#0AH;輸入鍵MOV36H,#0BH;確認鍵MOV37H,#0CH;取消鍵MOV38H,#0DH;返回鍵MOV39H,#0EH;無效鍵MOV3AH,#0FH;無效鍵矩陣鍵盤的掃描陣式鍵盤又稱為行列式鍵盤,是將I/O口線的一局部作為行線,另一局部作為列線,按鍵設置在行線和列線的穿插點上,如下圖。這種設計減少鍵盤與單片機I/O口接線的數(shù)目。只需要N個行線和M個列線就可以實現(xiàn)N*M個鍵的操作。行掃描法識別的原理先使輸出口輸出FEH〔首列掃描字〕,即使第0列為0,然后讀入行狀態(tài)判斷行線是否有低電平;如果沒有低電平,再使輸出口輸出FDH〔第二列掃描字〕。以此類推,當行線中有狀態(tài)為低電平時,那么找到閉合鍵。根據(jù)此時0電平所在的行號和列號得出閉合鍵的鍵號值,期計算公式為:閉合鍵的鍵號值=行首鍵號+列號2〕判斷閉合鍵是否釋放鍵閉合一次僅進展一次的鍵功能操作。等待按鍵釋放后去除抖動,再將鍵值送入累加器A中,然后執(zhí)行鍵功能操作具體程序如下:LINE DATA 47H ;按鍵行號ROW DATA 48H ;按鍵列號;以下為鍵盤掃描程序,計算鍵值并存入AKEY: MOVP1,#0F0H ;掃描行碼LIN1:JNBP1.0,LIN2;該行無鍵按下,掃描下一行LCALLDELAY100msJNBP1.0,LIN2MOVLINE,#00H;存行號LJMPRSCAN;掃描列,求列值LIN2:JNBP1.1,LIN3LCALLDELAY100msJNBP1.1,LIN3MOVLINE,#01H;存行號LJMPRSCANLIN3:JNBP1.2,LIN4LCALLDELAY100msJNBP1.2,LIN4MOVLINE,#02H;存行號LJMPRSCANLIN4:JNBP1.3,LIN1LCALLDELAY100msJNBP1.3,LIN1MOVLINE,#03H;存行號RSCAN: MOVP1,#0FH ;掃描列碼C1: JNB P1.4,C2 MOV ROW,#00H;存列號 LJMPCALCUC2: JNB P1.5,C3 MOV ROW,#01H;存列號LJMP CALCUC3: JNB P1.6,C4 MOV ROW,#02H;存列號LJMP CALCUC4: JNBP1.7,C1MOVROW,#03HNOPNOPCALCU:;計算鍵值MOVA,LINE MOV B,#04H;行值乘4+列值=鍵值MUL ABADD A,ROWCALL DELAY100MSRETLED數(shù)碼管顯示設計的是4位的密碼鎖,所以數(shù)碼管選用7SEG-MPX4-CA-BLUE〔共陽〕。⑴設置密碼鎖初的始狀態(tài)為"————〞如下列圖⑵在每次要輸入密碼要先按"輸入〞鍵,否那么無法輸入密碼,按下"輸入〞鍵時,不顯示,那么可以輸入密碼,如下列圖通過以下程序實現(xiàn):START:MOV P0,#0BFH ;沒有輸入時顯示"-" MOV P2,#0F0H ;4個非門都導通 CALL DELAY100MS CALL KEY ;判斷是否按下輸入密碼鍵,沒有按下返回主程序 CJNEA,35H,STARTMAIN: MOV P0,#0FFH ;沒有輸入時沒有顯示 MOV P2,#0F0H ;4個非門都導通 CALL DELAY100MS JMPFIRST⑶輸入密碼時,如果輸入的是功能鍵,沒反響,假設輸入的是數(shù)字鍵時,輸入1位、2位、3位、4位密碼時〔不管正確與否〕分別顯示如下列圖:通過以下程序實現(xiàn):;***********數(shù)據(jù)錄入階段*********FIRST: CALL KEY CJNE A,35H,Q11 ;判斷是否按下輸入,按下沒反響〔繼續(xù)掃描這位密碼〕 JMP FIRSTQ11: CJNE A,36H,Q12 ;判斷是否按下確定,按下沒反響〔繼續(xù)掃描這位密碼〕 JMP FIRSTQ12: CJNE A,37H,Q13 ;判斷是否按下取消,按下返回START JMP STARTQ13: CJNE A,38H,Q14 ;判斷是否按下重填,按下返回MAIN,重新輸入密碼 JMP MAINQ14: CJNE A,39H,Q15 ;判斷是否按下無效鍵,按下沒反響〔繼續(xù)掃描這位密碼) JMP FIRSTQ15: CJNE A,3AH,FIRST1 ;判斷是否按無效鍵,按下沒反響〔繼續(xù)掃描這位密碼) JMP FIRSTFIRST1:MOV 41H,A ;輸入的第一位密碼存41H MOV P0,#00H ;輸入一位時,顯示"8." MOV P2,#0FEH CALL DELAY100MSSECOND:CALL KEY CJNE A,35H,Q21 JMP SECONDQ21: CJNE A,36H,Q22 JMP SECONDQ22: CJNE A,37H,Q23 JMP STARTQ23: CJNE A,38H,Q24JMP MAINQ24: CJNE A,39H,Q25 JMP SECONDQ25: CJNE A,3AH,SECOND1 JMP SECONDSECOND1:MOV 42H,A ;第二位密碼存于42H MOV P0,#00H MOV P2,#0FCH ;顯示2個"8." CALL DELAY100MSTHIRD: CALL KEY CJNE A,35H,Q31 JMP THIRDQ31: CJNE A,36H,Q32 JMP THIRDQ32: CJNE A,37H,Q33 JMP STARTQ33: CJNE A,38H,Q34 JMP MAINQ34: CJNE A,39H,Q35 JMP THIRDQ35: CJNE A,3AH,THIRD1 JMP THIRDTHIRD1:MOV 43H,A ;第三位密碼存于43H MOV P0,#00H MOV P2,#0F8H ;顯示3個"8." CALL DELAY100MSFOURTH:CALL KEY CJNE A,35H,Q41 JMP FOURTHQ41: CJNE A,36H,Q42 JMP FOURTHQ42: CJNE A,37H,Q43 JMP STARTQ43: CJNE A,38H,Q44 JMP MAINQ44: CJNE A,39H,Q45 JMP FOURTHQ45: CJNE A,3AH,FOURTH1 JMP FOURTHFOURTH1:MOV 44H,A ;第四位密碼存于44H MOV P0,#00H MOV P2,#0F0H ;顯示4個"8." CALL DELAY100MS;********以上為輸入四位密碼,然后繼續(xù)掃描按鍵********FIFTH: CALL KEYQ51: CJNE A,35H,Q52 ;判斷是否按下輸入,按下沒反響〔繼續(xù)掃描這位密碼〕 JMP FIFTHQ52: CJNE A,37H,Q53 ;判斷是否按下取消 JMP STARTQ53: CJNE A,38H,Q54 ;判斷是否按下重填 JMP MAINQ54:CJNEA,39H,Q55;判斷是否按下無效鍵 JMPFIFTHQ55: CJNE A,3AH,Q56 ;判斷是否按下無效鍵 JMP FIFTHQ56: CJNE A,36H,FIFTH;判斷是否按下確定 JMP PR⑷密碼驗證階段以及顯示PR:MOVA,41H CJNEA,MM1,ERR MOVA,42H CJNEA,MM2,ERR MOVA,43H CJNEA,MM3,ERR MOVA,44H CJNEA,MM4,ERR JMPPASS;判斷密碼正確性ERR:MOVP0,#86HMOVP2,#0F0H ;顯示4個"E" CALLDELAY1sCALLDELAY1sDJNZR7,ERR1 MOVR7,#03H CALLDELAY1h;鎖定系統(tǒng)1h才可繼續(xù)輸入密碼 JMPSTARTERR1:JMPSTART;輸入錯誤次數(shù)小于三次時跳回初始狀態(tài)錯誤時顯示如下PASS:MOVP0,#8CH MOVP2,#0F0H ;顯示4個"P" MOVR7,#03H CALLKEY CJNEA,36H,PASS CLRP2.6;燈亮一秒 CALLDELAY1s SETBP2.6 JMPSTART正確時顯示如下:再次按下確認鍵,發(fā)光二極管亮1s,再次跳回初始狀態(tài)。整個系統(tǒng)的電路圖六、參考文獻王義軍,"單片機原理及應用習題與實驗指導書",中國電力;高偉,"AT89單片機原理及應用",國防工業(yè);蘭吉昌,"51單片機設計應用百例",機械工業(yè)X桂蘭,"單片機原理與應用",機械工業(yè)李海濤,"PIC單片機應用開發(fā)典型模塊",國防工業(yè)七、心得體會回憶起此次單片機課程設計,讓我感慨很多,從選題到定稿,從理論到實踐,在整整兩個星期的日子里,可以說是苦多于甜,但是可以學到很多很多的東西,同時不僅可以穩(wěn)固了以前所學過的知識,而且學到了很多書本上所沒有學到過的知識。兩周以來,整日埋頭于電路程序的設計,分析,組裝,繪制,仿真,總結以及打印材料等工作,。其實一開場真不知道該從何入手,短短幾天內,在各位教師的耐心知道和同學的幫助之下,開場在腦海里有了大致的模塊,就這樣整天埋在圖書館,面對電腦搜索資料,一塊一塊的電路慢慢拼成,于是又開場查找相關的資料,分析電路,根據(jù)自己的目的有效地編制程序,比照之下有進一步的完善,在形成電路大致模塊下又進一步盡可能的減小本錢,知道最終電路以自己最理想的形式出現(xiàn)。在本次設計的過程中,我發(fā)現(xiàn)很多的問題,單片機課程設計的重點就在于軟件算法的設計,需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我覺得寫好一個程序不是一件簡單的事情。通過這次實習,我真正學到了不少東西,真正體會到了理論聯(lián)系實際的重要性。課堂教學考慮到大多數(shù)同學的需求,主要強調根本知識,根本理論,根本方法,根本技能。而這次設計正是為我們提供了一個深入學習、探索的時機,成為課堂教學的有益補充。附錄〔源程序清單〕:MM1DATA31HMM2DATA32HMM3DATA33HMM4DATA34HLINE DATA 47H ;按鍵行號ROW DATA 48H ;按鍵列號XEQU00HYEQU00HWEQU00HZEQU00HMOVMM1,#XMOVMM2,#YMOVMM3,#WMOVMM4,#ZMOVR7,#03HMOV35H,#0AHMOV36H,#0BHMOV37H,#0CHMOV38H,#0DHMOV39H,#0EHMOV3AH,#0FH;***************主程序***************START:MOV P0,#0BFH ;沒有輸入時顯示"-" MOV P2,#0F0H ;4個非門都導通 CALL DELAY100MS CALL KEY ;判斷是否按下輸入密碼鍵,沒有按下返回主程序 CJNEA,35H,STARTMAIN: MOV P0,#0FFH ;沒有輸入時沒有顯示 MOV P2,#0F0H ;4個非門都導通 CALL DELAY100MS JMPFIRST;*******************以下為鍵盤掃描程序,計算鍵值并存入A*****************KEY: MOVP1,#0F0H ;掃描行碼LIN1:JNBP1.0,LIN2;該行無鍵按下,掃描下一行LCALLDELAY100msJNBP1.0,LIN2MOVLINE,#00H;存行號LJMPRSCAN;掃描列,求列值LIN2:JNBP1.1,LIN3LCALLDELAY100msJNBP1.1,LIN3MOVLINE,#01H;存行號LJMPRSCANLIN3:JNBP1.2,LIN4LCALLDELAY100msJNBP1.2,LIN4MOVLINE,#02H;存行號LJMPRSCANLIN4:JNBP1.3,LIN1LCALLDELAY100msJNBP1.3,LIN1MOVLINE,#03H;存行號RSCAN: MOVP1,#0FH ;掃描列碼C1: JNB P1.4,C2 MOV ROW,#00H;存列號 LJMPCALCUC2: JNB P1.5,C3 MOV ROW,#01H;存列號LJMP CALCUC3: JNB P1.6,C4 MOV ROW,#02H;存列號LJMP CALCU C4: JNBP1.7,C1MOVROW,#03HNOPNOPCALCU:;計算鍵值MOVA,LINE MOV B,#04H;行值乘4+列值=鍵值MUL ABADD A,ROWCALL DELAY100MSRET;***********數(shù)據(jù)錄入階段*********FIRST: CALL KEY CJNE A,35H,Q11 ;判斷是否按下輸入,按下沒反響〔繼續(xù)掃描這位密碼〕 JMP FIRSTQ11: CJNE A,36H,Q12 ;判斷是否按下確定,按下沒反響〔繼續(xù)掃描這位密碼〕 JMP FIRSTQ12: CJNE A,37H,Q13 ;判斷是否按下取消,按下返回START JMP STARTQ13: CJNE A,38H,Q14 ;判斷是否按下重填,按下返回MAIN,重新輸入密碼 JMP MAINQ14: CJNE A,39H,Q15 ;判斷是否按下無效鍵,按下沒反響〔繼續(xù)掃描這位密碼) JMP FIRSTQ15: CJNE A,3AH,FIRST1 ;判斷是否按無效鍵,按下沒反響〔繼續(xù)掃描這位密碼) JMP FIRSTFIRST1:MOV 41H,A ;輸入的第一位密碼存41H MOV P0,#00H ;輸入一位時,顯示"8." MOV P2,#0FEH CALL DELAY100MSSECOND:CALL KEY CJNE A,35H,Q21 JMP SECONDQ21: CJNE A,36H,Q22 JMP SECONDQ22: CJNE A,37H,Q23 JMP STARTQ23: CJNE A,38H,Q24 JMP MAINQ24: CJNE A,39H,Q25 JMP SECONDQ25: CJNE A,3AH,SECOND1 JMP SECONDSECOND1:MOV 42H,A ;第二位密碼存于42H MOV P0,#00H MOV P2,#0FCH ;顯示2個"8." CALL DELAY100MSTHIRD: CALL KEY CJNE A,35H,Q31 JMP THIRDQ31: CJNE A,36H,Q32 JMP THIRDQ32: CJNE A,37H,Q33 JMP STARTQ33: CJNE A,38H,Q34 JMP MAINQ34: CJNE A,39H,Q35 JMP THIRDQ35: CJNE A,3AH,THIRD1 JMP THIRDTHIRD1:MOV 43H,A ;第三位密碼存于43H MOV P0,#00H MOV P2,#0F8H ;顯示3個"8." CALL DELAY100MSFOURTH:CALL KEY CJNE A,35H,Q41 JMP FOURTHQ41: CJNE A,36H,Q42 JMP FOURTHQ42: CJNE A,37H,Q43 JMP STARTQ43: CJNE A,38H,Q44 JMP MAINQ44: CJNE A,39H,Q45 JMP FOURTHQ45: CJNE A,3AH,FOURTH1 JMP FOURTHFOURTH1:MOV 44H,A ;第四位密碼存于44H MOV P0,#00H MOV P2,#0F0H ;顯示4個"8." CALL DELAY100MSFIFTH: CALL KEYQ51: CJNE A,35H,Q52 ;判斷是否按下輸入,按下沒反響〔繼續(xù)掃描這位密碼〕 JMP FIFTHQ52: CJNE A,37H,Q53 ;判斷是否按下取消 JMP STARTQ53: CJNE A,38H,Q54 ;判斷是否按下重填 JMP

溫馨提示

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

評論

0/150

提交評論