历史上的今天
今天是:2024年11月27日(星期三)
2020年11月27日 | 51单片机设计的电子密码锁
2020-11-27 来源:51hei
该程序是基于51单片机设计的电子密码锁,功能较为简单,目前仅有修改密码和检测这一功能,以下是操作过程
运行仿真的初始界面

左边矩阵按键从左边第一行第一列起为0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
按下按键后界面如下,当四位数码管都显示后,按下矩阵键盘上任意按键确认密码

密码错误D1红灯亮起,密码正确D2绿灯亮起
当按下独立按键时,中断触发,进入密码修改,此时界面如同初始界面,输入原始密码,原始密码正确,绿灯亮起,等待输入新密码,此时界面显示原始密码。原始密码错误红灯亮起,退出修改,返回初始状态。

新密码输入会将原始密码覆盖,输入完成红绿灯同时亮起。

1s后返回初始界面,密码修改完成。

单片机源程序如下:
#include "reg51.h" //包含头文件
#define uchar unsigned char
#define uint unsigned int
#define DIG P0
#define keys P1
sbit LSA=P2^1;
sbit LSB=P2^2;
sbit LED_Green=P2^3;
sbit LED_Red=P2^4;
uchar time=0,state;
uchar disp[4]={0xbf,0xbf,0xbf,0xbf};
uchar smgduan[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //数码管段选表,共阳数码管
uchar password[4]={0xf9,0xf9,0xa4,0x90}; //初始密码1129
void delay_ms(uint t); //函数声明
void keys_scan();
void digdisp();
void Init();
void delay_ms(uint t) //延时函数
{
uchar i;
for(;t>0;t--)
{
for(i=0;i<125;i++);
}
}
void keys_scan() //矩阵按键扫描
{
uchar i,k;
keys=0xf0;
if(keys!=0xf0)
{
delay_ms(2);
if(keys!=0xf0)
{
switch(keys) //确定行
{
case(0x70):
k=0;break;
case(0xb0):
k=4;break;
case(0xd0):
k=8;break;
case(0xe0):
k=12;break;
}
keys=0x0f;
if(keys!=0x0f)
{
switch(keys) //确定列
{
case(0x07):
;break;
case(0x0b):
k=k+1;break;
case(0x0d):
k=k+2;break;
case(0x0e):
k=k+3;break;
}
}
while(keys!=0x0f); //松手检测
disp[time]=smgduan[k]; //将键值对应的段选码送入显示数组
time++; //按键次数检测
if((time>4)&&(state!=1)) //检测四位密码是否全部输入
{
time=0;
for(i=0;i<4;i++)
{
if(disp[i]!=password[i]) //逐位检测输入密码是否正确
{
LED_Green=1; //输入密码不正确,红灯点亮
LED_Red=0;
break;
}
if(i==3) //输入密码正确绿灯点亮
{
LED_Green=0;
LED_Red=1;
}
}
delay_ms(1000); //延时1s
}
}
}
digdisp(); //调用显示函数
}
void digdisp() //数码管显示函数
{
uchar i;
for(i=0;i<4;i++)
{
switch(i) //采用24译码器,位选数码管
史海拾趣
|
最近两个月模拟工作面对的一些比较深思的面试题 希望能给还没有毕业的童鞋一些帮助 1, 相近的尺寸下,为什么BJT的工作工作频率比CMOS的高,噪声低。从器件的角度分析 2,ESD电路起作用的时候,放电回路的电路图和结构以及版图实现原理 3,verti ...… 查看全部问答> |
|
一篇不错的技术应用文章,与大家分享一下 作者:N. Smithfield , R.I., USA 来源:C. R. Swartz Picor公司 简介 先进的电信与无线架构、网络与通信技术及高速服务平台等终端系统需要持續不斷的改善良更新產品, 隨着市場 ...… 查看全部问答> |
|
夸一夸新内核. 眼看ZLG和ST推Cortex-M3内核好一阵子了,虽然看上去美,但已经比较深入地搞过51,PIC,430和ARM7,手里又有TI的DSP和coldfire等新玩意尚待深入研究,实在没精力也没必要去学习新东西了。 偏巧聚会抽到了个ST的mini套件 ...… 查看全部问答> |




