假定某1位密码锁的功能是:用16个按键分别代表字符0~9和A~F,开锁密码为字符7:系统上电后LED灭(代表上锁),数码显示闪烁“8”,约1s后改为“-”(待机状态);单击按键表示输入一位密码,若密码输入正确,则显示“P”,LED灯亮(代表开锁),持续约3s后自动进入待机状态(表示过期自动上锁);否则显示“E”,LED保持灯灭(表示开锁错误),持续约3s后自动进入待机状态。如此反复无限循环。试根据上述要求完成一个基于51单片机的软硬件系统设计。
【解】分析:根据任务要求,硬件系统中可以用一位共阴极LED数码管作为显示器件,采用静态连接方式:16个按键采用4×4行列式键盘连接方式:一个LED作为密码锁开锁开关。电路如图4.29所示。
1.下面是数码管共阴极的单位密码锁
#include <reg51.h>
sbit lock=P3^0;
char key_buf[] = {0xee, 0xde, 0xbe, 0x7e,0xed, 0xdd, 0xbd, 0x7d,
0xeb, 0xdb, 0xbb, 0x7b,0xe7, 0xd7, 0xb7, 0x77};
unsigned char init=0x7f,on=0x73,off=0x79,lock_on=0,lock_off=1;
char getKey(void)
{ char key_scan[] = {0xef, 0xdf, 0xbf, 0x7f};
char i = 0, j = 0;
for (i = 0; i < 4 ; i++)
{ P2 = key_scan[i];
if ((P2 & 0x0f) != 0x0f)
for(j=

文章描述了一个使用51单片机实现的一位密码锁系统,该系统采用共阴极LED数码管显示和4x4行列式键盘输入,具有特定的密码输入和反馈机制。当输入正确密码时显示P并开启LED,错误则显示E。代码示例分别给出了共阴极和共阳极数码管的实现方式。
最低0.47元/天 解锁文章
1321

被折叠的 条评论
为什么被折叠?



