033、4×4键盘及8位数码管显示构成的电子密码锁.doc

上传人:滴答 文档编号:1276064 上传时间:2019-01-26 格式:DOC 页数:15 大小:88.50KB
下载 相关 举报
033、4×4键盘及8位数码管显示构成的电子密码锁.doc_第1页
第1页 / 共15页
033、4×4键盘及8位数码管显示构成的电子密码锁.doc_第2页
第2页 / 共15页
033、4×4键盘及8位数码管显示构成的电子密码锁.doc_第3页
第3页 / 共15页
033、4×4键盘及8位数码管显示构成的电子密码锁.doc_第4页
第4页 / 共15页
033、4×4键盘及8位数码管显示构成的电子密码锁.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、33 44 键盘及 8 位数码管显示构成的电子密码锁 1 实验任务 用 44 组成 0 9 数字键及确认键。 用 8位数码管组成显示电路提示信息,当输入密码时,只显示 “8.” ,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用 LED 发光二极管亮一秒钟做为提示,同时发出 “ 叮咚 ” 声;若密码不正确,禁止按键输入 3 秒,同时发出 “ 嘀、嘀 ”报警声;若在 3秒之内仍有按键按下,则禁止按键输入 3秒被重新禁止。 2 电路原理图 图 4.33.1 3 系统板上硬件连线 ( 1) 把 “ 单片机系统 ” 区域中的 P0.0 P0.7 用8芯排线连

2、接到 “ 动态数码显示 ” 区域中的ABCDEFGH 端子上。 ( 2) 把 “ 单片机系统 “ 区域中的 P2.0 P2.7 用8芯排线连接到 “ 动态数码显示 ” 区域中的S1S2S3S4S5S6S7S8 端子上。 ( 3) 把 “ 单片机系统 ” 区域中的 P3.0 P3.7 用 8 芯排线连接到 “44 行列式键盘 ” 区域中的 R1R2R3R4C1C2C3C4 端子上。 ( 4) 把 “ 单片机系统 ” 区域中的 P1.0 用导线连接到 “ 八路发光二极管模块 ”区域中的 L2端子上。 ( 5) 把 “ 单片机系统 ” 区域中的 P1.7 用导线连接到 “ 音频放大模块 ” 区域中的

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

4、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 dispbuf8=18,16,16,16,16,16,16,16; unsig

5、ned char dispcount; unsigned char flashcount; unsigned char temp; unsigned char key; unsigned char keycount; unsigned char pslen=5; unsigned char getps6; bit keyoverflag; bit errorflag; bit rightflag; unsigned int second3; unsigned int aa,bb; unsigned int cc; bit okflag; bit alarmflag; bit hibitflag

6、; 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 if (temp!=0x0f) for(i=10;i0;i-) for(j=248;j0;j-); temp=P3; temp=temp if (temp!=0x0f) temp=P3; temp=temp switch(temp) case

7、0x0e: key=7; break; case 0x0d: key=8; break; case 0x0b: key=9; break; case 0x07: key=10; break; temp=P3; P1_1=P1_1; if(key=0) keyoverflag=1;/key overflow else if(key=12)/delete key if(keycount0) keycount-; getpskeycount=0; dispbufkeycount+2=16; else keyoverflag=1; else if(key=15)/enter key if(keycou

8、nt!=pslen) errorflag=1; rightflag=0; second3=0; else for(i=0;i0;i-) for(j=248;j0;j-); temp=P3; temp=temp if (temp!=0x0f) temp=P3; temp=temp switch(temp) case 0x0e: key=4; break; case 0x0d: key=5; break; case 0x0b: key=6; break; case 0x07: key=11; break; temp=P3; P1_1=P1_1; if(key=0) keyoverflag=1;/k

9、ey overflow else if(key=12)/delete key if(keycount0) keycount-; getpskeycount=0; dispbufkeycount+2=16; else keyoverflag=1; else if(key=15)/enter key if(keycount!=pslen) errorflag=1; rightflag=0; second3=0; else for(i=0;i0;i-) for(j=248;j0;j-); temp=P3; temp=temp if (temp!=0x0f) temp=P3; temp=temp sw

10、itch(temp) case 0x0e: key=1; break; case 0x0d: key=2; break; case 0x0b: key=3; break; case 0x07: key=12; break; temp=P3; P1_1=P1_1; if(key=0) keyoverflag=1;/key overflow else if(key=12)/delete key if(keycount0) keycount-; getpskeycount=0; dispbufkeycount+2=16; else keyoverflag=1; else if(key=15)/enter key if(keycount!=pslen) errorflag=1; rightflag=0; second3=0; else for(i=0;i0;i-) for(j=248;j0;j-); temp=P3; temp=temp if (temp!=0x0f) temp=P3; temp=temp switch(temp) case 0x0e: key=0; break; case 0x0d:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 演示文稿

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。