基于AT89c51密码锁设计

2019-12-02来源: 51hei关键字:AT89c51  密码锁

密码锁的整体电路图:
 

程序流程图:
 
  

 

源程序:


/*

课程名称:电子密码锁设计

设计任务:根据设定好的密码,采用按键实现6为的输入功能,

                                        当用户输入的密码正确并且是在规定的时间(普

                                        通用户要求在12s内输入正确的密码)时,锁就

                                        打开,如果输入的三次密码不正确,就发出警报

                                        声。如果用户的时间超过40秒,电路将报警80

                                        秒,若电路连续报警三次,电路将锁定键盘5分

                                        钟,防止他人的非法操作

*/

#include"reg51.h"        

#include"intrins.h"


#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long


sbit bj = P3^0;                        //定义报警

sbit led_y = P3^5;         //定义黄色灯

sbit led_r = P3^6;        //定义红色灯

sbit led_g = P3^7;        //定义绿色灯


ulong pwd = 234567;         //定义电子锁密码

uint gy = 0;                      //定义管理员/用户(管理员为1)标识

uint ss = 0;                                  //定义上锁标识(0时表示已上锁)

uint flag = 0;                   //定义中断函数中所用到的标识

uchar sd = 1;                                 //定义键盘锁定(1为未锁)标识

uint pcw = 0;               //定义密码错误次数

uint bjc = 0;                                  //定义报警次数

uint jp = 0;                                  //定义键盘扫描值

uint cnt = 0;                   //定义中断次数

uint mcnt = 0;

uint cs = 0;                     //定义超时标识

uchar key;

//uchar j;



//定义共阳数码管段选数组

uchar code table[11] ={0x3F,0x06,0x5B,0x4F,0x66,

                                                                                         0x6D,0x7D,0x07,0x7F,0x6F,0x08};

//定义按键

uchar code table1[16] = {0xee,0xde,0xbe,0x7e,

                                                                                                0xed,0xdd,0xbd,0x7d,

                                                                                                0xeb,0xdb,0xbb,0x7b,

                                                                                                0xe7,0xd7,0xb7,0x77};


//定义储存按键值

uchar table2[6];


//定义短延迟函数

void delay(uint n)        

{

   while(n--);

}


//定义延迟n s函数

void delayns(uint n)   

{

    unsigned char a,b,c,e;

                for(e=n;e>0;e--)

                        for(c=167;c>0;c--)

                                        for(b=171;b>0;b--)

                                                        for(a=16;a>0;a--);

    _nop_();  //if Keil,require use intrins.h

}        



//定义初始化函数

void init()

{

        uchar i,k;

        led_y = 0;

        led_r = 1;

        led_g = 1;

        bj = 1;

        EA = 1;                                                                                       //打开总中断

        EX1 = 1; IT1 = 1;               //打开外部中断1,并设置触发方式为下降触发方式

        TMOD = 0X01;                                                                                 //设置定时器0工作方式1

        TH0 = (65536 - 50000)/256;            

        TL0 = (65536 - 50000)%256;                   //给定时器0赋值为50ms

        for(i = 0;i < 6; i++)

        {

                 table2[i] = 10;

        }

        for(k = 0;k<8;k++)

        {

                P0=0x08;

                P2 = k;        

        }

                

}


//定义上锁中断函数

void INT_0() interrupt 0

{

        uchar h;

        ss = 0;                                                                                                //密码锁上锁

        led_g = 1;

        for(h = 0;h < 6; h++)                     //初始化table2[]为10

        {

                 table2[h] = 10;

        }

}


//定义管理员/用户切换中断函数

void INT_1() interrupt 2

{

        uchar h;

        if(flag == 0)

        {        

                gy = 1;                                                                                        //关闭管理员指示灯

                led_y = 1;                                                                        //关闭密码错误指示灯

                flag = 1;                

          for(h = 0;h < 6; h++)     //初始化table2[]为10

                {

                         table2[h] = 10;

                }

        }

        else

        {

gy = 0; //关闭管理员指示灯

[1] [2] [3] [4] [5]
关键字:AT89c51  密码锁 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic481657.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:51单片机音乐盒的仿真课程设计(8首歌)
下一篇:ACS712+单片机实现电流检测与报警的电路原理图与源码

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

AT89C51单片机十字路口交通灯设计
制作出来的实物图如下: 这是一个十字路口的交通灯设计仿真原理图如下(proteus仿真工程文件可到本帖附件中下载) keil单片机源程序如下:#include<include.h>sbit NS_GRE = P2^5;      sbit NS_YEL = P2^4; sbit NS_RED = P2^3;   sbit EW_GRE = P2^2;  sbit EW_YEL = P2^1;  sbit EW_RED = P2^0;   uint8  EW_Timer = unused8; &
发表于 2019-12-03
AT89C51单片机十字路口交通灯设计
单片机电子密码锁门禁系统设计 AT24C02保存密码
该设计基于STC单片机设计,电路主要由51单片机最小系统和按键部分、蜂鸣器报警部分、LCD液晶显示部分等组成。该电路设计简单,单层板加上几根跳线即可完成,适合电子初学者DIY制作。电子密码锁具体功能介绍:1、该电子密码锁默认密码为1234567890,密码通过键盘输入,若密码正确,则将锁打开。2、密码可以由用户自己修改设定(只支持6位密码),锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。3、报警、锁定键盘功能。密码输入错误显示器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。4、AT24C02保存密码,支持复位保存,掉电保存功能。附件内容包括:整个电子密码锁
发表于 2019-12-02
单片机电子密码锁门禁系统设计 AT24C02保存密码
NRF24L01的使用方法和简单操作介绍(附参考程序)
实际程序测试出来的,比如以下程序:#include<reg51.h>#define k 0xfevoid main(){P1=k;}则会出现此类结果:MOSI = (uchar & 0x80);         // output 'uchar', MSB to MOSI                            uchar = (uchar <
发表于 2019-11-29
NRF24L01的使用方法和简单操作介绍(附参考程序)
AT89C51单片机对直流电动机的驱动仿真加汇编语言源程序
电机驱动仿真原理图如下单片机汇编语言源程序如下:ADC                EQU                35HCLOCK        BIT                P2.4                       &
发表于 2019-11-27
AT89C51单片机对直流电动机的驱动仿真加汇编语言源程序
2440 I2C存储卡读写实验 AT24c08a
,让IIC状态改为开始状态,准备下一次读写操作。    指定内存读函数,首先配置设备为发送模式,写入要读的设备地址,写入要读的设备内存,设置为主机接收模式,发送接收设备地址,此后从设备会返回一个要读的内存地址,读取该地址抛弃后,连续读取指定内存数据,读到最后一个数据不再产生应答,停止接收,改为准备状态。    AT24C08 的地址格式为: 1 0 1 0 A2 P1 P0 W/R    A2为设备地址位、P1,P0为片内页寻址  LSB=0 写    LSB=1 读其中mini2440读写位为自动标记无需配置。/*51实验24: I2C
发表于 2019-10-21
八位数字电子密码锁设计论文与单片机程序
电子密码锁 一、引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。设计本课题时构思了两种方案:一种是用以AT89C2051为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到单片机方案原理复杂,而且调试较为繁琐,所以本文采用后一种方案。二、总体方案设计1、设计思路共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒
发表于 2019-12-12
八位数字电子密码锁设计论文与单片机程序
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved