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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

電子密碼鎖仿真有代碼下載

  [復制鏈接]
跳轉到指定樓層
樓主
密碼鎖


51單片機密碼鎖全部代碼和仿真下載: 電子密碼鎖仿真有代碼.zip (3.92 MB, 下載次數: 446)

部分源碼預覽:
  1. #include <reg52.h>
  2. #include "delay_ms.h"
  3. #include  "矩陣鍵盤.h"
  4. #include "i2c.h"
  5. #include "1602.h"
  6. #include "delay_ms.h"
  7. #include "mima.h"
  8. #define uchar unsigned char
  9. #define uint unsigned int
  10. #define A 0x0a //輸入密碼
  11. #define B 0x0b  //修改密碼
  12. #define D 0x0d //關鎖
  13. #define enter 0x0c //確認
  14. #define backspace 0x0f //退格鍵
  15. sbit baojing = P3^7; //蜂鳴器接口
  16. sbit lock = P3^3;//鎖信號
  17. sbit set = P3^2;
  18. uchar idata mima_5[6] = {1,2,3,4,5,6}; //初始密碼
  19. uchar flag_change;
  20. uchar aa;//存放密碼錯誤的次數,夠三次報警
  21. uchar bb;
  22. uchar flag_t0;
  23. void baoj1()//報警函數
  24. {
  25.         int i;
  26.         for(i = 0;i < 5; i++)
  27.         {
  28.                 baojing = 1;
  29.                 delay_ms(5);
  30.                 baojing = 0;
  31.                 delay_ms(5);        
  32.         }

  33. }
  34. void baoj()
  35. {
  36.         uchar i;
  37.         for(i = 0; i < 10; i++)
  38.                 baoj1();
  39. }
  40. /*密碼處理函數*/
  41. void mimachuli()
  42. {
  43.         uchar key,i;
  44.         uchar idata mima_1[6]={' ',' ',' ',' ',' ',' '};//存放密碼緩沖區
  45.         uchar idata mima_2[6]={' ',' ',' ',' ',' ',' '};
  46.         uchar idata mima_3[6]={' ',' ',' ',' ',' ',' '};

  47.         key = step_choose();
  48.         if(key == A)//A被按下,接收輸入密碼,處理
  49.         {
  50.                 read_n_add(mima_1,0x00,6);
  51.                 write_com(0x06);//寫一個字符后地址指針加 1
  52.                 write_com(0x01);//顯示清零,數據指針清零
  53.                 write_com(0x0f);//顯示光標
  54.                 lcd_pos(0,0);
  55.                 write_n_char(" press password ");               
  56.         
  57.                 if(input_mima(mima_2)) //處理輸入密碼
  58.                 {
  59.                         if(mimaduibi(mima_2,mima_1)) //密碼正確
  60.                         {
  61.                                 lcd_pos(0,0);
  62.                                 write_com(0x0c);
  63.                         write_com(0x06);//寫一個字符后地址指針加 1
  64.                          write_com(0x01);//顯示清零,數據指針清零
  65.                                 write_n_char(" password right ");
  66.                                 aa = 0; //清除密碼錯誤次數
  67.                                 lock = 0; //開鎖
  68.                                 baojing = 1; //響一下
  69.                                 delay_ms(1000);
  70.                                 baojing = 0;
  71.                                 TR0 = 1;
  72.                                 flag_t0 = 1;
  73.                                 while(key != D && flag_t0) //D沒按下一直開
  74.                                 {                        
  75.                                         key = keyscan();
  76.                                 }
  77.                                 TR0 = 0;
  78.                                 lock = 1;//D按下了關鎖
  79.                         }
  80.                         else //密碼 不正確
  81.                         {
  82.                                 lcd_pos(0,0);
  83.                                 write_com(0x0c); //關光標
  84.                                 write_com(0x06);//寫一個字符后地址指針加 1
  85.                                 write_com(0x01);//顯示清零,數據指針清零
  86.                                 write_n_char(" password wrong");
  87.                                 delay_ms(1000);
  88.                                 aa++;
  89.                                 if(aa == 4)
  90.                                 {
  91.                                         aa = 0;
  92.                                     i = 20; //密碼不正確報警
  93.                                         while(i--)
  94.                                          baoj();
  95.                                 }

  96.                         }
  97.                 }
  98.                 else //密碼沒有輸入正確或完成
  99.                 {
  100.                         lcd_pos(0,0);
  101.                         write_com(0x0c); //關光標
  102.                    write_com(0x06);//寫一個字符后地址指針加 1
  103.                    write_com(0x01);//顯示清零,數據指針清零
  104.                         write_n_char(" password wrong");
  105.                         delay_ms(1000);
  106.                         aa++;
  107.                         if(aa == 4)
  108.                         {
  109.                                 aa = 0;
  110.                             i = 20; //密碼不正確報警
  111.                                 while(i--)
  112.                                  baoj();
  113.                         }

  114.                 }
  115.         }

  116.         if(key == B)//B被按下,修改密碼
  117.         {
  118.                 read_n_add(mima_1,0x00,6);
  119.                 write_com(0x06);//寫一個字符后地址指針加 1
  120.                 write_com(0x01);//顯示清零,數據指針清零
  121.                 write_com(0x0f);//顯示光標
  122.                 lcd_pos(0,0);
  123.                 write_n_char(" input password");               
  124.                 write_com(0x0f);//顯示光標        
  125.                 if(input_mima(mima_2)) //處理輸入密碼
  126.                 {
  127.                         if(mimaduibi(mima_2,mima_1)) //密碼正確
  128.                         {
  129.                                 lcd_pos(0,0);
  130.                                 write_com(0x0c);
  131.                       write_com(0x06);//寫一個字符后地址指針加 1
  132.                       write_com(0x01);//顯示清零,數據指針清零
  133.                                 write_n_char("password right ");
  134.                                 aa = 0; //清除密碼錯誤次數
  135.                                 delay_ms(1500);
  136.                                 flag_change = 1;
  137.                                 while(flag_change) //下面開始修改密碼
  138.                                 {
  139.                                         write_com(0x06);//寫一個字符后地址指針加 1
  140.                                         write_com(0x01);//顯示清零,數據指針清零
  141.                                         write_com(0x0f);//顯示光標
  142.                                         lcd_pos(0,0);
  143.                                         write_n_char("In new password");
  144.                                         delay_ms(1500);
  145.                                         if(input_mima(mima_2)) //處理輸入密碼
  146.                                         {

  147.                                                 lcd_pos(0,0);
  148.                                                 write_com(0x0c);
  149.                                  write_com(0x06);//寫一個字符后地址指針加 1
  150.                                  write_com(0x01);//顯示清零,數據指針清零
  151.                                                 write_n_char("Input new pass"); //確定新密碼
  152.                                                 lcd_pos(1,0);
  153.                                                 write_n_char("word again");
  154.                                                 delay_ms(2000);
  155.                                                 lcd_pos(0,0);
  156.                                                 write_com(0x0f);//顯示光標
  157.                                  write_com(0x06);//寫一個字符后地址指針加 1
  158.                                  write_com(0x01);//顯示清零,數據指針清零
  159.                                                 write_n_char("In new password");                                                
  160.                                                         if(input_mima(mima_3)) //處理輸入密碼
  161.                                                         {
  162.                                                                 if(mimaduibi(mima_2,mima_3)) //密碼正確
  163.                                                                 {
  164.                                                                         lcd_pos(0,0);
  165.                                                                         write_com(0x0c);
  166.                                                               write_com(0x06);//寫一個字符后地址指針加 1
  167.                                                               write_com(0x01);//顯示清零,數據指針清零
  168.                                                                         write_n_char("password has");
  169.                                                                         lcd_pos(1,0);
  170.                                                                         write_n_char("change already");
  171.                                                                         write_n_add(mima_3,0x00,6); //把修改的密碼存進24C02
  172.                                                                         delay_ms(2000);
  173.                                                                         flag_change = 0;
  174.                                                                 }
  175.                                                                 else //密碼 不正確
  176.                                                                 {
  177.                                                                         lcd_pos(0,0);
  178.                                                                         write_com(0x0c); //關光標
  179.                                                                         write_com(0x06);//寫一個字符后地址指針加 1
  180.                                                                         write_com(0x01);//顯示清零,數據指針清零
  181.                                                                         write_n_char("password wrong");
  182.                                                                         delay_ms(1000);
  183.                                                                         aa++;
  184.                                                                         if(aa == 4)
  185.                                                                         {
  186.                                                                                 aa = 0;
  187.                                                                             i = 20; //3次輸入密碼不正確報警
  188.                                                                                 while(i--)
  189.                                                                                  baoj();
  190.                                                                         }
  191.                                                                         flag_change = 0;
  192.                                                                 }
  193.                                                         }
  194.                                                         else //密碼沒有輸入正確或完成
  195.                                                         {
  196.                                                                 lcd_pos(0,0);
  197.                                                                 write_com(0x0c); //關光標
  198.                                                            write_com(0x06);//寫一個字符后地址指針加 1
  199.                                                            write_com(0x01);//顯示清零,數據指針清零
  200.                                                                 write_n_char(" password wrong");
  201.                                                                 delay_ms(1000);
  202.                                                                 aa++;
  203.                                                                 if(aa == 4)
  204.                                                                 {
  205.                                                                         aa = 0;
  206.                                                                     i = 20; //3次輸入密碼不正確報警
  207.                                                                         while(i--)
  208.                                                                          baoj();
  209.                                                                 }
  210.                                                         }
  211.                                                 
  212.                                         }
  213.                                         else //密碼沒有輸入正確或完成
  214.                                         {
  215.                                                 lcd_pos(0,0);
  216.                                                 write_com(0x0c); //關光標
  217.                                            write_com(0x06);//寫一個字符后地址指針加 1
  218.                                            write_com(0x01);//顯示清零,數據指針清零
  219.                                                 write_n_char("password wrong");
  220.                                                 delay_ms(1000);
  221.                                                 flag_change = 0;
  222.                                                 aa++;
  223.                                                 if(aa == 4)
  224.                                                 {
  225.                                                         aa = 0;
  226.                                                     i = 20; //3次輸入密碼不正確報警
  227.                                                         while(i--)
  228.                                                          baoj();
  229.                                                 }
  230.                                         }
  231.                                                                         
  232.                                 }
  233.                         }
  234.                         else //密碼 不正確
  235.                         {
  236.                                 lcd_pos(0,0);
  237.                                 write_com(0x0c); //關光標
  238.                                 write_com(0x06);//寫一個字符后地址指針加 1
  239.                                 write_com(0x01);//顯示清零,數據指針清零
  240.                                 write_n_char("password wrong");
  241.                                 delay_ms(1000);
  242.                                 aa++;
  243.                                 if(aa == 4)
  244.                                 {
  245.                                         aa = 0;
  246.                                     i = 20; //3次輸入密碼不正確報警
  247.                                         while(i--)
  248.                                          baoj();
  249.                                 }
  250.                         }
  251.                 }
  252.                 else //密碼沒有輸入正確或完成
  253.                 {
  254.                         lcd_pos(0,0);
  255.                         write_com(0x0c); //關光標
  256.                    write_com(0x06);//寫一個字符后地址指針加 1
  257.                    write_com(0x01);//顯示清零,數據指針清零
  258.                         write_n_char("password wrong");
  259.                         delay_ms(1000);
  260.                         aa++;
  261.                         if(aa == 4)
  262.                         {
  263.                                 aa = 0;
  264.                             i = 20; //3次輸入密碼不正確報警
  265.                                 while(i--)
  266.                                  baoj();
  267.                         }
  268.                 }               
  269.         }

  270. }
  271. /*外部中斷函數,恢復出廠設置,長按set鍵恢復*/

  272. void int0() interrupt 0
  273. {
  274.         delay_ms(2000);
  275.         if(!set)
  276.         {
  277.                 lcd_pos(0,0);
  278.                 write_com(0x0c); //關光標
  279.            write_com(0x06);//寫一個字符后地址指針加 1
  280.                 write_com(0x01);//顯示清零,數據指針清零
  281.                 i2cinit();//24C02總線初始化
  282.                 write_n_add(mima_5,0x00,6);
  283.                 write_n_char("password renew");
  284.                 lcd_pos(1,0);
  285.                 write_n_char("already");
  286.                 delay_ms(1000);
  287.                 lcd_pos(0,0);
  288.                 write_com(0x0c); //關光標
  289.            write_com(0x06);//寫一個字符后地址指針加 1
  290.                 write_com(0x01);//顯示清零,數據指針清零
  291.                 write_n_char("Input password");
  292.                 lcd_pos(1,0);
  293.                 write_n_char("Press key A");

  294.         }// 引起了三個警告
  295. }

  296. void timer0() interrupt 1 //定時器0中斷,50ms定時
  297. {
  298.         TH0 = 0x4c;//50ms定時
  299.         TL0 = 0x00;
  300.         bb++;
  301.         if(bb == 200)//10秒時間到
  302.         {
  303.                 bb = 0;
  304.                 flag_t0 = 0;
  305.         }

  306. }
  307. void main()
  308. {
  309.         yjinit();//液晶初始化
  310.         i2cinit();//24C02總線初始化
  311.         baojing = 0;
  312.         lock = 1; //關鎖
  313.         TMOD = 0x01;//選擇定時器0方式1
  314.         EA = 1;//打開總中斷
  315.         ET0 = 1;//打開定時器0中斷
  316.         EX0 = 1; //打開外部中斷0
  317.         IT0 = 1;//下降沿觸發
  318.         TR0 = 0;//關閉定時器
  319.         TH0 = 0x4c;//50ms裝初值
  320.         TL0 = 0x00;
  321.         while(1)
  322.         {
  323.           mimachuli();

  324.         }
  325. }



復制代碼


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:85453 發表于 2015-7-12 14:42 | 只看該作者
51黑有你更精彩!
回復

使用道具 舉報

板凳
ID:97070 發表于 2015-11-25 18:35 | 只看該作者
看看,希望能幫到我
回復

使用道具 舉報

地板
ID:99459 發表于 2015-12-12 18:55 | 只看該作者
能運行的嗎?是不是用proteus的?
回復

使用道具 舉報

5#
ID:99488 發表于 2015-12-12 22:49 | 只看該作者
看看咋樣
回復

使用道具 舉報

6#
ID:99488 發表于 2015-12-12 22:49 | 只看該作者
下載看看
回復

使用道具 舉報

7#
ID:99488 發表于 2015-12-12 22:50 | 只看該作者
論壇好棒
回復

使用道具 舉報

8#
ID:100983 發表于 2015-12-29 09:18 | 只看該作者
太給力了,贊
回復

使用道具 舉報

9#
ID:105813 發表于 2016-2-19 10:50 | 只看該作者
感謝分享,力挺
回復

使用道具 舉報

10#
ID:58924 發表于 2016-3-31 13:25 | 只看該作者
密碼輸入123456
不對,
回復

使用道具 舉報

11#
ID:110780 發表于 2016-4-20 23:17 | 只看該作者
看著不錯哦
回復

使用道具 舉報

12#
ID:97697 發表于 2016-5-31 19:20 | 只看該作者
請問樓主,最多輸入幾位密碼,輸入密碼的位數與24C04有關嗎?
回復

使用道具 舉報

13#
ID:110780 發表于 2016-9-7 10:20 | 只看該作者
pcb有嗎?
回復

使用道具 舉報

14#
ID:152262 發表于 2016-12-7 14:48 | 只看該作者
謝謝樓主
回復

使用道具 舉報

15#
ID:157011 發表于 2016-12-22 22:59 | 只看該作者
編譯了一下好像又錯誤欸
回復

使用道具 舉報

16#
ID:169556 發表于 2017-4-27 19:38 | 只看該作者
好好學習一下,樓主給力!
回復

使用道具 舉報

17#
ID:140358 發表于 2017-4-27 21:34 來自手機 | 只看該作者
不錯不錯哦
回復

使用道具 舉報

18#
ID:210237 發表于 2017-6-16 17:09 | 只看該作者
感謝樓主,完美!!!!
回復

使用道具 舉報

19#
ID:223127 發表于 2017-10-29 15:36 | 只看該作者
51黑有你更精彩!!!!
回復

使用道具 舉報

20#
ID:264841 發表于 2017-12-23 09:55 | 只看該作者
您好,請問,下載的代碼不是一整段,而是分成好幾個部分,如果我要對整個程序rebuild,刷新HEX文件,該怎么做
回復

使用道具 舉報

21#
ID:266394 發表于 2017-12-25 11:00 | 只看該作者
感謝樓主,完美!!!!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 视频精品一区 | 亚洲在线一区 | 国产yw851.c免费观看网站 | 国产一区视频在线 | 国产精品九九 | 7799精品视频天天看 | 色橹橹欧美在线观看视频高清 | 国产在线观看一区二区 | 一区二区在线不卡 | 成人午夜影院 | 日韩a在线 | 中文字幕视频在线免费 | 欧美精品1区2区 | 国产亚洲一区二区在线观看 | 国产精品无码久久久久 | 两性午夜视频 | 久热精品在线 | 日本精a在线观看 | 日日夜夜草 | 草久网 | 人妖一区 | 2020亚洲天堂 | 黄网站在线播放 | 在线视频国产一区 | 精品美女视频在线观看免费软件 | 手机日韩 | www.精品国产| 亚洲成人久久久 | 日日日视频 | 精品一区二区免费视频 | 涩涩视频在线观看免费 | 在线小视频 | 久久高清免费视频 | 国产草草视频 | 久久久久国产 | 久久精品国产99国产精品亚洲 | 麻豆av在线免费观看 | 日韩精品色网 | 午夜无码国产理论在线 | 国产激情视频在线 | 综合久久99|