久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2477|回復: 1
打印 上一主題 下一主題
收起左側

基于51單片機的電子密碼鎖設計

[復制鏈接]
跳轉到指定樓層
樓主
主程序:
#include<reg52.h>
#include<intrins.h>
#include"LCD1602.h"
#include"key.h"
#include"delay.h"
#include"eeprom.h"
sbit P3_6=P3^6;
sbit P3_7=P3^7;
void int0(void);
unsigned char password[6]/*={0x01,0x01,0x01,0x01,0x01,0x01}*/;
unsigned char password1[6];
unsigned char code aa[]="Password    ";
unsigned char code gg[]="New";
unsigned char code bb[]="ERROR   ";
unsigned char code cc[]="OK      ";
unsigned char code dd[]="        ";
unsigned char code ee[]="Next    ";
unsigned char code ff[]="success ";
unsigned char keydata;
void main()
{
unsigned char i,j,k,l,m,n,o,a1;
unsigned int aaaa=65536;
init();//LCD初始化
int0();
P3_6=0;
P3_7=0;
P1=0x0f;
LCD_Write_String(0,0,aa);
LCD_Write_String(1,1,dd);
write_com(0xc0+1);
while(1)
{
start: LCD_Write_String(0,0,aa);
  LCD_Write_String(1,1,dd);
  write_com(0xc0+1);  
  while(1)
  {
   if((0<keydata)&&(4>keydata)||(4<keydata)&&(8>keydata)||(8<keydata)&&(12>keydata)||keydata==14)
   //在0-9之間的數字通過
   {
    password[i]=keydata;//鍵盤值進行保存
    keydata=0;   //把鍵盤值置其它值,不被其它利用,以一樣
    i++;
    write_data('*'); //在LCD上顯示*這字符代表輸入了一個密碼  
    if(i==6)   //這里限制了六位密碼
    {
     i=0;
     goto panduan;
    }   
   }
   if(keydata==13)   //重新輸入改密
     {
        m=0;
      n=0;
      LCD_Write_String(1,1,dd);
      write_com(0xc0+1);
     }
   if(keydata==33)    //確定進入密碼比較
   {
    keydata=0;
panduan:  i=0;
    for(j=0;j<6;j++)
    {
     l+=password[j];
     k+=Random_Read(j);
    }
    if(l!=k)  //密碼不同進行處理
    {
     l=0;
     k=0;
     LCD_Write_String(0,0,bb);
     DelayMs(1000);
     a1+=1;
     if(a1==2)
     {
      while(1)
      {
      // aaaa--;
       P3_7=1;
       P3_6=0;
      // if(aaaa==0)
       {
      //  P3_7=0;   
        a1=0;
        //aaaa=65536;
        //goto start;
       }
      }
     }//兩次錯誤發出報警
     goto start;      //第二次輸入密碼
    }
    if(l==k)  //密碼對了,進入運行狀態,這里綠燈代表該狀態
    {
     l=0;
     k=0;
     a1=0;
     P3_6=1;
     P3_7=0;
     LCD_Write_String(0,0,cc);
     LCD_Write_String(1,1,dd);
     if(o==1)
     {
      o=0;
        LCD_Write_String(0,0,gg);
        LCD_Write_String(4,0,aa);
        LCD_Write_String(1,1,dd);
        write_com(0xc0+1);
        goto text2;
     }
     goto yingxing;    //跳到下面函數中,yingxing里
    }
   }     
  }
yingxing:while(1)
  {
   if(keydata==4) //鎖定功能
   {
    P3_6=0;
    goto start;
   }
   if(keydata==15)    //修改密碼
   {
    o++;
    if(o==1)
     goto start;
text2:   keydata=0;
    while(1)
    {
     if((0<keydata)&&(4>keydata)||(4<keydata)&&(8>keydata)||(8<keydata)&&(12>keydata)||keydata==14)
       //上面表達式0-9之間的數字通過
     {
      password[m]=keydata;  //讀取鍵盤值
      keydata=0;
      m++;
      write_data('*');   
      if(m==6)    //到密碼輸入到六位的時候進行判斷是否再輸入,或者判斷前后兩次密碼是否一致
      {
       m=0;
       n++;
       if(n==2)
        goto panduan1; //輸入第二次的時候進行前后兩次密碼進判斷
       for(i=0;i<6;i++)     //儲存前一次密碼
       {
        password1[i]=password[i];
       }
       LCD_Write_String(1,1,dd);
       LCD_Write_String(0,0,ee);
       DelayMs(1000);
       LCD_Write_String(0,0,aa);
       write_com(0xc0+1);  
      }
     }
     if(keydata==13)   //重新輸入改密
     {
text:      m=0;
      n=0;
      LCD_Write_String(1,1,dd);
      write_com(0xc0+1);
     }
     if(keydata==16)  //退出不改密碼
     {
out:     m=0;
      n=0;
      o=0;
      LCD_Write_String(0,0,cc);
      LCD_Write_String(1,1,dd);
      goto yingxing;
     }
     if(keydata==33)
     {
      keydata=0;
panduan1:    for(j=0;j<6;j++)//第一次與第二次密碼比較
      {
       l+=password[j];
       k+=password1[j];
      }
      if(l!=k)    //第一次與第二次密碼輸入錯誤
      {
       l=0;
       k=0;
       LCD_Write_String(0,0,bb);
       DelayMs(1000);
       LCD_Write_String(0,0,aa);
       goto text;
      }
       else
      {
       for(i=0;i<6;i++)
       {
        Write_IIC(i,password[i]);
       }
       LCD_Write_String(0,0,ff);
       DelayMs(1000);
       goto out;  
      }      
     }     
    }
   }
  }
}  
}
void int0(void)
{
EA=1;
EX0=1;
IT0=1;
}
void wb0(void) interrupt 0
{
keydata=key_scan();  
}


仿真圖.png (34.09 KB, 下載次數: 33)

原理圖

原理圖

1、源程序.rar

75.26 KB, 下載次數: 32, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:654666 發表于 2019-12-2 21:33 | 只看該作者
LCD_Write_String(0,0,aa);樓主為什么這個是錯誤的?謝謝告訴
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91视频正在播放 | 亚洲综合精品 | 久久久久久黄 | 亚洲精品一区二区三区 | 午夜影院在线观看 | av午夜激情| 亚洲精品电影网在线观看 | 国产精品视频999 | 日日草夜夜草 | 四虎影院免费在线 | 深夜福利影院 | 免费看黄视频网站 | 成人不卡 | 国产成人精品午夜视频免费 | 免费看片国产 | 伊人精品在线视频 | 2021狠狠干| 色男人的天堂 | 国产欧美精品一区二区色综合朱莉 | 日韩精品无码一区二区三区 | 久久99精品久久久水蜜桃 | 久久亚洲春色中文字幕久久久 | 久久久久亚洲国产| 一区二区成人 | 在线观看的av| av中文字幕在线 | 国产成人综合一区二区三区 | 在线国产精品一区 | 国产一区二区高清在线 | 日韩一区二区三区av | 中文视频在线 | 久久一区二区三区四区 | 亚洲天堂网站 | 久久91精品久久久久久9鸭 | 亚洲三级av | 欧美一区二区三 | 美女逼网站 | 97超碰成人 | 久久美女视频 | 午夜私人影院在线观看 | 人人干人人超 |