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

標題: 電子密碼鎖設計24c01+12864,希望能幫到大家 [打印本頁]

作者: a8818075    時間: 2017-6-13 21:52
標題: 電子密碼鎖設計24c01+12864,希望能幫到大家
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):


單片機源程序如下:
  1. #include<reg51.h>
  2. #include<keyinput.h>
  3. #include<12864.h>
  4. #include<24C01.h>

  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. sbit LED1=P1^5;
  8. sbit LED2=P1^6;
  9. sbit INIT=P2^2;
  10. sbit SOUND=P1^7;

  11. uchar idata key[6]={0,0,0,0,0,0};
  12. uchar idata iic[6]={0,1,2,3,4,5};

  13. /************************ 密碼校驗函數 **************************/
  14. void press(uchar *s) {
  15.            uchar dat;
  16.        P3=0xf0;                                                                //第一位密碼
  17.            while(P3==0xf0);
  18.        dat=key_scan();
  19.            if((dat!=0x0a)&&(dat!=0x0b))
  20.          {   *s=dat;
  21.                          Left();
  22.                          star_12864(star,0x05,16);
  23.              }
  24.            s++;                  
  25.            P3=0xf0;                                                          //第二位密碼
  26.            while(P3==0xf0);                                                 
  27.        dat=key_scan();
  28.            if((dat!=0x0a)&&(dat!=0x0b))
  29.          {   *s=dat;
  30.                          Left();
  31.                          star_12864(star,0x05,24);
  32.                   }
  33.            s++;       
  34.            P3=0xf0;                                                          //第三位密碼
  35.            while(P3==0xf0);                                                 
  36.        dat=key_scan();
  37.            if((dat!=0x0a)&&(dat!=0x0b))
  38.          {   *s=dat;
  39.                          Left();
  40.                          star_12864(star,0x05,32);
  41.                   }
  42.            s++;       
  43.            P3=0xf0;                                                          //第四位密碼
  44.            while(P3==0xf0);                                                 
  45.            dat=key_scan();
  46.            if((dat!=0x0a)&&(dat!=0x0b))
  47.          {   *s=dat;
  48.                          Left();
  49.                          star_12864(star,0x05,40);
  50.                   }
  51.            s++;       
  52.            P3=0xf0;                                                          //第五位密碼
  53.            while(P3==0xf0);                                                 
  54.        dat=key_scan();
  55.            if((dat!=0x0a)&&(dat!=0x0b))
  56.          {   *s=dat;
  57.                          Left();
  58.                          star_12864(star,0x05,48);
  59.                   }
  60.            s++;       
  61.            P3=0xf0;                                                          //第六位密碼
  62.            while(P3==0xf0);                                                 
  63.        dat=key_scan();
  64.            if((dat!=0x0a)&&(dat!=0x0b))
  65.          {   *s=dat;
  66.                          Left();
  67.                          star_12864(star,0x05,56);
  68.                   }
  69.            do{P3=0xf0;                                                        //鍵入Enter鍵盤繼續執行下面語句,否則等待
  70.               while(P3==0xf0);                                                 
  71.           dat=key_scan();
  72.               }while(dat!=0x0b);
  73. }

  74. /****************************** 延時10ms函數 *******************************/
  75. void Delay10ms(void) {
  76.         uint i,j,k;
  77.         for(i=5;i>0;i--)
  78.         for(j=4;j>0;j--)
  79.         for(k=248;k>0;k--);

  80. }

  81. /****************************** 主函數 *******************************/
  82. void main() {
  83.       uchar dat;
  84.       uchar i=0,j=0,k;
  85.       uchar x;
  86.           LED1=1;
  87.           LED2=1;
  88.           SOUND=0;
  89.           INIT=1;
  90.       if(INIT==0){                   //密碼初始化,先從IIC器件中讀出密碼以供下面輸入密碼進行比較
  91.              x=SendB(iic,0x50,6);
  92.                  Delay10ms();
  93.       }              
  94.       x=ReadB(iic,0x50,6);
  95.       Init_12864();
  96.           for(i=0;i<50;i++){Delay10ms();}
  97.           do{                                  //若密碼不正確,循環執行do{}while()
  98.              LED1=1;
  99.              System();                  //顯示:請輸入密碼
  100.              press(key);
  101.                  if((key[0]==iic[0])&&(key[1]==iic[1])&&(key[2]==iic[2])&&(key[3]==iic[3])&&(key[4]==iic[4])&&(key[5]==iic[5])) //密碼比較,若密碼正確責進入系統,若密碼不正確則顯示密碼錯誤,重新輸入密碼
  102.          {
  103.                     true();
  104.                     do {
  105.                        P3=0xf0;                                                        //鍵入1或2繼續執行下面語句,否則等待
  106.                    while(P3==0xf0);                                                 
  107.                dat=key_scan();
  108.                 }while(dat!=0x01&&dat!=0x02);         
  109.                     if(dat==1) {                                       //開鎖
  110.                         LED1=0; j=0;
  111.                                 unlock();
  112.                             for(i=0;i<100;i++){Delay10ms();}
  113.                     continue;
  114.                     }
  115.                     if(dat==2) {                                                        //修改密碼
  116.                        do{
  117.                               j=0;
  118.                                           System();
  119.                                   press(key);
  120.                                   again();
  121.                                   press(iic);
  122.                                       if((key[0]==iic[0])&&(key[1]==iic[1])&&(key[2]==iic[2])&&(key[3]==iic[3])&&(key[4]==iic[4])&&(key[5]==iic[5]))
  123.                                       {
  124.                                           succeed();                                //修改密碼成功
  125.                                                   for(i=0;i<100;i++){Delay10ms();}
  126.                                       Delay10ms();
  127.                               x=SendB(iic,0x50,6);
  128.                                       Delay10ms();       
  129.                           x=ReadB(iic,0x50,6);break;
  130.                                       }
  131.                                       else         {                                            //修改密碼不成功,重新修改
  132.                                               repeat();
  133.                                                   for(i=0;i<100;i++){Delay10ms();}
  134.                                           }
  135.                                  }while(1);   
  136.                     }
  137.                  
  138. ……………………

  139. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
電子密碼鎖.zip (121.93 KB, 下載次數: 141)




作者: cjjcjj1    時間: 2017-6-14 09:39
提示: 作者被禁止或刪除 內容自動屏蔽
作者: a8818075    時間: 2017-6-14 14:09
因為發送過于匆忙有些引腳的定義大家自己修改一下,程序是絕對沒問題的
作者: 348652560    時間: 2017-6-14 22:33
謝謝分享,太好了正好需要
作者: lxr0029    時間: 2017-6-15 08:54
感謝樓主分享
作者: sq000    時間: 2020-7-26 21:35
a8818075 發表于 2017-6-14 14:09
因為發送過于匆忙有些引腳的定義大家自己修改一下,程序是絕對沒問題的

朋友,是不是rs...rw...e三個要改,但是改了也不行啊,望指導,萬分感謝
作者: yhj1999    時間: 2020-8-7 17:36
樓主,要設置多個密碼都能夠開鎖,程序要怎么搞呢





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 成人免费网站www网站高清 | 亚洲国产一区二区三区在线观看 | 一本综合久久 | 久热国产在线 | 色综合99 | 久久久高清 | 天天视频一区二区三区 | 精品国模一区二区三区欧美 | 日本精品一区二区 | 久久在线视频 | 亚洲午夜电影 | 天天操妹子 | 日本一区高清 | 天天看天天操 | 亚洲一区二区三区视频 | 国产99久久久国产精品 | 中文在线一区二区 | 精品日韩一区二区 | ww亚洲ww亚在线观看 | 瑟瑟免费视频 | 日本五月婷婷 | 国产美女一区二区 | 中文字幕在线免费 | 激情 一区| 精品一区二区在线观看 | 免费一区 | 一区二区福利视频 | 激情的网站 | 欧美电影免费观看高清 | 91精品国产综合久久婷婷香蕉 | 国产精品午夜电影 | 日韩欧美在线一区二区 | 日韩欧美在线观看 | 日本黄色影片在线观看 | 久久91精品| 在线国产欧美 | 干干干操操操 | 亚洲一区 | 夜夜艹天天干 | 欧美日韩久久精品 | 97精品超碰一区二区三区 |