单片机课程设计报告_第1页
单片机课程设计报告_第2页
单片机课程设计报告_第3页
单片机课程设计报告_第4页
单片机课程设计报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.PAGE.题目:基于51单片机的四位密码锁设计专业:车辆工程班级: 机093-2姓名:王本江、王登志、王海亮、王晓辉、吴强指导教师:姜风国辩论日期:2012年6月10日目录第1章绪论3第2章课程设计分析3第3章硬件电路设计43.1单片机最小系统43.2LED显示电路设计53.3键盘电路设计6第4章系统软件设计74.1软件总体设计思路74.2各子程序的设计7第5章参考文献15第6章心得体会11附录12附录A源程序清单17附录B硬件原理图23一、绪论电子密码锁是一种通过单片机来控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比拟高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和平安性已大大超过了机械锁。在平安技术防X领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克制了机械式密码锁密码量少、平安性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。随着大规模集成电路技术的开展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的平安性、可靠性,应用日益广泛。二、课程设计分析1、任务要求:1、密码锁由4X4键盘和4位数码管组成。2、当输入密码时,只显示"8.〞,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进展比拟,假设密码正确,那么门开,此处用LED发光二极管亮一秒钟做为提示。假设密码不正确,那么可以从新输入密码。如连续三次输入错误,那么制止输入。2、总体开发方案如下:通过讨论,本课程设计可划分为硬件局部与软件局部,硬件局部主要分为以下几个模块:系统主控制模块〔最小系统板〕,显示模块以及按键模块,这些模块都是通过单片机来控制的。硬件电路通过PROTEUS绘制,软件局部主要是用KEIL编写程序,实现各个模块的功能,最后将KEIL编写的程序通过PROTEUS仿真。3、系统总原理框图如下:AT89CAT89C51单片机矩阵键盘矩阵键盘控制LED显示电路单片机控制方案4、设计要实现以下的功能:①翻开电源后,显示器显示初始状态;②设置一个初始密码,通电时只要输入此密码便可开锁;③输入密码用矩形键盘,包括数字键和功能键:④设置"输入〞键,在每次要输入密码要先按"输入〞键,否那么无法输入密码,假设密码与设定密码一样,提示正确信息,否那么提示错误信息,连续三次输入密码错误后,锁住键盘一小时后才可以再次输入密码;⑤设置"确定〞键,用于输完密码锁时识别密码,再次按下确认键二极管闪一秒用来表示开锁;⑥设置"取消〞键,按下时返回最初的状态即点输入按键前的状态;⑥设置"重填〞键,按下时,可以重新输入密码;⑦LED数码管显示是否输入密码及已输入的密码的位数;三、系统硬件电路图单片机最小系统主控芯片以及晶振电路,采用12MHZ晶振,一个机器周期为1us复位电路本设计中,采用P0口作为LED数据输入端,P2口作为扫描端,P1外接4x4键盘。数码管显示电路本设计中采用动态显示,数码管显示电路采用了1片74LS245芯片和0.1k限流电阻接P0口作为数据输入端,PNP三极管加限流电阻接P2作为扫描端。74LS245引脚图以及功能表:LED数码管选用7SEG-MPX4-CA-BLUE的共阳极四位数码管,引脚图如下:3、4x4键盘的设计采用4x4矩阵式键盘,矩阵式键盘又称为行列式键盘,是将I/O口线的一局部作为行线,另一局部作为列线,按键设置在行线和列线的穿插点上,这种设计减少键盘与单片机I/O口接线的数目。只需要N个行线和M个列线就可以实现N*M个键的操作。与P1口相连接。外接5v电源和5.1k的上拉电阻,保证键盘稳定运行。软件上采用100ms延时去抖。系统的软件设计1、软件设计思路电子密码锁工作的主要过程是LED数码管提示开场输入密码,通过键盘输入密码,同时LED显示密码输入情况,按下确认键后识别密码的对与错,并做出相应的处理。密码的设定,原始密码的存放地址为31H—34H,修改后的密码存放地址为41H—43H。通电时,让数码管显示4个"—〞,每次要输入密码要先进入输入状态,初始的输入状态无显示,否那么无法输入密码。还未输完4位密码时点确定、输入键没反响,如果按下取消键跳回初始状态,按下重填键返回输入初始状态,输满4位,点确定,立即识别密码。密码正确显示4个"P〞,再次按下确认键,外界的发光二极管导通闪烁1s表示开箱,然后跳回初始状态。密码不正确时,显示4个"E〞,后跳回初始状态,连续三次输入密码错误后,系统锁定,等待1h后才可在此输入密码,提高了系统的平安可靠性。2、初始密码以及功能按键的定义:MM1DATA31HMM2DATA32HMM3DATA33HMM4DATA34HXEQU00HYEQU00HWEQU00HZEQU00HMOVMM1,#XMOVMM2,#YMOVMM3,#WMOVMM4,#Z;设定初始密码为"0000〞MOVR7,#03H;设定允许连续输入错误的次数MOV35H,#0AH;输入键MOV36H,#0BH;确认键MOV37H,#0CH;取消键MOV38H,#0DH;返回键MOV39H,#0EH;无效键MOV3AH,#0FH;无效键矩阵键盘的扫描阵式键盘又称为行列式键盘,是将I/O口线的一局部作为行线,另一局部作为列线,按键设置在行线和列线的穿插点上,如下图。这种设计减少键盘与单片机I/O口接线的数目。只需要N个行线和M个列线就可以实现N*M个键的操作。行扫描法识别的原理先使输出口输出FEH〔首列扫描字〕,即使第0列为0,然后读入行状态判断行线是否有低电平;如果没有低电平,再使输出口输出FDH〔第二列扫描字〕。以此类推,当行线中有状态为低电平时,那么找到闭合键。根据此时0电平所在的行号和列号得出闭合键的键号值,期计算公式为:闭合键的键号值=行首键号+列号2〕判断闭合键是否释放键闭合一次仅进展一次的键功能操作。等待按键释放后去除抖动,再将键值送入累加器A中,然后执行键功能操作具体程序如下: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数码管显示设计的是4位的密码锁,所以数码管选用7SEG-MPX4-CA-BLUE〔共阳〕。⑴设置密码锁初的始状态为"————〞如下列图⑵在每次要输入密码要先按"输入〞键,否那么无法输入密码,按下"输入〞键时,不显示,那么可以输入密码,如下列图通过以下程序实现: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⑶输入密码时,如果输入的是功能键,没反响,假设输入的是数字键时,输入1位、2位、3位、4位密码时〔不管正确与否〕分别显示如下列图:通过以下程序实现:;***********数据录入阶段*********FIRST: CALL KEY CJNE A,35H,Q11 ;判断是否按下输入,按下没反响〔继续扫描这位密码〕 JMP FIRSTQ11: CJNE A,36H,Q12 ;判断是否按下确定,按下没反响〔继续扫描这位密码〕 JMP FIRSTQ12: CJNE A,37H,Q13 ;判断是否按下取消,按下返回START JMP STARTQ13: CJNE A,38H,Q14 ;判断是否按下重填,按下返回MAIN,重新输入密码 JMP MAINQ14: CJNE A,39H,Q15 ;判断是否按下无效键,按下没反响〔继续扫描这位密码) JMP FIRSTQ15: CJNE A,3AH,FIRST1 ;判断是否按无效键,按下没反响〔继续扫描这位密码) 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;********以上为输入四位密码,然后继续扫描按键********FIFTH: CALL KEYQ51: CJNE A,35H,Q52 ;判断是否按下输入,按下没反响〔继续扫描这位密码〕 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;锁定系统1h才可继续输入密码 JMPSTARTERR1:JMPSTART;输入错误次数小于三次时跳回初始状态错误时显示如下PASS:MOVP0,#8CH MOVP2,#0F0H ;显示4个"P" MOVR7,#03H CALLKEY CJNEA,36H,PASS CLRP2.6;灯亮一秒 CALLDELAY1s SETBP2.6 JMPSTART正确时显示如下:再次按下确认键,发光二极管亮1s,再次跳回初始状态。整个系统的电路图六、参考文献王义军,"单片机原理及应用习题与实验指导书",中国电力;高伟,"AT89单片机原理及应用",国防工业;兰吉昌,"51单片机设计应用百例",机械工业X桂兰,"单片机原理与应用",机械工业李海涛,"PIC单片机应用开发典型模块",国防工业七、心得体会回忆起此次单片机课程设计,让我感慨很多,从选题到定稿,从理论到实践,在整整两个星期的日子里,可以说是苦多于甜,但是可以学到很多很多的东西,同时不仅可以稳固了以前所学过的知识,而且学到了很多书本上所没有学到过的知识。两周以来,整日埋头于电路程序的设计,分析,组装,绘制,仿真,总结以及打印材料等工作,。其实一开场真不知道该从何入手,短短几天内,在各位教师的耐心知道和同学的帮助之下,开场在脑海里有了大致的模块,就这样整天埋在图书馆,面对电脑搜索资料,一块一块的电路慢慢拼成,于是又开场查找相关的资料,分析电路,根据自己的目的有效地编制程序,比照之下有进一步的完善,在形成电路大致模块下又进一步尽可能的减小本钱,知道最终电路以自己最理想的形式出现。在本次设计的过程中,我发现很多的问题,单片机课程设计的重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉得写好一个程序不是一件简单的事情。通过这次实习,我真正学到了不少东西,真正体会到了理论联系实际的重要性。课堂教学考虑到大多数同学的需求,主要强调根本知识,根本理论,根本方法,根本技能。而这次设计正是为我们提供了一个深入学习、探索的时机,成为课堂教学的有益补充。附录〔源程序清单〕: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;***********数据录入阶段*********FIRST: CALL KEY CJNE A,35H,Q11 ;判断是否按下输入,按下没反响〔继续扫描这位密码〕 JMP FIRSTQ11: CJNE A,36H,Q12 ;判断是否按下确定,按下没反响〔继续扫描这位密码〕 JMP FIRSTQ12: CJNE A,37H,Q13 ;判断是否按下取消,按下返回START JMP STARTQ13: CJNE A,38H,Q14 ;判断是否按下重填,按下返回MAIN,重新输入密码 JMP MAINQ14: CJNE A,39H,Q15 ;判断是否按下无效键,按下没反响〔继续扫描这位密码) JMP FIRSTQ15: CJNE A,3AH,FIRST1 ;判断是否按无效键,按下没反响〔继续扫描这位密码) 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 ;判断是否按下输入,按下没反响〔继续扫描这位密码〕 JMP FIFTHQ52: CJNE A,37H,Q53 ;判断是否按下取消 JMP STARTQ53: CJNE A,38H,Q54 ;判断是否按下重填 JMP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论