找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3929|回复: 4
收起左侧

基于单片机的智能门禁程序设计(以继电器开关来表示门开关)Proteus仿真

[复制链接]
ID:687158 发表于 2021-3-29 10:32 | 显示全部楼层 |阅读模式
单片机的智能门禁仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.png
51hei图片20210329102836.png

单片机源程序如下:
  1. #include "reg52.h"
  2. #include "intrins.h"
  3. #include <stdio.h>

  4. sbit j=P0^4;
  5. sbit men=P0^0;

  6. void Timer0Init();
  7. void Timer1Init();
  8. void shumaguan();
  9. void shijianxianshi();
  10. void mimaxianshi();
  11. void anjian();
  12. void panduan();
  13. void xiugaianjian();
  14. void xiugai();

  15. unsigned char code abile[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
  16. unsigned char zhongjian[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
  17. unsigned char mima[]={0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0};
  18. int i,shi=6,fen=59,miao,n,a,c,b,g;

  19. void main()
  20. {
  21.         Timer0Init();
  22.         Timer1Init();
  23. while(1)
  24. {
  25.         shumaguan();
  26.         if(men==0) {ET1=1;EA=1;}
  27.         if(b==3) {b=0;a=0;mimaxianshi();}
  28.         if(shi>=7||shi>=21)
  29.         {shijianxianshi();men=0;}
  30.         else
  31.         {if(a==0)mimaxianshi();if(b==0)anjian();if(b==1){ET1=0;a=0;mimaxianshi();b=2;}if(b==2)xiugaianjian();panduan();}
  32. }
  33. }

  34. void panduan()
  35. {
  36. if(b==0&&a==8&&zhongjian[0]==mima[0]&&zhongjian[1]==mima[1]&&zhongjian[2]==mima[2]&&zhongjian[3]==mima[3]&&zhongjian[4]==mima[4]&&zhongjian[5]==mima[5]&&zhongjian[6]==mima[6]&&zhongjian[7]==mima[7]&&zhongjian[0]==mima[0])
  37. {
  38. men=0;xiugai();
  39. }
  40. if(b==0&&a==8)
  41. {
  42. if(zhongjian[0]!=mima[0]||zhongjian[1]!=mima[1]||zhongjian[2]!=mima[2]||zhongjian[3]!=mima[3]||zhongjian[4]!=mima[4]||zhongjian[5]!=mima[5]||zhongjian[6]!=mima[6]||zhongjian[7]!=mima[7]||zhongjian[0]!=mima[0])
  43. {
  44. j=0;
  45. }
  46. }
  47. }

  48. void xiugai()
  49. {
  50.         P3=0xbf;
  51. if(P3!=0XBF)
  52. {
  53. switch(P3)
  54. {
  55.         case(0xbe):zhongjian[a]=abile[2];a++;mima[c]=abile[2];c++;break;  //2
  56.         case(0xbd):zhongjian[a]=abile[6];a++;mima[c]=abile[6];c++;break;  //6
  57.         case(0xbb):break;  //wu
  58.         case(0xb7):b++;break;  //xiu
  59. }
  60. while(P3!=0XbF)
  61. {
  62. P3=0XBF;
  63. }
  64. }
  65. }

  66. void xiugaianjian()
  67. {
  68.         P3=0xef;
  69.         if(P3!=0XEF)
  70.         {
  71.         switch(P3)
  72. {
  73.         case(0xee):zhongjian[a]=abile[0];a++;mima[c]=abile[0];c++;break;  //0
  74.         case(0xed):zhongjian[a]=abile[4];a++;mima[c]=abile[4];c++;break;  //4
  75.         case(0xeb):zhongjian[a]=abile[8];a++;mima[c]=abile[8];c++;break;  //8
  76. }
  77. while(P3!=0XEF)
  78. {
  79. P3=0XEF;
  80. }
  81. }
  82.         P3=0xdf;
  83. if(P3!=0XDF)
  84. {
  85. switch(P3)
  86. {
  87.         case(0xde):zhongjian[a]=abile[1];a++;mima[c]=abile[1];c++;break;  //1
  88.         case(0xdd):zhongjian[a]=abile[5];a++;mima[c]=abile[5];c++;break;  //5
  89.         case(0xdb):zhongjian[a]=abile[9];a++;mima[c]=abile[9];c++;break;  //9
  90.         case(0xd7):a--;zhongjian[a]=abile[10];break;  //qing
  91. }
  92. while(P3!=0XdF)
  93. {
  94. P3=0XDF;
  95. }
  96. }

  97.         P3=0xbf;
  98. if(P3!=0XBF)
  99. {
  100. switch(P3)
  101. {
  102.         case(0xbe):zhongjian[a]=abile[2];a++;mima[c]=abile[2];c++;break;  //2
  103.         case(0xbd):zhongjian[a]=abile[6];a++;mima[c]=abile[6];c++;break;  //6
  104.         case(0xbb):break;  //wu
  105.         case(0xb7):b++;break;  //xiu
  106. }
  107. while(P3!=0XbF)
  108. {
  109. P3=0XBF;
  110. }
  111. }

  112.         P3=0x7f;
  113. if(P3!=0X7F)
  114. {
  115. switch(P3)
  116. {
  117.         case(0x7e):zhongjian[a]=abile[3];a++;mima[c]=abile[3];c++;break;  //3
  118.         case(0x7d):zhongjian[a]=abile[7];a++;mima[c]=abile[7];c++;break;  //7
  119.         case(0x7b):break;  //wu
  120.         case(0x77):break;  //chu
  121. }
  122. while(P3!=0X7F)
  123. {
  124. P3=0X7F;
  125. }
  126. }
  127. }



  128. void anjian()
  129. {
  130.         P3=0xef;
  131.         if(P3!=0XEF)
  132.         {
  133.         switch(P3)
  134. {
  135.         case(0xee):zhongjian[a]=abile[0];a++;break;  //0
  136.         case(0xed):zhongjian[a]=abile[4];a++;break;  //4
  137.         case(0xeb):zhongjian[a]=abile[8];a++;break;  //8
  138. }
  139. while(P3!=0XEF)
  140. {
  141. P3=0XEF;
  142. }
  143. }
  144.         P3=0xdf;
  145. if(P3!=0XDF)
  146. {
  147. switch(P3)
  148. {
  149.         case(0xde):zhongjian[a]=abile[1];a++;break;  //1
  150.         case(0xdd):zhongjian[a]=abile[5];a++;break;  //5
  151.         case(0xdb):zhongjian[a]=abile[9];a++;break;  //9
  152.         case(0xd7):a--;zhongjian[a]=abile[10];break;  //qing
  153. }
  154. while(P3!=0XdF)
  155. {
  156. P3=0XDF;
  157. }
  158. }

  159.         P3=0xbf;
  160. if(P3!=0XBF)
  161. {
  162. switch(P3)
  163. {
  164.         case(0xbe):zhongjian[a]=abile[2];a++;break;  //2
  165.         case(0xbd):zhongjian[a]=abile[6];a++;break;  //6
  166.         case(0xbb):break;  //wu
  167.         case(0xb7):break;  //xiu
  168. }
  169. while(P3!=0XbF)
  170. {
  171. P3=0XBF;
  172. }

  173. }

  174.         P3=0x7f;
  175. if(P3!=0X7F)
  176. {
  177. switch(P3)
  178. {
  179.         case(0x7e):zhongjian[a]=abile[3];a++;break;  //3
  180.         case(0x7d):zhongjian[a]=abile[7];a++;break;  //7
  181.         case(0x7b):break;  //wu
  182.         case(0x77):a=0;j=1;men=1;break;
  183. }
  184. while(P3!=0X7F)
  185. {
  186. P3=0X7F;
  187. }
  188. }
  189. }

  190. void mimaxianshi()
  191. {
  192.   zhongjian[0]=abile[10];
  193.         zhongjian[1]=abile[10];
  194.         zhongjian[2]=0xbf;
  195.         zhongjian[3]=abile[10];
  196.         zhongjian[4]=abile[10];
  197.         zhongjian[5]=0xbf;
  198.         zhongjian[6]=abile[10];
  199.         zhongjian[7]=abile[10];
  200. }

  201. void shijianxianshi()
  202. {
  203.   zhongjian[0]=abile[shi/10];
  204.         zhongjian[1]=abile[shi%10];
  205.         zhongjian[2]=0xbf;
  206.         zhongjian[3]=abile[fen/10];
  207.         zhongjian[4]=abile[fen%10];
  208.         zhongjian[5]=0xbf;
  209.         zhongjian[6]=abile[miao/10];
  210.         zhongjian[7]=abile[miao%10];
  211. }

  212. void Timer0Init()                //5毫秒@11.0592MHz
  213. {
  214.         TMOD &= 0xF0;                //设置定时器模式
  215.         TL0 = 0x00;                //设置定时初值
  216.         TH0 = 0x28;                //设置定时初值
  217.         TF0 = 0;                //清除TF0标志
  218.         TR0 = 1;                //定时器0开始计时
  219.         EA=1;ET0=1;
  220. }

  221. void Timer0() interrupt 1
  222. {
  223. n++;
  224.         if(n>200)
  225.         {
  226.         miao++;
  227.                 n=0;
  228.         }
  229.         if(miao>59)
  230.         {
  231.         fen++;
  232.                 miao=0;
  233.         }
  234.         if(fen>59)
  235.         {
  236.         shi++;
  237.                 fen=0;
  238.         }
  239.         if(shi>23)
  240.         {
  241.         shi=0;
  242.         }
  243. }

  244. void Timer1Init()                //2毫秒@11.0592MHz
  245. {
  246.         TMOD &= 0x0F;                //设置定时器模式
  247.         TL1 = 0x9A;                //设置定时初值
  248.         TH1 = 0xA9;                //设置定时初值
  249.         TF1 = 0;                //清除TF1标志
  250.         TR1 = 1;                //定时器1开始计时
  251. }

  252. void Timer1() interrupt 3
  253. {
  254. g++;
  255.         if(g>2000) {ET1=0;men=1;g=0;a=0;}
  256. }

  257. void shumaguan()
  258. {
  259.           P2=0x00;
  260.            P1=0xff;
  261.           P2=1<<i;
  262.            P1=zhongjian[i];
  263.                 i++;
  264.         if(i>7)
  265.                 i=0;
  266. }
复制代码

51hei图片20.png

基于单片机的智能门禁设计.zip (76.54 KB, 下载次数: 61)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:900721 发表于 2021-4-6 14:42 | 显示全部楼层
能出一个视频演示一下吗?
回复

使用道具 举报

ID:900721 发表于 2021-4-6 15:11 | 显示全部楼层
密码是多少啊
回复

使用道具 举报

ID:328014 发表于 2021-4-6 17:12 | 显示全部楼层

密码在20行的数组里面,你把他化为十进制
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表