单片机原理及应用课程设计电子密码锁_第1页
单片机原理及应用课程设计电子密码锁_第2页
单片机原理及应用课程设计电子密码锁_第3页
单片机原理及应用课程设计电子密码锁_第4页
单片机原理及应用课程设计电子密码锁_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机原理及应用课程设计 题 目: 电子密码锁 学院(系): 煤炭工程学院 年级专业: 自动化 学 号: 100806021517 学生姓名: 田亚琴 指导教师: 王桂花 摘要:本系统由单片机系统、矩阵键盘、led 显示和报警系统组成。系统能完成开锁、超时报警、密码错误报警基本的密码锁的功能。除上述基本的密码锁功能外,还具有led显示功能,本系统成本低廉,功能实用。关键词:at89c51,lcd, 电子密码锁,矩阵键盘,报警器第1章 系统概述1系统功能 随着科技的发展和人们生活水平的提高,如何实现保密防盗这一问题变的尤其的突出,传统的机械锁由于其构造的简单,失效的事件屡见不鲜,电子锁由于其保密

2、性高,使用灵活性好,安全系数高,受到了广大用户的亲昵。at89c51实现一基于单片机的电子密码锁的设计,其主要具有如下功能:(1)设置8位密码,密码通过键盘输入,若密码正确,则将锁打开。(2)状态指示、报警、lcd显示。密码输入正确时有very good!,welcome to you _等提示信息、密码输入错误数码显示器会出现错误提示,显示“the code is flase!”电子密码锁的设计主要由三部分组成:键盘接口电路、密码锁的控制电路、输出lcd显示电路。报警蜂鸣器等。第2章 硬件电路方案(系统框图)论证分析设计的要求是要实现密码固定在rom中,设计的基本思路是,将密码固化,放入表中

3、,在得到按键后,查表比较密码,如果正确,显示” very good!, welcome to you _ ”提示,如果密码错误,打开报警,同时屏幕闪烁以提示密码错误“the code is flase!”。下图2-1是电子密码锁的总体框架图:电路分为五个部分,显示,键盘输入,报警输出等。2.1单片机系统:此次课题采用一种是用以80c51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的io端口,及其控制的准确性,进行电子密码锁的设计。此次课题用单片机p1口与键盘相连,做输入口,p0口与显示器相连,做显示,p2口做显示器扫描。 at89c51lcd显示蜂鸣器led输入键盘复位电路 系统总框

4、图 图212.2键盘接口电路: 此次课程设计采用i/o键盘,与p1口相连,采用扫描法。设有09十个数字密码,和一个确认键。开机显示input code,等待密码输入,输入8个密码,按确认键后,密码比较。2.3 lcd显示:此次课程设计8密码lcd显示器,按键后即显示,液晶显示。p0口送示数据,p2口显示扫描,根据按键次数,第一位显示器显示第一次按的密码,第二位显示器显示第二次按的密码,第三位显示器显示第三次按的密码,依此8位显示器显示第8次按的密码,按键完成后按确认键后,密码对则执行相关动作,不同则显示器清零,提示重新输入。2.4报警系统:此次课程设计,当输入密码或密码错误时,系统报警,报警装

5、置由一扬声器实现,从p3.7口输出脉冲,使扬声器鸣报警。第3章 硬件设计3.1按键电路设计由于设计要求使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘单片机接口时所占用的i/o线的数目,在按键比较多的时候,通常采用这样方法。如图3-2 图 3-23.2指示灯及报警蜂鸣器的电路设计指示灯及报警蜂鸣器的电路如下图所示,当输入的密码正确时,灯亮 图3-33.3显示电路设计 将p0与显示的数据端相连,使其它能动态的传输要显示的数据,将p3的第六位与位选通端相连,选通相应的位。 接线如图34所示 图3-4第四章 程序代码设计分析(程序流程图与源代码)4.1 主程序初始化 主程序主要完成初始化、

6、检查有无按键按下、以及调用显示、指示灯等等。具体模块包括:1、按键识别与编码设计2、显示程序设计3、密码正确返回程序设计4.2按键识别与编码设计当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要n条行线和m条列线,即可组成具有nm个按键的键盘。在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另

7、一种是速度较快的线反转法。 对照图4.2所示的43键盘,说明扫描法原理。首先辨别键盘中有无键按下,有单片机i/o口向键盘送全扫描字,然后读入行线状态来判断。把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。比如说扫描码送入11101111,前面的1110是代表此时扫描第三行p1.0列,而后面的1111是让读取的4列接脚先设高,若此时第三行的第一列按键被按下,那读取的结果就会变成11101110(注意1111变成1110),其中lsb的

8、第三个bit会由1变成0,这是因為这个按键被按下之后,会被垂直的扫描码电位short,而把读取的lsb的bit电位拉到0,此即为扫描原理。由于这种按键是机械式的开关,当按键被按下时,键会震动一小段时间才稳定,我们必须在侦测到有按键被按下,就delay一小段时间,使键盘以达稳定状态,再去判读所按下的键,防抖动;为了避免让89c51误判为多次输入同一按键,要加入按键是否松开,就可以让键盘的输入稳定。按键的操作面板如下图所示。共计数字键10个,功能键1个。如图,10个数字键用来输入密码,enter键用来进行输入密码的确认. 图4-2 按键操作电路4.3整体流程图设计开始显示input code输入密

9、码密码正确否?显示the code is flase!蜂鸣器响显示very good!welcome to you _led亮ny4.3.1 开始等待流程系统开始一直显示提示“input code”,并判断有否按键,当有键按下跳出等待开始显示“input code”判断是否有按键?结束noyes4.3.2密码比较及对错处理: 密码输入完成之后,进行密码比较,即将设定密码单元40h-48h 的密码与输入密码31h-39h的密码进行一一比较,如果相同,则密码正确,p3.2置高电平,led亮,同时lcd显示very good!,welcome to you _,如果密码错误,则显示器显示the co

10、de is flase!,同时蜂鸣器报警。4.4源程序代码;=rs bit p2.7 rw bit p2.6 e bit p2.5 enter bit 22h.0 open bit p3.6 speak bit p3.7 passbuf equ 40h keynumber equ 41h ;存放识别后的按键号 org 0000h ajmp main org 0003h jmp key_int org 000bh ajmp intt0 org 001bh ajmp intt1 org 0030h;= 主程序开始 =main: mov 30h,#08h ;输入密码为8位 mov 42h,#200

11、;设定报警的时间,42h单元里的数*50ms mov 43h,#250 ;设定启动时间 14的倍数(实际上液晶显示器执行指令占用了时间,开门时间会比14*250ms大) mov 44h,#00h ;44h号单元存放输入错误的次数 mov 45h,#00h ;45h为定时器0中断次数 mov 46h,#00h ;46h为定时器1中断次数 mov 47h,#250 ;输入密码时间设定,50ms倍数 mov sp,#60h clr open clr speak ;初始化输出设备 clr enter ;标志位初始化 mov tmod,#11h ;定时器工作方式2 mov th0,#3ch ;初值50m

12、s mov tl0,#0bh mov th1,#3ch mov tl1,#0bh setb ea setb et0 setb et1 mov tcon,#00000000b ;电平触发start: mov r0,30h mov r1,#31hss1: mov r1,#00hi nc r1 djnz r0,ss1 ;将输入密码缓冲单元清零 mov p1,#0fh ;初始化按键口 mov r1,#31h ;从31号单元开始存放按建输入的密码 clr 20h ;报警标志清零 clr 21h ;密码超时标志 mov 46h,#00h ;超时后对定时器中断次数清零,便于下一轮重新计时init: acal

13、l sellcd ;设定液晶工作方式 acall line1 ;在第一行显示 mov dptr,#mes_p ;显示请输入密码 acall display setb ex0 ; 开中断,允许键盘输入keyin: jb 21h,err ;超时转到错误程序 jnb enter,keyin ;等待enter按下 clr enter clr ex0 ;密码输入完后锁定键盘;当使用边沿触发时用上面的指令为什么禁止不了中断?;= 密码判断程序 =comp: mov dptr,#pass mov r4,30h ;密码的长度 mov a,#0 mov r1,#31h loop: mov r5,a movc a

14、,a+dptr mov passbuf,a ;取出系统设定的密码 mov a,r1 ;从31号单元开始取出输入的密码 cjne a,passbuf,err ;比较 mov a,r5 inc a inc r1 ;取下一位 djnz r4,loop;正确match: mov a,#01h acall enable ;清屏,光标复位 acall line1 ;从第一行开始显示 mov dptr,#mes_c acall display ;显示请进 acall line2 mov dptr,#tab_1 acall display setb open ;开门 mov 44h,#00h ;输入错误次数清

15、零 mov r6,43h acall delay clr open ;复位 jmp start ;错误err: acall back mov r6,#03h acall delay acall back ;输错提示音,鸣两下 mov a,#01h acall enable acall line1 mov dptr,#mes_e acall display ;显示错误 mov r6,#40h acall delay inc 44h mov a,44h cjne a,#03h,ee0ee0: jc errout ;输错不到三次返回 mov 44h,#00h ;清零 acall wraning ;报

16、警errout: jmp start= 按键中断服务程序 =key_int: push acc push psw clr ex0 acall delay10ms ;延时消抖 setb tr1 ;启动定时器 acall smkey ;按键识别 mov a,keynumber ;返回按键号 acall back ;按键发声 mov r3,a cjne r3,#0bh,k1 ;enter是否按下 setb enter clr tr1 ;按下确认后关毕定时器 mov 446h, jmp key_rtnk1: add a,#30h ;将按键号转换为asc码 mov r1,a ;将输入的密码存入缓冲单元

17、inc r1 ;修改地址 acall wrdata key_rtn: pop psw pop acc setb ex0 reti= 按键识别程序 =smkey: mov a,p1 anl a,#0fhwkey: mov b,a ;反转法查询 mov p1,#0f0h nop mov a,p1 anl a,#0f0h orl a,b mov p1,#0fh ;还原p1口初态 cjne a,#0eeh,wkey1 mov keynumber,#00h ajmp returnwkey1: cjne a,#0edh,wkey2 mov keynumber,#01h ajmp returnwkey2:

18、cjne a,#0ebh,wkey3 mov keynumber,#02h ajmp returnwkey3: cjne a,#0e7h,wkey4 mov keynumber,#03h ajmp returnwkey4: cjne a,#0deh,wkey5 mov keynumber,#04h ajmp returnwkey5: cjne a,#0ddh,wkey6 mov keynumber,#05h ajmp returnwkey6: cjne a,#0dbh,wkey7 mov keynumber,#06h ajmp returnwkey7: cjne a,#0d7h,wkey8 m

19、ov keynumber,#07h ajmp returnwkey8: cjne a,#0beh,wkey9 mov keynumber,#08h ajmp returnwkey9: cjne a,#0bdh,wkey10 mov keynumber,#09hajmp returnwkey10: cjne a,#0bbh,wkey11 mov keynumber,#0ah ajmp returnwkey11: cjne a,#0b7h,return mov keynumber,#0bh ;判断哪个键按下,返回相应按键号码return: mov p1,#0fh nop nop mov a,p1

20、cpl a anl a,#0fh jnz return ;等待按键松开 ret;= 液晶工作方式设置 =sellcd: mov a,#01h ;清屏,光标复位 acall enable mov a,#38h ;设置显示模式,8位两行,5*7点阵 acall enable mov a,#0dh ;显示器开,允许内烁 acall enable mov a,#06h ;文字不动,光标右移 acall enable ret;= 液晶执行指令 =enable: clr rs clr rw ;rs,rw同为低电平时写入指令 mov p0,a clr e ;e由高变低时执行指令 acall wait set

21、b e ret;= wait =;判断液晶是否忙的子程序wait: mov p0,#0ffh clr rs setb rw ;rw为高,rs为低时可读忙信号 clr e nop setb e jb p0.7,waitret;= 显示的起始地址 =;在第一行line1: mov a,#80h acall enable ret;在第二行line2: mov a,#0c0h acall enable ret= 显示程序 =display: mov r7,#00hnext: mov a,r7 movc a,a+dptr cjne a,#10h,dsp retdsp: acall wrdata inc

22、r7 ajmp next;= 将a里面的数据写入液晶 =wrdata: setb rs clr rw mov p0,a clr e acall wait setb e ret;= 报警程序 = wraning: setb tr0 acall back mov r4,#00h acall d2 jb 20h, wraning ret;= 发声程序 = back: mov r0,#100kk1: cpl speak lcall delay2ms djnz r0,kk1 ;不断取反p3.7使其产生一定频率的方波推动扬声器 ret ;延时的长短可以改变输出的频率 ;= intt0 = ;报警时间设定i

23、ntt0: push acc push psw mov th0,#3ch mov tl0,#0bh inc 45h mov a,45h cjne a,42h,intt0out mov 45h,#00h setb 20h ;置标志位 clr tr0 ;关闭定时器intt0out:pop psw pop acc reti;= intt1 = ;输入超时intt1: push acc push psw inc 46h mov a,46h cjne a,47h,intt1out clr tr1 ;关闭定时器 setb 21h ;时间到置标志位 mov 47h,#00h ;中断次数清零intt1out:

24、pop psw pop acc reti ;= 延时程序 =delay: mov r4,#38hd1: mov r5,#0f9h djnz r5,$ djnz r4,d1 djnz r6,delay ;14*r6毫秒 retdelay2ms: mov r4,#02hd2: mov r5,#0f0h djnz r5,$ djnz r4,d2 ret delay10ms: mov r4,#20d3: mov r5,#248 djnz r5,$ djnz r4,d3 retpass: db 08353028mes_p: db input code,10hmes_c: db very good!,10

25、hmes_e: db the code is flase!,10htab_1: db welcome to you _,10hend第五章 仿真电路图与效果图5.1 仿真电路图 原理图 5.2 仿真效果图 输入正确密码图 输入正确密码显示图 输入错误密码图 输入错误密码显示图 第六章 pcb图与3d视图6.1 pcb图6.2 3d视图6.3 元器件清单:元件名称所属类别所属子类别at89c51microprocessor ics8051 familycrystalmiscellaneous-ceramic33pcapacitorsceramic discgenelect100u16vcapacitorsradial electrolytic3watt10kresistor3 watt wirewound3watt1kresistor3 watt wirewoundrespack8resistorsresistor packsbuttonswitches & relaaysswitches74s140ttl 74 seriesbuffers & diverslm032loploelectronicsalphanumeric lcdsled-redoptoelectronicsledss

温馨提示

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

评论

0/150

提交评论