单片机课程设计——可改密码的电子密码锁设计
- 格式:doc
- 大小:4.05 MB
- 文档页数:15
山东交通学院单片机原理与应用课程设计院(部):轨道交通学院班级:自动化121学生姓名:学号:指导教师:时间:—课程设计任务书题目电子密码锁设计系(部)轨道交通学院专业班级自动化121学生姓名学号06月01日至06月12日共2周指导教师(签字)系主任(签字)年月日目录3.总体设计 (2)4密码比较模块 (6) (6) (8) (9)附录 (10)摘要设计运用了ATMEL公司的AT89S52芯片系统,将微处理器、总线、蜂鸣器、矩阵键盘、存储器和I/O口等硬件集中一块电路板上,通过读取键盘输入的数据(密码)并储存到ATMEL91224C08存储器中,然后判断之后键盘输入的数据与已存储的数据是否相同来决定打开密码箱或锁键盘或报警。
在keil4软件中编程,系统可实现6位密码的处理,并通过控制步进电机控制密码箱门的电子锁,同时还可以修改改密码。
利用单片机系统制作的密码箱安全性能更高,更易操作且体积小。
关键词:单片机、密码锁、修改密码1.设计要求本实验将实现六位数的电子密码锁。
要求使用4X4行列式键盘作为输入,并用LCD实时显示。
具体要求如下:1.开机时LCD显示“welcometouse”,初始化密码为“123456”,密码可以更改。
2.按下“10”,开始则显示“EnterPlease:”。
3.随时可以输入数值,并在LCD上实时显示‘*’。
当键入数值时,为了保密按从左到右依次显示‘*’,可键入值为0~9。
4.按下“13”键,则表示确定键按下,进行密码对比。
如相符则在LCD第一行显示“Openthedoor!”,同时指示灯亮起并且步进电机旋转一定的角度;如不符,则LCD第一行显示“Wrongpassword!”,并且蜂鸣器同时提示一下。
如果密码连续三次错误则蜂鸣器连续响5下,并且持续5秒不能进行任何操作5.在开锁状态下按下“12”键,进入修改密码状态,LCD同时提示“Enternewcode!”。
为删除按键,出入之后可以进行删除。
单片机课设简易密码锁
单片机课设简易密码锁的设计涉及硬件和软件两个部分。
硬件部分包括:
1. 单片机:常用的单片机型号包括8051、AVR、PIC等,根据设计的具体需要选择合适的型号。
2. 输入设备:矩阵键盘,用于输入密码。
3. 显示设备:LCD1602液晶显示屏,用于显示密码输入提示和当前状态。
4. 存储设备:可以使用I2C总线进行存储,用于储存修改后的密码。
5. 其他设备:如蜂鸣器,用于报警。
软件部分包括:
1. 主程序模块:实现密码锁的基本功能,包括密码的输入、比对、修改等。
2. 密码储存模块:通过I2C总线进行密码的存储和读取。
3. 显示模块:通过LCD1602液晶显示屏显示密码输入提示和当前状态。
4. 报警模块:当密码输入错误次数超过一定次数时,触发蜂鸣器报警。
具体设计流程如下:
1. 初始化程序:包括液晶屏的初始化和单片机的初始化等。
2. 主程序循环:在初始化完成后,进入主程序循环,等待用户的操作。
3. 用户输入密码:通过矩阵键盘输入密码。
4. 密码比对:将用户输入的密码与预设的密码进行比对。
5. 根据比对结果执行相应操作:如果密码正确,则解锁;如果密码错误,则根据错误次数进行相应的操作,如显示错误提示、进行声音报警等。
6. 如果需要修改密码,则进入密码修改程序,修改完成后储存新密码。
以上是单片机课设简易密码锁的基本设计和流程,具体实现还需要根据实际需要和设计要求进行调整和完善。
单片机课程设计报告电子密码锁HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】山东交通学院单片机原理与应用课程设计院(部):轨道交通学院班级:自动化121学生姓名:学号:指导教师:时间:—课程设计任务书题目电子密码锁设计系 (部) 轨道交通学院专业班级自动化121学生姓名学号06 月 01 日至 06 月 12 日共 2 周指导教师(签字)系主任(签字)年月日目录3.总体设计 (2)4密码比较模块 (6) (6) (8) (9)附录 (10)摘要设计运用了ATMEL公司的AT89S52芯片系统,将微处理器、总线、蜂鸣器、矩阵键盘、存储器和I/O口等硬件集中一块电路板上,通过读取键盘输入的数据(密码)并储存到ATMEL912 24C08存储器中,然后判断之后键盘输入的数据与已存储的数据是否相同来决定打开密码箱或锁键盘或报警。
在keil4软件中编程,系统可实现6位密码的处理,并通过控制步进电机控制密码箱门的电子锁,同时还可以修改改密码。
利用单片机系统制作的密码箱安全性能更高,更易操作且体积小。
关键词:单片机、密码锁、修改密码1.设计要求本实验将实现六位数的电子密码锁。
要求使用4X4 行列式键盘作为输入,并用LCD 实时显示。
具体要求如下:1. 开机时LCD显示“welcome to use”,初始化密码为“123456”,密码可以更改。
2. 按下“10”,开始则显示“Enter Please:”。
3. 随时可以输入数值,并在LCD上实时显示‘*’。
当键入数值时,为了保密按从左到右依次显示‘*’,可键入值为0~9。
4. 按下“13”键,则表示确定键按下,进行密码对比。
如相符则在LCD第一行显示“Open the door!”,同时指示灯亮起并且步进电机旋转一定的角度;如不符,则LCD第一行显示“Wrong password!”,并且蜂鸣器同时提示一下。
1、总体方案设计设计本课题时构思了两种方案:一种是用以A T89C2051为核心的单片机控制方案;另一种是用CMOS数字集成电路控制方案。
考虑到单片机方案原理复杂,而且调试较为繁琐,所以本文采用后一种方案。
1:采用数字电路控制。
其原理方框图如图数字电路控制方案采用数字密码锁电路的好处就是设计简单。
用以CMOS构成的数字逻辑电路作为密码锁的核心控制,共设了8个用户输入键;如果用户输入密码的时间超过5秒(一般情况下,用户不会超过5秒,若用户觉得不便,还可以修改)电路将报警20秒。
通过比较以上两种方案,单片机方案有较大的活动空间,但是成本昂贵;采用数字密码锁电路只要设计合理,仍然能够满足保密性要求。
所以我们采用后一种方案。
2.1设计说明要求用电子器件设计制作密码锁的控制电路,使之在输入正确的代码时输出信号,以启动执行机构动作,并用红,绿LED灯指示开锁、关锁状态。
设计完成的要求:(1)密码锁控制器中存储一个八位代码(二进制),当开锁按钮开关(共设置了11位,其中只有8位有效密码键,其余三位为干扰位和密码更改位)的输入代码等于存储代码时启动开锁控制电路,并且绿灯亮,红灯灭表示开锁状态。
(2)从第一个按钮触动后的5秒内若未能将锁打开,则电路自动复位并有扬声器发出报警信号,报警信号持续时间20秒,同时绿灯灭,红灯亮表示关锁状态。
(3)本设计完成了发挥部分的要求即密码修改电路,通过按钮开关(space 键)控制,用户可以自行修改八位密码,修改后的密码将进入电路锁存。
2.2设计思路根据题目要求,我们设计了这款实用稳定的数字电子密码锁,由密码按钮键、预置密码锁存器、密码比较识别电路、5s计时电路和20s计时电路等组成。
整机采用CMOS数字集成电路,电路新颖,线路简单,保密性强,性能可靠,误码报警等特点。
2.3总体方框图3、设计原理分析电路组成:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入锁定电路3.1 密码输入和修改电路:电路总共设计了11个用户输入键,其中有8位是有效的密码按键,其余的分别是M键(仿真电路中采用此按键表示开始输入密码,但是实际电路中可以用灵敏度较高的端口来代替,当人走近门时,触摸了敏感端,由于人自身带电,端口变成高电平,黄色指示灯亮表示电子锁处于待命状态,当然这在仿真电路中通过按键也可以实现),L键(输入密码结束,按下确认键即L键),space键(这个按键装在电路内部,是密码修改键,修改前后分别按space 按键表示修改密码和密码修改结束)3.2报警电路:报警电路实现的功能是:当输入密码的时间超过5s(一般情况下用户输入不会超过)或者密码输入错误,电路报警20s,防止他人恶意开锁。
目录摘要----------------------------------------------------------- 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口多以它为核心设计的密码锁,结构小,功能强,现在很多单位甚至家里的各个家用电器,还有保险箱都需要它。
课程设计(综合实验)报告( 2009 -- 2010 年度第二学期)名称:微处理器系统课程设计题目:电子密码锁设计院系:电子与通信工程系班级:电子0702班学号: 0201学生姓名:白羽峰指导教师:张宁设计周数: 1周成绩:日期: 2010 年 7 月单片机课程设计之电子密码锁一、课程设计要求1.通过键盘输入密码。
密码正确与错误进行相应的音乐提示,与液晶显示提示。
3次按下错误密码则锁死,禁止信号输入。
2.通过超级密码(长度为16位)进入密码修改模式,进行密码修正,用户密码长度为8位。
二、实验目的进一步的掌握使用ICC进行编程以及程序调试,熟悉并掌握AVR单片机片上外设功能及其使用,熟练掌握单片机学习板上矩阵键盘、1602液晶、蜂鸣器、EEPROM (AT24C02)等外设的使用以及和单片机间的通信。
三、设计思路利用EEPROM(AT24C02)掉电不丢失的特性设计电子密码锁,先向AT24C02中写入一组数据作为密码(密码设定),然后进入密码输入界面,输入密码并进行密码真伪判别,密码真伪有不同对应的提示,表现在液晶显示和蜂鸣器鸣响上,出现三次密码输入错误则锁死,不能进行任何操作,只能关闭电源重新开始。
四、实验源程序代码如下:#include <>#include <>#include <>#define uchar unsigned char#define uint unsigned int#define LCD_EN BIT(PC3)#define LCD_RS BIT(PC2)//EEPROM控制寄存器位定义:#define EERE 0 //读#define EEWE 1 //写#define EEMWE 2 //总写入#define WWRIE 3 //中断uint add[8]={0x0100,0x0101,0x0110,0x0111,0x1000,0x1001,0x1010,0x1011};uchar sc[16]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38, 0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38}; uchar title[]={"Code:"};uchar title1[]={"Hint:"};uchar title2[]={"Error!"};uchar title3[]={"OK!"};uchar title8[]={"Hello!I like AVR"};uchar title4[]={"Warnning!"};uchar title5[]={"Super Code:"};uchar title6[]={"Input New Code:"};uchar title7[]={"Set Code:"};uint xians[]={0};uchar key_flag;unsigned data_temp;void_init(void){DDRB=0xff; //定义B口输出PORTB=0xff;}void eeprom_w(uint eeadd, uchar eedata){while(EECR&(1 << EEWE)); //写等待EEAR=eeadd; //设置写入地址EEDR=eedata; //设置写入数据EECR|=(1<<EEMWE); //总写入允许EECR|=(1 << EEWE); //开始写入}char eeprom_r(uint eeadd){while(EECR&(1 << EEWE)); //写等待EEAR=eeadd; //设置读入地址EECR|=(1<<EERE); //读命令return EEDR; //返回数据}void delay_1ms(void){uint i;for (i=0;i<1140;i++);}void delay(uint n){uint i=0;for (i=0;i<n;i++)delay_1ms();}void LCD_Write_half_char(void){PORTC &= 0x0F; //portc0~3=0PORTC |= (data_temp<<4)&0xF0; //send LOW 4bitPORTC |= LCD_EN; //EN端产生一个由低电平变高电平,写LCD delay(2);PORTC &= ~LCD_EN; //EN端产生一个由高电平变低电平,写LCD PORTC &= 0X0F;delay(2);}void LCD_write_char(uint command,uint data){PORTC &= ~LCD_EN;if (command == 0)PORTC &=~LCD_RS; //RS=0 发送命令elsePORTC |=LCD_RS; //RS=1 发送数据data_temp = data;data_temp=data_temp >>4;LCD_Write_half_char();data_temp = data;LCD_Write_half_char();delay(1);}void LCD_init(void)LCD_write_char(0,0x38);delay(1);LCD_write_char(0,0x02);delay(1);LCD_write_char(0,0x28); // 显示模式设置(不检测忙信号) delay(1);LCD_write_char(0,0x08); // 显示关闭delay(1);LCD_write_char(0,0x01); // 显示清屏delay(1);LCD_write_char(0,0x06); // 显示光标移动设置delay(1);LCD_write_char(0,0x0c); // 显示开及光标设置delay(5);}uchar key_read(void){ uchar i;DDRA = 0x0E; //获取列地址PORTA = 0x0E;i = PINA;DDRA = 0xf0; //获取行地址PORTA = 0xf0;i |= PINA;DDRA = 0x00; //输出复位switch (i) //将按键码转换成键值{case 0x7d: return 0x31;case 0xbd: return 0x32;case 0xdd: return 0x33;case 0xed: return 0x34;case 0x7b: return 0x35;case 0xbb: return 0x36;case 0xdb: return 0x37;case 0xeb: return 0x38;case 0x77: return 0x2a;case 0xb7: return 0x39;case 0xd7: return 0x30;case 0xe7: return 0x23;default : return 0x00;delay(10);}}void chush(void){uchar i=0,k,j,temp=0x00,m,n;uchar x[8]={0};uint add1[8]={0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c};DDRC=0xff;PORTC=0x00;LCD_init();LCD_write_char(0,0x80);for(k=0;k<5;k++)LCD_write_char(1,title[k]);LCD_write_char(0,0x80+0x40);for(j=0;j<5;j++)LCD_write_char(1,title1[j]);}void main(void){uchar i=0,k,j,temp=0x00,m,n,l,w=0,y=0,z,v,t=0,dkz;uchar x[8]={0},dec[8]={0},p[16]={0},c[8]={0};uint add1[8]={0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c};uint add2[16]={0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9, 0xca,0xcb,0xcc,0xcd,0xce,0xcf};DDRD=0xFF;PORTD=0xF0;DDRC=0xff;PORTC=0x00;LCD_init();LCD_write_char(0,0x80);for(k=0;k<9;k++)LCD_write_char(1,title7[k]);while(i<8){c[i]=key_read();if(c[i]!=0&&c[i]!=temp){LCD_write_char(0,add2[i]);LCD_write_char(1,0x2a);temp=key_read();i++;}/*delay(2);dkz=PIND;if(dkz==0x70){i=8;}*/}if(i==8){ temp=0;i=0;for(m=0;m<8;m++){void_init();eeprom_w(add[m],c[m]); //将数据写入EEPROM中的单元 PORTB=eeprom_r(add[m]);//读取EEPROM中的数据,送显dec[m]=eeprom_r(add[m]);delay(20);}}while(1){delay(2);dkz=PIND;if(dkz==0xE0){LCD_write_char(0,0x01); // 显示清屏LCD_write_char(0,0x80);for(k=0;k<5;k++)LCD_write_char(1,title[k]);LCD_write_char(0,0x80+0x40);for(j=0;j<5;j++)LCD_write_char(1,title1[j]);}x[i]=key_read();if(x[i]!=0&&x[i]!=temp){LCD_write_char(0,add1[i]);LCD_write_char(1,0x2a);temp=key_read();i++;}if(i==8){ temp=0;i=0;for(m=0;m<8;m++){if(x[m]==dec[m]){w++;}}if(w==8){LCD_write_char(0,0x80+0x45);for(n=0;n<3;n++)LCD_write_char(1,title3[n]);PORTD^=BIT(5);delay(100);PORTD^=BIT(5);w=0;delay(200);LCD_write_char(0,0x01); // 显示清屏LCD_write_char(0,0x80);for(k=0;k<16;k++)LCD_write_char(1,title8[k]);}else{LCD_write_char(0,0x80+0x45);for(n=0;n<6;n++)LCD_write_char(1,title2[n]);for(l=0;l<6;l++){PORTD^=BIT(5);delay(50);}y++;}}if(y==3){y=0;LCD_write_char(0,0x01); // 显示清屏LCD_write_char(0,0x80);for(z=0;z<9;z++)LCD_write_char(1,title4[z]);dkz=PIND;while(dkz==0xF0||dkz==0x70);}delay(2);dkz=PIND;if(dkz==0x70){chush();}else if(dkz==0xB0){LCD_write_char(0,0x01); // 显示清屏 LCD_write_char(0,0x80);for(z=0;z<11;z++)LCD_write_char(1,title5[z]);while(i<16){p[i]=key_read();if(p[i]!=0&&p[i]!=temp){LCD_write_char(0,add2[i]);LCD_write_char(1,0x2a);temp=key_read();i++;}}if(i==16){ temp=0;i=0;for(m=0;m<16;m++){if(p[m]==sc[m]){t++;}}}if(t==16){LCD_write_char(0,0x01); // 显示清屏LCD_write_char(0,0x80);for(z=0;z<15;z++)LCD_write_char(1,title6[z]);while(i<8){c[i]=key_read();if(c[i]!=0&&c[i]!=temp){LCD_write_char(0,add2[i]);LCD_write_char(1,0x2a);temp=key_read();i++;}}if(i==8){ temp=0;i=0;for(m=0;m<8;m++){void_init();eeprom_w(add[m],c[m]); //将数据写入EEPROM中的0x0100单元PORTB=eeprom_r(add[m]);//读取EEPROM中0x0100单元的数据,送显dec[m]=eeprom_r(add[m]);delay(20);}}}}}}五、实验心得通过本次课程设计,我对使用ICC进行编程以及程序调试有了进一步的掌握,并且对AVR单片机片上外设功能及其使用有了一个清晰的了解,较熟悉的掌握了单片机学习板上矩阵键盘、1602液晶、蜂鸣器、EEPROM(AT24C02)等外设的使用以及和单片机间的通信。
目录目录 (1)中文摘要 (2)第一章概述 (5)第二章系统总体方案设计 (6)第三章硬件电路设计 (10)3.1键盘电路设计 (10)3.2 LED显示电路 (12)3.3 开锁警电路 (15)第四章软件设计 (17)4.1 软件设计思路 (17)4.2各子程序设计 (17)第五章系统调试 (22)第六章心得体会 (23)第七章参考文献 (24)附录 (25)源程序清单 (25)中文摘要摘要:在日常生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣,随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。
为满足人们对锁得使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。
密码锁具有安全性高、成本低、功耗低、易操作等优点。
在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐替代传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。
随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的只能密码锁,它除了具有电子密码锁的功能外,还引进了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。
随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。
但是,这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。
而且指纹识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。
加上其成本较高,一定程度上限制了这类产品的普及和推广。
鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。
基于以上思路,本次设计使用ATMEL公司的AT89C51实现—基于单片机的电子密码锁的设计,其主要具有如下功能:密码通过键盘输入,若密码正确,则将锁打开。
单片机原理与应用技术课程设计报告题目:基于单片机控制的电子密码锁专业班级:___应教112 _____姓名:___ _______时间:___ _____________指导教师:_____ ___________2014年6 月20日电子密码锁设计任务书1.设计目的与要求(1)状态显示功能:锁定状态时系统用3位数码管显示OFF,用3位数码管显示成功开锁次数;成功开锁时用3位数码显示888,用3位数码管显示成功开锁次数。
(2)密码设定功能:通过一个4×4的矩阵式键盘可以任意设置用户密码(1-16位长度),同时系统掉电后能自动记忆和存储密码在系统中。
(3)报警和加锁功能:密码的输入时间超过12秒或连续3次输入失败,声音报警同时锁定系统,不让再次输入密码。
此时只有使用管理员密码方能对系统解锁。
(4)扩展功能:增加遥控控制功能。
2.设计内容(1)画出电路原理图,正确使用逻辑关系;(2)确定元器件及元件参数;(3)进行电路模拟仿真;(4)SCH文件生成与打印输出;3.编写设计报告写出设计的全过程,附上有关资料和图纸,有心得体会。
4.答辩在规定时间内,完成叙述并回答问题。
基于单片机控制的电子密码锁班级:应教112 姓名:袁文浩摘要:在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。
在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替了传统的机械式密码锁,电子密码锁具有安全性高、成本低、功耗低、易操作等优点。
本文从经济实用的角度出发,采用台湾宏晶公司的单片机STC89C52作为主控芯片与数据存储器单元,结合外围的矩阵键盘输入、数码管显示、报警、开锁等,用C语言编写的主控芯片控制程序,并用Keil软件进行编译,设计了一款可以多次更改密码,具有报警功能的电子密码控制系统。
1 2020年4月19日
单片机课程设计电子密码锁设计 目 录 1 引言 ......................................................................... 错误!未定义书签。
2 系统设计分析 ............................................................. 错误!未定义书签。
2.1 总体设计框图 .................................................... 错误!未定义书签。
2.2 硬件电路设计分析 ............................................ 错误!未定义书签。
2.2.1 时钟电路设计 .......................................... 错误!未定义书签。
2.2.2 复位电路设计 .......................................... 错误!未定义书签。
2.2.3 矩阵键盘设计 .......................................... 错误!未定义书签。
2.2.4 报警控制电路 .......................................... 错误!未定义书签。
2.2.5 液晶显示电路 .......................................... 错误!未定义书签。
2.3 系统软件设计 .................................................... 错误!未定义书签。
2.3.2 初始化及按盘识别程序 ........................... 错误!未定义书签。
2.3.3 开锁程序 .................................................. 错误!未定义书签。
目录 课程设计(论文)任务书 ................................................ 1 可改密码电子密码锁设计报告 ............................................ 1 第一章 概述 ....................................................... 2 第二章 系统总体方案设计 .......................................... 2 第三章 硬件电路设计 .............................................. 3 3.1 键盘电路设计 ............................................... 3 3.2LCD显示电路 ................................................ 4 3.3 开锁电路 ................................................... 6 3.4报警电路 ................................................... 6 3.5密码掉电保存电路 ........................................... 7 第四章 软件设计 ................................................... 8 4.1软件设计思路 ............................................... 8 4.2 程序设计流程图 ............................................. 9 4.3 程序设计 .................................................. 10 第五章 系统调试 .................................................. 10 第六章 心得体会 .................................................. 12 致 谢 ........................................................ 13 参考文献: ....................................................... 13 附件1:系统总电路图 ............................... 错误!未定义书签。 附件2:源程序 ..................................... 错误!未定义书签。 1
课程设计(论文)任务书 设计题目:可改密码电子密码锁 设计任务:以89C52单片机为核心,制作一个可以更改6位密码的模拟电子密码锁。 设计要求: 密码位数为6位。 显示使用1602液晶显示。 更改的密码支持断电保存。 支持连续输入三次错误密码报警。 密码输入状态动态显示。 分别使用两个发光二极管表示输入正确和错误密码。
可改密码电子密码锁设计报告 摘要 本文介绍基于MCS-51单片机的可更改密码的电子密码锁设计,并支持掉电保存密码,程序使用了C语言编写。 关键词 单片机 电子密码锁 改变
Abstract: This article describes the MCS-51 microcontroller based on the password change the design of electronic locks, and to support power-down save the password, the program uses the C language. Key word: MCU Electronic code lock Change 2
第一章 概述 密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的数字密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。其特点是保密性好,随机开锁成功率几乎为零。密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。无活动零件,不会磨损,寿命长。使用灵活性好,不像机械锁必须佩带钥匙才能开锁。数字密码锁操作简单易行,一学就会。 本文所涉及的是市场占有率最高的是MCS—51系列,因为世界上很多知名的IC生产厂家都生产51兼容的芯片。到目前为止,MCS—51单片机已有数百个品种,还在不断推出功能更强的新产品。 本设计是基于单片机的密码锁设计方案,根据要求,给出了该单片机密码锁的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分配、C语言源程序及详细注释等内容。
第二章 系统总体方案设计 用以STC89C52为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加掉电存储。其原理如图2.1所示。
2.1单片机控制方案 延时报警 89S51 单片机 AT24C02掉电存储 矩阵 键盘 控制 LCD1602显示 LED模拟开锁 LED密码错误显示 3
设计思路如下: 1、输入密码用矩形键盘(4*3),包括数字键和功能键。 2、LCD1602用来实时显示当前的各操作状态。 3、用发光二极管代替开锁的电路,发光表示开锁。 4、输入密码错误次数超过3次,系统报警。 5、打开电源后,LCD交替显示“Input password, please press 0”和“Change password,please press 1”,设原始密码为“123456”,只要输入此密码便了开门。这样可预防停电后再来电时无密码可用。 6、任何状态下,按“取消”键,LCD返回功能交替选择的初始状态。 7、欲重新设定密码,需先输入旧密码后才能更改。 8、修改密码时,需输入两次新密码确认一致,如果两次输入的密码不一样则LCD显示“error”并返回初始状态。 软件的设计主要包括键盘键值的读取,LCD显示程序,密码比较程序和报警程序等。
第三章 硬件电路设计
3.1 键盘电路设计 使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图3.1。本设计中矩阵键盘接在单片机的P1口。
图3.1 矩阵键盘 4
每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。 在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。 当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。 对照图3.1所示的4×3键盘,说明线反转个工作原理。 首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。 判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。 具体的功能设计如表3.1: 表3.1 按键功能 按 键 键 名 功 能 说 明 0-9键 数 字 键 功能选择和输 入 密 码 确认键 确认键 完成并确认当前操作 取消键 取消键 取消当前操作返回初始状态
3.2LCD显示电路
本系统设计的显示电路是为了给使用者以提示而设置的。本系统的显示采用了LCD1602作为显示模块,其能够同时显示16x02即32个字符。LCD在系统中一共负责显示12条操作提示,其D0-D7引脚分别接单片机的P0口、VSS和VDD分别接电源和地线、VEE为液晶亮度调节按钮(可接电位器)、RS为数据或命令的选择端接P2.6、RW为读写的选择端接P2.5、E为使能信号接P2.7。如图3.2所示。
图3.2 LCD显示电路 5
LCD1602的管角及寄存器介绍如下: 引脚说明 1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线 VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,其中: 引脚 符号 功能说明 1 VSS 一般接地 2 VDD 接电源(+5V)
3 V0 液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
4 RS RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
5 R/W R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 6 E E(或EN)端为使能(enable)端,下降沿使能。 7 DB0 低4位三态、 双向数据总线 0位(最低位) 8 DB1 低4位三态、 双向数据总线 1位 9 DB2 低4位三态、 双向数据总线 2位 10 DB3 低4位三态、 双向数据总线 3位 11 DB4 高4位三态、 双向数据总线 4位 12 DB5 高4位三态、 双向数据总线 5位 13 DB6 高4位三态、 双向数据总线 6位 14 DB7 高4位三态、 双向数据总线 7位(最高位)(也是busy flag) 15 BLA 背光电源正极 16 BLK 背光 电源负极
寄存器选择控制表 RS R/W 操作说明 0 0 写入指令寄存器(清除屏等) 0 1 读busy flag(DB7),以及读取位址计数器(DB0~DB6)值 1 0 写入数据寄存器(显示各字型等) 1 1 从数据寄存器读取数据