单片机原理及应用课程设计-电子密码锁.doc

上传人:李主任 文档编号:3262445 上传时间:2019-08-06 格式:DOC 页数:15 大小:360.53KB
返回 下载 相关 举报
单片机原理及应用课程设计-电子密码锁.doc_第1页
第1页 / 共15页
单片机原理及应用课程设计-电子密码锁.doc_第2页
第2页 / 共15页
单片机原理及应用课程设计-电子密码锁.doc_第3页
第3页 / 共15页
单片机原理及应用课程设计-电子密码锁.doc_第4页
第4页 / 共15页
单片机原理及应用课程设计-电子密码锁.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《单片机原理及应用课程设计-电子密码锁.doc》由会员分享,可在线阅读,更多相关《单片机原理及应用课程设计-电子密码锁.doc(15页珍藏版)》请在三一文库上搜索。

1、课 程 设 计课 程 单片机原理及应用课程设计 题 目 电子密码锁设计 院 系 电子科学学院 专业班级 学生姓名 学生学号 指导教师 2011年3月 18 日课程设计任务书课程 单片机原理及应用课程设计题目 电子密码锁设计 专业班级 姓名 学号 一、设计目的:训练学生综合运用己学课程的基本知识,独立进行单片机应用技术开发工作,掌握单片机程序设计、调试,应用电路设计、分析及调试检测。二、设计要求:1. 应用MCS-51单片机设计电子密码锁电路;2. 电子密码锁电路选用8位控制,连续三次输入错误密码,密码锁输出报警信号,输入正确密码解除报警;3. 硬件设计根据设计的任务选定合适的单片机,根据控制对

2、象设计接口电路。设计的单元电路必须有工作原理,器件的作用,分析和计算过程;4. 软件设计根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;5. 原理图设计根据所确定的设计电路,利用Protel等有关工具软件绘制电路原理图、PCB板图、提供元器件清单。三、参考资料:1 单片微型计算机与接口技术,李群芳、黄建编著,电子工业出版社;2 单片机原理及应用,张毅刚编著,高等教育出版社;3 51系列单片机及C51程序设计,王建校,杨建国等编著,科学出版社;4 单片机原理及接口技术,李朝青编著,北京航空航天大学出版社;完成期限 2011.3.142011.3.18 指导教师

3、 专业负责人 2011年 3 月 13 日一、概述电子锁应用: 目前人们对与家庭的安全普遍都是使用防盗门,由于每个防盗门都需要钥匙进行开锁,对于房钥匙的管理,总是令人头疼。又要保证要用的人有钥匙,又要担心钥匙的丢失。由于管理钥匙的原因,经常人们因为丢失钥匙而造成不可估量的经济损失。如何更好的对家庭安全进行管理呢?只有对目前防盗门的锁进行改变,将目前的机械锁改变为电子锁。通过这种改进,除了可以方便的进出门,还能够加强房间的安全,方便自己允许的人进入。设计思路: 通过单片机管理外部输入的密码与内部设定密码的对应与否决定是否开关门。主要分成下面几个部分: 外部输入系统 门锁系统 AT89c51主要器

4、件包括:AT89c51、lcd1602、12M晶振、光电耦合器(扩展)、电阻若干、电容若干。主要模块:单片机最小系统、按键输入系统、lcd显示系统、光电耦合控锁系统(扩展)二、电路设计最小系统: 主要包括晶振电路与复位电路。按键系统: 主要包括按键电路与74ls11电路LCD显示系统:主要包括LCD显示电路与电位器调节偏压电路仿真电路图:三、器件评价AT89c51:AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含8k字节Flash可擦写存储器(PEROM)。AT89C52器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准80C51和80C52指令集及引脚布局,AT89

5、C52的片内Flash允许程序存储器通过传统编程器反复编程。由于芯片内集成了通用8位中央处理器和Flash存储单元,功能强大的微处理器ATMEL AT89C52可为许多嵌入式控制应用系统提供高度灵活、高性价比的解决方案。 AT89C51具有如下特点:8k Bytes Flash存储器、256 bytes的RAM、32个I/O口、3个16位定时/计数器,6个中断优先级2层中断嵌套中断、1个全双工串行通信口、片内时钟振荡器。 此外,AT89C52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。AT89C52在空闲模式下,CPU暂停工作,而RAM、定时/计数器、串行口和外中断系统可继续工作,

6、掉电模式冻结振荡器并保存RAM的数据,停止芯片其它功能直至硬件复位。LCD1602:1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。 (1602显示地址)74LS11:74LS11是三与门芯片,一共有14个引脚,一共可以有3个输出,引脚图如下:四、程序设计LCM_RS BIT P3.7 ;/定义接口LCM_RW BIT P3.

7、6LCM_E BIT P3.5LCM_DATA EQU P1 ;数据接口JIAN EQU P2 ;按键接口ORG 0000H ;从0000H处开始SJMP MAIN ;跳转到MAIN处ORG 0003H ;外部0中断LJMP JIANWEIORG 0030H ;主程序从0030H处开始MAIN:MOV SP,#70H ;初始化堆栈指针指向70HSETB IE0SETB EX0MOV R1,#00HMOV R2,#00HMOV R3,#00HMOV R4,#00HMOV R5,#00HMOV R6,#00HMOV IE,#81HLCALL INITIAL ;调用启动LCM子程序进行初始化LCAL

8、L CLS ;调用清除LCM子程序MOV A,#80H ;向A送立即数80H设定显示地址为第一行第一列LCALL WRITE_RS ;调用写指令到LCM子程序MOV DPTR,#LINE1 ;将第一行字符串的启始地址送如DPTR中LCALL DISP ;调用显示字符串到LCM子程序MOV A,#0C0H ;向A送立即数0C0H设定显示地址为第二行第一列LCALL WRITE_RS ;调用写指令到LCM子程序MOV DPTR,#LINE2 ;将第二行字符串的启始地址送如DPTR中LCALL DISP ;调用显示字符串到LCM子程序MOV A,#0C0H ;向A送立即数0C0H设定显示地址为第二行

9、第一列LCALL WRITE_RS ;调用写指令到LCM子程序MOV DPTR,#LINE3 ;将第三行字符串的启始地址送如DPTR中LCALL DISPMOV JIAN,#0F8HSETB EASJMP $ ;程序动态停机INITIAL: ;LCD初始化设定MOV LCM_DATA,#01HACALL WRITE_RSMOV LCM_DATA,#38HACALL WRITE_RSMOV LCM_DATA,#0FHACALL WRITE_RSMOV LCM_DATA,#06HRETWRITE_RS: ;写指令到LCM子程序CLR LCM_ECLR LCM_RSCLR LCM_RWSETB LC

10、M_EMOV LCM_DATA,ALCALL DELAY1RETWRITE_DATA: ;写数据到LCM子程序CLR LCM_ESETB LCM_RSCLR LCM_RWSETB LCM_EMOV LCM_DATA,ALCALL DELAY1RETCLS:MOV A,#01H ;清除LCM子程序LCALL WRITE_RSRETDISP: ;显示子程序PUSH ACC ;将A的内容压栈DISP_LOOP: CLR A ;A清零MOVC A,A+DPTR ;查表将字符串内容送入AJZ END_DISP ;若查到的内容为0则终止查表LCALL WRITE_DATA ;调用写数据到LCM子程序INC

11、 DPTR ;DPTR加1指向下一个对象SJMP DISP_LOOP ;跳转到DISP_LOOP循环执行END_DISP: POP ACC ;弹出压栈内容至ARETDELAY1: ;延时子程序MOV A,R6PUSH ACCMOV R6,#200 D1:MOV R7,#248D2:DJNZ R7,D2DJNZ R6,D1POP ACCMOV R6,ARETJIANWEI: ;查询是否按键LCALL DELAY1 ;软件去抖动MOV P2,#0FFHCLR P2.0JNB P2.5,KEY13JNB P2.4,KEY12JNB P2.3,KEY11SETB P2.0CLR P2.1JNB P2.

12、5,KEY23JNB P2.4,KEY22JNB P2.3,KEY21SETB P2.1CLR P2.2JNB P2.5,KEY33JNB P2.4,KEY32JNB P2.3,KEY31MOV JIAN,#0F8HRETIKEY33: ;JNB跳转地址不够,加入一个长跳转LJMP KEY333KEY32:LJMP KEY322KEY23:LJMP KEY233KEY31:LJMP KEY311KEY11:MOV R0,#01HMOV A,#0C0H ;向A送立即数0C0H设定显示地址为第二行第一列LCALL WRITE_RS ;调用写指令到LCM子程序MOV DPTR,#LINE11LCAL

13、L DISPLCALL SAVEKEY12:MOV R0,#02HMOV A,#0C0H ;向A送立即数0C0H设定显示地址为第二行第一列LCALL WRITE_RS ;调用写指令到LCM子程序MOV DPTR,#LINE12LCALL DISPLCALL SAVEKEY13:MOV R0,#03HMOV A,#0C0H ;向A送立即数0C0H设定显示地址为第二行第一列LCALL WRITE_RS ;调用写指令到LCM子程序MOV DPTR,#LINE13LCALL DISPLCALL SAVEKEY21:MOV R0,#04HMOV A,#0C0H ;向A送立即数0C0H设定显示地址为第二行

14、第一列LCALL WRITE_RS ;调用写指令到LCM子程序MOV DPTR,#LINE21LCALL DISPLCALL SAVEKEY22:MOV R0,#05HMOV A,#0C0H ;向A送立即数0C0H设定显示地址为第二行第一列LCALL WRITE_RS ;调用写指令到LCM子程序MOV DPTR,#LINE22LCALL DISPLCALL SAVEKEY233:MOV R0,#06HMOV A,#0C0H ;向A送立即数0C0H设定显示地址为第二行第一列LCALL WRITE_RS ;调用写指令到LCM子程序LCALL DISPLCALL SAVEKEY311:MOV R0,

15、#07HMOV A,#0C0H ;向A送立即数0C0H设定显示地址为第二行第一列LCALL WRITE_RS ;调用写指令到LCM子程序MOV DPTR,#LINE31LCALL DISPLCALL SAVEKEY322:MOV R0,#08HMOV A,#0C0H ;向A送立即数0C0H设定显示地址为第二行第一列LCALL WRITE_RS ;调用写指令到LCM子程序MOV DPTR,#LINE32LCALL DISPLCALL SAVEKEY333:MOV A,#0C0H ;向A送立即数0C0H设定显示地址为第二行第一列LCALL WRITE_RS ;调用写指令到LCM子程序MOV DPT

16、R,#LINE33LCALL DISPLCALL QUEDINGMOV JIAN,#0F8HSAVE: ;将写入密码按顺序存放MOV A,R1JZ S1MOV A,R2JZ S2MOV A,R3JZ S3MOV A,R4JZ S4MOV A,R5JZ S5MOV A,R6JZ S6MOV JIAN,#0F8HRETIS1:MOV A,R0MOV R1,AMOV JIAN,#0F8HRETIS2:MOV A,R0MOV R2,AMOV JIAN,#0F8HRETIS3:MOV A,R0MOV R3,AMOV JIAN,#0F8HRETIS4:MOV A,R0MOV R4,AMOV JIAN,#0

17、F8HRETIS5:MOV A,R0MOV R5,AMOV JIAN,#0F8HRETIS6:MOV A,R0MOV R6,AMOV JIAN,#0F8HRETIQUEDING: ;确认键,输入密码与保存密码比较MOV DPTR,#PASSWORDCLR AMOVC A,A+DPTRCLR CSUBB A,R1JNZ ERRCLR AINC DPTRMOVC A,A+DPTRCLR CSUBB A,R2JNZ ERRCLR AINC DPTRMOVC A,A+DPTRCLR CSUBB A,R3JNZ ERRCLR AINC DPTRMOVC A,A+DPTRCLR CSUBB A,R4JNZ

18、 ERRCLR AINC DPTRMOVC A,A+DPTRCLR CSUBB A,R5JNZ ERRCLR AINC DPTRMOVC A,A+DPTRCLR CSUBB A,R6JNZ ERRMOV A,#0C0H ;向A送立即数0C0H设定显示地址为第二行第一列LCALL WRITE_RS ;调用写指令到LCM子程序MOV DPTR,#NEIRONG ;将留言符串的启始地址送如DPTR中LCALL DISP ;调用显示字符串到LCM子程序MOV R1,#00HMOV R2,#00HMOV R3,#00HMOV R4,#00HMOV R5,#00HMOV R6,#00HMOV R7,#00

19、HSSS: DJNZ R7,SSSMOV A,#0C0H ;向A送立即数0C0H设定显示地址为第二行第一列LCALL WRITE_RS ;调用写指令到LCM子程序MOV DPTR,#LINE3 ;将第三行字符串的启始地址送如DPTR中LCALL DISPRETIERR: ;密码错误程序MOV A,#0C0H ;向A送立即数0C0H设定显示地址为第二行第一列LCALL WRITE_RS ;调用写指令到LCM子程序MOV DPTR,#CUOWU ;将第二行字符串的启始地址送如DPTR中LCALL DISPMOV R1,#00HMOV R2,#00HMOV R3,#00HMOV R4,#00HMOV

20、 R5,#00HMOV R6,#00HMOV R7,#00HMOV JIAN,#0F8HRETILINE1: DB WELCOME ,00H ;第一行字符串LINE2: DB USE ,00H ;第二行字符串LINE3: DB INPUT PASSWORD ,00H ;输入密码PASSWORD: DB 03H,08H,03H,02H,02H,04H ;软件设置密码NEIRONG: DB YOUR MESSAGE ,00H ;输入留言CUOWU: DB SORRY WRONG ,00H ;错误提示信息LINE11: DB THIS IS KEY 1 ,00HLINE12: DB THIS IS

21、KEY 2 ,00HLINE13: DB THIS IS KEY 3 ,00HLINE21: DB THIS IS KEY 4 ,00HLINE22: DB THIS IS KEY 5 ,00HLINE23: DB THIS IS KEY 6 ,00HLINE31: DB THIS IS KEY 7 ,00HLINE32: DB THIS IS KEY 8 ,00HLINE33: DB SURE? ,00H五、心得体会 熟悉LCD1602的初始化,最重要的是要熟悉LCD1602的使能位E,早期写的程序总是不能实现其功能,在于忽略了LCD是在E从低到高开始执行,而在从高到低这段时间中才是运行其功

22、能的时间段。所以对LCD1602的熟练使用在于熟悉它的时序图。 按键扫描采用的是外部0中断后进行扫描,运用了一片74LS11芯片。查键程序主要是两个思路:1. 中断后赋予键值,延时一段时间,再回键值,判断是否改变并决定是否堆栈。再根据读回的键值跳转到相应的程序。2. 中断后依次拉低列向电平,判断行向电平是否被拉低而进行跳转。第一次我们采用的是第一种方法,其缺点比较明显,键值的计算比较繁琐,而且程序也比较冗余。相比第二种方法要来的简单。所以个人建议以后查询按键可以按第二种思路。 延时的选择有总体上说两种,一种是采用内部的时钟赋值在需要延时时开启中断,等待中断结束,期间的时间就是延时的时间。另一种

23、延时比较简单,计算一个机器周期12*(1/F),F为晶振的频率,再做几次循环计算每次循环所需的机器周期数达到自己需要的延时时间,在精确延时时,合理的应用NOP指令(空操作,占一个机器周期),可以使延时更加精确。 中断的运用是比较难掌握的,当你开启中断的时候(SETB E)我们遇到不能执行接下的程序,到现在还是没有解决问题,所以我们放弃了做波形发生器的实验,退而求其次做电子密码锁。但是对于这个方面我们有以下几个猜想(由于时间的关系没有去实践):1. 采用其他的中断进行剩下的操作,例如可以开启一个内部时钟中断,在一定的时间后改变一个端口的输出。例如在做波形发生器时,可以根据频率调整时钟中断按时的输

24、出00H或者0FFH至DA,产生脉冲波形,或者查表求出正弦波每个T/N的电压输出大小,N越大,波形越接近正弦,三角波亦是如此。2. 修改主程序。采用不停查询按键方式,没查询一次做一个输出程序。主要确定是单片机必须不停的工作,对器件负荷比较大。 课程设计成绩评价表课程名称单片机原理及应用课程设计题目名称电子密码锁设计学生姓名 学号 指导教师姓名职称序号评价项目指 标满分评分1工作量、工作态度和出勤率按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。202课程设计质量课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。453创新工作中有创新意识,对前人工作有一些改进或有一定应用价值。54答辩能正确回答指导教师所提出的问题。30总分评语:指导教师: 年 月 日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1