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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1782|回復(fù): 2
收起左側(cè)

單片機密碼鎖程序-無儲存

[復(fù)制鏈接]
ID:405619 發(fā)表于 2018-11-30 16:48 | 顯示全部樓層 |閱讀模式
密碼鎖-無儲存(掉電密碼丟失,可根據(jù)自己需求加存儲如24c02)

單片機源程序如下:
  1. #include<reg52.h>
  2. #include"LCD.H"
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar count=1,ci=0;//修改密碼時,只清屏一次,給wei=-1賦初值
  6. uchar mima[4];
  7. bit flag,flag1,flag2;//flag為按鍵14,15是否有效,flag1為修改密碼是否有效,flag2為初始化密碼是否有效
  8. sbit beep=P1^5;
  9. uchar table[4];//初始密碼
  10. uchar code table1[]="pass word!";
  11. uchar code table2[]="welcome!";
  12. uchar code table3[]="error!";
  13. uchar code table4[]="alarm!";
  14. uchar code table5[]="new mima!";

  15. void feng()        //蜂鳴器函數(shù)
  16. {
  17. uchar i;
  18. for(i=0;i<10;i++)
  19. {
  20.   beep=0;
  21.   delayms(200);
  22.   beep=1;
  23.   delayms(200);
  24. }
  25. }

  26. void chushi()  //初始函數(shù)
  27. {
  28. uchar i;
  29. write_byte(0,0x82);
  30. for(i=0;i<10;i++)
  31. {
  32.   write_byte(1,table1[i]);
  33. }
  34. write_byte(1,'[');
  35. write_byte(1,0x30+count); //count是輸入密碼次數(shù),當(dāng)3次時,蜂鳴器報錯
  36. write_byte(1,']');
  37. }

  38. void bijiao()        //比較函數(shù)
  39. {
  40. uchar i;
  41. keyscan();                //鍵盤掃描函數(shù)
  42. if(flag1==0)        //當(dāng)修改密碼沒有按下時,正常輸入密碼
  43. {
  44.   if((keynum>=0)&&(keynum<=9))
  45.   {
  46.    write_byte(0,0xc0+wei);
  47.    if((wei>=0)&&(wei<=3))//密碼為4位,wei位密碼位數(shù)
  48.    {
  49.      write_byte(1,'*');
  50.      mima[wei]=keynum;        //將密碼存入到mima[]數(shù)組中,用于比較
  51.    }
  52.   }
  53. }
  54. if(flag1==1)//當(dāng)密碼修改按下時
  55. {
  56.   if(ci==0)         //清屏,wei=-1,只執(zhí)行一次
  57.   {
  58.    write_byte(0,0x01);
  59.    delayms(20);
  60.    wei=-1;
  61.    ci++;          //
  62.   }
  63.   else
  64.   {
  65.    write_byte(0,0x84);           //修改密碼
  66.    for(i=0;i<8;i++)
  67.    {
  68.     write_byte(1,table5[i]);
  69.    }
  70.    if((keynum>=0)&&(keynum<=9))        //修改密碼位數(shù)為4
  71.    {
  72.     write_byte(0,0xc0+wei);
  73.     if((wei>=0)&&(wei<=3))
  74.     {
  75.      write_byte(1,0x30+keynum);
  76.          table[wei]=keynum;
  77.     }
  78.    }
  79.    flag=1;          //開按鍵14,關(guān)按鍵15
  80.    flag2=1;          //將修改后的密碼存入table[]中
  81.    count=1;          //輸入密碼次數(shù)為1
  82.   }
  83. }

  84. if(flag==0)        //按鍵15有效
  85. {
  86.   if(flag2==0)         //初始密碼有效
  87.   {
  88.    table[0]=1;table[1]=2;table[2]=3;table[3]=4;
  89.   }
  90.   if(keynum==15)  
  91.   {
  92.    if((mima[0]==table[0])&&(mima[1]==table[1])&&
  93.       (mima[2]==table[2])&&(mima[3]==table[3]))        //密碼比較 ,正確的話顯示welcome
  94.    {
  95.     write_byte(0,0x01);
  96.     delayms(20);
  97.     write_byte(0,0x82);
  98.     for(i=0;i<8;i++)
  99.     {
  100.      write_byte(1,table2[i]);
  101.     }
  102.     while(1);
  103.    }         
  104.    else                                  //錯誤的話顯示error
  105.    {
  106.     write_byte(0,0x01);
  107.     delayms(20);
  108.     write_byte(0,0x84);
  109.     for(i=0;i<6;i++)
  110.     {
  111.      write_byte(1,table3[i]);
  112.     }
  113.     count++;                 //輸入次數(shù),最多三次
  114.     flag=1;                         //按鍵14打開,15關(guān)閉
  115.         if(count>=4)        //多余三次蜂鳴器響
  116.         {       
  117.          write_byte(0,0x84);
  118.      for(i=0;i<6;i++)
  119.      {
  120.       write_byte(1,table4[i]);
  121.      }
  122.          feng();
  123.          while(1);
  124.         }
  125.    }
  126.   }
  127.   if(keynum==13) //按鍵13修改密碼有效
  128.   {
  129.    flag1=1;
  130.   }
  131. }
  132. if(flag==1)   //按鍵14有效
  133. {
  134.   if(keynum==14)         //清屏,初始化,輸入次數(shù)加一
  135.   {
  136.    write_byte(0,0x01);
  137.    delayms(20);
  138.    chushi();
  139.    wei=-1;
  140.    flag=0;                //按鍵15有效
  141.    flag1=0;                //修改密碼無效
  142.   }
  143. }
  144. }


  145. void main()
  146. {
  147. init_lcd1602();
  148. chushi();
  149. while(1)
  150. {
  151.   bijiao();
  152. }
  153. }
復(fù)制代碼

所有資料51hei提供下載:
密碼鎖-無存儲.zip (37.42 KB, 下載次數(shù): 10)


回復(fù)

使用道具 舉報

ID:1 發(fā)表于 2018-12-1 02:17 | 顯示全部樓層
補全原理圖或者詳細說明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報

ID:282457 發(fā)表于 2018-12-1 10:54 | 顯示全部樓層
其實,使用STC單片機的話,如STC89C52,根本不需要AT24CXX的,CPU本身就有5K的eeprom,如果對實時性要求不高,一般場合使用足矣。起始地址0x2000,以扇區(qū)為單位,每個扇區(qū)512B.即0x2000為一個扇區(qū)開始;0x2200為第二個扇區(qū)開始,扇區(qū)間隔0x200,以此類推。

eeprom.rar

1.19 KB, 下載次數(shù): 3, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久亚洲 | 亚洲视频中文 | 欧美成年人网站 | 国产精品毛片一区二区在线看 | 四虎在线观看 | 成人无遮挡毛片免费看 | 污视频免费在线观看 | 国产成人精品一区二区三区 | 户外露出一区二区三区 | 国产精品久久网 | 伊人久久大香线 | 三级黄色片在线 | 九热在线| 免费视频一区二区 | 一区二区视频在线观看 | 四虎影院久久 | 中文在线а√在线8 | 色秀网站| 天天操天天操 | 亚洲综合一区二区三区 | 欧美日韩在线观看视频 | 天堂在线中文字幕 | 久久这里有精品 | 免费视频一区 | 成人啊啊啊 | 久久久不卡网国产精品一区 | 男女视频在线看 | 久久成人免费视频 | 99久久免费精品国产男女高不卡 | 久久久久久久久久久丰满 | 麻豆国产一区二区三区四区 | 一区二区影视 | 国产精品日女人 | 粉嫩av在线 | 女同av亚洲女人天堂 | 国产在线一区观看 | 日韩综合| 日韩精品在线播放 | 99精品久久99久久久久 | 国产男女猛烈无遮掩视频免费网站 | 亚洲日本欧美日韩高观看 |