找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2334|回复: 1
打印 上一主题 下一主题
收起左侧

单片机电子密码锁程序

[复制链接]
跳转到指定楼层
楼主
ID:554654 发表于 2019-6-4 14:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
功能键
                        S6---S15    数字键0-9
                S16---更改密码      S17---更改密码完毕后确认
                S18---重试密码、重新设定    S19---关闭密码锁
                初始密码:000000   密码位数:6位
                注意:掉电后,所设密码会丢失,重新上点时,密码恢复为原始的000000
                与P1相连的8位发光LED点亮代表锁被打开;熄灭代表锁被锁上

程序功能: 本程序结合了24C02存储器的存储功能,可以掉电保存密码。
            第一次运行时,若输入000000原始密码后无反应,可以试验着将主程序中前面的
            一小段被注释线屏蔽的程序前的注释线删掉,然后重新编译下载(可以将密码还原为000000)。
            此后,再将这小段程序屏蔽掉,再编译下载。方可正常使用。
          1、开锁:
          下载程序后,直接按六次S7(即代表数字1),8位LED亮,锁被打开,输入密码时,
          六位数码管依次显示小横杠。
          2、更改密码:
          只有当开锁(LED亮)后,该功能方可使用。
          首先按下更改密码键S16,然后设置相应密码,此时六位数码管会显示设置密码对应
          的数字。最后设置完六位后,按下S17确认密码更改,此后新密码即生效。
          3、重试密码:
          当输入密码时,密码输错后按下键S18,可重新输入六位密码。
          当设置密码时,设置中途想更改密码,也可按下此键重新设置。
          4、关闭密码锁:
          按下S19即可将打开的密码锁关闭。
推荐初级演示步骤:输入原始密码000000---按下更改密码按键S16---按0到9设置密码---按S17
            确认密码更改---按S18关闭密码锁---输入新的密码打开密码锁
*******************************************************************************/
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

uchar old1,old2,old3,old4,old5,old6; //原始密码000000
uchar new1,new2,new3,new4,new5,new6;  //每次MCU采集到的密码输入
uchar a=16,b=16,c=16,d=16,e=16,f=16; //送入数码管显示的变量
uchar wei,key,temp;

bit allow,genggai,ok,wanbi,retry,close;  //各个状态位

sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
sbit sda=P2^0;                          //IO口定义
sbit scl=P2^1;

unsigned char code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};

/*****************IIC芯片24C02存储器驱动程序************************************/

void nop()
{
    _nop_();
    _nop_();
}
/////////24C02读写驱动程序////////////////////
void delay1(unsigned int m)
{   unsigned intn;
    for(n=0;n<m;n++);
}

void init() //24c02初始化子程序
{
    scl=1;
    nop();
    sda=1;
    nop();
}

void start()       //启动I2C总线
{
    sda=1;
    nop();
    scl=1;
    nop();
    sda=0;
    nop();
    scl=0;
    nop();
}

void stop()        //停止I2C总线
{
    sda=0;
    nop();
    scl=1;功能键
                        S6---S15    数字键0-9
                S16---更改密码      S17---更改密码完毕后确认
                S18---重试密码、重新设定    S19---关闭密码锁
                初始密码:000000   密码位数:6位
                注意:掉电后,所设密码会丢失,重新上点时,密码恢复为原始的000000
                与P1相连的8位发光LED点亮代表锁被打开;熄灭代表锁被锁上

程序功能: 本程序结合了24C02存储器的存储功能,可以掉电保存密码。
            第一次运行时,若输入000000原始密码后无反应,可以试验着将主程序中前面的
            一小段被注释线屏蔽的程序前的注释线删掉,然后重新编译下载(可以将密码还原为000000)。
            此后,再将这小段程序屏蔽掉,再编译下载。方可正常使用。
          1、开锁:
          下载程序后,直接按六次S7(即代表数字1),8位LED亮,锁被打开,输入密码时,
          六位数码管依次显示小横杠。
          2、更改密码:
          只有当开锁(LED亮)后,该功能方可使用。
          首先按下更改密码键S16,然后设置相应密码,此时六位数码管会显示设置密码对应
          的数字。最后设置完六位后,按下S17确认密码更改,此后新密码即生效。
          3、重试密码:
          当输入密码时,密码输错后按下键S18,可重新输入六位密码。
          当设置密码时,设置中途想更改密码,也可按下此键重新设置。
          4、关闭密码锁:
          按下S19即可将打开的密码锁关闭。
推荐初级演示步骤:输入原始密码000000---按下更改密码按键S16---按0到9设置密码---按S17
            确认密码更改---按S18关闭密码锁---输入新的密码打开密码锁
*******************************************************************************/
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

uchar old1,old2,old3,old4,old5,old6; //原始密码000000
uchar new1,new2,new3,new4,new5,new6;  //每次MCU采集到的密码输入
uchar a=16,b=16,c=16,d=16,e=16,f=16; //送入数码管显示的变量
uchar wei,key,temp;

bit allow,genggai,ok,wanbi,retry,close;  //各个状态位

sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
sbit sda=P2^0;                          //IO口定义
sbit scl=P2^1;

unsigned char code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,
0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};

/*****************IIC芯片24C02存储器驱动程序************************************/

void nop()
{
    _nop_();
    _nop_();
}
/////////24C02读写驱动程序////////////////////
void delay1(unsigned int m)
{   unsigned intn;
    for(n=0;n<m;n++);
}

void init() //24c02初始化子程序
{
    scl=1;
    nop();
    sda=1;
    nop();
}

void start()       //启动I2C总线
{
    sda=1;
    nop();
    scl=1;
    nop();
    sda=0;
    nop();
    scl=0;
    nop();
}

void stop()        //停止I2C总线
{
    sda=0;
    nop();
    scl=1;

【实验74】密码锁(掉电可记忆密码).rar

30.93 KB, 下载次数: 15, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:554654 发表于 2019-6-4 21:40 | 只看该作者
基于单片机的水温控制系统

温控.zip

516.96 KB, 下载次数: 2, 下载积分: 黑币 -5

水温控制系统

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表