- 1
- 0
- 约3.07千字
- 约 11页
- 2019-01-27 发布于广东
- 举报
基于at89c51电子密码锁.doc
32.电子密码锁设计
1?实验任务
根据设定好的密码,采用二个按键实现密码的输入功能,当密码输入 正确之后,锁就打开,如果输入的三次的密码不正确,就锁定按键 3秒钟,同时发现报警声,直到没有按键按下3种后,才打开按键 锁定功能;否则在3秒钟内仍有按键按下,就重新锁定按键3秒时 间并报警。
2?电路原理图
VOCT N GAIK BYPASS GA 帛 GHDW 56D Gr8V7O s 27 s OK V7C £ rtKVQ s 佗 d rw卜E Rasd WTV s^£ s^£ 29£
VOCT N GAIK BYPASS GA 帛 GHD
W 56
D Gr
8V7O s 27 s OK V7C £ rtKVQ s 佗 d rw卜E Rasd WTV s^£ s^£ 29£ EOVZEOd rtOVAOd ■owlod 8B£
XI U3
19
右1ST
12
qQi/卜 md £ ek^N 殳XH
图 4.32.1
系统板上硬件连线
⑴.把“单片机系统”区域中的PO.O/ADO用导线连接到“音频 放大模块”区域中的SPKIN端子上;
.把“音频放大模块”区域中的SPKOUT端子接喇叭和;
.把“单片机系统”区域中的P2.0/A8-P2.7/A15用8芯排 线连接到“四路静态数码显示”区域中的任一个ABCDEFGH端了 上;
.把“单片机系统“区域中的P1.0用导线连接到“八路发 光二极管模块”区域中的L1端子上;
? 把“单片机系统”区域中的P3.6/WR、P3.7/RD用导线连接 到“独立式 键盘”区域中的SP1和SP2端子上;
程序设计内容
?密码的设定,在此程序中密码是固定在程序存储器ROM中, 假设预设的密码为12345共5位密码。
.密码的输入问题:
由于采用两个按键来完成密码的输入,那么其屮一个按键为功能键, 另一个按键为数字键。在输入过程中,首先输入密码的长度,接着 根据密码的长度输入密码 的位数,直到所有长度的密码都已经输入 完毕;或者输入确认功能键之后,才能 完成密码的输入过程。进入 密码的判断比较处理状态并给出相应的处理过程。
(3).按键禁止功能:初始化时,是允许按键输入密码,当有按键 按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的 状态在3次密码输入不正确的情况下发生的。
C语言源程序
include AT89X52.H
unsigned char code ps[]={l,2,3,4,5};
unsigned char code dispcode[]={0x3f/0x06,0x5b/0x4f/0x66,
0x6d,0x7d,0x07,0x7fz0x6t0x00,0x40};
unsigned char pslen二9;
unsigned char templen;
unsigned char digit;
unsigned char funcount;
unsigned char digitcount;
unsigned char psbuf[9];
bit cmpflag;
bit hibitflag;
bit errorflag;
bit rightflag;
unsigned int sec on d3;
unsigned int aa;
unsigned int bb;
bit alarmflag;
bit exchangeflag;
unsigned int cc;
unsigned int dd;
bit okflag;
unsigned char oka;
unsigned char okb;
void main(void)
{
unsigned char ij;
P2=dispcode[digitcou nt];
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
EA=1;
while(l)
{
if(cmpflag 0)
{
if(P3_6 0) //function key
{
for(i=10;i0;i-) for(j=248;j0;j-);
if(P3_6 0) if(hibitflag 0)
{
fun count++;
if(funcount psle n+2)
{
fun count=0;
cmpflag=l;
}
Pl=dispcode[f uncount];
}
else
{
sec on d3=0;
}
while(P3_6 0);
}
}
if(P3_7 0) //digit key
for(i=10;i0;i-)
for(j=248;j0;j-);
if(P3_7 0)
{
if(hibi Hlag 0)
{
digitco un t++;
if(digitcount 10)
{
dig
原创力文档

文档评论(0)