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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2628|回復(fù): 2
收起左側(cè)

單片機(jī)樓層單元門(mén)禁系統(tǒng)程序設(shè)計(jì) 樓宇對(duì)講

[復(fù)制鏈接]
ID:515488 發(fā)表于 2019-4-18 15:04 | 顯示全部樓層 |閱讀模式
設(shè)計(jì)一樓層單元門(mén)禁系統(tǒng),能實(shí)現(xiàn)樓層住戶密碼開(kāi)鎖或其它身份識(shí)別開(kāi)鎖,能顯示操作狀態(tài),阻止陌生人進(jìn)入,能輸出報(bào)警。設(shè)計(jì)完整的電路原理圖和編寫(xiě)相關(guān)程序。
    用MCS-51系列單片機(jī)或其它CPU作為控制器設(shè)計(jì)完整的控制系統(tǒng),包括以下內(nèi)容:
  用LCD1602顯示或其它點(diǎn)陣液晶或用LED顯示;
  實(shí)現(xiàn)磁卡、IC卡、射頻卡或其它方式任意1種輸入;
  有密碼輸入按鍵;
  有聲音及報(bào)警輸出;   
  當(dāng)斷電時(shí)能維持24小時(shí)正常工作。
  外部220V電源(開(kāi)關(guān)電源)供電;
  用PROTEUS仿真其中一個(gè)功能。

0.png

單片機(jī)源程序如下:
  1. #include "reg52.h"
  2. #include "LCD1602.h"
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. unsigned char k;

  6. uchar pic;
  7. uchar k;
  8. uchar X;                            
  9. uchar keycount;
  10. //uchar keyprocesstime;
  11. uint Key_Time;
  12. uchar flashtime;
  13. uint  PLcount;
  14. uchar table11[4]={0};
  15. uchar table1count;
  16. bit keyflag;
  17. bit gonengflag;
  18. bit pic3flag;
  19. bit pic4flag;
  20. bit pic5flag;
  21. bit pic11flag;
  22. bit pic55flag;
  23. uint pic3count;
  24. uint pic4count;
  25. uint pic5count;

  26. sbit JDQ = P2^3;
  27. sbit BEEP = P2^4;
  28. sbit LED =  P2^5;

  29. void delay(uint n) //延時(shí)程序
  30. {   
  31.     uchar i,j;
  32.     for(i=n;i>0;i--)
  33.        for(j=112;j>0;j--);
  34. }

  35. void Display(void)
  36. {
  37.     uchar i;
  38.         switch(pic)
  39.         {
  40.             case 1:        //顯示正常界面,時(shí)間
  41.                      LCDDispString(0,1,"    TANLIJUAN  ");
  42.                      LCDDispString(0,2,"Please input num");
  43.                
  44.                 break;
  45.                 case 2:        //顯示第一段波形調(diào)整界面
  46.                                 LCDDispString(0,1,"Please Input  ");//顯示字符串
  47.                                 LCDDispString(0,2,"num                ");  

  48.                 break;

  49.                 case 3:        //顯示第二段波形調(diào)整界面
  50.                              LCDDispString(0,1,"  Please wait  ");
  51.                      LCDDispString(0,2,"  ...........  ");
  52.                                  pic3flag = 1;
  53.                 break;

  54.                 case 4:         //顯示第三段波形調(diào)整界面
  55.                              LCDDispString(0,1,"  Sorry           ");
  56.                      LCDDispString(0,2,"  num    error  ");
  57.                                  pic4flag = 1;
  58.                 break;

  59.                 case 5:        //顯示第四段波形調(diào)整界面
  60.                                  LCDDispString(0,1,"     Right       ");
  61.                      LCDDispString(0,2,"  You are welcome  ");
  62.                                  pic5flag = 1;
  63.                 break;
  64.         }
  65. }
  66. /****************************************************/
  67. /*                4*4鍵盤(pán)讀取程序                         */
  68. /****************************************************/
  69. uchar GetKey ( )//鍵盤(pán)掃描函數(shù),用于識(shí)別哪一個(gè)鍵按下,并讀取鍵值
  70. {  
  71.     uchar X,Y,Z;
  72.     P1 = 0xf0;    //先對(duì)P1置數(shù) 行掃描
  73.         if(P1!=0xf0) //判斷是否有鍵按下
  74.     {
  75.         delay(50); //延時(shí),軟件去干擾
  76.         if(P1!=0xf0) //確認(rèn)按鍵按下X = P1;
  77.         {
  78.             X=P1&0xf0; //保存行掃描時(shí)有鍵按下時(shí)狀態(tài)
  79.                         P1=0x0f; //列掃描
  80.                         Y=P1&0x0f; //保存列掃描時(shí)有鍵按下時(shí)狀態(tài)
  81.                         Z=X|Y; //取出鍵值
  82.                         switch ( Z ) //判斷鍵值(那一個(gè)鍵按下)
  83.                         {                               
  84.                                 case 0x7e: k=1; break;
  85.                                 case 0xbe: k=2; break;
  86.                                 case 0xde: k=3; break;       
  87.                                    case 0x7d: k=4; break;
  88.                                 case 0xbd: k=5; break;
  89.                                 case 0xdd: k=6; break;
  90.                                 //case 0xed: k=8; break;
  91.                                 case 0x7b: k=7; break;
  92.                                 case 0xbb: k=8; break;
  93.                                 case 0xdb: k=9; break;
  94.                                 //case 0xeb: k=12; break;                                          
  95.                                 case 0x77: k=0; break;
  96.                                 case 0xee: k=13; break;//DEL
  97.                                 case 0xb7: k=14; break;//CALL
  98.                                 case 0xd7: k=15; break;//CANCEL
  99.                                 case 0xe7: k=16; break;//ENTER                                  
  100.                         }
  101.                         if(k<=9)
  102.                         {
  103.                             keyflag = 1;
  104.                         }
  105.                         else
  106.                         {
  107.                             gonengflag = 1;
  108.                         }
  109.                 }
  110.         }
  111. }

  112. void Keyprocess(void)                           //鍵盤(pán)處理
  113. {
  114.     switch (pic) //判斷鍵值(那一個(gè)鍵按下)
  115.         {                               
  116.                 case 1:        //開(kāi)機(jī)界面
  117.                       switch(k)
  118.                           {
  119.                               case 14:
  120.                                       pic = 2;
  121.                                           Display();
  122.                                           keycount = 0;
  123.                                   break;
  124.                           }
  125.                 break;
  126.                 case 2://第一段波形設(shè)置界面
  127.                      if((keyflag==1)&(table1count<4))
  128.                          {
  129.                                  LCDDispNum(8+table1count,2,k);
  130.                                  table11[table1count] = k;
  131.                                  table1count++;
  132.                          }
  133.                           switch(k)
  134.                           {                                  
  135.                                   case 13://刪除
  136.                                                 table1count--;
  137.                                                 if(table1count>=0)
  138.                                                 {
  139.                                                     LCDDispChar(8+table1count,2,0x04);
  140.                                                 }

  141.                                   break;

  142.                                   case 15:
  143.                                          pic = 1;
  144.                                                  Display();
  145.                                                  keycount = 0;
  146.                                                  table1count = 0;
  147.                                   break;
  148.                   
  149.                                   case 16:
  150.                                          if(1<=table11[0]<=4)
  151.                                                  {
  152.                                                            if(table11[1]==0)
  153.                                                           {
  154.                                                                    if(1<=table11[2]<=4)
  155.                                                                  {
  156.                                                                           pic = 3;
  157.                                                                          pic3flag = 1;
  158.                                                              Display();
  159.                                                              keycount = 0;
  160.                                                              table1count = 0;
  161.                                                                  }
  162.                                                                  else
  163.                                                                  {
  164.                                                                           pic = 4;
  165.                                                                          pic4flag = 1;
  166.                                                                  Display();
  167.                                                                  keycount = 0;
  168.                                                                  table1count = 0;
  169.                                                                  BEEP = 1;
  170.                                                              LED = 1;
  171.                                                                  }
  172.                                                           }
  173.                                                           else
  174.                                                           {
  175.                                                              pic = 4;
  176.                                                                  pic4flag = 1;
  177.                                                              Display();
  178.                                                              keycount = 0;
  179.                                                              table1count = 0;
  180.                                                              BEEP = 1;
  181.                                                          LED = 1;
  182.                                                           }
  183.                                                  }
  184.                                                  else
  185.                                                  {
  186.                                                      pic = 4;
  187.                                                          pic4flag = 1;
  188.                                                          Display();
  189.                                                          keycount = 0;
  190.                                                          table1count = 0;
  191.                                                          BEEP = 1;
  192.                                                      LED = 1;
  193.                                                  }

  194.                                                  //JDQ = 1;

  195.                                   break;                                                       
  196.                           }
  197.             break;
  198.                 case 3:
  199.                       switch(k)
  200.                           {
  201.                               case 14:
  202.                                       pic = 2;
  203.                                           Display();
  204.                                           keycount = 0;
  205.                                   break;
  206.                                   case 15:
  207.                                          pic = 1;
  208.                                                  Display();
  209.                                                  keycount = 0;
  210.                                                  table1count = 0;
  211.                                   break;

  212.                           }
  213.                 break;       
  214.                 case 4:
  215.                       switch(k)
  216.                           {
  217.                               case 14:
  218.                                       pic = 2;
  219.                                           Display();
  220.                                           keycount = 0;
  221.                                   break;
  222.                                   case 15:
  223.                                          pic = 1;
  224.                                                  Display();
  225.                                                  keycount = 0;
  226.                                                  table1count = 0;
  227.                                   break;

  228.                           }
  229.                 break;       
  230.                 case 5:
  231.                       switch(k)
  232.                           {
  233.                               case 14:
  234.                                       pic = 2;
  235.                                           Display();
  236.                                           keycount = 0;
  237.                                   break;
  238.                                   case 15:
  239.                                          pic = 1;
  240.                                                  Display();
  241.                                                  keycount = 0;
  242.                                                  table1count = 0;
  243.                                   break;

  244.                           }
  245.                 break;                         
  246.         }
  247. }


  248. //
  249. void main(void)
  250. {
  251.         pic = 1;
  252.         LCDInit();//lcd初始化
  253.         TMOD = 0x11;
  254.     TH1 = 0xf8;
  255.     TL1 = 0xcc;
  256.         P0 = 0xff;
  257.     TR1 = 1;
  258.     ET1 = 1;  
  259.         EA=1;
  260.         JDQ = 0;
  261.         BEEP = 0;
  262.         LED = 0;
  263.         Display();  
  264.         while(1)
  265.         {
  266.                         //Display();
  267.                         if(keyflag|gonengflag)
  268.                     {
  269.                             Keyprocess();
  270.                                 keyflag = 0;
  271.                                 gonengflag = 0;
  272.                         }
  273.                         if(pic11flag==1)
  274.                         {
  275.                             pic11flag = 0;
  276.                                 pic = 1;
  277.                                 Display();
  278.                         }
  279.                         if(pic55flag==1)
  280.                         {
  281.                             pic55flag = 0;
  282.                                 pic = 5;
  283.                                 Display();
  284.                         }
  285.                         if(pic3flag==1)
  286.                         {
  287.                             delay(5000);
  288.                                 pic = 5;
  289.                                 Display();
  290.                         }
  291.         }
  292. }       

  293. void T1_time (void) interrupt 3 using 2
  294. {
  295.      TH1 = 0xf8;
  296.      TL1 = 0xcc;
  297.      Key_Time++;
  298.      if(Key_Time == 250)
  299. ……………………

  300. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
門(mén)禁設(shè)計(jì)系統(tǒng).rar (101.64 KB, 下載次數(shù): 62)
回復(fù)

使用道具 舉報(bào)

ID:549222 發(fā)表于 2019-5-28 13:30 | 顯示全部樓層
完美!
回復(fù)

使用道具 舉報(bào)

ID:580968 發(fā)表于 2019-7-9 15:47 | 顯示全部樓層
什么東西啊,打都打不開(kāi),程序只有倆,圖也被破壞。垃圾東西
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产高清免费 | 天天做日日做 | 亚洲国产精品成人 | 亚洲精品久久久久久久不卡四虎 | 国产1区2区 | 尹人av | 久久成人高清视频 | 国产99精品 | 欧美又大粗又爽又黄大片视频 | 色网站在线免费观看 | 日韩成人国产 | 一区二区三区在线免费观看 | 羞羞视频在线网站观看 | 成人夜晚看av | 中国黄色在线视频 | 中文在线www | 精品欧美一区二区在线观看欧美熟 | 亚洲免费大片 | 亚洲成人av在线播放 | 91久久精品国产免费一区 | 国产一区日韩在线 | 呦呦在线视频 | 天天操天天拍 | 91原创视频在线观看 | 一级在线毛片 | 97视频精品 | 日韩欧美亚洲综合 | 久久久久国产一区二区三区四区 | 成人精品视频 | 午夜视频免费在线观看 | av男人的天堂av | 视频1区| 亚洲永久免费 | 91在线综合| 亚洲成人综合社区 | 久久精品1 | 日本视频在线 | 国产亚洲精品精品国产亚洲综合 | 国产视频线观看永久免费 | 日韩2020狼一二三 | 午夜影院在线免费观看视频 |