基于AT89C51电子密码锁软件设计 - 副本
- 格式:ppt
- 大小:294.50 KB
- 文档页数:17


AT89C51单⽚机电⼦密码锁基于AT89C51单⽚机电⼦密码锁#include "main.h"/******************** LCD PART START *******************************/ //5ms延时void Delay5Ms(void){unsigned int TempCyc = 5552;while(TempCyc--);}//读状态unsigned char ReadStatusLCM(void){LCM_Data = 0xFF;LCM_RS = 0;LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;Delay5Ms();while (LCM_Data & Busy); //检测忙信号return(LCM_Data);}//写数据void WriteDataLCM(unsigned char WDLCM){ReadStatusLCM(); //检测忙LCM_Data = WDLCM;LCM_RS = 1;LCM_RW = 0;LCM_E = 0; //若晶振速度太⾼可以在这后加⼩的延时LCM_E = 0; //延时LCM_E = 1;void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC为0时忽略忙检测{if (BuysC) ReadStatusLCM(); //根据需要检测忙LCM_Data = WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 0;LCM_E = 0;LCM_E = 1;}//读数据unsigned char ReadDataLCM(void){LCM_RS = 1;LCM_RW = 1;LCM_E = 0;LCM_E = 0;LCM_E = 1;return(LCM_Data);}void LCMInit(void) //LCM初始化{LCM_Data = 0;WriteCommandLCM(0x38,0); //三次显⽰模式设置,不检测忙信号Delay5Ms();WriteCommandLCM(0x38,0);Delay5Ms();WriteCommandLCM(0x38,0);Delay5Ms();WriteCommandLCM(0x38,1); //显⽰模式设置,开始要求每次检测忙信号WriteCommandLCM(0x08,1); //关闭显⽰WriteCommandLCM(0x01,1); //显⽰清屏WriteCommandLCM(0x06,1); // 显⽰光标移动设置WriteCommandLCM(0x0C,1); // 显⽰开及光标设置}void LCD_write_char(unsigned char X,unsigned char Y, unsigned char DData){Y &= 0x1;X &= 0xF; //限制X不能⼤于15,Y不能⼤于1if (Y)X |= 0x40; //当要显⽰第⼆⾏时地址码+0x40;X |= 0x80; // 算出指令码WriteCommandLCM(X, 0); //这⾥不检测忙信号,发送地址码WriteDataLCM(DData);}//按指定位置显⽰⼀串字符void LCD_write_string(unsigned char X,unsigned char Y, unsigned char code *DData) {unsigned char ListLength;ListLength = 0;Y &= 0x1;X &= 0xF; //限制X不能⼤于15,Y不能⼤于1while (*DData) //若到达字串尾则退出'\0'就是0{if (X <= 0xF) //X坐标应⼩于0xF{LCD_write_char(X,Y, *DData); //显⽰单个字符DData++;X++;}}}/************/#include#include#define uchar unsigned char#define uint unsigned int/******************** LCD PART START *******************************/void delay(uint z) //延时uint x,y;for(x=z;x>0;x--)for(y=124;y>0;y--);}sbit e=P2^5;sbit rw=P2^6;sbit sr=P2^7;uchar code name[]="zxs"; uchar code name1[]="zcf"; uchar code name2[]="zx"; void write_com(uchar com) {int rs;rs=0;P0=com;delay(5);e=1;delay(5);e=0;}void write_data(uchar date) {int rs;rs=1;P0=date;delay(5);e=1;delay(5);e=0;}void init(){e=0;rw=0;write_com(0x0c); write_com(0x06);write_com(0x01);write_com(0x80);}void display(){uchar i;for(i=0;i<3;i++){write_data(name[i]);}write_com(0x80+0x40);for(i=0;i<3;i++){write_data(name1[i]);}}void main(){init();display();}#include#define uchar unsigned charuchar starbuf[10];uchar wordbuf[8];uchar pw[8]={1,2,3,4,5,6,7,8};uchar pwbuf[8];uchar count=0; // 初始没有输⼊密码,计数器设为0 uchar inputflag=0; // 先处于密码输⼊状态,⾮密码修改状态bit enterflag=0; // 没有按下确认键bit pwflag=0; // 密码标志先置为0sbit warn=P3^6;#define lcd_data P0sbit rs=P2^7;///////////////////////LCD1602驱动程序///////////////////////void delay_1602(unsigned int i){while(i--);}void enrw(){rs=0;rw=0;e=0;delay_1602(250);e=1;}write_data(uchar c){lcd_data=c;rs=1;rw=0;e=0;delay_1602(250);e=1;}init_lcd(void)//初始化{lcd_data=0x01;//清屏幕enrw();lcd_data=0x38;//数据长度为8位,双⾏显⽰,5*7字符。
《电子技术综合设计》设计报告设计题目:基于STC89C52单片机的电子密码锁设计组长:汪菲学号:专业与班级:信息12-1班姓名:田宣宣学号:专业与班级:信息12-1班姓名:侯宁博学号:专业与班级:信息12-1班时间: 2014 ~ 2015 学年第(1)学期指导教师:袁小平成绩:日期:2015年1月1日一、设计摘要和课题任务在日常生活和工作中,住宅与部门的安全防、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。
目前门锁主要用弹子锁,其钥匙容易丢失;保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高,且易出现故障,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。
针对这些锁具给人们带来的不便,为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的电子密码锁应运而生。
它的出现为人们的生活带来了很大的方便,有很广阔的市场前景。
本文从经济实用的角度出发,采用89S51单片机与低功耗CMOS型E2PROMAT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、显示、报警、开锁等电路,用C语言编写主控芯片的控制程序,设计了一款可以多次更改密码具有报警功能的电子密码锁。
关键词:单片机;密码锁;红外遥控完成的功能:1.密码锁初始设置6位密码,密码通过红外遥控器或4X4键盘输入,若密码正确,则将锁打开。
在按下每个按键的时候都会有蜂鸣器响声。
2.密码由用户自己设定,在开锁状态下,用户可自行修改密码。
本设计采用单片机为主控芯片,结合外围电路,组成电子密码锁,用户想要打开锁,必先通过提供的键盘输入正确的密码才能将锁打开,密码输入错误有提示,为了提高安全性,当密码输入错误一次将报警。
密码可以由用户自己修改设定,锁打开后才能修改密码。
修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。
3.系统工作时,用户通过红外遥控器或键盘输入密码,单片机将输入密码与设定密码进行比较,若密码正确,则发出开锁信号,将门打开,系统不报警;若密码不正确,则有相应的指示灯闪动,并要求重新输入密码,重新输入密码的次数不能超过3次,若3次输入的密码都不正确,则发出报警信号。
基于AT89C51的数字密码锁设计与实现摘要:为了满足多种场合的安防需要,设计了一款数字密码锁。
密码锁以AT89C51为核心,实现对其几个输入输出模块的状态控制,进而实现密码锁相应功能。
用户可通过硬件电路中的矩阵键盘进行密码输入,密码重置,密码存储等操作。
操作过程可以在数码管上直观显示。
通过proteus仿真,能够实现预期功能,该密码锁具有较广泛的应用价值。
关键词:AT89C51、矩阵键盘、数码管显示、状态机0 引言随着科学技术的发展和人们生活水平的提高,安保工作变得尤为重要[[1]]。
数字密码锁具有安全性高、价格便宜、耗电少、使用灵活等优点[[2]]。
使用过程中,通过输入密码来控制驱动电路,从而控制外围电路,实现开锁,关锁。
本文采用AT89C5I单片机作为密码锁核心控制元件,其结构简单,使用方便,价格便宜[[3]],可以持续稳定工作。
数字密码锁成品电路可用于单元门禁等多个公众场合。
1 数字密码锁系统架构本系统以AT89C51单片机(包含复位电路和晶振电路)为核心,外围配有矩阵键盘,七段数码管等接口和显示电路,实现开锁过程中的数字显示,以及错误报警等功能。
本系统可以实现多位密码的设置、存贮。
系统架构图如图1所示:图1:数字密码锁系统架构图具体功能如下:通过矩阵键盘输入密码,如果输入正确密码,驱动电路将锁打开,指示灯点亮,整个过程数码管会显示相应数字。
如果输入错误密码,蜂鸣器将发出错误警报。
2 硬件设计2.1 单片机最小系统采用AT89C51单片机(含有晶振、上电复位电路)作为核心控制元件,实现对输入信号的采集,以及对外围电路的控制。
2.2 矩阵键盘采用4*4矩阵键盘。
其中十个按键实现0~9十个数字输入,可连续输入多位密码。
左下角按键按下,可进行密码重新设定。
新密码录入完成,按下右下角按键,将密码保存。
键盘采用程序控制扫描方式[[4]],这样对CPU工作影响小,只使用8条行列信号线(P1口)就可以实现对按键信号的动态扫描输入。
基于AT89C51单片机的电子密码锁系统设计作者:姜彬居小琴来源:《无线互联科技》2014年第12期摘要:随着电子技术的不断发展和电子产品的智能化进步,电子密码锁在市场各领域的运用也变得越来越广泛,对于电子密码锁相关性能的研究也具有了极其重要的意义。
本文提出的基于AT889C51单片机电子密码锁系统,采用了单片机AT89C51作为系统核心组件,并通过电源电路、矩阵电路、LCD显示电路以及报警电路构成密码锁系统,实现了安全、便捷的密码锁读取功能,确保了密码锁的安全,具有较高的市场推广价值。
关键词:AT89C51单片机;电子密码锁;C语言电子密码锁在当前市场运用较为广泛,其主要通过对外接密码输入来实现对系统或电路的控制,并进一步控制系统机械开关的操作。
相关电子产品通过系统编程控制能够以电子密码锁的形式来实现系统的开关,尤其是对机械产品而言具有较高的安全性与可靠性。
本文提出的电子密码锁系统设计主要以AT89C51单片机为基础,通过矩阵式键盘、LCD显示、蜂鸣器以及二极管等部件组成主系统。
该系统设计编程方便、操作性强、具有较高的实用性,且耗能较低,在市场具有广阔的应用范围。
1 电子密码锁的总体设计本设计采用了AT89C51单片机电子锁系统,进行初始化设置,启动密码锁功能,密码输入显示屏幕采用了七段数码管半导体发光器件。
该系统的总电系统控制指令通过单片机进行实现,单片机根据实际操作情况分配部件工作内容,程序操作性强、方便简洁。
在用户输入密码过程中,单片机将会采用矩阵按键布局模式记录当前输入密码,并将该密码与系统设置密码进行比对,若密码匹配则开启密码锁,若密码错误则需要用户按下删除键重新输入密码。
当用户输入密码错误次数超过3次,电子密码锁将会自动锁定,需要用户切换管理员模式输入管理员密码才可解锁当前状态,并重新输入解锁密码。
2 电子密码锁的模块设计电子密码锁模块由系统主控模块、键盘输入模块、显示模块、声音控制模块、报警电路模块组成。