关键词不能为空

当前您在: 主页 > 高中公式大全 >

小爸爸经典语录单片机第四章33_4×4键盘及8位数码管显示构成的电子密码锁

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-01-01 10:27
tags:电脑键盘锁

材料采购-高速公路过路费

2021年1月1日发(作者:贺绿汀)
AT89S51
单片机实验及实践教程

第一、不够细心比如由于粗心大意焊 错了线,由于对课本理论的不熟悉导致编程出现错误。
第二,是在学习态度上,这次课设是对我的学习态 度的一次检验。对于这次单片机综合课
程实习,我的第一大心得体会就是作为一名工程技术人员,要求具 备的首要素质绝对应该
是严谨。我们这次实习所遇到的多半问题多数都是由于我们不够严谨。第三,在做 人上,
我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难
的勇气,就没有什么办不到的。
在这次难得的课程设计过程中我锻炼了自己的思考能力和动手能力。通 过题目选择和设计
电路的过程中,加强了我思考问题的完整性和实际生活联系的可行性。在方案设计选择 和
芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进
一步 的认识。还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的
能力。并且我们熟练 掌握了有关器件的性能及测试方法。
再次感谢老师的辅导以及同学的帮助,是他们让我有了一个更好的 认识,无论是学习还是
生活,生活是实在的,要踏实走路。课程设计时间虽然很短,但我学习了很多的东 西,使
我眼界打开,感受颇深。
33.
4
×
4
键盘及
8
位数码管显示构成的电子密码锁

1.

实验任务
用4×4组成0-9数字键及确认键。
用8位数 码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输
入完毕按下确认键时,对输 入的密码与设定的密码进行比较,若密码正确,则门开,
此处用LED发光二极管亮一秒钟做为提示,同 时发出“叮咚”声;若密码不正确,
禁止按键输入3秒,同时发出“嘀、嘀”报警声;若在3秒之内仍有 按键按下,则
禁止按键输入3秒被重新禁止。
2.

电路原理图
- 186 -
AT89S51
单片机实验及实践教程


图4.33.1
3.

系统板上硬件连线
(1).
(2).
(3).
(4).
(5).
把“单片机系统”区域 中的P0.0-P0.7用8芯排线连接到“动态数码显示”区
域中的ABCDEFGH端子上。 把“单片机系统“区域中的P2.0-P2.7用8芯排线连接到“动态数码显示”区
域中的S1S 2S3S4S5S6S7S8端子上。
把“单片机系统”区域中的P3.0-P3.7用8芯排线连接 到“4×4行列式键盘”
区域中的R1R2R3R4C1C2C3C4端子上。
把“单片机系 统”区域中的P1.0用导线连接到“八路发光二极管模块”区域
中的L2端子上。
把“单片机系统”区域中的P1.7用导线连接到“音频放大模块”区域中的SPK
IN端子上。
- 187 -
AT89S51
单片机实验及实践教程

(6).
(1).
(2).
把“音频放大模块”区域中的SPK OUT接到喇叭上。
4.

程序设计内容
4×4行列式键盘识别技术:有关这方面内容前面已经讨论过,这里不再重复。
8位数码显示,初始化时,显示“P ”,接着输入最大6位数的密码,当
密码输入完后, 按下确认键,进行密码比较,然后给出相应的信息。在输入密
码过程中,显示器只显示“8.”。当数字 输入超过6个时,给出报警信息。在密
码输入过程中,若输入错误,可以利用“DEL”键删除刚才输入 的错误的数字。
(3). 4×4行列式键盘的按键功能分布图如图4.33.2所示:



7 8 9


4 5 6


1 2 3 Del


0 Enter



图4.33.2

5.

C语言源程序
#include

unsigned char ps[]={1,2,3,4,5};

unsigned char code dispbit[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71,
0x00,0x40,0x73,0xff};
unsigned char dispbuf[8]={18,16,16,16,16,16,16,16};
unsigned char dispcount;
unsigned char flashcount;
unsigned char temp;
unsigned char key;
unsigned char keycount;
unsigned char pslen=5;
unsigned char getps[6];
bit keyoverflag;
- 188 -
AT89S51
单片机实验及实践教程

bit errorflag;
bit rightflag;
unsigned int second3;
unsigned int aa,bb;
unsigned int cc;
bit okflag;
bit alarmflag;
bit hibitflag;
unsigned char oka,okb;


void main(void)
{
unsigned char i,j;

TMOD=0x01;
TH0=(65536-500)256;
TL0=(65536-500)%256;
TR0=1;
ET0=1;
EA=1;

while(1)
{
P3=0xff;
P3_4=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=7;
break;
case 0x0d:
key=8;
break;
case 0x0b:
key=9;
break;

- 189 -

AT89S51
单片机实验及实践教程

case 0x07:
key=10;
break;
}
temp=P3;
P1_1=~P1_1;
if((key>=0) && (key<10))
{
if(keycount<6)
{
getps[keycount]=key;
dispbuf[keycount+2]=19;
}
keycount++;
if(keycount==6)
{
keycount=6;

}
else if(keycount>6)
{
keycount=6;
keyoverflag=1;key overflow
}
}
else if(key==12)delete key
{
if(keycount>0)
{
keycount--;
getps[keycount]=0;
dispbuf[keycount+2]=16;
}
else
{
keyoverflag=1;
}
}
else if(key==15)enter key
{
if(keycount!=pslen)
{
errorflag=1;
rightflag=0;
second3=0;
}
else
{
for(i=0;i- 190 -
AT89S51
单片机实验及实践教程

{
if(getps[i]!=ps[i])
{
i=keycount;
errorflag=1;
rightflag=0;
second3=0;
goto a;
}
}
errorflag=0;
rightflag=1;
a: i=keycount;
}
}
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
keyoverflag=0;?????????
}
}

P3=0xff;
P3_5=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=4;
break;
case 0x0d:
key=5;
break;
case 0x0b:
key=6;



- 191 -



AT89S51
单片机实验及实践教程

break;
case 0x07:
key=11;
break;
}
temp=P3;
P1_1=~P1_1;
if((key>=0) && (key<10))
{
if(keycount<6)
{
getps[keycount]=key;
dispbuf[keycount+2]=19;
}
keycount++;
if(keycount==6)
{
keycount=6;
}
else if(keycount>6)
{
keycount=6;
keyoverflag=1;key overflow
}
}
else if(key==12)delete key
{
if(keycount>0)
{
keycount--;
getps[keycount]=0;
dispbuf[keycount+2]=16;
}
else
{
keyoverflag=1;
}
}
else if(key==15)enter key
{
if(keycount!=pslen)
{
errorflag=1;
rightflag=0;
second3=0;
}
else
{
for(i=0;i- 192 -
AT89S51
单片机实验及实践教程

{
if(getps[i]!=ps[i])
{
i=keycount;
errorflag=1;
rightflag=0;
second3=0;
goto a4;
}
}
errorflag=0;
rightflag=1;
a4: i=keycount;
}
}
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
keyoverflag=0;?????????
}
}

P3=0xff;
P3_6=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=1;
break;
case 0x0d:
key=2;
break;
case 0x0b:
key=3;



- 193 -



AT89S51
单片机实验及实践教程

break;
case 0x07:
key=12;
break;
}
temp=P3;
P1_1=~P1_1;
if((key>=0) && (key<10))
{
if(keycount<6)
{
getps[keycount]=key;
dispbuf[keycount+2]=19;
}
keycount++;
if(keycount==6)
{
keycount=6;
}
else if(keycount>6)
{
keycount=6;
keyoverflag=1;key overflow
}
}
else if(key==12)delete key
{
if(keycount>0)
{
keycount--;
getps[keycount]=0;
dispbuf[keycount+2]=16;
}
else
{
keyoverflag=1;
}
}
else if(key==15)enter key
{
if(keycount!=pslen)
{
errorflag=1;
rightflag=0;
second3=0;
}
else
{
for(i=0;i- 194 -
AT89S51
单片机实验及实践教程

{
if(getps[i]!=ps[i])
{
i=keycount;
errorflag=1;
rightflag=0;
second3=0;
goto a3;
}
}
errorflag=0;
rightflag=1;
a3: i=keycount;
}
}
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
keyoverflag=0;?????????
}
}

P3=0xff;
P3_7=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=0;
break;
case 0x0d:
key=13;
break;
case 0x0b:
key=14;



- 195 -



AT89S51
单片机实验及实践教程

break;
case 0x07:
key=15;
break;
}
temp=P3;
P1_1=~P1_1;
if((key>=0) && (key<10))
{
if(keycount<6)
{
getps[keycount]=key;
dispbuf[keycount+2]=19;
}
keycount++;
if(keycount==6)
{
keycount=6;
}
else if(keycount>6)
{
keycount=6;
keyoverflag=1;key overflow
}
}
else if(key==12)delete key
{
if(keycount>0)
{
keycount--;
getps[keycount]=0;
dispbuf[keycount+2]=16;
}
else
{
keyoverflag=1;
}
}
else if(key==15)enter key
{
if(keycount!=pslen)
{
errorflag=1;
rightflag=0;
second3=0;
}
else
{
for(i=0;i- 196 -
AT89S51
单片机实验及实践教程

{
if(getps[i]!=ps[i])
{
i=keycount;
errorflag=1;
rightflag=0;
second3=0;
goto a2;
}
}
errorflag=0;
rightflag=1;
a2: i=keycount;
}
}
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
keyoverflag=0;?????????
}
}

}
}
void t0(void) interrupt 1 using 0
{
TH0=(65536-500)256;
TL0=(65536-500)%256;

flashcount++;
if(flashcount==8)
{
flashcount=0;
P0=dispcode[dispbuf[dispcount]];
P2=dispbit[dispcount];
dispcount++;
if(dispcount==8)
{
dispcount=0;
}
}

if((errorflag==1) && (rightflag==0))
{
bb++;
if(bb==800)


- 197 -



AT89S51
单片机实验及实践教程

{
bb=0;
alarmflag=~alarmflag;
}
if(alarmflag==1)sound alarm signal
{
P1_7=~P1_7;
}

aa++;
if(aa==800)light alarm signal
{
aa=0;
P1_0=~P1_0;
}
second3++;
if(second3==6400)
{
second3=0;
errorflag=0;
rightflag=0;
alarmflag=0;
bb=0;
aa=0;
}
}
else if((errorflag==0) && (rightflag==1))
{
P1_0=0;
cc++;
if(cc<1000)
{
okflag=1;
}
else if(cc<2000)
{
okflag=0;
}
else
{
errorflag=0;
rightflag=0;
P1_7=1;
cc=0;
oka=0;
okb=0;
okflag=0;
P1_0=1;
}
- 198 -
AT89S51
单片机实验及实践教程

if(okflag==1)
{
oka++;
if(oka==2)
{
oka=0;
P1_7=~P1_7;
}
}
else
{
okb++;
if(okb==3)
{
okb=0;
P1_7=~P1_7;
}
}
}

if(keyoverflag==1)
{
P1_7=~P1_7;
}
}




- 199 -

全国卷高考作文-新颖的作文题目


易学的英文歌-飞天古筝


手机来电铃声-中谷粮油


日记400字大全-焊工求职


工伤事故经过-冰激凌的做法


公开的反义词-08年nba季后赛


潜能激发-一腔热血勤珍重


素质培训-湖南御邦大宗农产品交易所



本文更新与2021-01-01 10:27,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/493315.html

单片机第四章33_4×4键盘及8位数码管显示构成的电子密码锁的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
单片机第四章33_4×4键盘及8位数码管显示构成的电子密码锁随机文章