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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機+mfrc522 RFID+LCD12864射頻門禁系統程序

  [復制鏈接]
跳轉到指定樓層
樓主
射頻識別門禁系統


單片機源程序如下:
  1. #include "reg52.h"
  2. #include "mfrc522.h"        
  3. #include <string.h>
  4. #include <12864.h>
  5. #include <i2c.h>
  6. #include <waishe.h>
  7. #include <key.h>

  8. unsigned char aaddrr,addr;
  9. unsigned char eepromreadnum[4];
  10. char returnkey=1;

  11. void Timer0Init()                //定時器0初始化
  12. {
  13.         EA=0;//打開總中斷
  14.         ET0=1;//打開定時器0中斷允許
  15.         TR0=1;//打開定時器        
  16.         TMOD|=0X01;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。

  17.         TH0=0XFC;        //給定時器賦初值,定時1ms
  18.         TL0=0X18;                        
  19. }


  20.   void main( )
  21. {   
  22.    int failflag,y,successflag;
  23.          int KeyValue=12;
  24.    beep=0;
  25.    RFID_Init();
  26.    LCDInit();
  27.    Timer0Init();
  28.          if(At24c02Read(255)!=0x65)                //eeprom初次上電初始化
  29.          {
  30.                   delay(1000);
  31.                   ShowQQChar(0x82,"初次上電",4);
  32.                   ShowQQChar(0x91,"初始化中...",6);
  33.                   ShowQQChar(0x8a,"請稍等",3);
  34.                   for(y=0;y<255;y++)
  35.                   {
  36.                                  At24c02Write(y,0xff);                //eeprom區全部清零
  37.                                  delay(1000);
  38.                         }
  39.                   At24c02Write(255,0x65);               
  40.                   delay(1000);
  41.                         At24c02Write(248,0x25);
  42.                   delay(1000);
  43.                         At24c02Write(249,0x28);
  44.                   delay(1000);        
  45.                         At24c02Write(250,0xa5);
  46.                   delay(1000);
  47.                         At24c02Write(251,0x51);
  48.                   delay(1000);
  49.          }
  50. while(1)
  51. {

  52.          unsigned char status,i,k;
  53.          k=0;
  54.          LCD_show();
  55.          status = PcdRequest(PICC_REQIDL, g_ucTempbuf);//尋天線區內未進入休眠狀態的卡   
  56.          if (status != MI_OK)
  57.    {   
  58.                         PcdReset();
  59.                   PcdAntennaOff();
  60.                         PcdAntennaOn();
  61.             continue;
  62.    }                     
  63.          status = PcdAnticoll(g_ucTempbuf);      //防沖撞,此時g_ucTempbuf的值為卡號
  64.    if(status != MI_OK)   
  65.          continue;   
  66.           ////////卡號打印////////////////////////
  67.          led1=0;
  68.          WRCommand(0x01); //清除顯示 DDRAM
  69.          ShowQQChar(0x90,"卡號:",3);

  70.   while(aaddrr<252)                         //卡號比對程序段
  71.   {
  72.           k=0;
  73.                 for(i=0;i<4;i++)                       //卡號占用四個地址,比對四次
  74.                 {
  75.                 eepromreadnum[i]=At24c02Read(aaddrr);                     //讀取EEPROM地址1內的數據保存在        g_ucTempbuf[]中
  76.                 aaddrr++;
  77.                 ShowNUMChar(0x93+i,g_ucTempbuf[i]);    //顯示卡號
  78.                 if(eepromreadnum[i]==g_ucTempbuf[i])               //卡號開始進行比對
  79.                 {
  80.                         k=k+i;                               //四次比對成功0+1+2+3
  81.                   delay(1000);
  82.                 }                                
  83.                 else k=0;                        //比對失敗
  84.                 if(k==6)
  85.                   {
  86.                          failflag=0;
  87.                      aaddrr=252;                 
  88.               }
  89.                 }
  90.   }
  91. aaddrr=0;                    //地址回到首位,以便下次比較


  92.   if(k==6)                    //卡號對比成功
  93.         {        
  94.                 relay=0;
  95.                 ShowQQChar(0x8a,"請通過\xfd",3);                  
  96.                 beep_Init(1);
  97.         }
  98.         if(k!=6)                    //卡號對比失敗
  99.         {
  100.                  beep_Init(0);
  101.                  delay(50000);
  102.                  WRCommand(0x01);
  103.                  failflag=1;                  //卡號對比失敗標志位
  104.         }
  105.   if(failflag==1)
  106.   {
  107.                 ShowQQChar(0x91,"是否輸入密碼",6);
  108.                 ShowQQChar(0x8a,"添加卡號",4);
  109.                 delay(500);
  110.    while(returnkey)
  111.          {
  112.             EA=0;
  113.                 KeyValue=KeyDown();
  114.                 if(KeyValue==11)
  115.                 {
  116.                  WRCommand(0x01);               
  117.                  delay(10000);                 
  118.                  successflag=inputmima();                 //密碼輸入函數
  119.                  delay(10000);
  120.                  WRCommand(0x01);
  121.                  delay(1000);
  122.                  if(successflag==1)
  123.                  {
  124.                   for(i=0;i<4;i++)             //顯示卡號   g_ucTempbuf[]  所刷卡的卡號
  125.             {
  126.                                 ShowNUMChar(0x92+i,g_ucTempbuf[i]);
  127.                                 At24c02Write(addr,g_ucTempbuf[i]);         //將卡號存入eeprom中,addr為存入地址
  128.                                 addr++;         
  129.                                 delay(1000);        
  130.             }
  131.                  delay(10000);                 
  132.                  WRCommand(0x01);
  133.                  ShowQQChar(0x92,"存儲成功",4);
  134.                  delay(10000);
  135.                  }                        
  136.                  returnkey=0;                     
  137.                 }
  138.      else if(KeyValue==10)
  139.                  returnkey=0;
  140.          else
  141.          EA=1;                                 
  142.          }

  143.   }
  144. returnkey=1;
  145.         
  146. delay(70000);    //延時等待
  147. WRCommand(0x01); //清除顯示 DDRAM
  148. led1=1;
  149. relay=1;
  150.          
  151. }

  152. }

  153. void Timer0() interrupt 1
  154. {
  155.         static u16 i;
  156.         TH0=0XFC;        //給定時器賦初值,定時1ms
  157.         TL0=0X18;
  158.         i++;
  159.         if(i==5000)
  160.         {
  161.                 i=0;
  162.         returnkey=0;               
  163.         }        
  164. }
復制代碼

以上程序51hei提供下載  (無仿真工程):
門禁系統.rar (115.9 KB, 下載次數: 314)

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

使用道具 舉報

沙發
ID:523305 發表于 2020-5-13 20:56 | 只看該作者
沒仿真
回復

使用道具 舉報

板凳
ID:756620 發表于 2020-5-22 14:48 | 只看該作者
樓主有沒有具體的原理圖和仿真圖啊
回復

使用道具 舉報

地板
ID:730070 發表于 2020-6-13 08:21 | 只看該作者
正在做433MHZ射頻相關的,論壇上逛逛學習
回復

使用道具 舉報

5#
ID:114068 發表于 2020-6-20 18:55 | 只看該作者
拿走了,謝謝!
回復

使用道具 舉報

6#
ID:114068 發表于 2020-6-20 18:56 | 只看該作者
謝謝樓主咯
回復

使用道具 舉報

7#
ID:784145 發表于 2020-6-23 21:34 | 只看該作者
沒得原理圖啊
回復

使用道具 舉報

8#
ID:445876 發表于 2021-4-13 16:50 | 只看該作者
老哥你的定時器EA=0咋工作的啊,是不是不用定時器啊
回復

使用道具 舉報

9#
ID:985761 發表于 2021-11-29 00:07 | 只看該作者
樓主,怎么編寫管理員密碼還有增加刪減普通密碼
回復

使用道具 舉報

10#
ID:941265 發表于 2021-11-29 08:21 | 只看該作者
51黑,有你更精彩
回復

使用道具 舉報

11#
ID:985761 發表于 2021-12-2 12:44 | 只看該作者
有沒有器件清單
回復

使用道具 舉報

12#
ID:864837 發表于 2023-6-6 09:30 | 只看該作者
謝謝 大佬,正在做433MHZ射頻相關的,論壇上逛逛學習
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 最新高清无码专区 | 狠狠av| 欧美在线成人影院 | 欧美国产中文 | 久久尤物免费一区二区三区 | 蜜桃黄网 | 欧美日韩精品影院 | 爱爱视频在线观看 | 影音先锋成人资源 | 日韩av在线播 | 午夜视频免费在线观看 | 日韩精品一区二区三区中文在线 | 狠狠操婷婷 | 黄色在线免费播放 | 日韩免费视频一区二区 | 久久精品亚洲精品国产欧美 | 国产精品久久久久久久久久久久冷 | 日韩久久久久 | 中文字幕免费中文 | 免费久久精品 | 天天曰天天干 | 国产亚洲精品久久久久久豆腐 | 免费在线a视频 | 九九综合 | 视频一区二区在线 | 久久综合成人精品亚洲另类欧美 | 日韩av中文 | 国产乱xxav| a欧美 | 久久成人综合 | 91精品国产综合久久久久久丝袜 | 亚洲精品丝袜日韩 | 欧美日产国产成人免费图片 | www.99精品 | 在线免费观看亚洲 | www国产精品 | 国产在线中文字幕 | 日本一卡精品视频免费 | 天堂一区二区三区 | av在线免费看网址 | 精品欧美乱码久久久久久1区2区 |