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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9468|回復: 3
收起左側

基于單片機的RC522智能門鎖pcb文件+源碼+原理圖

[復制鏈接]
ID:268105 發表于 2018-1-5 15:25 | 顯示全部樓層 |閱讀模式
基于單片機的智能門鎖
0.jpg

Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.jpg 0.jpg

單片機源程序如下:
  1. #include "lpcreg.h"
  2. #include "main.h"
  3. #include "mfrc522.h"
  4. #include   <STDIO.H>
  5. #define uint unsigned int
  6. #define uchar unsigned char
  7. unsigned char g_ucTempbuf[4];   
  8. unsigned long int numble =0;
  9. unsigned char mima=0;   

  10. #define GPIO_KEY P2
  11. unsigned int KeyValue = 0;
  12. void Delay10ms(void);   //誤差 0us
  13. void KeyDown(void);     
  14. void mimachuli();

  15. /********新寫入*****************/
  16. sfr AUXR  = 0x8e;               //輔助寄存器
  17. sfr P_SW1   = 0xA2;             //外設功能切換寄存器1
  18. sbit beer =P1^2;
  19. sbit key_jdq = P0^5;
  20. sbit open_key = P1^4;        //按鍵開關
  21. unsigned char car_ID[4];
  22. void beersystem();
  23. void ID();
  24. void openroom();
  25. void beersystem2();
  26. unsigned char renti_flag = 1;
  27. void colseromm_beep();
  28. void Delay10ms(void) ;  //誤差 0us
  29. void key_jiance();
  30. unsigned int j=0;
  31. void UartInit(void)        ;        //115200bps@11.0592MHz
  32. void SendData(unsigned char ch);
  33. void SendString(char *h);



  34. void main( )
  35. {   
  36.         unsigned char status,num;
  37.         UartInit();                //115200bps@11.0592MHz
  38.         beer = 1;
  39.         key_jdq =0;
  40.         beer = 1;
  41.         key_jdq =0;
  42.     PcdReset();
  43.     PcdAntennaOff();
  44.     PcdAntennaOn();  
  45.     open_key = 1 ;//不開門
  46.         open_key = 1 ;//不開門
  47.         while ( 1 )                //等待刷卡
  48.     {             
  49.         key_jiance();  //按鍵檢測  
  50.         status = PcdRequest(PICC_REQALL, g_ucTempbuf);
  51.         status = PcdAnticoll(g_ucTempbuf);
  52.         if (status != MI_OK)
  53.         {   
  54.                                 key_jiance();  //按鍵檢測
  55.                  KeyValue =20;
  56.                      KeyDown();
  57.                         switch(KeyValue)          //密碼10086
  58.                         {
  59.                                 case(3):mima =1;mimachuli();        beer =0; Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms();beer =1;KeyValue=20;        break;
  60.                                 case(2):mima =2;mimachuli();        beer =0; Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms();beer =1;KeyValue=20;        break;
  61.                                 case(1):mima =3;mimachuli();        beer =0; Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms();beer =1;KeyValue=20;        break;
  62.                                 case(0):
  63.                                                         if(numble == 12313)                //15973
  64.                                                         {
  65.                                                            //開門
  66.                                                                    numble= 0;
  67.                                                                    openroom();       
  68.                                                                 numble= 0;
  69.                                                         }
  70.                                                         else
  71.                                                         {
  72.                                                                 numble= 0;       
  73.                                                                 beer =0; Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms();beer =1;
  74.                                                                 Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms();
  75.                                                                 beer =0; Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms();beer =1;
  76.                                                         }

  77.                                  KeyValue=20;        break;
  78.                                  default: break;
  79.                         }

  80.                 continue;
  81.         }
  82. /********************刷卡后跳到這里來*************************/                
  83.         for(num=0;num<4;num++)
  84.         {
  85.                 car_ID[num]=g_ucTempbuf[num];          //循環四次把g_ucTempbuf[num]給
  86.            }       
  87.         SendData(car_ID[0]);
  88.         SendData(car_ID[1]);
  89.         SendData(car_ID[2]);
  90.         SendData(car_ID[3]);
  91. /**********允許刷的卡******************************************/
  92.           if                       
  93.                    (car_ID[0]==0x73&&car_ID[1]==0x34&&car_ID[2]==0x34&&car_ID[3]==0xd9         ||                          //1
  94.                 car_ID[0]==0xa6&&car_ID[1]==0x54&&car_ID[2]==0x34&&car_ID[3]==0xd9         ||                          //A6 54 34 D9
  95.                 car_ID[0]==0x30&&car_ID[1]==0x7b&&car_ID[2]==0xdf&&car_ID[3]==0xa9         ||                          //30 7B DF A9
  96.                 car_ID[0]==0xec&&car_ID[1]==0x60&&car_ID[2]==0xdf&&car_ID[3]==0xa9         ||                          //EC 60 DF A9
  97.                 car_ID[0]==0xdd&&car_ID[1]==0xc6&&car_ID[2]==0xde&&car_ID[3]==0xa9         ||                          //DD C6 DE A9
  98.                 car_ID[0]==0x06&&car_ID[1]==0xb2&&car_ID[2]==0xdf&&car_ID[3]==0xa9         ||                          //06 B2 DF A9
  99.                 car_ID[0]==0x63&&car_ID[1]==0x10&&car_ID[2]==0xdf&&car_ID[3]==0xa9         ||                          //63 10 DF A9
  100.                 car_ID[0]==0x68&&car_ID[1]==0x4e&&car_ID[2]==0x34&&car_ID[3]==0xd9         ||                          //68 4E 34 D9
  101.                 car_ID[0]==0x03&&car_ID[1]==0xdd&&car_ID[2]==0xde&&car_ID[3]==0xa9         ||                     //03 DD DE A9
  102.                 car_ID[0]==0xad&&car_ID[1]==0xdb&&car_ID[2]==0xde&&car_ID[3]==0xa9         ||                   //AD DB DE A9
  103.                 car_ID[0]==0x86&&car_ID[1]==0x85&&car_ID[2]==0xdf&&car_ID[3]==0xa9         ||                          //86 85 DF A9
  104.                 car_ID[0]==0x24&&car_ID[1]==0xfc&&car_ID[2]==0x35&&car_ID[3]==0xd9                           //24 FC 35 D9

  105.                   )
  106.                                                                                                                                        
  107.                 {      
  108.                            openroom();       

  109.                 }
  110.         else
  111.         {       
  112.         car_ID[0]=0;

  113.         }

  114.     }
  115.        
  116. }
  117. void beersystem()
  118. {
  119.           unsigned char ii =0;
  120.            beer=0;
  121.        for(ii=0;ii<60;ii++)          
  122.                    {
  123.                             Delay10ms();   
  124.                    }
  125.          beer=1;
  126.        for(ii=0;ii<10;ii++)                   //5S后
  127.                    {
  128.                             Delay10ms();                  
  129.                    }
  130.         beer=0;
  131.       for(ii=0;ii<20;ii++)                   //5S后
  132.                    {
  133.                             Delay10ms();                  
  134.                    }
  135.         beer=1;
  136. }
  137. void beersystem2()
  138. {
  139.           unsigned char ii =0;
  140.            beer=0;
  141.        for(ii=0;ii<20;ii++)          
  142.                    {
  143.                             Delay10ms();   
  144.                    }
  145.          beer=1;
  146.        for(ii=0;ii<20;ii++)                   //5S后
  147.                    {
  148.                             Delay10ms();                  
  149.                    }
  150.         beer=0;
  151.       for(ii=0;ii<20;ii++)                   //5S后
  152.                    {
  153.                             Delay10ms();                  
  154.                    }
  155.         beer=1;
  156. }

  157. void Delay10ms(void)   //誤差 0us
  158. {
  159.         unsigned char i, j;
  160.         i = 108;
  161.         j = 145;
  162.         do
  163.         {
  164.                 while (--j);
  165.         } while (--i);

  166. }
  167. void openroom()
  168. {               
  169.                    key_jdq=1;              //繼電器打開        ,開門
  170.                    beersystem();          //蜂鳴器響                        
  171.                    for(j=0;j<300;j++)          //5S后
  172.                    {
  173.                             Delay10ms();                  
  174.                    }
  175.                    key_jdq=0;              //繼電器關閉,關門
  176. }


  177. void key_jiance()
  178. {
  179.         if(open_key == 0)
  180.         {

  181.                             Delay10ms();  Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms();
  182.                             Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms(); Delay10ms();
  183.                   
  184.                          if(open_key == 0)
  185.                         {
  186.                                   openroom();
  187.                                
  188.                            }
  189.        
  190.         }
  191. }

  192. void UartInit(void)                //115200bps@11.0592MHz
  193. {
  194.         SCON = 0x50;                //8位數據,可變波特率
  195.         AUXR |= 0x40;                //定時器1時鐘為Fosc,即1T
  196.         AUXR &= 0xFE;                //串口1選擇定時器1為波特率發生器
  197.         TMOD &= 0x0F;                //設定定時器1為16位自動重裝方式
  198.         TL1 = 0xE0;                //設定定時初值
  199.         TH1 = 0xFE;                //設定定時初值
  200.         ET1 = 0;                //禁止定時器1中斷
  201.         TR1 = 1;                //啟動定時器1
  202. }

  203. /*----------------------------
  204. 發送串口數據1
  205. ----------------------------*/
  206. void SendData(unsigned char ch)
  207. {
  208.     SBUF = ch;                 //寫數據到UART數據寄存器
  209.                 while(TI == 0);
  210.                 TI = 0;
  211. }
  212. /*----------------------------
  213. 發送字符串
  214. ----------------------------*/
  215. void SendString(char *h)
  216. {
  217.     while (*h)                  //檢測字符串結束標志
  218.     {
  219.         SendData(*h++);         //發送當前字符
  220.     }
  221. }

  222. /*******************************************************************************
  223. * 函 數 名         : KeyDown
  224. * 函數功能                   : 檢測有按鍵按下并讀取鍵值
  225. * 輸    入         : 無
  226. * 輸    出         : 無
  227. *******************************************************************************/
  228. void KeyDown(void)
  229. {
  230.         char a=0;
  231.         GPIO_KEY=0x0f;
  232.         if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
  233.         {
  234.                 Delay10ms();//延時10ms進行消抖
  235.                 if(GPIO_KEY!=0x0f)//再次檢測鍵盤是否按下
  236.                 {
  237.                         //測試列
  238. ……………………

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

所有資料51hei提供下載:
事務部門禁PCB.rar (1.89 MB, 下載次數: 111)
RFID-ROOM.pdf (354.42 KB, 下載次數: 79)
1.門鎖.zip (9.36 MB, 下載次數: 127)




評分

參與人數 1黑幣 +30 收起 理由
INVIO + 30 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:327955 發表于 2018-11-27 15:08 | 顯示全部樓層
大神,你這個MFRC522有休眠嗎
回復

使用道具 舉報

ID:354798 發表于 2019-6-3 19:32 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:616942 發表于 2019-11-24 17:31 | 顯示全部樓層
樓主能發到我郵箱嗎?能讓我學習學習嗎
1712450498@qq.com
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区二区三区蜜桃久 | 亚洲视频一区二区 | 欧美日韩高清 | 日韩精品中文字幕在线 | 国产免费视频在线 | 日韩视频在线一区 | 国产亚洲高清视频 | 国产精品一区二区三区在线 | 久久中文字幕在线 | 91久久综合亚洲鲁鲁五月天 | 国产视频不卡一区 | 成人一区在线观看 | 奇米四色影视 | 国产精品高清一区二区三区 | 久久久久九九九女人毛片 | 国产精品完整版 | 亚洲天堂色 | 在线一级片 | 亚洲黄色一级毛片 | 国产精品1区2区3区 中文字幕一区二区三区四区 | 色一情一乱一伦一区二区三区 | 成人午夜网站 | 先锋影音资源网站 | 免费一区 | av中文字幕在线播放 | 欧美一区二区三区视频 | 免费久久精品 | 成人免费福利视频 | 国产精品视频500部 a久久 | 在线日韩精品视频 | 成人在线观看免费视频 | 久久草视频 | 欧美亚洲高清 | 国产乱码久久久久久一区二区 | 国产精品日韩欧美一区二区 | 欧洲一区二区三区 | 国产精品一二三区 | 日韩精品视频在线免费观看 | 国产精品美女久久久久aⅴ国产馆 | 国产免费又色又爽又黄在线观看 | 午夜欧美一区二区三区在线播放 |