×
单片机 > 单片机程序设计 > 详情

单片机电子密码锁仿真 可修改密码

发布时间:2021-10-21 发布时间:
|

单片机源程序如下:

#include

#include "delay_ms.h"

#include "矩阵键盘.h"

#include "i2c.h"

#include "1602.h"

#include "delay_ms.h"

#include "mima.h"

#define uchar unsigned char

#define uint unsigned int

#define A 0x0a //输入密码

#define B 0x0b //修改密码

#define D 0x0d //关锁

#define enter 0x0c //确认

#define backspace 0x0f //退格键

sbit baojing = P3^7; //蜂鸣器接口

sbit lock = P3^3;//锁信号

sbit set = P3^2;

uchar idata mima_5[6] = {1,2,3,4,5,6}; //初始密码

uchar flag_change;

uchar aa;//存放密码错误的次数,够三次报警

uchar bb;

uchar flag_t0;

void baoj1()//报警函数

{

int i;

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

{

baojing = 1;

delay_ms(5);

baojing = 0;

delay_ms(5);

}


}

void baoj()

{

uchar i;

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

baoj1();

}

/*密码处理函数*/

void mimachuli()

{

uchar key,i;

uchar idata mima_1[6]={' ',' ',' ',' ',' ',' '};//存放密码缓冲区

uchar idata mima_2[6]={' ',' ',' ',' ',' ',' '};

uchar idata mima_3[6]={' ',' ',' ',' ',' ',' '};


key = step_choose();

if(key == A)//A被按下,接收输入密码,处理

{

read_n_add(mima_1,0x00,6);

write_com(0x06);//写一个字符后地址指针加 1

write_com(0x01);//显示清零,数据指针清零

write_com(0x0f);//显示光标

lcd_pos(0,0);

write_n_char(" press password ");

if(input_mima(mima_2)) //处理输入密码

{

if(mimaduibi(mima_2,mima_1)) //密码正确

{

lcd_pos(0,0);

write_com(0x0c);

write_com(0x06);//写一个字符后地址指针加 1

write_com(0x01);//显示清零,数据指针清零

write_n_char(" password right ");

aa = 0; //清除密码错误次数

lock = 0; //开锁

baojing = 1; //响一下

delay_ms(1000);

baojing = 0;

TR0 = 1;

flag_t0 = 1;

while(key != D && flag_t0) //D没按下一直开

{

key = keyscan();

}

TR0 = 0;

lock = 1;//D按下了关锁

}

else //密码 不正确

{

lcd_pos(0,0);

write_com(0x0c); //关光标

write_com(0x06);//写一个字符后地址指针加 1

write_com(0x01);//显示清零,数据指针清零

write_n_char(" password wrong");

delay_ms(1000);

aa++;

if(aa == 4)

{

aa = 0;

i = 20; //密码不正确报警

while(i--)

baoj();

}


}

}

else //密码没有输入正确或完成

{

lcd_pos(0,0);

write_com(0x0c); //关光标

write_com(0x06);//写一个字符后地址指针加 1

write_com(0x01);//显示清零,数据指针清零

write_n_char(" password wrong");

delay_ms(1000);

aa++;

if(aa == 4)

{

aa = 0;

i = 20; //密码不正确报警

while(i--)

baoj();

}


}

}


if(key == B)//B被按下,修改密码

{

read_n_add(mima_1,0x00,6);

write_com(0x06);//写一个字符后地址指针加 1

write_com(0x01);//显示清零,数据指针清零

write_com(0x0f

[1] [2] [3] [4]
单片机电子密码锁修改密码

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈msp430f5529入门(2)----时钟配置.例程分析