欢迎来到天天文库
浏览记录
ID:61416523
大小:44.00 KB
页数:10页
时间:2021-01-27
《密码锁程序修改.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、由此键盘改为列1列2列3列4行1123A行2456B行3789C行4*0#D对应上面的键盘及键盘的键值编码方法,各按键及其编码的对应关系如下表所示:按键行号列号键值编码11111H()21221H()31341H()A1481H()42112H()52222H()62342H()B2482H()73114H()83224H()93344H()C3484H()*4118H()04228H()#4348H()D4488H()四位共阴数码管SM管脚图C4afC3C2b121110987SM123456edDpcgC1六.
2、程序详解#ifndef_PWLOCK_H//防止PWLock.h被重复引用#define_PWLOCK_H#include#include#include#include#defineucharunsignedchar#defineuintunsignedintuchardigbit;//字位ucharwordbuf[4];//字型码缓冲区uchart1count;//定时器1由50ms累积到1s所用的计数器ucharcount;//密码位计数
3、ucharpw[4];//初始密码存储区ucharpwbuf[4];//输入密码存储区bitenterflag;//确认键按下与否标志bitpwflag;//密码正确与否标志bitshowflag;//数码管显示与否标志sbitgreen=P2^6;sbitred=P2^7;voiddisplay(void);//显示函数#endif#include"PWLock.h"/*键消抖延时函数*/voiddelay(void){uinti;for(i=10000;i>0;i--);}/*键扫描函数*/ucharkeysc
4、an(void){ucharscancode,tmpcode;P1=0xf0;//发全0行扫描码if((P1&0xf0)!=0xf0)//若有键按下{delay();//延时去抖动if((P1&0xf0)!=0xf0)//延时后再判断一次,去除抖动影响{scancode=0xfe;while((scancode&0x10)!=0)//逐行扫描{P1=scancode;//输出行扫描码if((P1&0xf0)!=0xf0)//本行有键按下{tmpcode=(P1&0xf0)
5、0x0f;/*返回特征字节码,为1的位即对
6、应于行和列*/return((~scancode)+(~tmpcode));}elsescancode=(scancode<<1)
7、0x01;//行扫描码左移一位}}}return(0);//无键按下,返回值为0}/*定时器0中断服务子程序,2ms定时动态扫描显示*/voidtime0_int(void)interrupt1{/*重置2ms定时*/TH0=-2000/256;TL0=-2000%256;if(showflag==1)display();//调用显示函数}/*定时器1中断服务子程序,50ms*/voi
8、dtime1_int(void)interrupt3{uchark;/*重置50ms定时*/TH1=-50000/256;TL1=-50000%256;if(t1count<20){t1count++;}else//计时到1s{TR1=0;//关闭计数器1t1count=0;green=1;//绿灯不亮red=1;//红灯不亮showflag=1;//打开数码管显示digbit=0x01;//从数码管第1位开始动态显示for(k=0;k<4;k++)//显示8888wordbuf[k]=8;}}/*根据共阴极字型编
9、码表获取0~9,A~B字型代码*/uchargetcode(uchari){ucharp;switch(i){case0:p=0x3f;break;/*0*/case1:p=0x06;break;/*1*/case2:p=0x5B;break;/*2*/case3:p=0x4F;break;/*3*/case4:p=0x66;break;/*4*/case5:p=0x6D;break;/*5*/case6:p=0x7D;break;/*6*/case7:p=0x07;break;/*7*/case8:p=0x7F;
10、break;/*8*/case9:p=0x67;break;/*9*/case10:p=0x77;break;/*A*/case11:p=0x7C;break;/*B*/case12:p=0x39;break;/*C*/case13:p=0x5E;break;/*D*/case14:p=0x79;break;/*E*/case15:p=0x71;break;
此文档下载收益归作者所有