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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10899|回復(fù): 17
打印 上一主題 下一主題
收起左側(cè)

門禁系統(tǒng)電路圖及51單片機(jī)源碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
簡單門禁系統(tǒng)電路圖及C++源碼


門禁系統(tǒng)的電路原理圖:



門禁系統(tǒng)的單片機(jī)程序源碼(部分預(yù)覽):

  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #include "system.h"
  4. #include "interface.h"
  5. #include "IDCard.h"
  6. #include "display.h"
  7. #include "eeprom.h"
  8. #include "DS18B20.h"


  9. #define uchar unsigned char
  10. #define uint  unsigned int
  11. #define ulong unsigned long


  12. #define On  0
  13. #define Off 1

  14. #define Open  1
  15. #define Close 0

  16. #define Short 1
  17. #define Long  0


  18. #define KeyPort P2                //鍵盤接口
  19. sbit BEEP = P3^2;
  20. sbit Lock = P3^7;                //鎖控制端

  21. #define CardNumAddr    0x123          //存放卡個數(shù)的地址
  22. #define CaedAddr       0x700          //存放卡號的地址
  23. #define CipherNumAddr  0x1234          //存放密碼個數(shù)的地址
  24. #define CipherAddr     0x2000          //存放密碼的地址
  25. #define RootCipherAddr 0x4567     //存放系統(tǒng)管理密碼的地址
  26. #define SelfCheckAddr  0x3868     //自檢地址

  27. uchar CardNum;
  28. uchar CipherNum;

  29. uchar Mode;
  30. #define ModeAddr 0x5678

  31. bit bdata BITinputing = 0;
  32. ulong xdata Cipher = 0;
  33. uchar xdata CipherBitNum = 0;
  34. uchar xdata InputCipherNum = 0;
  35. bit bdata BITinputnum0ut = 0;
  36. bit bdata BITcipherOK = 0;

  37. extern bit GetOneCard;
  38. extern uchar Card[];

  39. uint xdata Temperature = 0;      //溫度值
  40. bit bdata BITtemp = 0;
  41. uint TempTimeCon = 48;

  42. uchar SecondCon = 0x25;    //0.5S
  43. bit bdata BITdispsec = 0;

  44. uint xdata KeyTimeCon = 0;
  45. bit bdata BITkeyout = 0;

  46. bit bdata BITbeep = 0;
  47. bit bdata BITbeepwait = 0;
  48. uchar xdata BeepTimeCon;
  49. uchar xdata BeepCopyTime;
  50. uchar xdata BeepNum;



  51. extern uchar code mimacuowu[];


  52. /*******************************************************
  53. * 函數(shù)名稱:Init_Timer()
  54. * 函數(shù)功能:        
  55. * 入口參數(shù):無
  56. * 出口參數(shù):無
  57. * 函數(shù)說明:
  58. ********************************************************/
  59. void Init_Timer(void)
  60. {
  61.         TMOD = TMOD|0x01;         //定時器0: 20ms定時
  62.         TL0 = 0x00;   
  63.         TH0 = 0x70;
  64.         ET0 = 1;                     //開定時器0中斷
  65.         TR0 = 1;                     //開是始定時器0計時

  66.         TMOD = TMOD|0x10;         //定時器1: 20ms定時
  67.         TL1 = 0x00;   
  68.         TH1 = 0x70;
  69.         ET1 = 0;                     //禁止定時器1中斷
  70.         TR1 = 0;
  71. }

  72. /*******************************************************
  73. * 函數(shù)名稱:Time0_INT()
  74. * 函數(shù)功能:        
  75. * 入口參數(shù):無
  76. * 出口參數(shù):無
  77. * 函數(shù)說明:
  78. ********************************************************/
  79. void Time0_INT(void) interrupt 1
  80. {
  81.         ET0 = 0;
  82.         TR0 = 0;
  83.         TL0 = 0x00;
  84.         TH0 = 0x70;
  85.        
  86.         if(KeyTimeCon)
  87.         {
  88.                 KeyTimeCon -= 1;
  89.                 if(KeyTimeCon == 0)
  90.                         BITkeyout = 1;
  91.         }

  92.         if(TempTimeCon)
  93.         {
  94.                  TempTimeCon -= 1;
  95.                 if(TempTimeCon == 0)
  96.                         BITtemp = 1;
  97.         }

  98.         if(SecondCon)
  99.         {
  100.                 SecondCon -= 1;
  101.                 if(SecondCon == 0)
  102.                 {
  103.                          SecondCon = 0x25;
  104.                         BITdispsec = 1;
  105.                 }
  106.         }
  107.        
  108.         if(BITbeep)
  109.         {
  110.                 if(BeepTimeCon == BeepCopyTime)
  111.                 {
  112.                         BEEP = ~BEEP;
  113.                 }

  114.                 BeepTimeCon -= 1;
  115.                 if(BeepTimeCon == 0)
  116.                 {
  117.                         BeepNum -= 1;
  118.                         BeepTimeCon = BeepCopyTime;
  119.                 }
  120.                        
  121.                 if(BeepNum == 0)
  122.                 {
  123.                         BITbeep = 0;
  124.                         BITbeepwait = 0;
  125.                         BEEP = Off;
  126.                 }
  127.         }
  128.                                                           
  129.         TR0=1;
  130.         ET0=1;
  131. }


  132. /*******************************************************
  133. * 函數(shù)名稱:Time1_INT()
  134. * 函數(shù)功能:        
  135. * 入口參數(shù):無
  136. * 出口參數(shù):無
  137. * 函數(shù)說明:
  138. ********************************************************/
  139. void Time1_INT(void) interrupt 3
  140. {
  141.         ET1=0;
  142.         TR1=0;
  143.         TL1=0x00;
  144.         TH1=0x70;
  145.        

  146.         TR1=1;
  147.         ET1=1;       
  148. }


  149. /*******************************************************
  150. * 函數(shù)名稱:
  151. * 函數(shù)功能:        
  152. * 入口參數(shù):無
  153. * 出口參數(shù):無
  154. * 函數(shù)說明:
  155. ********************************************************/
  156. void SystemInit(void)
  157. {
  158.         uint dat;

  159. //        Lock = Open;

  160.         LCDInit();
  161.         Init_Timer();
  162.         DS18B20Init(0x7f,0x64,0x8a);
  163.         DS18B20StartConvert();

  164.         dat = ReadEEPROM(SelfCheckAddr+1);                          //讀系統(tǒng)自檢標(biāo)飾位
  165.         dat = (dat<<8) | ReadEEPROM(SelfCheckAddr);

  166.         if(dat == 0xAA55)                //系統(tǒng)已經(jīng)初始化過
  167.         {
  168.                 CardNum = ReadEEPROM(CardNumAddr);
  169.             CipherNum = ReadEEPROM(CipherNumAddr);
  170.                 Mode = ReadEEPROM(ModeAddr);
  171.         }
  172.         else                                        //系統(tǒng)第一次使用
  173.         {                                               
  174.                 WriteEEPROM(SelfCheckAddr,0xAA55);        //標(biāo)記系統(tǒng)已設(shè)置過
  175.                 WriteEEPROM(CipherAddr,0x5678);                //初始化系統(tǒng)管理員密碼為 12345678
  176.                 WriteEEPROM(CipherAddr,0x1234);

  177.                 CardNum = 0;
  178.                 WriteEEPROM(CardNumAddr,CardNum);
  179.                 CipherNum = 0;
  180.                 WriteEEPROM(CipherNumAddr,CipherNum);
  181.                 Mode = 0x88;
  182.                 WriteEEPROM(ModeAddr,Mode);                   //默認(rèn)為密碼模式
  183.         }

  184.         TimeInterface();

  185.         EA  = 1;
  186. }


  187. /*******************************************************
  188. * 函數(shù)名稱:
  189. * 函數(shù)功能:        
  190. * 入口參數(shù):無
  191. * 出口參數(shù):無
  192. * 函數(shù)說明:
  193. ********************************************************/
  194. void Beep(uchar num,bit state)
  195. {
  196.         while(BITbeepwait);

  197.         BeepNum = (num<<1)-1;                 //蜂鳴器響的次數(shù)

  198.         if(state)                                         //鳴叫時間=BeepCopyTime*20ms
  199.                 BeepCopyTime = 10;             //短鳴
  200.         else
  201.                 BeepCopyTime = 30;                 //長鳴

  202.         BeepTimeCon = BeepCopyTime;
  203.         BITbeep = 1;
  204.         BITbeepwait = 1;
  205. }



  206. /*******************************************************
  207. * 函數(shù)名稱:
  208. * 函數(shù)功能:        
  209. * 入口參數(shù):無
  210. * 出口參數(shù):無
  211. * 函數(shù)說明:
  212. ********************************************************/
  213. uchar CheckKey(void)
  214. {
  215.         uchar key;

  216.         KeyPort = 0x0f;
  217.         key = KeyPort;
  218.         if(key&0x0f != 0x0f)
  219.         {
  220.                 DelayMS(10);
  221.                 if(KeyPort == key)
  222.                 {
  223.                         KeyPort = 0xf0;
  224.                         key = (key&0x0f) | (KeyPort&0xf0);

  225. //                        Beep(1,Short);

  226.                         switch(key)
  227.                         {
  228.                                 case 0x00: return 1;  break;
  229.                                 case 0x01: return 2;  break;
  230.                                 case 0x02: return 3;  break;
  231.                                 case 0x03: return 4;  break;
  232.                                 case 0x04: return 5;  break;
  233.                                 case 0x05: return 6;  break;
  234.                                 case 0x06: return 7;  break;
  235.                                 case 0x07: return 8;  break;
  236.                                 case 0x08: return 9;  break;
  237.                                 case 0x09: return 10; break;
  238.                                 case 0x0a: return 11; break;
  239.                                 case 0x0b: return 12; break;
  240.                                 case 0x0c: return 13; break;
  241.                                 case 0x0d: return 14; break;
  242.                                 case 0x0e: return 15; break;
  243.                                 case 0x0f: return 16; break;
  244.                                 default  : return 0;  break;
  245.                         }
  246.                 }               
  247.                 return 0;       
  248.         }       
  249.         return 0;
  250. }


  251. /*******************************************************
  252. * 函數(shù)名稱:
  253. * 函數(shù)功能:        
  254. * 入口參數(shù):無
  255. * 出口參數(shù):無
  256. * 函數(shù)說明:
  257. ********************************************************/
  258. void KeyWork(uchar key)
  259. {
  260.         if(key)
  261.         {
  262.                 if(key == 1)
  263.                         SetupMode();
  264.                
  265.                 else if(key>=0 && key<=9)
  266.                         InputCipher(key);

  267.                 else if(key==12 || key==13)
  268.                 {
  269.                         if(BITinputing)
  270.                                  ValidateCipher(key);       
  271.                 }
  272.         }
  273. }



  274. /*******************************************************
  275. * 函數(shù)名稱:
  276. * 函數(shù)功能:輸入密碼        
  277. * 入口參數(shù):無
  278. * 出口參數(shù):無
  279. * 函數(shù)說明:
  280. ********************************************************/
  281. void InputCipher(cph)
  282. {
  283.         InputCipherInterface();                  //輸入密碼的界面

  284.         if(BITinputing == 0)
  285.                 BITinputing = 1;

  286.         Cipher = Cipher<<4 | cph;

  287.         if(CipherBitNum < 8)                  
  288.                 CipherBitNum += 1;

  289.         KeyTimeCon = 0x400;     //8S回主界面
  290. }


  291. /*******************************************************
  292. * 函數(shù)名稱:
  293. * 函數(shù)功能:確認(rèn)或重輸密碼        
  294. * 入口參數(shù):無
  295. * 出口參數(shù):無
  296. * 函數(shù)說明:將輸入的密碼和已設(shè)定的多個密碼相比較
  297. ********************************************************/
  298. void ValidateCipher(uchar key)
  299. {
  300.         uchar i,j;
  301.         uint cphaddr=CipherAddr;
  302.         ulong cph=0;

  303.         if(key == 12)                 //確定鍵
  304.         {
  305.                 InputCipherNum += 1;
  306.                 for(j=0;j<CipherNum+1;j++)
  307.                 {
  308.                          for(i=0;i<4;i++)
  309.                                 cph = cph<<8 + ReadEEPROM(cphaddr+i);

  310.                         if(cph == Cipher)                         //密碼正確
  311.                         {
  312.                                 Lock = Open;
  313.                                 Cipher = 0;
  314.                                 CipherBitNum = 0;
  315.                                 InputCipherNum = 0;
  316.                                 BITinputnum0ut = 0;
  317.                                 BITinputing = 0;
  318.                                 KeyTimeCon = 0;
  319.                                 BITcipherOK = 1;
  320.                                 TimeInterface();
  321.                                 Beep(1,Long);
  322.                                 return;
  323.                         }

  324.                         cphaddr += 0x100;
  325.                 }
  326.                
  327.                 if(j > CipherNum)                //密碼不正確
  328.                 {
  329.                         Cipher = 0;
  330.                         CipherBitNum = 0;
  331.                         DisplayMoreWord(3,28,mimacuowu,16,0,5);     //密碼錯誤!
  332.                         KeyTimeCon = 200;
  333.                         if(InputCipherNum == 3)
  334.                         {
  335.                                 BITinputnum0ut = 1;       
  336.                                 InputCipherNum = 0;
  337.                         }
  338.                         Beep(2,Short);       
  339.                 }
  340.         }
  341.         else                                 //取消鍵
  342.         {
  343.                 if(CipherBitNum == 0)          //連按兩次取消鍵則返回主界面
  344.                 {
  345.                         Cipher = 0;
  346.                          BITinputing = 0;
  347.                         KeyTimeCon = 0;
  348.                         TimeInterface();
  349.                         Beep(1,Long);       
  350.                 }
  351.                 else
  352.                 {
  353.                         CipherBitNum = 0;
  354.                         Cipher = 0;
  355.                         ClearRect(5,32,6,96);
  356.                 }
  357.         }       
  358. }


  359. /*******************************************************
  360. * 函數(shù)名稱:
  361. * 函數(shù)功能:        
  362. * 入口參數(shù):無
  363. * 出口參數(shù):無
  364. * 函數(shù)說明:
  365. ********************************************************/
  366. uchar ValidateIDCard(void)
  367. {
  368.         uchar i,j,idH,idM,idL,RidH,RidM,RidL;
  369.         uint idaddr=CaedAddr;

  370.         EX1 = 0;

  371.         for(i=0;i<6;i++)
  372.         {
  373.                  Card[i+5] -= 0x30;
  374.                 if(Card[i+5]>0x10)
  375.                         Card[i+5] -= 0x07;
  376.         }

  377.         idH = (Card[5]<<4) | Card[6];
  378.         idM = (Card[7]<<4) | Card[8];
  379.         idL = (Card[9]<<4) | Card[10];

  380.         for(j=0;j<CardNum;j++)
  381.         {
  382.                  RidL = ReadEEPROM(idaddr);
  383.                 RidM = ReadEEPROM(idaddr+1);
  384.                 RidH = ReadEEPROM(idaddr+2);

  385.                 if((idL == RidL) && (idM == RidM) && (idH == RidH))
  386.                 {
  387.                         Lock = Open;
  388.                         Beep(1,Long);
  389.                         EX1 = 1;
  390.                         return 1;       
  391.                 }

  392.                 idaddr + 0x100;
  393.         }

  394.         if(j == CardNum)
  395.                 Beep(2,Short);

  396.         EX1 = 1;
  397.        
  398.         return 0;       
  399. }


  400. /*******************************************************
  401. * 函數(shù)名稱:
  402. * 函數(shù)功能:密碼模式主循環(huán)        
  403. * 入口參數(shù):無
  404. * 出口參數(shù):無
  405. * 函數(shù)說明:
  406. ********************************************************/
  407. void CipherMode(void)
  408. {
  409.         EX1 = 0;     //關(guān)閉刷卡功能

  410.         while(Mode == 0x88)
  411.         {
  412.                 KeyWork(CheckKey());

  413.                 if(_testbit_(BITdispsec) && !BITinputing)
  414.                         RefurbishTime();
  415.        
  416.                 if(_testbit_(BITtemp) && !BITinputing)
  417.                         RefurbishTemp();

  418.                 if(_testbit_(BITkeyout))
  419.                 {
  420.                         Cipher = 0;
  421.                          BITinputing = 0;
  422.                         CipherBitNum = 0;
  423.                         TimeInterface();
  424.                 }               
  425.         }
  426. }


  427. /*******************************************************
  428. * 函數(shù)名稱:
  429. * 函數(shù)功能:ID卡模式主循環(huán)        
  430. * 入口參數(shù):無
  431. * 出口參數(shù):無
  432. * 函數(shù)說明:
  433. ********************************************************/
  434. void IDCardMode(void)
  435. {
  436.         EX1 = 1;

  437.         while(Mode == 0x44)
  438.         {
  439.                 if(_testbit_(BITdispsec))
  440.                         RefurbishTime();
  441.        
  442.                 if(_testbit_(BITtemp))
  443.                         RefurbishTemp();

  444.                 if(_testbit_(GetOneCard))
  445.                         ValidateIDCard();

  446.                 if(CheckKey() == 1)
  447.                         SetupMode();
  448.         }
  449. }


  450. /*******************************************************
  451. * 函數(shù)名稱:
  452. * 函數(shù)功能:雙保險模式        
  453. * 入口參數(shù):無
  454. * 出口參數(shù):無
  455. * 函數(shù)說明:先刷卡在輸密碼
  456. ********************************************************/
  457. void TwoSafetyMode(void)
  458. {
  459.         EX1 = 1;

  460.         while(Mode == 0x22)
  461.         {
  462.                    if(_testbit_(BITdispsec))
  463.                         RefurbishTime();
  464.        
  465.                 if(_testbit_(BITtemp))
  466.                         RefurbishTemp();

  467.                 if(_testbit_(GetOneCard))
  468.                 {
  469.                         if(ValidateIDCard() == 1)
  470.                         {
  471.                                 KeyTimeCon = 500;                 //10S
  472.                                 while(!BITkeyout && !BITinputnum0ut)
  473.                                          KeyWork(CheckKey());

  474.                                 if(!_testbit_(BITcipherOK))
  475.                                 {
  476.                                         BITinputnum0ut = 0;
  477.                                         BITkeyout = 0;
  478.                                         KeyTimeCon = 0;
  479.                                         Cipher = 0;
  480.                                          BITinputing = 0;
  481.                                         CipherBitNum = 0;
  482.                                         TimeInterface();
  483.                                 }
  484.                         }
  485.                 }

  486.                 if(CheckKey() == 1)
  487.                         SetupMode();
  488.         }
  489. }


  490. /*******************************************************
  491. * 函數(shù)名稱:
  492. * 函數(shù)功能:系統(tǒng)設(shè)置模式        
  493. * 入口參數(shù):無
  494. * 出口參數(shù):無
  495. * 函數(shù)說明:
  496. ********************************************************/
  497. void SetupMode(void)
  498. {
  499.        
  500. }
復(fù)制代碼


門禁系統(tǒng)電路圖及C 源碼.zip

2.43 MB, 下載次數(shù): 269, 下載積分: 黑幣 -5

評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏12 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:128134 發(fā)表于 2016-6-27 22:15 | 只看該作者
很好的樣子,有時間自己研究研究
回復(fù)

使用道具 舉報

板凳
ID:146632 發(fā)表于 2016-12-26 09:37 | 只看該作者
看樣子不錯,謝謝啦!
回復(fù)

使用道具 舉報

地板
ID:182843 發(fā)表于 2017-3-24 10:58 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報

5#
ID:183400 發(fā)表于 2017-3-25 21:03 | 只看該作者
好東西 感謝樓主分享
回復(fù)

使用道具 舉報

6#
ID:198664 發(fā)表于 2017-5-9 15:49 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報

7#
ID:245426 發(fā)表于 2017-11-2 19:25 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

8#
ID:101726 發(fā)表于 2017-11-3 23:35 | 只看該作者
謝謝 分享  謝謝
回復(fù)

使用道具 舉報

9#
ID:246166 發(fā)表于 2017-11-8 18:33 | 只看該作者
樓主太強(qiáng)了,學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

10#
ID:183751 發(fā)表于 2017-12-4 12:11 | 只看該作者
樓主太強(qiáng)了,學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

11#
ID:241242 發(fā)表于 2017-12-8 08:52 | 只看該作者
看起來不錯,下載學(xué)習(xí)一下。
回復(fù)

使用道具 舉報

12#
ID:260938 發(fā)表于 2017-12-13 08:46 | 只看該作者
很厲害,666666666666666
回復(fù)

使用道具 舉報

13#
ID:263943 發(fā)表于 2017-12-19 21:02 | 只看該作者
感謝樓主!!   厲害
回復(fù)

使用道具 舉報

14#
ID:336488 發(fā)表于 2018-5-23 14:39 | 只看該作者
感謝樓主
回復(fù)

使用道具 舉報

15#
ID:336690 發(fā)表于 2018-5-23 17:47 | 只看該作者
感謝你!!!!
回復(fù)

使用道具 舉報

16#
ID:32627 發(fā)表于 2018-6-7 07:32 | 只看該作者
下載學(xué)習(xí)一下。感謝你!
回復(fù)

使用道具 舉報

17#
ID:206230 發(fā)表于 2020-3-16 20:20 | 只看該作者
下載學(xué)習(xí)一下。感謝你
回復(fù)

使用道具 舉報

18#
ID:782249 發(fā)表于 2020-6-17 22:38 | 只看該作者

感謝樓主分享!!
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91国自视频 | 一区二区在线 | 韩日精品在线观看 | 国产一区二区视频免费在线观看 | 国产日韩精品一区二区 | 99热视| av官网在线| 久久99精品久久久水蜜桃 | 亚洲第一中文字幕 | 日韩精品一区在线 | 在线看亚洲 | 欧美性受 | 日本视频在线播放 | 欧美日韩一区二区三区视频 | 免费观看一级毛片视频 | 中文字幕成人 | 亚洲精品在线观看网站 | 国产成人午夜精品影院游乐网 | 日韩免费看视频 | 日韩在线免费 | 国产精品区二区三区日本 | 久久九九免费 | 一区二区在线 | 国产视频福利 | 中文字幕成人av | 中文字幕久久久 | 亚洲视频国产视频 | 韩日在线视频 | 在线观看av中文字幕 | 国产精品无码久久久久 | 91传媒在线观看 | 欧美久久久久久久 | 一区视频在线 | 综合久久av | 男人天堂网址 | 亚洲成人精品一区 | 国产精品久久久久久久模特 | 亚洲三级在线 | 国产精品一区视频 | 欧美一区二区大片 | 成人欧美一区二区三区在线观看 |