基于51单片机的多功能电子密码锁_第1页
基于51单片机的多功能电子密码锁_第2页
基于51单片机的多功能电子密码锁_第3页
基于51单片机的多功能电子密码锁_第4页
基于51单片机的多功能电子密码锁_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、TQO k D:3232DELHET-PZ112-TBXTM1PS皿 FD.1M1 FD2TM2xmzpoar/oa P0VAU4 PDSfiWP0J&/W6rstPO.TAAWF2W 2W PZ2TAJF5WPZ3TA11AlPZVACPZSfAG P2J&AU ,NWF1IH7F3DTKXPF3 inrisraaTWTOP13P33rwnP1.P3.4/TOFISP3ST1F1j6P3JOTMWP3.7OTCTSlpm 1 叫NzFPZDPZJPZ2PN37F*至1O F3D21?FT?8 RV- * RV *U .7 O O-:.:丁 Be-.ENTE-m 于壬TBZ1D,11P3J17

2、P32 IOF33Ial*P3.*Tr js 1$ P3S1? ra.T附口 -mn- r -.K 1 -.H.ET- FH11. S - S ,ATHS6总*:厦:丁DEL#include #define uint unsigned int#define uchar unsigned char#define KEY P3/键盘输入端口#define No key 20#define lcddata P2/无按键时的返回值/1602的数据输入端口sbitlcden= P1A2;sbitlcdrs= PMO;sbitlcdrw= PM1;sbit light= P1A3;sbitlight仁 P

3、M4;uchar j ; /用来统计输入 个数的全局变量uchar aa; /用来在定时器中计数的全局变量uchar code table= Hello!;uchar code table1= OK!uchar code table2=Enter please: uchar code key_table16=1,2,3,10,4,5,6,11,7,8,9,12,0,13,14,15;/设定初始密码uchar password=2,0,1,0,9,3;uchar save6;/保存输入的数据uchar conflag ;/确认标志uchar lockflag;/锁键盘标志uchar startf

4、lag;/开始标志void delay(uint z);延时子函数void wright_com(uchar com);/写指令函数void wright_data(uchar date);/写数据函数void init();初始化void display_OK();/显示OKvoid delete();删除输入的最后一个数uchar keyscan();带返回值的键盘扫描程序void enter_code(uchar t);输入密码函数,把输入的数据存入数组中并在屏幕上显示相应的东西voidconfirm。;确认密码对不对,把输入的数据和密码逐一对比,完全一样刚正确,void succeed

5、_an();输入密码成功时的响应,void fail_an();/输入密码失败时响应void lockkey();/ 锁键盘三秒voidalarm();/发出警报声voidreset();/ 复位函数void display_enter();/ 显示输入void main(void)uchar temp;init();while(1)if(lockflag)temp=keyscan(); /锁键期间也要进行键盘扫描if(temp!=No_key) /重新记时三秒aa=0;/重新在定时器中计数elsetemp=keyscan();/反复扫描输入,等待随时输入if(temp!=No_key) /有

6、按键按下才进行下面的操作if(temp=10)reset();startflag=1;/开始标志置位if(startflag)enter_code(temp);每扫描一次键盘就要进行一次处理,保存输入的数值if(temp=13)按下确认键盘就要进行密码确认confirm。;/进行确认判断if(conflag)密码确认为正确succeed_an();/密码正确,作出相应的反应elsefail_an();/密码错误,作相应反应if(temp=14)delete(); /作删除操作显示 enter*/void display_enter()uchar num;wright_com(0x80);for

7、(num=0;num13;num+)wright_data(table2num);显示OK* *void display_OK()uchar num;wright_com(0x80);for(num=0;num13;num+)wright_data(table1num); void delete()删除最后一个*/wright_com(0x80+0x40+j);确定删除对象wright_data();显示空格即为删除save-j=0;/删除后数据清零wright_com(0x80+0x40+j);为下次输入数据时写好位置,必须是在最后一个后面 /*对各种变量进行复位 */void reset(

8、)uchar num;display_enter();wright_com(0x80+0x40);/擦除屏幕上的显示for(num=0;num=0&t10)if(j=0)wright_com(0x80+0x40) ;/第一输入时要先写入地址指令,否则无法显示wright_data(*);elsewright_data(*) ;/不是第一个输入则不用再写地址savej+=t;保存输入的数据/*校对密码以确定是不是正确的*/voidconfirm。uchar k;for(k=0;k=60)/ 三秒到了aa=0;清零可以方便下次再使用light 1= 1; /关闭警报lockflag=0; /标志清

9、零解除键锁,方便下次使用/*初始化*uchar num;/*定时器初始化*/TMOD=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET0=1;EA=1; /开启总中断TR0=1;把定时器关闭/*1602 初始化 */lcdrw=0;/这个必须要置零,否则无法正常显示lcden=0;wright_com(0x38) ; / 初始化wright_com(0x0c) ; /打开光标 0x0c不显示光标0x0e光标不闪,0x0f光标闪wright_com(0x01) ; / 清显示wright_com(0x80);for(num=0;num0;x_) f

10、or(y=11O;yO;y-);/*4x4矩阵键盘扫描函数*/uchar keyscan() uchar temp,num=No_key; /num的初值要为无键盘按下时的返回值扫描第一行*KEY=0xfe;temp=KEY;temp=temp&OxfO;/ 读出高四位while(temp!=0xf0)delay(5);延时消抖temp=KEY;temp=temp&OxfO;/temp=KEY;switch(temp)/根据这八个电平可以确定是哪个按键按下case Oxee:num=1;break;case 0xde:num=2;break;case 0xbe:num=3;break;case

11、 0x7e:num=10;break;while(temp!=0xf0)/ 等待松手temp=KEY;temp=temp&0 xf0;扫描第二行*KEY=0xfd; temp=KEY; temp=temp&0 xf0; while(temp!=0xf0)delay(5);temp=KEY;temp=temp&0xf0;while(temp!=0xf0) temp=KEY;switch(temp)case 0xed:num=4;break;case 0xdd:num=5;break;case 0xbd:num=6;break;case 0x7d:num=11;break;while(temp!=

12、0xf0)temp=KEY;temp=temp&0 xf0;*扫描第三行*KEY=0xfb; temp=KEY; temp=temp&0 xf0; while(temp!=0xf0)delay(5);temp=KEY; temp=temp&0 xf0; while(temp!=0xf0) temp=KEY;switch(temp)case 0xeb:num=7;break;case 0xdb:num=8 ;break;case 0xbb:num=9;break;case 0x7b:num=12;break;while(temp!=0xf0)temp=KEY;temp=temp&0 xf0;/*扫描第四行*KEY=0xf7; temp=KEY; temp=temp&0 xf0; while(temp!=0xf0)delay(5);temp=KEY;temp=temp&0 xf0;while(temp!=0xf0)temp=KEY;switch(temp)case 0xe7:num=0;break;case 0xd7:num=13;break;case 0xb7:num=14;break;case 0x77:num=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论