单片机控制的密码锁设计。AT89S52单片机P1引脚外接独立按键S1-S8.代表数字键0-5,确定键,取消键。单片机从P3.0-P3.3输出4个信号,分别为电磁解锁驱动信号和密码错误指示、报警输出和解锁指示信号L1-L4指示。P3.用于实现提示音的有源蜂鸣器。
基本要求:
(1)初始密码为123450,输入后按确定键解锁,取消键清除所有输入,每个按钮都有短滴声按键提示音。
(2)密码输入正确后,输出电磁锁解锁信号和解锁信号,发出两个短滴声提示。4秒后,解锁信号和解锁指示器清除。
(3)密码输入错误时,发出长滴声错误指示声,密码错误指示灯亮。三次密码错误时,发出长鸣声报警,密码错误指示灯亮,报警指示灯亮。密码不能在15秒内再次输入。15秒后,清除所有报警和指示。
(4)5秒内无任何操作后,清除所有输入内容,等待下次输入。本文引用地址:http://www.eepw.com.cn/article/170863.htm
3.3.1模块1 系统设计
(1)分析任务要求。写系统整体设计思路。
根据主题的要求,需要考虑以下任务:按钮输入、密码判断、正确或错误的密码输入计时、输出信号控制等。
键盘输入:由于需要输入6个数字作为密码,因此首先需要判断数字键或功能键。如果判断为数字键,则需要将每个键盘的输入内容暂时存储在一个数组中。在每个按钮输入时,需要启动定时器来实现待机计时(5秒)。如果在5秒内没有输入内容,则删除已输入的内容。
密码的判断和计时:按下确认键后,与初始密码检查输入内容。如果密码正确,则输出相应的指示,并启动定时器以实现4s计时。如果密码错误,错误计数变量增加1,同时输出密码指示信号,如果错误次数超过3次s,输出报警等信号,启动定时器实现15秒计时。
输出信号的控制主要取决于按钮输入和密码检查。
整体程序设计理念:
该程序分为两个主要部分:主程序和中断服务程序。主程序完成变量和单片机特殊功能寄存器的初始化后,进入循环结构。在循环中,首先判断是否有按钮,如果有按钮,判断是数字键还是功能键,并根据按钮执行相应的功能。然后根据密码是否正确判断,执行相应的操作。在循环中,通过动态扫描显示需要显示的内容。
只要中断服务程序达到三种状态,待机时需要5秒,密码正确时需要5秒s,三次密码输入错误需要15秒。主程序根据密码判断结果密码判断结果决定。
(2)选择单片机型号和所需外围设备型号,设计单片机硬件电路原理图
采用MCS51系列单片机At89S51作为主控制器,外围电路器件包括数字管驱动、蜂鸣器输出驱动、独立键盘和发光二极管输出。
由于单片机驱动能力有限,数码管驱动采用两个四联阴极数码管显示。HC244作为数字管的驱动。HC2447段码输出线串联100欧姆电阻起限流作用。
采用蜂鸣器驱动PNP驱动三极管8550,低电平有效。
独立按钮采用上提拉电路连接,无按键输出高电平。发光二极管串联500欧姆电阻,然后连接到电源。当输入为低电时,发光二极管导致发光。
如图3-9所示,硬件电路原理图。
图3-9 密码锁电路原理图
(3)分析软件任务要求,写程序设计思路,分配单片机内部资源,画程序流程图
软件任务要求主要包括按钮扫描、密码判断、动态扫描输入内容、计时、指示信号输出和蜂鸣器提示声输出。主程序主要完成变量和存储器的初始化、按钮扫描和判断、密码判断和数字管动态扫描显示。主程序流程图如图3-10所示。
图3-10 密码锁的主程序流程图
中断服务程序主要完成三种定期计时工作,包括①按钮后启动的待机计时,待机超过5s清除已输入的内容。②正确输入密码后的计时,4s然后清除解锁驱动信号和解锁指示信号。 ③密码输入错误3次,计时15次s,在则15s密码不能再输入,所有报警和指示在15秒后清除。中断服务程序流程图如图3-11所示。
图3-11 密码锁中断服务流程图
单片机资源的分配和变量的定义:
需要定义四个变量来输入和判断密码。存储在数组中的原始密码init_val[6]中。键盘输入的密码存储在数据中show_val变量在[6]中 key_index值表示当前按钮是六位密码中的哪一个,每输入一个密码数字,变量增加一个。密码输入错误次数暂时存在变量error_num中。
计时功能需要5个变量。模式变量cnt_state存储计时处于什么状态,0表示待机计时,1表示正确的密码计时,2表示三次错误的密码计时。三个变量(cnt_val_15s,cnt_val_5s, cnt_val_4s)待机、密码正确、密码错误三次后分别实现计时工作。定时器T1每250ms中断,变量T1_cnt当记录到4000时,记录定时器溢出中断的次数。
(4)设计系统软件调试方案、硬件调试方案硬件联合调试方案
软件调试方案:在伟福软件中,在文件新文件中,新建C语言源程序文件,并编写相应的程序。在文件新项目菜单中,新项目包括C语言源程序文件。
在 C源文件在项目编译菜单中编译,检查语法错误和逻辑错误。编译成功后,产生 “*.hex”和“*.bin” 目标文件的后缀。
硬件调试方案:在设计平台上,单片机P1.0-P1.7通过插线与8个独立键盘连接P3.0-P3.3分别与4个发光二极管连接,P3.连接蜂鸣器的输入。
将程序文件编译成目标文件后,将下载线安装在实验平台的下载线接口上MCU下载程序flash 点击编程按钮将程序文件下载到单片机Flash中。
然后,重新启动单片机,检查编写的程序是否符合问题要求,试题内容是否全面完整。
3.3.2 程序设计
//晶振11.0592MHz,T每250微秒中断一次,按钮P1.0-P1.七、发光二极管连接P3.0-P3.3,p3.4
/*变量定义:
show_val[6]: 显示的值
init_val[6]: 密码初始值