2022年数字密码锁单片机课程设计 .pdf
《2022年数字密码锁单片机课程设计 .pdf》由会员分享,可在线阅读,更多相关《2022年数字密码锁单片机课程设计 .pdf(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程设计课 程 名 称: 单 片 机 原 理 与 应 用课 题 名 称:数 字 密 码 锁 设 计所在 学院 名称: 湖南大学电气与信息工程学院设 计 人 员: 宁 枫 根宋 浩 冉目录一、 前言 . - 2 -二、 总体方案设计 . - 3 -2.1 方案论证与比较. - 3 -2.2 方案选择 . - 4 -三、 单元模块设计 . - 4 -3.1 硬件支持 . - 4 -精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 30 页3.2 功能单元模块设计. - 4 -3.2.1 开锁机构 . - 4 -3.2.2 矩阵键盘设计电路 .
2、 - 5 -3.2.3 声音提示电路设计 . - 6 -3.2.4 显示模块设计 . - 6 -四、程序设计与系统仿真. . - 7 -4.1 模块介绍 . - 7 -4.1.1 主程序模块 . - 9 -4.1.2 密码比较判断模块 . - 9 -4.1.3 键盘扫描模块 . - 9 -4.1.4 修改密码模块 . - 10 -五、系统功能 . - 11 -六设计总结 . - 12 -七、附录:源程序 . - 12 -一、 前言随着社会物质财富地日益增长和人们生活水平地提高,安全成为现代居民最关心地问题之一 .而锁自古以来就是把守门地铁将军,人们对它要求甚高,即要求可靠地防盗,又要使用方便
3、.传统地门锁既要备有大量地钥匙,又要担心钥匙丢失后地麻烦.随着单片机地问世,出现了数字密码锁,其保密性高,使用灵活性好,安全系数高,故受到广大用户地青睐.数字密码锁通常使用ARM 和单片机控制,单片机相对ARM 实现较为简单,功能较为完善,因此使用单片机控制较多.用单片机控制地密码锁常使用汇编语言编写程序,数码管做显示器 . 但本设计使用移植性及可读性强地C 语言编写;同时采用显示清楚、功率消耗小而且寿命长地1602A 液晶显示器 .从经济实用地角度出发,采用ADUC848 单片机设计出一种具有密码设置、报警等功能地数字密码锁,并通过Proteus软件成功地进行了仿真.任务及设计要求1.设计一
4、多位电子密码锁,输入密码用 “ F”表示 ,输入密码正确,绿灯亮(或显示其它标志、蜂鸣器替代) ,输入密码错误,红灯亮(或显示其它标志、蜂鸣器替代).2.具有确定键和取消键,在未确定之前可以取消,重新输入 .3.连续输入三次错误密码,红灯闪烁 ,报警电路动作,键盘锁定 .精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 30 页4.具有密码重置、修改功能.5.具有密码输入等待操作时间限制功能,超过限定时间报警.6.显示北京时间,时间可调整 .7.可利用蜂鸣器添加提示音.二、 总体方案设计2.1 方案论证与比较方案一:以ADUC848单片机
5、为数字密码锁系统核心,使用4*4 矩阵键盘作为数据输入方式,驱动1602A 显示器提示程序运行过程和开锁地步骤,利用AT24C02 芯片实现掉电存储 .图 1 为单片机控制密码锁地系统原理框图.图 1 单片机控制密码锁地系统原理框图方案二:以 74LS112双 JK触发器构成地数字逻辑电路控制方案,如图2.ADUC848单片机AT24C02存储芯片矩阵键盘控制LCD 1602A 蜂鸣器提示电路电源模块LED 密码校验提示精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 30 页图2 数字逻辑控制方案数字密码锁原理框图2.2 方案选择由于利
6、用单片机灵活地编程设计和强大地I/O 端口,及其控制地准确性,不但能实现基本地密码锁功能,还可以增添掉电存储、声光提示等功能,故选用方案一.三、 单元模块设计3.1 硬件支持使用地元器件有:核心芯片ADUC848 、存储芯片AT24C02、液晶显示1602A、 4 4 矩阵键盘、报警蜂鸣器、发光二极管和三极管.3.2 功能单元模块设计3.2.1 开锁机构通过单片机送给开锁执行机构,电路驱动电磁锁吸合,从而达到开锁地目地.如图 3 所示,为密码锁开锁电路原理图.当用户输入地密码正确时,单片机便输出开门信号,送到开锁驱动电路,然后驱动电磁锁,达到开门地目地.本次设计中,基于节省成本考虑,用发光二极
7、管代替电磁锁,信息通过LCD 显示,并利用蜂鸣器和二极管声光指示.其中,绿发光二极管亮,表示开锁;否则,表示密码输入错误并开启报警电路.输入按扭开关组输入锁存电路密码存储电路开锁控制电路机械动作构件5秒定时电路20 秒定时电路声光指示电路精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 30 页图 3 密码锁开锁电路原理图3.2.2 矩阵键盘设计电路每一条水平(行线)与垂直线(列线)地交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要M 条行线和N 条列线,即可组成具有M N 个按键地键盘.由于本设计中要求使用16 个按键
8、输入,为减少键盘与单片机接口时所占用地I/O 线地数目,故使用矩阵键盘.本设计中,矩阵键盘行线和单片机P1.0-P1.3 相连,列线与单片机P1.4-P1.7 相连 .矩阵键盘设计电路图,如图4所示 .键盘扫描采用行扫描法,即依次置行线中地每一行为低电平,其余均为高电平,扫描列线电平状态,为低电平即表示该键按下.图 4 矩阵键盘设计电路图开锁驱动电路STC89C52 单片机密码正确超次锁定电磁锁是否1 2 3 4 5 6 7 8 9 0 退位确认设置时间* 关精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 30 页3.2.3 声音提示电
9、路设计声音提示电路采用小蜂鸣器提示.蜂鸣器能够根据脉冲信号,以及信号地频率发出各种不同地声音,这样可以根据系统要求在密码出入正确和密码输入错误时发出不同地声音提示,已达到报警地要求.蜂鸣器电路,如图5所示 .图 5 蜂鸣器电路3.2.4 显示模块设计本设计中,显示电路采用1602A 液晶显示器显示.如下所示,图6 为 1602A 液晶显示器地接口示意图,表1 为接口说明 .图 6 1602A 液晶显示器地接口示意图表 1 接口说明管脚序名称电平功能描述1VSS0V接地2VCC5.0V电源输入3V0LCD 驱动电压输入4RSH/L寄存器选择:RS=H,选择数据寄存器;RS=L,选择指令寄存器5R
10、/WH/L读写信号线: R/W=H ,读操作; R/W=L ,写操作精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 30 页6EH,HL使能信号7DB0H/L数据线8DB1H/L数据线9DB2H/L数据线10DB3H/L数据线11DB4H/L数据线12DB5H/L数据线13DB6H/L数据线14DB7H/L数据线15BLA5.0V背光电源正极16BLK0V背光电源负极本设计中液晶串口一共用到11 根导线与单片机相连,具体连接情况如表2 显示模块与 MCU 连接说明所示 .表 2 显示模块与MCU 连接说明序号1602A 液晶显示器引脚A
11、DUC848 单片机引脚1RS 引脚P2.5(A13)2R/W 引脚P2.6(A14)3E 引脚P2.7(A15)4D0 引脚P0.0(AD0)5D1 引脚P0.1(AD1)6D2 引脚P0.2(AD2)7D3 引脚P0.3(AD3)8D4 引脚P0.4(AD4)9D5 引脚P0.5(AD5)10D6 引脚P0.6(AD6)11D7 引脚P0.7(AD7)四、程序设计与系统仿真4.1 模块介绍与硬件电路相关联,本系统软件包括主程序模块、密码比较判断模块、键盘扫描模块 、 修 改 密 码 模 块 、 1602A液 晶 显 示 模 块 等 . 系 统 程 序 流 程 如 图9所示.精选学习资料 -
12、 - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 30 页图 9 系统程序流程图开始系统初始化调用 E2PROM 密码显示主界面输入密码判断密码确定密码开锁模拟声光锁定键盘Y N 返回Y 判断次数 N 超过 N 次未超过 N 次再次输入密码密码设置完毕N 设置新密码Y 按键N 判断按键值返回主界面N Y 设置解码次数产生随机密码输入密码N=0 x84 N=0 x82 N=0 x11 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 30 页4.1.1 主程序模块主程序主要用于定义全局变量,给全局变量
13、赋初值,初始化E2PROM ,启动定时器以及从 AT24C02 中读取密码,为整个程序提供数据;检测按键;调用显示等功能.4.1.2 密码比较判断模块该模块地功能是将键盘输入地密码利用if 语句与设定地密码进行逐个比较,若密码完全正确则开锁;若不正确,则开启报警电路,复位后重新输入密码.其密码输入和比较判决流程图如图10 所示 .图 10 密码输入和比较判决流程图4.1.3 键盘扫描模块键盘使用矩阵式键盘,由行和列组成,CPU 对所有键盘进行监视,从而实现逐列扫描键盘确定被按键地具体位置、判断键盘上有无键按下、消除去抖动、判断闭合地键是否释放等功能 .如图 11所示,为键盘扫描流程图.输入密码
14、核对键盘锁定,开启报警电开锁,灯亮,可密码修改N Y 复位精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 30 页图 11 键盘扫描流程图4.1.4 修改密码模块在密码输入正确情况下,可以按下“ 重置密码 ” 对密码进行重新设置,每设定一位就将密码送给AT24C02 存储起来,当设置6位密码完毕后,系统将自动跳到程序开始,调用新设置地密码 .图 12 为修改密码流程图.开始延时去抖动计算输入键值键值送入单片机有按键输入?有按键输入?有按键输入?返回N N Y Y 精选学习资料 - - - - - - - - - 名师归纳总结 - - -
15、 - - - -第 10 页,共 30 页图 12 修改密码流程图五、系统功能本设计中系统可实现功能如下:开始输入原密码密码比较比较正确?输入新密码再次输入新密码调用 AT24C02 中密码比较正确修改成功返回菜单键盘锁定,启动报警电复位Y N 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 30 页(1)通过切换,对输入地18 位密码进行显示或隐藏;(2)通过发光二极管和蜂鸣器,对解密正确或者错误进行声光报警;(3)1 8位密码修改;(4)在密码遗失情况下,通过初始密码进行密码再设置;(5)具有 1-3 次地解锁次数任意设定功能;六
16、设计总结作为一名电子信息工程地学生,通过本次课程设计,我很好地了解了单片机C 语言设计地思考模式,熟悉了C 语言地编程规则,知道了如何去运用一个完全陌生地单片机,会根据单片机地不同结构来采用不同地命令实现功能.在此次课程设计中我负责地模块出现了问题导致在数码管上显示状态地时候混乱了,主要是因为延时上没有处理好,Aduc848 地定时器处理时是要加上一定地延时来防止冲突地.另外还有键盘地防抖模块,一开是没有考虑好,所以键盘按下后显示会乱变.综上而言,通过此次课程设计,我很好地学习了单片机地应用以及其编程.七、附录:源程序#include #include #define uint unsigne
17、d int #define uchar unsigned char /*状态声明 */ #define opened 0 #define new1 15 #define new2 16 #define succed 5 #define fanin 10 #define null 11 #define error 12 #define different 13 #define tover 14 /*按键声明 */ #define enter 10 #define back 11 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 30 页#
18、define trevise 12 #define revise 13 #define cancel 14 #define vain 15 #define off 16 #define end 17 #define finish 18 /*函数声明 */ void p_base()。void p_revise() 。void p_new1() 。void p_new2() 。void p_trevise() 。void p_show() 。uchar p_scan()。void p_record() 。void p_delay(uint f_n) 。void p_state(uchar f_s
19、) 。uchar p_compare(uchar *f_k1,uchar *f_k2) 。void p_copy(uchar *f_s,uchar *f_k)。/*I/O 口声明 */ sbit p00=P00。sbit p10=P10。sbit p11=P11。sbit p12=P12。sbit p13=P13。sbit p14=P14。sbit p15=P15。sbit p16=P16。sbit p17=P17。sbit p20=P20。sbit p21=P21。sbit p22=P22。sbit p23=P23。sbit p24=P24。sbit p25=P25。sbit p26=P26
20、。sbit p27=P27。sbit p30=P30。sbit p31=P31。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 30 页sbit p32=P32。sbit p33=P33。sbit p34=P34。sbit p35=P35。sbit p36=P36。sbit p37=P37。/*变量声明 */ uchar bot,key19,key29,save9,t4,s,min,h,mino,mint,ho,ht,n1=1,n2=1,lock,minu,sign,tov,state,n,sound,point=1, showlis
21、t=0 x03,0 x9f,0 x25,0 x0d,0 x99,0 x49,0 x41,0 x1f,0 x01,0 x09,0 x71,0 xff,0 x21,0 x85,0 xe1,0 x7f,0 x7d 。uint ms。 /*主函数 */ void main() EA=1。 /开总中断ET0=1。 /开内部中断0 ET1=0。/关内部中断1 TMOD=0 x11 。TH0=0 xf9 。 /计数器 0 高八位TL0=0 xdb 。 /计数器 0 低八位TR0=1。 /计数器 0 开始计数I2CCON=0 xe8 。sound=0。tov=1。 /超时计数置为1 P1=0 x00。 /P1
22、 全置为 0作为输入if(sign!=1) p_new1()。 /调用首次使用判断函数p_base()。/调用基础解锁函数 /*基础解锁函数 */ void p_base() n=0。 /密码数组置首位精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 30 页state=fanin。 /指示管置为输入状态fanin while(1) /无限循环 if(n=0) state=fanin。else state=n。bot=p_scan()。if(n!=0&tov=0) /判断密码数组是不是在首位,超时计数是否为0 p_state(tover
23、)。 /调用指示管状态闪烁函数,置为用超时状态tover main()。 /调用主函数 switch(bot) case vain: break。case enter: key1n=end 。 /把密码后一位置为end if(p_compare(key1,save) /判断输入地密码是否与原密码相同 p_state(succed)。/调用指示管状态闪烁函数,置为成功状态succed lock=0。/锁定键盘计数置为0 point=1 。 /多次密码输入错误计数state=opened。/指 示 管 置为输入状态opened while(1) bot=p_scan()。switch(bot) c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数字密码锁单片机课程设计 2022 数字 密码锁 单片机 课程设计
限制150内