您当前的位置:五五电子网电子知识单片机-工控设备51单片机电子密码锁设计资料 正文
电子密码锁设计资料

电子密码锁设计资料

点击数:7459 次   录入时间:03-04 11:54:00   整理:http://www.55dianzi.com   51单片机

1.实验任务
  用4×4组成0-9数字键及确认键。
  用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较,若密码正确,则门开,此处用LED发光二极管亮一秒钟做为提示,同时发出“叮咚”声;若密码不正确,禁止按键输入3秒,同时发出“嘀、嘀”报警声;若在3秒之内仍有按键按下,则禁止按键输入3秒被重新禁止。
2.电路原理
4×4键盘及8位数码管显示构成的电子密码锁
                  图4.33.1
3.系统板上硬件连线
(1).把“单片机系统”区域中的P0.0-P0.7用8芯排线连接到“动态数码显示”区域中的ABCDEFGH端子上。
(2).把“单片机系统“区域中的P2.0-P2.7用8芯排线连接到“动态数码显示”区域中的S1S2S3S4S5S6S7S8端子上。
(3).把“单片机系统”区域中的P3.0-P3.7用8芯排线连接到“4×4行列式键盘”区域中的R1R2R3R4C1C2C3C4端子上。
(4).把“单片机系统”区域中的P1.0用导线连接到“八路发光二极管模块”区域中的L2端子上。
(5).把“单片机系统”区域中的P1.7用导线连接到“音频放大模块”区域中的SPK IN端子上。
(6).把“音频放大模块”区域中的SPK OUT接到喇叭上。
4.程序设计内容
(1).4×4行列式键盘识别技术:有关这方面内容前面已经讨论过,这里不再重复。
(2).8位数码显示,初始化时,显示“P   ”,接着输入最大6位数的密码,当密码输入完后,按下确认键,进行密码比较,然后给出相应的信息。在输入密码过程中,显示器只显示“8.”。当数字输入超过6个时,给出报警信息。在密码输入过程中,若输入错误,可以利用“DEL”键删除刚才输入的错误的数字。
(3).4×4行列式键盘的按键功能分布图如图4.33.2所示:
4×4键盘及8位数码管显示构成的电子密码锁
         图4.33.2
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 dispbuf[8]={18,16,16,16,16,16,16,16};
unsigned char dispcount;
unsigned char flashcount;
unsigned char temp;
unsigned char key;
unsigned char keycount;
unsigned char pslen=5;
unsigned char getps[6];
bit keyoverflag;
bit errorflag;
bit rightflag;
unsigned int second3;
unsigned int aa,bb;
unsigned int CC;
bit okflag;
bit alarmflag;
bit hibitflag;
unsigned char oka,okb;
void main(void)
{
  unsigned char i,j;
  TMOD=0x01;
  TH0=(65536-500)/256;
  TL0=(65536-500)%6;
  TR0=1;
  ET0=1;
  EA=1;
  while(1)
    {
      P3=0xff;
      P3_4=0;
      temp=P3;
      temp=temp & 0x0f;
      if (temp!=0x0f)
        {
          for(i=10;i>0;i--)
          for(j=248;j>0;j--);
          temp=P3;
          temp=temp & 0x0f;
          if (temp!=0x0f)
            {
              temp=P3;
              temp=temp & 0x0f;             
              switch(temp)
                {
                  case 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) && (key<10))
                {
                  if(keycount<6)
                    {
                      getps[keycount]=key;
                      dispbuf[keycount+2]=19;
                    }
                  keycount++;
                  if(keycount==6)

[1] [2] [3] [4] [5] [6] [7] [8]  下一页


本文关键字:资料  电子  密码锁  51单片机单片机-工控设备 - 51单片机