(80C51单片机)设计4×4键盘及8位数码管显示构成的电子密码锁.的C语言程序。

(80C51单片机)设计4×4键盘及8位数码管显示构成的电子密码锁.的C语言程序。,第1张

44矩阵键盘检测程序(新手用),本程序用于检测44矩阵按键,先检测是否有按

键按下,如果有按键按下,由P1口读出相应的编码值,由P0经两片74HC573输出给

8位数码管,P2^0位选,P2^1段选,P1接44矩阵按键

#include <reg52h>

#include<intrinsh> //头文件

#define uchar unsigned char //宏定义

#define uint unsigned int

sbit du=P2^1; //段选位

sbit we=P2^0; //位选位

uchar code duanma[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void delay(xms) //延时函数

{

uchar i,j;

for(xms=i,i>0;i--;)

for(j=11;j>0;j--);

}

void main() //主函数

{

we=1; //位选开

P0=0; //8位数码管全部显示

we=0; //位选关

du=1; //段选开

P1=0x00; //初始化,8位数码管无显示

while(1)

{

uchar a,b;

P1=0xf0;

a=P1;

if(a!=0xf0)

{

delay(5); //去抖动

b=P1;

if(a==b)

{

a=0xfe;

do

{

P1=a;

if(a!=P1)

{

switch(P1)

{

case 0x7e:{P0=duanma[0];break;} //编码检测,第一个键按下显示0,第16个按键按下显示F

case 0xbe:{P0=duanma[1];break;}

case 0xde:{P0=duanma[2];break;}

case 0xee:{P0=duanma[3];break;}

case 0x7d:{P0=duanma[4];break;}

case 0xbd:{P0=duanma[5];break;}

case 0xdd:{P0=duanma[6];break;}

case 0xed:{P0=duanma[7];break;}

case 0x7b:{P0=duanma[8];break;}

case 0xbb:{P0=duanma[9];break;}

case 0xdb:{P0=duanma[10];break;}

case 0xeb:{P0=duanma[11];break;}

case 0x77:{P0=duanma[12];break;}

case 0xb7:{P0=duanma[13];break;}

case 0xd7:{P0=duanma[14];break;}

case 0xe7:{P0=duanma[15];break;}

}

}

a=_crol_(a,1); //循环移位去检测按键

}while(a!=0xef);

}

}

}

}

用51单片机,假设p1·0至p1·3接4个开关,P2·0接开锁按键S1

While(s1!=0);//等待按开锁按钮

delayms(10);//延时

While(s1==0);//等待按键抬起

mima=0x0F&P1;//读取P1低4位

if(mima==12)lock=1;//如果与设定密码相等开锁

else Fmq=1;//否则,报警

单片机,数码管显示。44矩阵键盘

#include<reg52h>

#define uchar unsigned char

#define uint unsigned int

#define key P1

sbit lock=P3^1;

sbit worn=P3^2;

char pass_right=0;

char pass_bit=0;

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};

uchar code key_code[]={0x7e,0xbe,0xde,0xee,0x7d,0xbd,0xdd,0xed,

0x7b,0xbb,0xdb,0xeb,0x77, 0xb7,0xd7,0xe7};

uchar data scan_con[6]={0x01,0x02,0x04,0x08,0x10,0x20};

uchar data dis[6]={0,0,0,0,0,0};

uchar data shumi[]={0,0,0,0,0,0};

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

uchar data pass_word[]={0x6d,0x6d,0x77,0x73,0x40,0x40};

uchar data no_pass_word[]={0x76,0x76,0x76,0x76,0x76,0x76};

void delay(uint t)

{

uchar i,j;

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

for(j=0;j<121;j++);

}

uchar key_scan()

{

uchar x,y,z,j;

key=0xff;

key=0x0f;

if(key!=0x0f)

{

delay(10);

if(key!=0x0f)

x=key;

key=0xf0;

y=key;

z=x|y;

for(j=0;j<16;j++)

if(z==key_code[j])

return j;

}

else key=0xff;

return 16;

}

void display()

{

uchar i;

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

{

P0=table[dis[i]];P2=scan_con[i];delay(10);P0=0x00;

}

}

void pass_word_display()

{

uchar i;

if(pass_right)

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

{

P0=pass_word[i];P2=scan_con[i];delay(10);P0=0x00;

}

else

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

{

P0=no_pass_word[i];P2=scan_con[i];delay(10);P0=0x00; worn=0;

}

}

void shumih()

{

uchar k,i=0,j;

if((k=key_scan())==1)

{

pass_bit=0;pass_right=0; worn=1;lock=1;

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

shumi[j]=0;

while(i!=6)

{

display();

if((k=key_scan())!=16)

{

while(k==key_scan());

for(j=5;j>0;j--)

shumi[j]=shumi[j-1];

switch(k)

{

case 4:shumi[0]=1;i++;break;

case 5:shumi[0]=2;i++;break;

case 6:shumi[0]=3;i++;break;

case 8:shumi[0]=4;i++;break;

case 9:shumi[0]=5;i++;break;

case 10:shumi[0]=6;i++;break;

case 12:shumi[0]=7;i++;break;

case 13:shumi[0]=8;i++;break;

case 14:shumi[0]=9;i++;break;

case 15:shumi[0]=0;i++;break;

default:break;

}

}

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

dis[j]=shumi[j];

}

}

}

void mima_pass()

{

uchar k;

if((k=key_scan())==2)

{

delay(5);

pass_bit=1;

while(k==key_scan());

if(shumi[0]==cmima[0])

if(shumi[1]==cmima[1])

if(shumi[2]==cmima[2])

if(shumi[3]==cmima[3])

if(shumi[4]==cmima[4])

if(shumi[5]==cmima[5])

{

pass_right=1;

lock=0;

}

}

}

void main()

{

display();

while(1)

{

shumih();

mima_pass();

if(pass_bit!=1)

display();

else

pass_word_display();

}

}

以上就是关于(80C51单片机)设计4×4键盘及8位数码管显示构成的电子密码锁.的C语言程序。全部的内容,包括:(80C51单片机)设计4×4键盘及8位数码管显示构成的电子密码锁.的C语言程序。、c语言单片机密码锁控制程序,用4个按键输入状态分别代表4位二进制数,可组成16种密码,范围0000、请问哪位高人有电子密码锁的C语言程序,最好是有注释的 谢谢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9272587.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存