湖州师范学院求真学院课程设计总结报告课程名称单片机系统课程设计设计题目保险箱电子密码锁的设计专业班级姓名学号指导教师报告成绩求真学院信息与工程系二〇一〇年七月三日《单片机系统课程设计》任务书一、课题名称基于单片机电子密码锁的设计制作二、设计基本要求基本功能:1、能通过正确密码输入开锁,并且开锁动作由灯光状态提示。
2、输入错误密码启动声光报警功能。
3、实现手动上锁功能。
扩展功能:1、密码输入错误连续三次,进行长报警并锁定键盘。
2、修改密码功能3、EEPROM断电存储功能。
三、设计报告设计报告要求:(包含以下内容)1、设计任务及分析2、设计硬件方案3、软件设计流程4、软件调试5、心得感想附:主要源程序代码《保险箱的电子密码锁设计》课程设计总结报告目录一、设计任及分析………………………………………………………………………二、设计硬件方案………………………………………………………………………三、设计软件流程………………………………………………………………………四、软件调试………………………………………………………………………….…五、心得感想.……………………………………………………………………………六、程序代码.…………………………………………………………………………参考文献…………………………………………………………………………. ………《保险箱的电子密码锁的设计》一、设计任务近年来,随着改革开放的深入发展,电子电器的飞速发展.人民的生活水平有了很大提高。
各种高档家电产品和贵重物品为许多家庭所拥有。
然而一些不法分子也是越来越多。
这点就是看到了大部分人防盗意识还不够强。
造成偷盗现象屡见不鲜。
因此,越来越多的居民家庭对财产安全问题十分担忧。
有报警功能的密码锁这时正为人们解决了不少问题.但是市场上的密码锁大部分都是用于一些大公司财政机构。
价格高昂,一般人们难以接受。
如果再设计和生产一种价格低廉、性能灵敏可靠的密码锁,必将在防盗和保证财产安全方面发挥更加有效的作用。
本次设计是基于STC89C51单片机和内部资源EEPROM来实现电子密码锁的各种功能,其中主要有以下几个模块:1、矩阵键盘模块:(1)基本的数字键0~9;(2)撤销键:当输入密码有误时,可以按撤销键删除错误的数字;(3)确认键:当密码输入完毕后,按确认键执行开锁判断;(4)密码修改键:在开锁状态下,按此键进行修改密码;(5)上锁键;锁上电子密码锁,处于关闭状态。
图如下:矩阵式(3*4)按键独立式按键(1)当有数字键按下时,显示器的最右端显示无效字符“—”,按一下亮一下。
(2)右边1盏LED指示灯亮,表示开锁成功;8盏LED只是灯全亮,表示开锁未成功。
LED图如下:3、报警模块:当输入密码错误次数超过3次,启动蜂鸣器和指示灯(红)进行报警。
并且将锁定键盘N分钟(N可以视情况修改),在此期间不允许键入当密码输入正确,单片机控制继电器执行开锁机制。
T10T11D5GNDR13.3K电磁锁C24VC C来自微控制器信号D6密码锁开锁机构电路图实验电路图:图中的用LCD1602代替LED8段数码管和8盏LED 指示灯。
二、设计硬件方案1、晶振电路设计:2、复位电路设计:3、键盘电路设计:由于本次设计的按键数目较多,所以采用矩阵式(3*4)的设计方法和两个独立式键盘接口对键盘电路进行设计(如图)。
行列式键盘与独立式键盘相比,可以节省很多接口。
利用扫描法来识别键盘有无键被按下可分两步:第一,识别键盘有无键按下。
首先把所有的列线置0电平,然后检查各行线电平是否都为高电平,如果不全为高电平,则说明有按键被按下,否则则说明无键被按下。
第二,识别出哪个按键被按下。
采用扫描法,在某一时刻置让一条列线处于低电平,其余所有列线处于高电平,检查各行线电平的变化,如果某行线电平为低电平,则可确定此行此列的交叉点出的按键被按下。
三、设计软件流程流程图:开始初始化Flag=3?键盘扫描处理程序四、软件调试所需软件1、伟福的编程,仿真,编译集成环境Wave6000:将汇编语言源程序编译成*.hex文件2、STC-ISP-V4.83下载器:将汇编语言源程序编译成的*.hex文件在线下载到STC单片机中Wave6000使用说明:(1)在“Wave6000”目录中的“BIN”子目录下,双击图标执行伟福软件跳出以下画面(2)第一次使用时须在工具栏中选择仿真器设置栏进行仿真器设置,选择你需要的仿真器、仿真头、CPU,并在使用伟福软件模拟器出打钩。
(3)在下图“模块文件”上点鼠标右键,在下拉菜单中选择“新建项目”,出现“加入模块文件”对话框,选择你已编译完成的汇编语言源程序“NO29.ASM”文件,并选择打开该文件,出现“加入包含文件”对话框,选择你已编译完成的汇编语言源程序“NO29.ASM”文件,并选择打开该文件,出现“保存项目”对话框,现在同一文件名“NO29”,不加文件名后缀,点保存。
(4)双击你已编好的汇编源程序点击工具栏的“项目”,并选择其中的“全部编译”,如左下侧信息栏中指出有错时,在你的源程序中改正错误后再选择“全部编译”直到没有错并生成NO29.hex文件。
STC-ISP-V4.83使用说明:(1)双击图标并出现下图画面:(2)选择你需要的单片机型号;(3)打开“NO29.hex”文件;(4)选择你的串行口(5)点击download/下载,即可实现自动下载编程。
五、心得感想通过本次单片机系统课程设计《保险箱电子密码锁的设计》使我在利用网络这个信息汇集的领域,通过检索、阅读,提高自己阅读文献的本领;对STC89C51单片机有了进一步的认识,对wave6000这个软件的应用也更加纯熟了。
另外,也使我们学习的《单片机原理与应用设计》中的汇编得到了应用,让我对汇编语言也有了更深一步的了解。
学校安排这次的课程设计也就是为了我们的做毕业设计打下基础,让我们熟悉毕业设计的工作流程,让我们尽可能的熟悉并运用好毕业设计所需的软件,以便我们在不也设计中得到更好的发挥。
六、程序代码FLAGKEY EQU 00HRIGHT EQU 01H KEYBUFF EQU 31H WORKFLAG EQU 30H ERRTIMES EQU 32HDEL_TIMES EQU 34HCODEINADDR EQU 3BHRIGCODE1 EQU 40H RIGCODE2 EQU 41H RIGCODE3 EQU 42H RIGCODE4 EQU 43H RIGCODE5 EQU 44HORG 0000HLJMP STARTORG 0100HSTART: MOV SP,#60HCLR RIGHTCLR FLAGKEYMOV WORKFLAG,#0MOV R0,#CODEINADDRMOV ERRTIMES,#3MOV RIGCODE1 ,#5MOV RIGCODE2 ,#5MOV RIGCODE3 ,#5MOV RIGCODE4 ,#5MOV RIGCODE5 ,#0FFH LOOP:MOV R7,WORKFLAGCJNE R7,#3,NEXT0AJMP LOOPNEXT0:LCALL KEYSCANDEALAJMP LOOPKEYSCANDEAL: LCALL SCANKEYJB FLAGKEY,KEYDEALRET KEYDEAL: CLR P3.2LCALL S_DELSETB P3.2MOV A,KEYBUFFCLR CSUBB A,#10JNC ENLCALL DIG_KEYAJMP EXITEN:MOV R7,KEYBUFFCJNE R7,#10,LOCKLCALL EN_KEYAJMP EXITLOCK:CJNE R7,#11,CLR1LCALL LOCK_KEYCLR1:MOV R7,KEYBUFFCJNE R7,#12,XCH1LCALL CLR_KEYAJMP EXITXCH1:MOV R7,KEYBUFFCJNE R7,#13,EXITLCALL XCH_KEYAJMP EXITEXIT: CLR FLAGKEYRETDIG_KEY: MOV R7,WORKFLAGCJNE R7,#0,NEXT2MOV A,KEYBUFFMOV @R0,AINC R0MOV DPTR,#DISPLAY_TABCLR P1.4MOVC A,@A+DPTRMOV P0,ALCALL S_DELSETB P1.4SETB P3.5NEXT2: RETEN_KEY: MOV R7,WORKFLAGCJNE R7,#0,EN_XCHMOV A,#0FFHMOV @R0,AMOV R0,#CODEINADDRLCALL CODECOMP1JNB RIGHT,ERRORCLR RIGHTMOV P0,#0F0HCLR P3.5MOV P1,#0F0HMOV WORKFLAG,#1MOV ERRTIMES,#3RETERROR:DJNZ ERRTIMES,ERR1MOV R7,WORKFLAGMOV R7,#3CLR P3.2MOV P0,#00HCLR P3.5MOV P1,#0F0HLCALL LL_DELSETB P3.2SETB P3.5MOV R7,#0MOV ERRTIMES,#3RETERR1: MOV P0,#00HCLR P3.5MOV P1,#0F0HLCALL SPEAKRETEN_XCH: CJNE R7,#2,EN_ENDSETB RS0SETB RS1MOV R0,#CODEINADDRMOV R1,#COMPCODE1MOV A,R1MOV A,@R0INC R0INC R1MOV DPTR,#DISPLAY_TABCLR P1.5MOVC A,@A+DPTRMOV P0,ASETB P3.5DJNZ INTIMES,EN2AJMP COMP2EN2:MOV R0,#CODEINADDRCOMP2: MOV R1,#COMPCODE1MOV R0,#CODEINADDR LOOPCOMP2: MOV A,@R0MOV B,@R1CJNE A,B,EN_XCHCJNE A,#0FFH,COMPLOOPMOV R0,#CODEINADDRMOV R1,#COMPCODE1 TIHUAN: MOV A,@R1MOV @R0, AINC R0INC R1CJNE A,#0FFH,TIHUANMOV WORKFLAG,#1MOV R0,#CODEINADDR EN_END:RETCOMPLOOP: INC R0INC R1AJMP LOOPCOMP2LOCK_KEY: CLR RIGHTMOV WORKFLAG,#0MOV R1,#CODEINADDRMOV @R1,#0FFHINC R1MOV @R1,#0FFHINC R1MOV @R1,#0FFHINC R1MOV @R1,#0FFHMOV R0,#CODEINADDRMOV P0,#0FHCLR P3.5MOV P1,#0F0HRETCLR_KEY: MOV R7,WORKFLAGCJNE R7,#0,CLR2MOV P1,#0F0HMOV R0,#CODEINADDRRETCLR2:CJNE R7,#2,CLR_ENDMOV P1,#0F0HMOV R0,#CODEINADDR CLR_END:RETXCH_KEY: MOV R7,WORKFLAGCJNE R7,#1,XCH_ENDMOV WORKFLAG,#2CLR P0.6CLR P3.5XCH_END:RETCODECOMP1: MOV R1,#CODEINADDRMOV A,RIGCODE1MOV B,@R1CJNE A,B,ERROR1MOV A,RIGCODE2INC R1MOV B,@R1CJNE A,B,ERROR1MOV A,RIGCODE3INC R1MOV B,@R1CJNE A,B,ERROR1MOV A,RIGCODE4INC R1MOV B,@R1CJNE A,B,ERROR1MOV A,RIGCODE5INC R1MOV B,@R1CJNE A,B,ERROR1OKCL: SETB RIGHTRETERROR1:CLR RIGHTRET;CODETAB: DB 5,5,5,5,0FFH;**** 键盘扫描子程序SCANKEY ***** ; 4*3键盘扫描子程序; 行接P2.0-P2.3,列接P2.4-P2.6; 调用该子程序扫描一遍键盘; 键盘如有按键,则标志位FLAG_KEY=1 ; 输入键盘码放入键盘存储器KEYBUFF ; 面板上键盘为1 2 3 4; 5 6 7 8; 9 0 A B;**************************** SCANKEY:SETB RS0CLR RS1MOV R3,#0F7HMOV R2,#00HL2: MOV A,R3MOV P2,AMOV A,P2MOV R4,ASETB CMOV R5,#03HRLC AL3: RLC AJNC KEYININC R2DJNZ R5,L3MOV A,R3SETB CRRC AMOV R3,AJC L2JB P3.3,L4MOV R2,#12MOV A,R2SETB FLAGKEYMOV KEYBUFF, AAJMP L5L4:JB P3.4,L5MOV R2,#13MOV A,R2SETB FLAGKEYMOV KEYBUFF, AL5:CLR RS0CLR RS1RET;------------------------------------------------- KEYIN:MOV R7,#60D2: MOV R6,#248DJNZ R6,$DJNZ R7,D2D3: MOV A,P2XRL A,R4JZ D3MOV A,R2MOV DPTR,#KEYSCAN_TABMOVC A,@A+DPTRSETB FLAGKEYMOV KEYBUFF, ACLR RS0CLR RS1RET;==================================SPEAK:MOV DEL_TIMES,#5SPK1: CPL P3.2LCALL L_DELDJNZ DEL_TIMES,SPK1SETB P3.2RET S_DEL:MOV R7,#200S_DEL1: MOV R6,#10S_DEL2: MOV R5,#10S_DEL3: DJNZ R5,S_DEL3DJNZ R6, S_DEL2DJNZ R7, S_DEL1RETLL_DEL: MOV R4,#50LL1: LCALL L_DELDJNZ R4, LL1RETL_DEL:MOV R7,#250L_DEL1: MOV R6,#50L_DEL2: MOV R5,#50L_DEL3: DJNZ R5, L_DEL3DJNZ R6, L_DEL2DJNZ R7, L_DEL1RET;================================== ; 键盘扫描码KEYSCAN_TAB:DB 04H,08H,0BHDB 03H,07H,0AHDB 02H,06H,00HDB 01H,05H,09H;-----------------------------------;********键盘扫描结束****************DISPLAY_TAB:DB 0F7H,0F7H,0F7H,0F7H,0F7H,0F7HDB 0F7H,0F7H,0F7H,0F7H,0F7H,0F7H参考文献[1]马忠梅单片机C程序设计[M],北京:北京航空航天大学出版社,2007[2]李广弟单片机基础[M],北京:北京航空航天大学出版社,2007[3]张洪润,兰清华,单片机应用技术教程[M],北京:清华大学出版社,1997[4]闵锐,徐勇,孙峥等.电子线路基础西安[M],西安电子科技大学出版社,2003[5] 李朝青.PC机及单片机数据通信技术[M].北京:北京航空航天大学出版社,2005[6] 张毅刚,彭喜元. 单片机原理与应用设计. 电子工业出版社.。