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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)電子密碼鎖程序、Proteus仿真、電路圖 程序流程圖

  [復(fù)制鏈接]
ID:524923 發(fā)表于 2021-12-20 17:27 | 顯示全部樓層 |閱讀模式
1.“輸入”按鍵:每次需要輸入密碼必須按“輸入”按鍵,否則無(wú)法輸入密碼,若輸入密碼正確,則提示正確信息,否則提示錯(cuò)誤信息并報(bào)警,10S內(nèi)不允許重新輸入密碼。
2.“確認(rèn)”按鍵:同于確認(rèn)密碼輸入完成。
3.“修改密碼”按鍵:需要修改密碼,在輸入正確密碼后可按此按鍵進(jìn)行修改。
4. 鎖的初始密碼是123456(密碼長(zhǎng)度為6位,超過(guò)6位再次輸入則無(wú)效)。
5.  開(kāi)鎖10秒后不允許更改密碼、并提示修改超時(shí)_進(jìn)入初始態(tài),需要重新輸入密碼方可再次修改密碼。
6.  系統(tǒng)未使用存儲(chǔ)器存儲(chǔ)密碼故掉電后密碼自動(dòng)恢復(fù)為初始密碼

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

開(kāi)機(jī)界面

開(kāi)機(jī)界面

輸入密碼

輸入密碼

修改密碼

修改密碼


程序流程圖:
主程序流程圖.png 計(jì)時(shí)部分流程圖.png 按鍵控制部分流程圖.png
主程序

  1. #include"KeyBord.h"
  2. #include"LCD1602.h"
  3. #include"Timer.h"
  4. #include"string.h"

  5. sbit Unlock_Led = P2^1;               //開(kāi)鎖顯示燈
  6. sbit Beep = P2^2;                     //蜂鳴器

  7. unsigned char Key_Num = 0;            //按鍵值
  8. unsigned char input_flag = 0;         //輸入標(biāo)志位
  9. unsigned char change_flag = 0;        //修改密碼標(biāo)志位
  10. unsigned char Set_password = 0;       //設(shè)定密碼

  11. unsigned char Pass_Num[6];              //數(shù)組用于存放輸入的密碼
  12. unsigned char Pass_Temp[6];             //中間變量存儲(chǔ)數(shù)組
  13. unsigned char Pass_Word[6] = {1,2,3,4,5,6};     //轉(zhuǎn)換成液晶顯示的字符

  14. void Key_Control();

  15. void main()
  16. {  
  17.     unsigned char i,j=0,num=0,count=0;

  18.         LCD_Init();                               //顯示屏初始化
  19.     Timer0_Init();                            //定時(shí)器初始化

  20.     LCD_Write_Cmd(0x0F);                      //光標(biāo)閃爍
  21.     LCD_Write_Str(0,0,"FireFly Sci&Tech");    //初始顯示界面
  22.     LCD_Write_Str(4,1,"Welcome!");


  23.     while(1)
  24.     {        
  25.         Key_Num = KeyPro();

  26.         if(time_flag)                             //定時(shí)器計(jì)時(shí)10S,返回初始界面
  27.         {                                         //關(guān)閉定時(shí)器
  28.             TR0 = 0;                              //定時(shí)標(biāo)志位清零
  29.             time_flag = 0;
  30.             change_time =10;
  31.             Set_password = 0;
  32.             Unlock_Led = 0;
  33.             Beep = 0;

  34.             LCD_Write_Cmd(0x01);                     //清屏,并返回初始界面
  35.             LCD_Write_Str(0,0,"FireFly Sci&Tech");
  36.             LCD_Write_Str(4,1,"Welcome!");
  37.         }
  38.         if(Key_Num >= 12)                           //按鍵值是否大于12
  39.         {
  40.             if(Key_Num == 12)                       //輸入按鍵是否按下
  41.             {
  42.                 LCD_Write_Cmd(0x01);                //清屏,并進(jìn)入輸入界面
  43.                 DelayMs(5);   
  44.                 LCD_Write_Str(1,0,"PassWord:");

  45.                 TR0 = 0;                            //關(guān)閉定時(shí)器,重新設(shè)定定時(shí)時(shí)間,
  46.                 time_flag = 0;
  47.                 change_time =10;
  48.                 input_flag = 1;                      //輸入標(biāo)志位置1
  49.                 Unlock_Led = 0;                      //開(kāi)鎖顯示燈滅
  50.                 num = 0;
  51.                 i = 0;     
  52.             }
  53.             else if(Key_Num == 13)                     //確認(rèn)按鍵是否被按下
  54.             {
  55.                 if(num == 6)                           //輸入密碼長(zhǎng)度是否為6位
  56.                 {
  57.                     if(change_flag)                    //修改密碼標(biāo)志位真
  58.                     {
  59.                         change_flag = 0;

  60.                         for(j = 0; j < 6; j++)             //將密碼從中間數(shù)組導(dǎo)入密碼存儲(chǔ)數(shù)組
  61.                         {
  62.                             Pass_Word[j] = Pass_Temp[j];
  63.                         }

  64.                         LCD_Write_Cmd(0x01);                //清屏,并進(jìn)入密碼修改成功界面
  65.                         LCD_Write_Str(2, 0, "SET Success!");
  66.                     }
  67.                     else if(input_flag)
  68.                     {
  69.                         if(memcmp(Pass_Num, Pass_Word, 6) == 0)      //將輸入的密碼與設(shè)置的密碼進(jìn)行比對(duì)
  70.                         {
  71.                             LCD_Write_Cmd(0x01);                       //清屏,并進(jìn)入密碼輸入正確界面
  72.                             LCD_Write_Str(1, 0, "PassWord Right");
  73.                             LCD_Write_Str(2, 1, "Door unlock");

  74.                             Set_password = 1;                          //設(shè)定密碼,10秒內(nèi)可修改
  75.                             Unlock_Led = 1;                            //開(kāi)鎖顯示燈亮
  76.                             input_flag = 0;
  77.                         }
  78.                         else
  79.                         {
  80.                             LCD_Write_Cmd(0x01);                   //清屏,并進(jìn)入密碼輸入錯(cuò)誤界面
  81.                             DelayMs(5);
  82.                             LCD_Write_Str(1, 0, "PassWord Error");
  83.                             change_time =10;
  84.                             TR0 = 1;
  85.                             Unlock_Led = 0;                           

  86.                             while(!time_flag)
  87.                             {
  88.                                 Unlock_Led = ~Unlock_Led;
  89.                                 Beep = ~Beep;         //板子為無(wú)源蜂鳴器
  90.                                 DelayUs2x(100);
  91.                             }   
  92.                         }
  93.                     }
  94.                     change_time =10;      //重新賦值定時(shí)時(shí)間,開(kāi)定時(shí)器,輸入計(jì)數(shù)和顯示位置計(jì)數(shù)清零
  95.                     TR0 = 1;
  96.                     num = 0;
  97.                     i = 0;   
  98.                 }
  99.             }
  100.             else if(Key_Num == 14)         //修改密碼按鍵
  101.             {
  102.                 if(Set_password)           //如果在設(shè)定密碼時(shí)間內(nèi)
  103.                 {
  104.                     LCD_Write_Cmd(0x01);        //清屏,進(jìn)入修改密碼界面
  105.                     DelayMs(5);
  106.                     LCD_Write_Str(1, 0, "New PassWord:");
  107.                     TR0 = 0;
  108.                     time_flag = 0;
  109.                     change_time =10;
  110.                     change_flag = 1;
  111.                     input_flag = 0;
  112.                     Set_password = 0;
  113.                     num = 0;
  114.                     i = 0;     
  115.                 }   
  116.             }
  117.             else if(Key_Num == 15)             //取消修改密碼
  118.             {
  119.                 if(change_flag)
  120.                 {
  121.                     LCD_Write_Cmd(0x01);
  122.                     DelayMs(5);
  123.                     LCD_Write_Str(1, 0, "Cancel Change!");
  124.                     TR0 = 1;
  125.                     change_flag = 0;
  126.                     num = 0;
  127.                     i = 0;   
  128.                 }   
  129.             }

  130.         }
  131.         else if(Key_Num <= 9)
  132.         {
  133.             if(num < PASS_NUM)              //輸入密碼計(jì)數(shù)小于6
  134.             {
  135.                 if(input_flag)               //輸入密碼標(biāo)志位
  136.                 {   
  137.                     Pass_Num[num] = Key_Num;
  138.                     LCD_Write_Char(3 + i, 1, '*');//依次顯示輸入字符
  139.                 }
  140.                 else if(change_flag)            //修改密碼標(biāo)志位
  141.                 {
  142.                     Pass_Temp[num] = Key_Num;
  143.                     LCD_Write_Char(3 + i, 1, ('0' + Pass_Temp[num]));//依次顯示輸入字符
  144.                 }

  145.                 num++;
  146.                 i++;
  147.             }        
  148.         }
  149.     }
  150. }
復(fù)制代碼

Keil代碼與Proteus8.8仿真下載: 電子密碼鎖.rar (542.69 KB, 下載次數(shù): 294)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:1053794 發(fā)表于 2022-11-24 19:55 | 顯示全部樓層
邏輯很清楚,容易理解
回復(fù)

使用道具 舉報(bào)

ID:1054493 發(fā)表于 2022-11-28 21:10 | 顯示全部樓層
大佬的作品
回復(fù)

使用道具 舉報(bào)

ID:1054627 發(fā)表于 2022-11-29 14:17 | 顯示全部樓層
大佬的作品好理解
回復(fù)

使用道具 舉報(bào)

ID:1054697 發(fā)表于 2022-12-2 12:54 | 顯示全部樓層
怎么開(kāi)機(jī)界面不一樣呀仿真用不了
回復(fù)

使用道具 舉報(bào)

ID:262 發(fā)表于 2022-12-2 16:24 | 顯示全部樓層
無(wú)敵飛貓 發(fā)表于 2022-12-2 12:54
怎么開(kāi)機(jī)界面不一樣呀仿真用不了

我打開(kāi)可以用 你版本不行吧 用Proteus8.13
回復(fù)

使用道具 舉報(bào)

ID:1055296 發(fā)表于 2022-12-2 20:37 | 顯示全部樓層
附件里面有l(wèi)cd1602.h文件
回復(fù)

使用道具 舉報(bào)

ID:1055296 發(fā)表于 2022-12-3 00:23 | 顯示全部樓層
為什么打開(kāi)后lcd顯示屏沒(méi)有開(kāi)機(jī)界面,只會(huì)亮,請(qǐng)問(wèn)什么情況?
回復(fù)

使用道具 舉報(bào)

ID:262 發(fā)表于 2022-12-3 04:43 | 顯示全部樓層
ENXXXXTONEW 發(fā)表于 2022-12-3 00:23
為什么打開(kāi)后lcd顯示屏沒(méi)有開(kāi)機(jī)界面,只會(huì)亮,請(qǐng)問(wèn)什么情況?

可能是你沒(méi)有采用樓主的8.8版本吧 我打開(kāi)和樓主的圖是一樣的
回復(fù)

使用道具 舉報(bào)

ID:1055296 發(fā)表于 2022-12-3 22:32 | 顯示全部樓層
輸入密碼的時(shí)候不會(huì)顯示星號(hào),什么問(wèn)題?跪求!

回復(fù)

使用道具 舉報(bào)

ID:1025912 發(fā)表于 2022-12-5 15:03 | 顯示全部樓層
非常有用,學(xué)習(xí),收藏了,謝謝
回復(fù)

使用道具 舉報(bào)

ID:1056587 發(fā)表于 2022-12-9 10:49 | 顯示全部樓層
heicad 發(fā)表于 2022-12-3 04:43
可能是你沒(méi)有采用樓主的8.8版本吧 我打開(kāi)和樓主的圖是一樣的

我用的8.9版本為什么還是沒(méi)有開(kāi)機(jī)界面呢,求解
回復(fù)

使用道具 舉報(bào)

ID:932294 發(fā)表于 2022-12-9 13:55 | 顯示全部樓層
led安在哪里了請(qǐng)問(wèn)
回復(fù)

使用道具 舉報(bào)

ID:92810 發(fā)表于 2023-1-9 16:31 | 顯示全部樓層
謝謝樓主分享了,下載學(xué)習(xí)先
回復(fù)

使用道具 舉報(bào)

ID:1107797 發(fā)表于 2024-1-4 15:33 | 顯示全部樓層
大神寫的軟件就是好,可惜我看不懂,軟件太難了!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品欧美乱码久久久久久1区2区 | 天堂av影院 | 久久中文字幕一区 | 国产欧美日韩一区 | 国产亚洲精品综合一区 | 成人午夜免费福利视频 | 日韩精品在线观看一区二区 | 国产视频第一页 | 国产精品爱久久久久久久 | 性视频一区 | 成人一区二区在线 | 亚洲综合在线一区二区 | 中文字幕在线一区二区三区 | 精品人伦一区二区三区蜜桃网站 | 91人人视频在线观看 | 91麻豆精品一区二区三区 | 国产精品不卡 | 国产69精品久久久久777 | 伊人精品久久久久77777 | 夜夜爽夜夜操 | 成人影视网 | 一区二区免费 | 久久成人国产精品 | 人妖一区 | 精品一区二区三区在线播放 | 在线观看欧美日韩视频 | 精品国产91久久久久久 | 91毛片在线看 | 久久不射电影网 | 天天爱综合 | 国产精品一区久久久 | 欧美日韩一区精品 | 欧美aaa一级片 | 亚洲国产成人精品女人久久久 | 国产高清视频在线观看播放 | 国产三区四区 | 亚洲狠狠爱 | 无码一区二区三区视频 | 日韩三级在线观看 | 亚洲天堂精品久久 | 999在线精品 |