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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

密碼鎖,修改密碼時,不能寫入24C02

[復制鏈接]
跳轉到指定樓層
樓主
ID:77426 發(fā)表于 2015-5-12 13:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我在按下(key=O)時,可以將密碼(123456)寫進24C02,但是當我重置密碼(333333)之后,再次輸入新密碼時,提示密碼錯誤,求幫助?主程序如下。
#include <reg52.h>
#include "delay_ms.h"
#include  "矩陣鍵盤.h"
#include "i2c.h"
#include "1602.h"
#include "delay_ms.h"
#include "mima.h"
#define uchar unsigned char
#define uint unsigned int
#define A 0x0a //輸入密碼
#define B 0x0b  //修改密碼
#define D 0x0d //關鎖
#define enter 0x0c //確認
#define backspace 0x0f //退格鍵
#define O 0x0e //初始化密碼
sbit baojing = P2^0; //蜂鳴器接口
sbit lock = P1^5;//鎖信號
uchar  mima_5[6] = {1,2,3,4,5,6}; //初始密碼
uchar flag_change;
uchar aa;//存放密碼錯誤的次數,夠三次報警
uchar bb;
uchar flag_t0;
void baoj1()//報警函數
{
int i;
for(i = 0;i < 5; i++)
{
  baojing = 0;
  delay_ms(5);
  baojing = 1;
  delay_ms(5);
}
}
void baoj()
{
uchar i;
for(i = 0; i < 10; i++)
  baoj1();
}
/*密碼處理函數*/
void mimachuli()
{
uchar key,i;
uchar  mima_1[6]={' ',' ',' ',' ',' ',' '};//存放密碼緩沖區(qū)
uchar  mima_2[6]={' ',' ',' ',' ',' ',' '};
uchar  mima_3[6]={' ',' ',' ',' ',' ',' '};
key = step_choose();
if(key == A)//A被按下,接收輸入密碼,處理
{
  RdFromROM(mima_1,0x00,6);
  if(mima_1[5]==3)
    {
    lock=0;
    delay_ms(1000);
    lock=1;
  }
  write_com(0x06);//寫一個字符后地址指針加 1
  write_com(0x01);//顯示清零,數據指針清零
  write_com(0x0f);//顯示光標
  lcd_pos(0,0);
  write_n_char(" press password ");  

  if(input_mima(mima_2)) //處理輸入密碼
  {
   if(mimaduibi(mima_2,mima_1)) //密碼正確
   {
    lcd_pos(0,0);
    write_com(0x0c);
          write_com(0x06);//寫一個字符后地址指針加 1
           write_com(0x01);//顯示清零,數據指針清零
    write_n_char(" password right ");
    aa = 0; //清除密碼錯誤次數
    lock = 0; //開鎖
    baojing = 0; //響一下
    delay_ms(1000);
    baojing = 1;
    TR0 = 1;
    flag_t0 = 1;
    while(key != D && flag_t0) //D沒按下一直開
    {   
     key = keyscan();
    }
    TR0 = 0;
    lock = 1;//D按下了關鎖
   }
   else //密碼 不正確
   {
    lcd_pos(0,0);
    write_com(0x0c); //關光標
    write_com(0x06);//寫一個字符后地址指針加 1
    write_com(0x01);//顯示清零,數據指針清零
    write_n_char(" password wrong");
    delay_ms(10000);
    aa++;
    if(aa == 4)
    {
     aa = 0;
        i = 20; //密碼不正確報警
     while(i--)
      baoj();
    }
   }
  }
  else //密碼沒有輸入正確或完成
  {
   lcd_pos(0,0);
   write_com(0x0c); //關光標
     write_com(0x06);//寫一個字符后地址指針加 1
     write_com(0x01);//顯示清零,數據指針清零
   write_n_char(" password wrong");
   delay_ms(10000);
   aa++;
   if(aa == 4)
   {
    aa = 0;
       i = 20; //密碼不正確報警
    while(i--)
     baoj();
   }
  }
}
if(key == B)//B被按下,修改密碼
{
  RdFromROM(mima_1,0x00,6);
  write_com(0x06);//寫一個字符后地址指針加 1
  write_com(0x01);//顯示清零,數據指針清零
  write_com(0x0f);//顯示光標
  lcd_pos(0,0);
  write_n_char(" input password");  
  write_com(0x0f);//顯示光標
  if(input_mima(mima_2)) //處理輸入密碼
  {
   if(mimaduibi(mima_2,mima_1)) //密碼正確
   {
    lcd_pos(0,0);
    write_com(0x0c);
            write_com(0x06);//寫一個字符后地址指針加 1
            write_com(0x01);//顯示清零,數據指針清零
    write_n_char(" password right ");
    aa = 0; //清除密碼錯誤次數
    delay_ms(15000);
    flag_change = 1;
    while(flag_change) //下面開始修改密碼
    {
     write_com(0x06);//寫一個字符后地址指針加 1
     write_com(0x01);//顯示清零,數據指針清零
     write_com(0x0f);//顯示光標
     lcd_pos(0,0);
     write_n_char("In new password");
     delay_ms(1500);
     if(input_mima(mima_2)) //處理輸入密碼
     {
      lcd_pos(0,0);
      write_com(0x0c);
            write_com(0x06);//寫一個字符后地址指針加 1
            write_com(0x01);//顯示清零,數據指針清零
      write_n_char("  Input new pass"); //確定新密碼
      lcd_pos(1,0);
      write_n_char(" word again");
      delay_ms(20000);
      lcd_pos(0,0);
      write_com(0x0f);//顯示光標
            write_com(0x06);//寫一個字符后地址指針加 1
            write_com(0x01);//顯示清零,數據指針清零
      write_n_char(" In new password");      
       if(input_mima(mima_3)) //處理輸入密碼
       {
        if(mimaduibi(mima_2,mima_3)) //密碼正確
        {
         WrToROM(mima_2,0x00,6);
         delay_ms(1000);//把修改的密碼存進24C02
         RdFromROM(mima_1,0x00,6);
                                   if(mima_1[5]==3)
                                      {
              lock=0;
                                         delay_ms(1000);
                                            lock=1;
                                     }
         lcd_pos(0,0);
         write_com(0x0c);
                 write_com(0x06);//寫一個字符后地址指針加 1
                 write_com(0x01);//顯示清零,數據指針清零
         write_n_char(" password has");
         lcd_pos(1,0);
         write_n_char("changed already");
         delay_ms(10000);
         flag_change = 0;
        }
        else //密碼 不正確
        {
         lcd_pos(0,0);
         write_com(0x0c); //關光標
         write_com(0x06);//寫一個字符后地址指針加 1
         write_com(0x01);//顯示清零,數據指針清零
         write_n_char(" password wrong");
         delay_ms(10000);
         aa++;
         if(aa == 4)
         {
          aa = 0;
             i = 20; //3次輸入密碼不正確報警
          while(i--)
           baoj();
         }
         flag_change = 0;
        }
       }
       else //密碼沒有輸入正確或完成
       {
        lcd_pos(0,0);
        write_com(0x0c); //關光標
          write_com(0x06);//寫一個字符后地址指針加 1
          write_com(0x01);//顯示清零,數據指針清零
        write_n_char(" password wrong");
        delay_ms(10000);
        aa++;
        if(aa == 4)
        {
         aa = 0;
            i = 20; //3次輸入密碼不正確報警
         while(i--)
          baoj();
        }
       }
      
     }
     else //密碼沒有輸入正確或完成
     {
      lcd_pos(0,0);
      write_com(0x0c); //關光標
        write_com(0x06);//寫一個字符后地址指針加 1
        write_com(0x01);//顯示清零,數據指針清零
      write_n_char(" password wrong");
      delay_ms(10000);
      flag_change = 0;
      aa++;
      if(aa == 4)
      {
       aa = 0;
          i = 20; //3次輸入密碼不正確報警
       while(i--)
        baoj();
      }
     }
         
    }
   }
   else //密碼 不正確
   {
    lcd_pos(0,0);
    write_com(0x0c); //關光標
    write_com(0x06);//寫一個字符后地址指針加 1
    write_com(0x01);//顯示清零,數據指針清零
    write_n_char(" password wrong");
    delay_ms(10000);
    aa++;
    if(aa == 4)
    {
     aa = 0;
        i = 20; //3次輸入密碼不正確報警
     while(i--)
      baoj();
    }
   }
  }
  else //密碼沒有輸入正確或完成
  {
   lcd_pos(0,0);
   write_com(0x0c); //關光標
     write_com(0x06);//寫一個字符后地址指針加 1
     write_com(0x01);//顯示清零,數據指針清零
   write_n_char(" password wrong");
   delay_ms(10000);
   aa++;
   if(aa == 4)
   {
    aa = 0;
       i = 20; //3次輸入密碼不正確報警
    while(i--)
     baoj();
   }
  }  
}
if(key==O)
    { WrToROM(mima_5,0x00,6); //把修改的密碼存進24C02
     RdFromROM(mima_1,0x00,6) ; //強制將初始密碼寫入24C02存儲
      if(mima_1[4]==5)
    {
      lock=0;
    delay_ms(1000);
    lock=1;
  }   
    }
}

void timer0() interrupt 1 //定時器0中斷,50ms定時
{
TH0 = 0x4c;//50ms定時
TL0 = 0x00;
bb++;
if(bb == 200)//10秒時間到
{
  bb = 0;
  flag_t0 = 0;
}
}
void main()
{
yjinit();//液晶初始化
baojing = 1;
lock = 1; //關鎖
TMOD = 0x01;//選擇定時器0方式1
EA = 1;//打開總中斷
ET0 = 1;//打開定時器0中斷
TR0 = 0;//關閉定時器
TH0 = 0x4c;//50ms裝初值
TL0 = 0x00;
while(1)
{
   mimachuli();
}
}


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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区四区在线视频 | 日韩五月天 | 国产美女视频黄a视频免费 国产精品福利视频 | 午夜激情网 | 日韩精品视频一区二区三区 | 精国产品一区二区三区四季综 | 欧美黄视频 | 情侣黄网站免费看 | 国产精品中文字幕一区二区三区 | 亚洲精品一区av在线播放 | 中文字幕在线精品 | 久久成人激情 | 91视频三区| 精品日本中文字幕 | 欧美一级淫片免费视频黄 | 亚洲精品久久区二区三区蜜桃臀 | 中文在线视频观看 | 亚洲国产成人av好男人在线观看 | 精品成人 | 欧美日韩高清 | 国产日韩一区二区 | 久久久久久久91 | 亚洲免费三区 | 久久精品亚洲一区二区三区浴池 | 精品久久影院 | 性色av网站 | 日一区二区| 91天堂| 久久五月婷 | 日本精品久久 | 国产美女在线观看 | 黄网址在线观看 | 日韩在线小视频 | 午夜电影一区二区 | 成人国产精品免费观看 | 久久久久久a| 久久机热 | 国产一区二区不卡 | 欧美一区二区三区视频在线观看 | 国产高清美女一级a毛片久久w | 国产精品国产三级国产aⅴ无密码 |