单片机电子密码锁的设计(汇编语言)

合集下载

单片机电子密码锁设计

单片机电子密码锁设计

单片机电子密码锁设计一、设计背景随着科技的不断发展,传统的机械锁已经不能满足人们对于安全性和便捷性的需求。

电子密码锁具有保密性好、操作方便等优点,逐渐取代了传统机械锁。

单片机作为一种集成度高、功能强大的微控制器,为电子密码锁的设计提供了良好的硬件基础。

二、系统总体设计本电子密码锁系统主要由单片机控制模块、键盘输入模块、显示模块、存储模块和开锁控制模块等部分组成。

单片机控制模块是整个系统的核心,负责处理输入信息、控制各个模块的工作以及进行密码的验证和存储。

键盘输入模块用于用户输入密码,通常采用 4×4 矩阵键盘,可实现数字 0 9 以及确认、取消等功能按键的输入。

显示模块用于显示系统的相关信息,如输入的密码、提示信息等。

常见的显示方式有液晶显示屏(LCD)和数码管显示。

存储模块用于存储设置的密码,以便系统在断电后仍能保存密码信息。

EEPROM 存储器具有掉电不丢失数据的特点,适合用于密码存储。

开锁控制模块在密码验证通过后,控制电磁锁或电机等执行机构完成开锁动作。

三、硬件设计1、单片机选型选择一款合适的单片机是系统设计的关键。

常用的单片机有 51 系列、STM32 系列等。

51 系列单片机价格低廉、开发简单,适合本设计的需求。

2、键盘接口电路采用行列式扫描的方式实现 4×4 矩阵键盘的接口电路。

通过单片机的 I/O 口依次扫描行线和列线,判断按键的按下状态。

3、显示电路如果选择液晶显示屏(LCD),则需要通过单片机的并行接口或串行接口与 LCD 控制器进行通信,实现字符和图形的显示。

数码管显示则相对简单,通过单片机控制数码管的段选和位选信号即可。

4、存储电路EEPROM 存储器通过 I2C 总线与单片机连接,单片机通过发送特定的指令和数据来实现对 EEPROM 的读写操作。

5、开锁控制电路使用继电器或三极管驱动电磁锁或电机,单片机输出高电平或低电平来控制开锁电路的通断。

四、软件设计1、主程序流程系统上电后,首先进行初始化操作,包括单片机内部资源的初始化、显示模块的初始化、存储模块的初始化等。

单片机设计电子密码锁

单片机设计电子密码锁

设计题目:电子密码锁功能实现:八位密码锁具有设置密码,然后输入密码验证的功能:1)设置密码成功后会点亮LED灯提示;2)录放音模块;3)输入密码错误则有语音提示;4)输错3次后LED灯闪烁提示,输错5次以上就禁止输入,且LED灯闪的频率加快;5)输入正确后播放音乐提示;6)设置密码和输入密码时不小心按错可以使用清除键;7)密码破解后可以选择重置密码或继续使用原密码;实现方法:状态机设置密码----输入密码----判断密码是否正确----错误继续回到输入密码状态-----正确则选择是回到输入密码状态或者重置密码设计源程序:#include <mega16.h>flash unsigned char led_7[13]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x40}; // 字型码,后3位为“A”,“b”,“-”flash unsigned char position[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; unsigned char dis_buff[8]; // 显示缓冲区,存放要显示的8个字符的段码值unsigned char key_disbuff[8];unsigned char key_stime_counter,key_stime_ok1,sign;unsigned char posit;bit key_stime_ok;unsigned char count=0;flash unsigned int t[9]={0,956,865,759,716,638,568,506,470};flash unsigned char d[9]={0,105,116,132,140,157,176,198,209};#define Max_note 32flash unsigned char music[Max_note]={1,2,1,2,1,2,3,2,5,2,5,2,5,4,5,2,6,2,6,2,6,2,8,2,5,4};unsigned char note_n;unsigned intint_n;bit play_on;interrupt [TIM1_COMPA]void timer1_compa_isr(void) //音乐播放中断{if (!play_on){note_n=0;int_n=1;play_on=1;}else{if (--int_n==0){TCCR1B=0x08;if(note_n<Max_note){OCR1A=t[music[note_n]];int_n=d[music[note_n]];note_n++;int_n= int_n * music[note_n];note_n++;TCCR1B=0x09;}elseplay_on=0;}}}void display (void) // 8位LED数码管动态扫描函数{PORTC = 0xff;PORTA = led_7[dis_buff[posit]];PORTC = position[posit];if (++posit >=8 ) posit = 0;}#define No_key255#define K1_1 1#define K1_2 2#define K1_3 3#define K2_1 4#define K2_2 5#define K2_3 6#define K3_1 7#define K3_2 8#define K3_3 9#define K4_1 10#define K4_2 0#define K4_3 11#define Key_mask 0b00001110unsigned char read_keyboard() //键盘输入子程序{static unsigned char key_state = 0, key_value, key_line;unsigned char key_return = No_key,i;switch (key_state){case 0:key_line = 0b00010000;for (i=1; i<=4; i++) // 扫描键盘{PORTB = ~key_line; // 输出行线电平PORTB = ~key_line; // 必须送2次!!!(注1)key_value = Key_mask& PINB; // 读列电平if (key_value == Key_mask)key_line<<= 1; // 没有按键,继续扫描else{key_state++; // 有按键,停止扫描break; // 转消抖确认状态}}break;case 1:if (key_value == (Key_mask& PINB)) // 再次读列电平,{switch (key_line | key_value) // 与状态0的相同,确认按键{ // 键盘编码,返回编码值case 0b00011100:key_return = K1_1;break;case 0b00011010:key_return = K1_2;break;case 0b00010110:key_return = K1_3;break;case 0b00101100:key_return = K2_1;break;case 0b00101010:key_return = K2_2;break;case 0b00100110:key_return = K2_3;break;case 0b01001100:key_return = K3_1;break;case 0b01001010:key_return = K3_2;break;case 0b01000110:key_return = K3_3;break;case 0b10001100:key_return = K4_1;break;case 0b10001010:key_return = K4_2;break;case 0b10000110:key_return = K4_3;break}key_state++; // 转入等待按键释放状态}elsekey_state--; // 两次列电平不同返回状态0,(消抖处理)break;case 2: // 等待按键释放状态PORTB = 0b00001110; // 行线全部输出低电平PORTB = 0b00001110; // 重复送一次if ( (Key_mask& PINB) == Key_mask)key_state=0; // 列线全部为高电平返回状态0 break;}return key_return;}#define keystate_0 0#define keystate_1 1#define keystate_2 2#define keystate_3 3#define keystate_4 4#define keystate_5 5// Timer 0 比较匹配中断服务,2ms定时interrupt [TIM0_COMP] void timer0_comp_isr(void){unsigned char i, key_temp;static unsigned char m=0,n=0;display(); // 调用LED扫描显示if (++key_stime_counter>=5){key_stime_counter = 0;key_stime_ok = 1; // 10ms到}if (++key_stime_counter>=50){key_stime_counter = 0;key_stime_ok1 = 1; // 100ms到}if (key_stime_ok){key_stime_ok = 0; // 10ms到key_temp = read_keyboard (); // 调用键盘接口函数读键盘if (key_temp != No_key){ // 有按键按下switch(m){case keystate_0:if(key_temp==10) m=keystate_1; //状态0:按下设置键开始设置密码else m=0;break;case keystate_1: //状态1:按下0~9之间的数字设置密码if(key_temp!=11&&n<8&&key_temp!=10){for (i=0; i<7; i++){dis_buff[i] = dis_buff[i+1];} // LED显示左移一位dis_buff[7] = key_temp; // 最右显示新按下键的键值n++;}else if(key_temp==11) //按下确认键,设置密码成功,PD.4输出0,LED灯点亮{PORTD=0x60;n=0; //n回到初始值0for (i=0; i<8 ;i++){key_disbuff[i]=dis_buff[i];} //锁存密码值for (i=0; i<8 ;i++){dis_buff[i]= 12;} //数码管显示回到初始值m=keystate_2;break;}else m=keystate_1;break;case keystate_2:if(key_temp==10){PORTD=0x70;m=keystate_3;}else m=keystate_2;break;case keystate_3: // 输入密码if(key_temp!=11&&n<8&&key_temp!=10){ if ( key_temp==0 ){{for (i=7; i>0; i--)dis_buff[i] = dis_buff[i-1]; //清除键}dis_buff[0] = 12;}else{for (i=0; i<7; i++){dis_buff[i] = dis_buff[i+1];} // LED显示左移一位dis_buff[7] = key_temp;}}else if(key_temp==11) //按下确认键确认输入的密码{for (i=0; i<8 ;i++) //判断输入密码是否成功{if(key_disbuff[i]!=dis_buff[i]){PORTD=0xcf; //输入密码错误则语音提示密码错误TCCR1B=0x08;n=0;count++;if(count>=5){sign=2;}if(count>=3&&count<5){sign=1;}for (i=0; i<8 ;i++) //数码管显示回到初始值{dis_buff[i]= 12;}m=keystate_3; //重新回到输入密码状态PORTD=0x1f;}}if(i==8){sign=0;PORTD.6=1;count=0;for (i=0; i<8 ;i++){dis_buff[i]= 12;} //数码管显示回到初始值play_on=0; //若密码正确,则启动音乐播放if(!play_on){TCCR1B=0x09;}if(key_temp==11){m=keystate_0;break;} //重新回到设置密码状态else if(key_temp==10){m=keystate_3; //重新回到输入密码状态break;}}}}}}}void main(void){unsigned char i; //初始化TCCR1A=0x40;TCCR1B=0x08;TIMSK=0x12;GICR|=0x80;MCUCR=0x08;MCUCSR=0x00;GIFR=0x80;PORTD=0x7f;DDRD=0xf0;PORTA = 0x00; // 显示控制I/O端口初始化DDRA = 0xFF;PORTC = 0xFF;DDRC = 0xFF;PORTB = 0xFF; // 键盘接口初始化DDRB = 0xF0; // PD2、PD1、PD0列线,输入方式,上拉有效// T/C0 初始化TCCR0=0x0B; // 内部时钟,64分频(4M/64=62.5KHz),CTC模式TCNT0=0x00;OCR0=0x20; // OCR0 = 0x7C(124),(124+1)/62.5=2ms//TIMSK=0x02; // 允许T/C0比较匹配中断for (i=0; i<8 ;i++){dis_buff[i]= 12;} // LED初始显示8个“-”#asm("sei") // 开放全局中断while (1){if(key_stime_ok1) // 100ms到{if(sign==1){key_stime_ok1=0;PORTD.6=~PORTD.6;}}if(key_stime_ok) // 10ms到{if(sign==2){PORTD.6=~PORTD.6;for (i=0; i<8 ;i++){dis_buff[i]= 12;} // 禁止输入}}};}。

单片机密码锁设计(汇编语言-)带原理图电路图-

单片机密码锁设计(汇编语言-)带原理图电路图-

单片机密码锁设计(汇编语言)带原理图电路图什么是密码锁电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。

硬件设计基于AT89C51为核心的单片机控制的电子密码锁设计。

本设计能完成开锁,修改密码,密码错误报警,LCD显示密码等基本的密码锁功能。

设计的电路框如图1。

《,图一&电路的功能单元设计1.单片机AT89C51组成基本框图单片机引脚介绍P0:P0口是一个漏极开路的8位双向I/O口。

在访问片外存储器时P0分时提供低8位地址线和8位双向数据线。

当不接片外存储器或不扩展I/O口时,P0可作为一个通用输入/输出口。

P0口作输入口使用时,应先向口锁存器写“1”,P0口作输出口时,需接上拉电阻。

P1:P1口是一个内部提供上拉电阻的8位双向I/O口,因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”。

&P2:P2口也是一个内部提供上拉电阻的8位双向I/O口,在访问片外存储器时,输出高8位地址。

P3:P3口除了一般的准双向通用I/O口外,还有第二功能。

VCC:+5V电源VSS:接地ALE:地址锁存器控制信号。

在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。

此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。

/PSEN:外部程序存储器读选通信号。

在读外部ROM时,/PSEN有效(低电平),以实现外部ROM单元的读操作。

/EA:访问程序存储控制信号。

当/EA信号为低电平时,对ROM的读操作限定在外部程序存储器;当/EA信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。

RST:复位信号。

当输入的复位信号延续两个机器周期以上的高电平时即为有效,用完成单片机的复位初始化操作。

XTAL1和XTAL2:外接晶体引线端。

单片机课程设计报告电子密码锁

单片机课程设计报告电子密码锁

山东交通学院单片机原理与应用课程设计院(部):轨道交通学院班级:自动化121学生姓名:学号:指导教师:时间: 2015.6.1—2015.6.12课程设计任务书题目电子密码锁设计系 (部) 轨道交通学院专业班级自动化121学生姓名学号06 月 01 日至 06 月 12 日共 2 周指导教师(签字)系主任(签字)年月日一、设计内容及要求本实验基于51单片机利用矩阵按键、步进电机、lcd1602等模块实现电子密码锁的输入密码、密码比对、步进电机的驱动、修改密码等功能。

设计内容包括:1)lcd1602显示;2)矩阵按键的输入;3)24C08的储存于读取;4)步进电机的驱动;5)线路的链接。

设计要求:1)能演示;2)能回答答辩过程中提问的问题;3)完成设计报告。

二、设计原始资料单片机原理及接口技术李全利 2010年 1月单片机原理及应用教程范立南 2006年 1月单片机原理及应用教程刘瑞新 2003年07月三、设计完成后提交的文件和图表1.计算说明书部分1)方案论证报告打印版或手写版2)程序流程图3)具体程序2.图纸部分:具体电路原理图打印版四、进程安排教学内容学时地点资料查阅与学习讨论 2天 406实验室分散设计 4天 406实验室编写报告 2天 406实验室成果验收 2天 406实验室按分组选择不同的实验台,每组3人,题目可重复选择,但每题目不得超过10人。

五、主要参考资料《电子设计自动化技术基础》马建国、孟宪元编清华大学出版2004年4月《单片机原理及接口技术》张毅刚人民邮电出版社.2008年《实用电子系统设计基础》姜威 2008年1月《单片机系统的PROTEUS设计与仿真》张靖武 2007年4月指导老师成绩答辩小组成绩总成绩目录摘要 (1)1.设计要求 (2)2.功能概述 (2)3.总体设计 (2)4.硬件设计 (3)4.1矩阵按键设计 (3)4.2 LCD显示设计 (4)4.3步进电机模块设计 (5)4.4密码修改设计 (5)4.5密码比较模块 (6)5.软件设计及流程图 (6)6.个人体会 (8)7.参考文献 (9)附录 (10)摘要设计运用了ATMEL公司的AT89S52芯片系统,将微处理器、总线、蜂鸣器、矩阵键盘、存储器和I/O口等硬件集中一块电路板上,通过读取键盘输入的数据(密码)并储存到ATMEL912 24C08存储器中,然后判断之后键盘输入的数据与已存储的数据是否相同来决定打开密码箱或锁键盘或报警。

单片机课程设计密码锁设计

单片机课程设计密码锁设计

单片机课程设计密码锁设计在当今社会,安全问题越来越受到人们的重视,密码锁作为一种常见的安全防护设备,在保护个人财产和隐私方面发挥着重要作用。

本次单片机课程设计的任务就是设计一款基于单片机的密码锁。

一、设计要求本次设计的密码锁需要具备以下功能:1、能够设置和修改 4 位数字密码。

2、输入密码正确时,锁打开,并有相应的指示灯提示。

3、输入密码错误时,有错误提示,且错误次数超过 3 次则报警。

4、具备密码重置功能。

二、系统方案设计1、硬件设计单片机选型:选择 STC89C52 单片机作为核心控制器,其具有性能稳定、价格低廉、易于编程等优点。

输入模块:采用 4×4 矩阵键盘作为密码输入设备,可方便地输入数字和功能按键。

显示模块:选用 1602 液晶显示屏,用于显示密码输入状态、提示信息等。

存储模块:使用 EEPROM 芯片 AT24C02 来存储密码,以保证断电后密码不丢失。

报警模块:当密码输入错误次数超过 3 次时,通过蜂鸣器发出报警声音。

2、软件设计主程序:负责系统的初始化、键盘扫描、密码输入处理、密码验证、显示控制等。

键盘扫描程序:检测矩阵键盘上的按键动作,并将按键值返回给主程序。

密码处理程序:包括密码设置、修改、存储和验证等功能。

显示程序:控制 1602 液晶显示屏的显示内容。

三、硬件电路设计1、单片机最小系统包括单片机芯片、晶振电路和复位电路。

晶振为单片机提供时钟信号,复位电路用于系统的初始化。

2、矩阵键盘电路由16 个按键组成 4×4 矩阵,通过行线和列线的扫描来确定按键值。

3、显示电路1602 液晶显示屏通过数据总线和控制总线与单片机相连,实现数据的传输和显示控制。

4、存储电路AT24C02 通过 I2C 总线与单片机进行通信,用于存储密码数据。

5、报警电路蜂鸣器通过三极管驱动,当单片机输出高电平时,蜂鸣器发声报警。

四、软件程序设计1、主程序流程系统初始化,包括单片机端口初始化、液晶显示屏初始化、EEPROM 初始化等。

单片机课程设计 电子密码锁的设计

单片机课程设计 电子密码锁的设计

目录摘要----------------------------------------------------------- 3 关键字------------------------------------------------------------------------------------- 3 第一章前言----------------------------------------------------------------------------- 3 第二章基本功能设计--------------------------------------------------------------- 4⏹ 2.1 实验任务----------------------------------------------------------------- 4⏹ 2.2基本设计------------------------------------------------------------------ 4⏹ 2.3 系统框图-------------------------------------------------------------- -- 5 第三章硬件设计----------------------------------------------------------------------- 5 3.1硬件工作接线口---------------------------------------------------------------- 5 3.2 LED显示器结构与原理------------------------------------------------------- 6 3.3复位电路----------------------------------------------------------------------------- 6 3.4按键方式--------------------------------------------------------------------------- 7 3.5电路原理图------------------------------------------------------------------------- 8 3.6 元器件清单-------------------------------------------------------------------------9第四章软件设计-------------------------------------------------------------------- 10 4.1软件结构---------------------------------------------------------------------------------- 10 4.2源程序--------------------------------------------------------------------------------------12 第五章心得体会----------------------------------------------------------------------- 13 第六章参考文献----------------------------------------------------------------------- 14【摘要】电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,我们采取的是单片机,它具有超大规模集成电路技术,有极强的数据处理能力,I/O口多以它为核心设计的密码锁,结构小,功能强,现在很多单位甚至家里的各个家用电器,还有保险箱都需要它。

单片机电子密码锁设计方案

单片机电子密码锁设计方案
图3-6 显示电路原理图
3.7 报警电路
报警部分由瓷压电发声装置及外围电路组成,加电后不发声,当有键按下时,“叮”声,每按一下,发声一次,密码正确时,不发声直接开锁,当密码输入错误时,单片机的P2.1引脚为低电平,三极管T3导喇叭发出噪鸣声报警。见图3-7。
图3-7 报警电路原理图
3.8 开锁电路
通过单片机开锁执行机构,电路驱动电磁锁吸合,从而达到开锁的目的。其原理见图3-8。
2.2 方案论证
方案一:采用的数字电路虽然原理简单,但是组建时电路复杂,系统成本高,体积大,功耗大且扩展性能不强。
方案二:采用单片机为核心控制,实现起来也较为容易,体积小,耗能低。同时单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级。
2.3 方案选择
电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。
密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。
2.1.2 方案二
本方案采用一种是用以80C51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理如图2-2所示。
如图4-3为密码设置流程图,开始按下设置键,输入旧密码,如果错误累计三次,进行报警程序。如果输入正确,可以修改密码,确认后再次输入新密码,如果两次输入一样,则输入成功。如果两次输入的新密码不一样,则修改密码失败,重新返回设置新密码。
图4-3 密码设置流程图
4.4 开锁软件设计
如图4-4开锁流程图,开始时按开锁键,输入密码,如果输入正确,则开锁成功。如果输入错误累计达到三次,则执行报警程序。

单片机控制电子密码锁设计汇编程序摘要原理分析.

单片机控制电子密码锁设计汇编程序摘要原理分析.

单片机控制电子密码锁设计+汇编程序+摘要+原理分析单片机控制电子密码锁设计+汇编程序+摘要+原理分析[Abstract]Designs one kind the password lock which controls based on at89C2051 monolithic integrated circuit. And gives the hardware electric circuit and the software procedure which this monolithic integrated circuit password locks. The AT89C2051 programming realization control circuit, has the pressed key effective instruction, the input mistake, the decoding effective instruction, the control unblanking, fixed time interrupts, reports to the police wrongly, functions and so on password revision; 8 10 enter the system password, keeps secret the good use scope to be broad, is suitable places especially and so on family, guesthouse uses. After the user input password and presses down inputs the key, the procedure judgment input password is whether correct. If the input password is correct, then from P3.0 output unblanking signal, if the input password is not correct, then from P3.1 output password rub-out signal, if continual three times inputs the password is wrong, then from P3.2 output alarm, once the output alarm, after must wait for relieves reports to the police only then unlocks.单片机电子密码锁设计【摘要】设计一种基于AT89C2051单片机控制的密码锁。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、设计总说明随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。

但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。

而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。

加上其成本较高,一定程度上限制了这类产品的普及和推广。

鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。

本次基于8051单片机电子密码锁的设计,其主要具有如下功能:(1)设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。

(2)密码可以由用户自己修改设定(只支持6位密码),锁打开后才能改密码。

修改密码之前必须再次输入密码,在输入新密码时候需要二次确以防止误操作。

(3)报警、锁定键盘功能。

密码输入用发光管显示,当连续3次输入错误密码,系统声光报警。

电子密码锁的设计主要由三部分组成:4×4矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。

另外系统还有LED提示灯等。

密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能:(1)密码输入功能:按下一个数字键,一个“-”就显示在最右边的数码管上,同时将先前输入的所有“-”向左移动一位。

(2)密码清除功能:当按下清除键时,清除前面输入的所有值,并清除所有显示。

(3)密码更改功能:将输入的值作为新的密码。

(4)开锁功能:当按下开锁键,系统将输入与密码进行检查核对,如果确锁打开,否则不打开。

主要的设计实施过程:首先,选用8051单片机,以及选购其他电子元器件。

第二步,设计硬件电路。

第三步,编写单片机语言实现功能。

第四部,分别进行软件和硬件的调试。

最后,联合软、硬件调试整个系统,完成本次课程设计。

关键词:4×4矩阵键盘;8051单片机;密码锁;密码二次确认‘二、绪论2.1 背景随着社会物质财富的日益增长,安全防盗已成为社会问题。

而锁自古以来就是把守门户的铁将军,人们对它要求甚高,既要安全可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。

目前国内,大部分人使用的还是传统的机械锁。

然而,眼下假冒伪劣的机械锁泛滥成灾,互开率非常之高。

所谓互开率,是各种锁具的一个技术质量标准,也就是1把钥匙能开几把锁的比率。

经国家工商局、国家内贸局、中国消协等部门对锁具市场的调查,发现个别产品的互开率居然超标26倍。

为何弹子锁的“互开率”会如此之高?据有关专家人士剖析,弹子锁质量好坏主要取决于弹子数量的多少以及弹子的大小,而弹子的多少和大小受一定条件的限制。

此外,即使是一把质量过关的机械锁,通过急开锁,甚至可以在不损坏锁的前提下将锁打开。

机械锁的这些弊端为一种新型的锁---电子密码锁,提供了发展的空间。

2.2 电子锁电子锁是采取电子电路控制,以电磁铁或者卫星电机和锁体作为执行装置的机电一体化锁具,相比传统的机械锁具,电子锁不使用金属钥匙,保密性、精度都有很大提高。

电子锁的发明思路,源自古代发明的自动机械,例如古希腊数学家赫伦的液压自动门,中国古代诸葛亮的木牛流马,它们以重力或蒸汽压力驱动,最广泛的用途乃是用在古代墓道的地下机关。

电子工业的诞生,使得以微小电量驱动机械成为可能,于是有了电子锁一日千里的跃进。

三、课题要求本次课程设计,基于8051单片机电子密码锁的设计,利用4*4小键盘作为输入,LED作为显示。

当输入密码和设定的密码一致时,系统利用继电器输出解锁信号,其主要具有如下功能:(1)设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。

(2)密码可以由用户自己修改设定(只支持6位密码),锁打开后才能改密码。

修改密码之前必须再次输入密码,在输入新密码时候需要二次确以防止误操作。

(3)报警、锁定键盘功能。

密码输入用发光管显示,当连续3次输入错误密码,系统声光报警。

四、课题分析电路主要包括矩阵键盘输入密码,外部密码验证,单片控制,原理方框图如下:4.1矩阵键盘输入控制电路设计方案是非编码键盘,每条行线和列线都对应一条I/O口线,键位设在行线和列线的交叉点,当一个键按下就会有某一条行线与某一条列线接触,只要确定接触的是哪两条线,即哪两个I/O口线,就可以确定哪一个键被触动。

行线设计成上拉口线,初始时被置高电位,列线悬空,初始置低。

通过不断读行线口线,或者中断方式触发键位扫描。

当发现有键按下,将列线逐一置低,其他列线置高,读行线口线。

当某条列线置低时,某条行线也被拉低,则确定这两条线的交点处的按钮被按下。

将每个行线和列线的组合值作成列表,每次就可以通过查表确定键位,以决定之后要进行的操作。

五、课题方案选择方案一:使用8051单片机,采用汇编语言编写程序,该程序语言功能强大,调试较为方便,具有很强的实用性。

方案二:利用数字逻辑电路,运用电压比较器,555单稳态电路,计数器,JK触发器,UPS 电源等实现对门的电子控制。

方案三:使用8051单片机,利用基于单片机的C语言编写程序,通过Keil C51 uVision2软件进行仿真模拟。

方案二基于数字电路,操作繁琐,会出现较多的器件故障,同时调试复杂,难于维护。

方案三该逻辑语言较为复杂,编写程序时也较为复杂,还需进行软件仿真模拟,设计复杂。

综上所述,使用方案一,设计较为简便,调试简单,硬件电路较少,易于维护。

六、程序部分ORG 1000HMOV R4,#08H 密码个数8个MOV R0,#40H 密码暂存区MOV A,#00H 初始密码0,1,2,3,4,5GO: MOV @R0,AINC R0INC ADJNZ R4,GOSETB P3.0; 确认SETB P3.1 锁开SETB P3.2 错误SETB P3.4 报警MOV R0,#20HMOV A,#03HMOV @R0,A ;8155初始化MOV R0,#79HMOV R7,#06HINIT: MOV @R0,#0 ;显示缓冲区清零INC R0DJNZ R7,INITLOP: LCALL DISPLCALL KEYBJB ACC.4,LOP ;未按键返回MOV R0,#7EHMOV R7,#05HPUSH ASETD: DEC R0MOV A,@R0INC R0MOV @R0,ADEC R0DJNZ R7,SETDPOP ACCMOV @R0,AMOV 7DH,7CHCJNE ,A,#0AH,LOPCLR P3.0ACALL COMPCJNE R3, #03H, LOPCLR P3.4SJMP LOP-----------------------------------KEYB: LCALL BKS ;按键处理子程序JNZ BLK1LCALL DISPSJMP KEYBBLK1: LCALL DISPLCALL DISPLCALL BKSJNZ BLK2LCALL DISPSJMP KEYBBLK2: MOV R2,#0FEHMOV R4,#0BLK4: MOV R1,#21HMOV A,R2MOVX @R1,AMOV R1,#23HMOVX A,@R1JB ACC.0,BL1MOV A,#0SJMP BLKPBL1: JB ACC.1,BL2MOV A,#08HSJMP BLKPBL2: JB ACC.2,BL3MOV A,#10HSJMP BLKPBL3: JB ACC.3,BLMOV A,#18HBLKP: ADD A,R4PUSH ACCBLK3: LCALL DISPLCALL BKSJNZ BLK3POP ACCCJNE A,#10H,PPPP: JNC PP1MOV DPTR,#TBLMOVC A,@A+DPTRPP1: RETTBL: DB 07H,04H,08H,05H,09H,06H,0AH,0BH,01H,00H DB 02H,0FH,03H,0EH,0CH,0DHBL: INC R4MOV A,R2JNB ACC.7,BKLDRL AMOV R2,ASJMP BLK4BLKD: SJMP KEYBBKS: MOV R1,#21HMOV A,#0MOVX @R1,AMOV R1,#23HMOVX A,@R1CPL AANL A,#0FHRET---------------------------------DISP: MOV R0,#79HMOV R3,#20HBTL: MOV A,R3MOV R1,#21HMOVX @R1,A ;送位选码到PA口MOV A,@R0MOV DPTR,#TAB1MOVC A,@A+DPTR 查表INC R1MOVX @R1,A ;送显示码到PB口LCALL DELAY ;延时INC R0 MOV A,R3JB ACC.0,HERE ;一轮显示完到HERERR AMOV R3,ASJMP BTL ;继续本轮显示HERE: RETTAB1: DB 0C0H,0F9,0A4H,0B0H,99H,92H,82H 共阳显示码DB 0F8H,80H,90HDELAY: MOV R6,#0FFH ;延时子程序D1: MOV R5,#0FFHD2: DJNZ R5,D2DJNZ R6,D1MOV 30H,7EHMOV 31H,7DHMOV 32H,7CHMOV 33H,7BHMOV 34H,7AHMOV 35H,79HRET---------------------------------COMP: MOV R1,#40HMOV A,@R1CJNE A,30H, MOREINC R1MOV A,@R1CJNE A,31H, MOREINC R1MOV A,@R1CJNE A,32H, MOREINC R1MOV A,@R1CJNE A,33H, MOREINC R1MOV A,@R1CJNE A,34H, MORESJMP KMORE: INC R3CLR P3.2K: RETENDORG 1000HMOV R4,#08H 密码个数8个MOV R0,#40H 密码暂存区MOV A,#00H 初始密码0,1,2,3,4,5 GO: MOV @R0,AINC R0INC ADJNZ R4,GOSETB P3.0; 确认SETB P3.1 锁开SETB P3.2 错误SETB P3.4 报警MOV R0,#20HMOV A,#03HMOV @R0,A ;8155初始化MOV R0,#79HMOV R7,#06HINIT: MOV @R0,#0 ;显示缓冲区清零INC R0DJNZ R7,INITLOP: LCALL DISPLCALL KEYBJB ACC.4,LOP ;未按键返回MOV R0,#7EHMOV R7,#05HPUSH ASETD: DEC R0MOV A,@R0INC R0MOV @R0,ADEC R0DJNZ R7,SETDPOP ACCMOV @R0,AMOV 7DH,7CHCJNE ,A,#0AH,LOPCLR P3.0ACALL COMPCJNE R3, #03H, LOPCLR P3.4SJMP LOP----------------------------------- KEYB: LCALL BKS ;按键处理子程序JNZ BLK1LCALL DISPSJMP KEYBBLK1: LCALL DISPLCALL DISPLCALL BKSJNZ BLK2LCALL DISPSJMP KEYBBLK2: MOV R2,#0FEHMOV R4,#0BLK4: MOV R1,#21HMOV A,R2MOVX @R1,AMOV R1,#23HMOVX A,@R1JB ACC.0,BL1MOV A,#0SJMP BLKPBL1: JB ACC.1,BL2MOV A,#08HSJMP BLKPBL2: JB ACC.2,BL3MOV A,#10HSJMP BLKPBL3: JB ACC.3,BLMOV A,#18HBLKP: ADD A,R4PUSH ACCBLK3: LCALL DISPLCALL BKSJNZ BLK3POP ACCCJNE A,#10H,PP PP: JNC PP1MOV DPTR,#TBLMOVC A,@A+DPTRPP1: RETTBL: DB 07H,04H,08H,05H,09H,06H,0AH,0BH,01H,00H DB 02H,0FH,03H,0EH,0CH,0DHBL: INC R4MOV A,R2JNB ACC.7,BKLDRL AMOV R2,ASJMP BLK4BLKD: SJMP KEYBBKS: MOV R1,#21HMOV A,#0MOVX @R1,AMOV R1,#23HMOVX A,@R1 CPL AANL A,#0FHRET---------------------------------DISP: MOV R0,#79HMOV R3,#20HBTL: MOV A,R3MOV R1,#21HMOVX @R1,A ;送位选码到PA口MOV A,@R0MOV DPTR,#TAB1MOVC A,@A+DPTR 查表INC R1MOVX @R1,A ;送显示码到PB口LCALL DELAY ;延时INC R0MOV A,R3JB ACC.0,HERE ;一轮显示完到HERERR AMOV R3,ASJMP BTL ;继续本轮显示HERE: RETTAB1: DB 0C0H,0F9,0A4H,0B0H,99H,92H,82H 共阳显示码DB 0F8H,80H,90HDELAY: MOV R6,#0FFH ;延时子程序D1: MOV R5,#0FFHD2: DJNZ R5,D2DJNZ R6,D1MOV 30H,7EHMOV 31H,7DHMOV 32H,7CHMOV 33H,7BHMOV 34H,7AHMOV 35H,79HRET---------------------------------COMP: MOV R1,#40HMOV A,@R1CJNE A,30H, MOREINC R1MOV A,@R1CJNE A,31H, MOREINC R1MOV A,@R1CJNE A,32H, MOREINC R1MOV A,@R1CJNE A,33H, MOREINC R1MOV A,@R1CJNE A,34H, MORESJMP KMORE: INC R3CLR P3.2K: RETEND七、系统调试电子密码锁主要由矩阵键盘,LED数码显示器,提示灯,单片机程序组成。

相关文档
最新文档