单片机c语言密码锁程序,单片机c语言密码锁程序源码

#include

#define uchar unsigned char

uchar code tab1[]={0x88,0Xbe,0Xc4,0X94,0Xb2,0X91,0X81,0Xbc,

0X80,0X90,0xff,0xfe};  //0~f字型码表

sbit lv=P2^7;

sbit hong=P2^5;

sbit qd=P3^3;

sbit zy=P2^1;

sbit yy=P2^2;

void delay(uchar x)          //毫秒级延时函数

{

uchar y;

for(;x>0;x--)

for(y=110;y>0;y--);

}

scanf()    //按键处理函数

{

uchar temp,temp1,i;

P0=0xf0;        //给P0口赋值为oxf0,用于列扫描

if(P0!=0xf0)   //判别是否有键按下

{

delay(2);

if(P0!=0xf0)    //再次判别是否有键按下

{

temp1=P0;   //P0值赋给temp1

P0=0x0f;   //P0值赋为0x0f,用于行扫描

temp=temp1|P0; //将行列扫描值合并,赋给temp

}

switch(temp)

{

case 0xee:i=1; break;

case 0xed:i=2; break;

case 0xeb:i=3; break;

case 0xe7:i=4; break;

case 0xde:i=5; break;

case 0xdd:i=6; break;

case 0xdb:i=7; break;

case 0xd7:i=8; break;

case 0xbe:i=9; break;

case 0xbd:i=0; break;

}

}

else return 10;

return i;

}

void main(void)     //主函数

{

uchar x,i,f=0,k=3;

uchar zhi[6]={10,10,10,10,10,10};

uchar zhi1[6]={6,5,4,3,2,1};

while(1)

{

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

{   if(x==i)SBUF=tab1[11];

else SBUF=tab1[zhi[ i]];

while(!TI);

TI=0;

}    delay(200);

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

{

SBUF=tab1[zhi[ i]];

while(!TI);

TI=0;

}    delay(200);

if(x<6&&k)

{ if(scanf()<10)

{

delay(10);

if(scanf()<10)

{

if(x==0){zhi[0]=scanf();while(scanf()!=10);}

if(x==1){zhi[1]=scanf();while(scanf()!=10);}

if(x==2){zhi[2]=scanf();while(scanf()!=10);}

if(x==3){zhi[3]=scanf();while(scanf()!=10);}

if(x==4){zhi[4]=scanf();while(scanf()!=10);}

if(x==5){zhi[5]=scanf();while(scanf()!=10);}

x++;

}

}

}

if(yy==0)

{

delay(5);

if(yy==0)

{

while(zy==0);

x++;

if(x==6)x=0;

}

}

if(zy==0)

{

delay(5);

if(zy==0)

{

while(yy==0);

if(x==0)x=6;

x--;

}

}

while(f);

while(!k);

if(qd==0)

{

delay(5);

if(x==6&&qd==0)

{

if(zhi[0]==zhi1[0]&&zhi[1]==zhi1[1]&&zhi[2]==zhi1[2]&&zhi[3]==zhi1[3]&&zhi[4]==zhi1[4]&&zhi[5]==zhi1[5])

{

lv=0;

hong=1;

P0=0xff;

for(i=0;i<6;i++)zhi[ i]=8;f=1;

}

else

{

hong=0;

k--;

x=0;P0=0xff;

for(i=0;i<6;i++)zhi[ i]=10;

}

}

}

}

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 单片机C语言六位密码锁的设计实现需要以下步骤: 1. 首先,通过引入头文件定义各个引脚和端口,以及需要使用的控制指令。 2. 确定系统所需的密码位数,这里为六位密码锁。可以使用一个字符数组来存储密码。 3. 在主函数中初始化密码数组和输入密码数组,然后使用函数通过输入密码数组从键盘获取密码。 4. 接下来,使用函数进行密码的验证。可以通过逐位比较输入密码与设定密码的每一位来判断是否匹配。 5. 如果密码正确,可以设置一个LED灯闪烁或者蜂鸣器响起来表示开锁成功,并执行相关操作。 6. 如果密码错误,可以设置另一个LED灯亮起或者蜂鸣器响起来表示开锁失败,并执行相应操作。 7. 最后,循环执行上述步骤,以便用户可以多次尝试输入密码。 需要注意的是,密码锁的具体实现会根据所使用的单片机型号和具体要求有所不同。此外,为了增强密码锁的安全性,还可以加入其他功能,如设置输入密码次数限制、密码过期时间等。 ### 回答2: 单片机C语言六位密码锁是一种基于单片机的电子密码锁系统。该系统旨在提供一种安全可靠的密码锁应用解决方案。 首先,我们需要定义一个六位的密码,用作认证密码。这个密码可以预先设定,或者可以通过程序运行时动态设置。 其次,我们需要一个键盘矩阵来接受用户输入的密码。键盘矩阵的原理是将多个按键以矩阵的形式连接起来,通过扫描不同的行和列来确定用户按下的按键。 然后,我们需要将键盘矩阵与单片机进行连接。单片机将不断扫描键盘矩阵的行和列,以检测用户按下的按键。当用户输入密码时,单片机将获取按键的值,并将其存储在一个缓冲区中。 接下来,单片机将比较用户输入的密码和预设的密码是否相同。如果密码正确,则可以执行一系列操作,比如打开某个设备,或者提供其他权限等。 最后,我们还可以为这个密码锁系统添加其他功能。比如,可以设置密码输错次数限制,当输入错误次数达到一定次数时,系统将自动锁定一段时间。还可以添加报警功能,当密码输错次数超过一定次数时,系统将触发报警。这些功能的实现可以通过适当的代码编写和电路设计来完成。 综上所述,利用单片机C语言可以实现六位密码锁。这个密码锁系统具有安全可靠、易于操作和扩展的特点,可以用于保护重要设备的安全。 ### 回答3: 单片机是指一种在单个集成电路芯片中集成了计算机中央处理器(CPU)功能的微型计算机系统。C语言是一种通用的高级计算机编程语言。六位密码锁是一种基于密码输入的安全设备,需要用户通过正确的密码才能解锁。 编写单片机C语言六位密码锁程序的步骤如下: 1. 定义密码变量:首先,我们需要定义一个六位的密码变量,用来存放正确的解锁密码。 2. 初始化IO口:将用于输入密码的IO口设置为输入状态,将用于驱动LED灯的IO口设置为输出状态。 3. 输入密码:通过读取用户输入的按键值或者外部输入口获取密码,将输入的密码保存到一个临时变量中。 4. 检查密码:将用户输入的密码与正确的解锁密码进行比较。将临时变量与密码变量进行逐位比较,如果有一位不匹配,则跳转到错误提示模块。 5. 解锁操作:如果密码匹配成功,则执行解锁操作。解锁操作可以是打开门锁、点亮LED灯、发出蜂鸣器声音等。 6. 错误提示:如果密码匹配失败,则执行错误提示操作。错误提示可以是闪烁LED灯、发出蜂鸣器声音等。 7. 重复执行:程序应该循环执行以上步骤,等待用户重新输入密码。 总结:通过以上步骤,我们可以编写单片机C语言程序实现六位密码锁的功能。当用户输入正确的密码时,执行解锁操作;当用户输入错误的密码时,执行错误提示操作。这样可以保障安全性,只有知道正确密码的人才能解锁。编写这样一段代码具有一定的难度,需要考虑各种边界情况和输入的处理,但是通过仔细的设计和调试,可以实现一个可靠的密码锁系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值