找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2994|回复: 3
收起左侧

自己做的一个基于51单片机的报警系统(仿真与源码)

[复制链接]
ID:318030 发表于 2018-4-27 19:41 | 显示全部楼层 |阅读模式
自己画的电路图,写的源码,可以用。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png 0.jpg

单片机源程序如下:
  1. #include"LM041DRV.H"
  2. #define LED XBYTE[0XBfff]
  3. #define BUTTON XBYTE[0XDfff]
  4. sbit sound=P3^4;
  5. sbit EOC=P3^0;
  6. uint water,press,water_up=200,water_down=30,press_up=210,press_down=40;
  7. void KeyPad()
  8. {
  9.    uint wu,wd,pu,pd;
  10.    switch(BUTTON)
  11.           {   
  12.            case 0xfe:
  13.             while(BUTTON!=0xff);
  14.                  wu=water_up;
  15.                          water_up+=5;
  16.                          break;
  17.                 case 0xfd:
  18.             while(BUTTON!=0xff);
  19.                  wu=water_up;
  20.                          water_up-=5;
  21.                          break;
  22.                 case 0xfb:
  23.             while(BUTTON!=0xff);
  24.                  wd=water_down;
  25.                          water_down+=5;
  26.                          break;
  27.                 case 0xf7:
  28.             while(BUTTON!=0xff);
  29.                  wd=water_down;
  30.                          water_down-=5;
  31.                          break;
  32.                 case 0xef:
  33.             while(BUTTON!=0xff);
  34.                  pu=press_up;
  35.                          press_up+=5;
  36.                          break;
  37.                 case 0xdf:
  38.             while(BUTTON!=0xff);
  39.                  pu=press_up;
  40.                          press_up-=5;
  41.                          break;
  42.                 case 0xbf:
  43.             while(BUTTON!=0xff);
  44.                  pd=press_down;
  45.                          press_down+=5;
  46.                          break;
  47.                 case 0x7f:
  48.            while(BUTTON!=0xff);
  49.                  pd=press_down;
  50.                          press_down-=5;
  51.            }
  52.           if(water_down>60000)
  53.                           water_down=0;
  54.           if(press_down>60000)
  55.                           press_down=0;
  56.            if((water_up-water_down)<30)
  57.                 {
  58.                           water_up=wu;
  59.                           water_down=wd;       
  60.                         }
  61.                 if((press_up-press_down)<30)
  62.                 {
  63.                           press_up=pu;
  64.                           press_down=pd;       
  65.                         }
  66. }
  67. void T0Init()
  68. {
  69.         TMOD=0x01;
  70.         TH0=63832/256;
  71.         TL0=63832%256;
  72.         ET0=1;
  73.         EA=1;
  74. }
  75. uchar Init_disp(uint a,uint b,uint c,uint d)
  76. {
  77. uchar count=0;
  78. SetRowCol(0,4);
  79. printf("UP  DN  RV");
  80. SetRowCol(1,0);
  81. printf("P1:%3u  %3u  %3u",a,b,water);
  82. SetRowCol(2,0);
  83. printf("P2:%3u  %3u  %3u",c,d,press);
  84. if(water>water_up && press>press_up)
  85. {
  86. count++;
  87. SetRowCol(3,0);
  88. printf("AM: P1>UP  P2>UP");
  89. return 0;
  90. }
  91. if(water>water_up && press<press_down)
  92. {
  93. count++;
  94. SetRowCol(3,0);
  95. printf("AM: P1>UP  P2<DN");
  96. return 0;
  97. }
  98. if(water<water_down && press>press_up)
  99. {
  100. count++;
  101. SetRowCol(3,0);
  102. printf("AM: P1<DN  P2>UP");
  103. return 0;
  104. }
  105. if(water<water_down && press<press_down)
  106. {
  107. count++;
  108. SetRowCol(3,0);
  109. printf("AM: P1<DN  P2<DN");
  110. return 0;
  111. }
  112. if(water>water_up)
  113. {
  114. count++;
  115. SetRowCol(3,0);
  116. printf("AM:  P1>UP      ");
  117. }
  118. if(press>press_up)
  119. {
  120. count++;
  121. SetRowCol(3,0);
  122. printf("AM:        P2>UP");
  123. }
  124. if(water<water_down)
  125. {
  126. count++;
  127. SetRowCol(3,0);
  128. printf("AM: P1<DN       ");
  129. }
  130. if(press<press_down)
  131. {
  132. count++;
  133. SetRowCol(3,0);
  134. printf("AM:        P2<DN");
  135. }
  136. if(count==0)
  137. {
  138. SetRowCol(3,0);
  139. printf("AM:              ");
  140. }

  141. }
  142. void main()
  143. {
  144. uchar xdata *adc0808=0x78ff;
  145. uchar i,led=0xff,count;
  146. LM041_Init();
  147. T0Init();
  148.         while(1)
  149.         {
  150.                  adc0808=0x78ff;
  151.                          *adc0808=0;
  152.                          while(EOC==0);
  153.                          *adc0808=0;
  154.                          while(EOC==0);
  155.                          water=*adc0808;
  156.                          adc0808+=0x100;
  157.                          *adc0808=0;
  158.                          while(EOC==0);
  159.                          *adc0808=0;
  160.                          while(EOC==0);
  161.                          press=*adc0808;
  162.                          count=0;
  163.                 if(water>water_up)
  164.                 {
  165.                         led=(led&0xfe);       
  166.                         led=(led|0x02);       
  167.                 }
  168.                 else if(water<water_down)
  169.                 {
  170.                         led=(led&0xfd);       
  171.                         led=(led|0x01);       
  172.                 }
  173.                 else
  174.                 {
  175.                         led=(led|0x03);
  176.                         count++;
  177.                 }
  178.        
  179.                 if(press>press_up)
  180.                 {
  181.                         led=(led&0xfb);       
  182.                         led=(led|0x08);       
  183.                 }
  184.                 else if(press<press_down)
  185.                 {
  186.                         led=(led&0xf7);       
  187.                         led=(led|0x04);       
  188.                 }
  189.                 else
  190.                 {
  191. ……………………

  192. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
报警电路.zip (84.78 KB, 下载次数: 27)
回复

使用道具 举报

ID:318981 发表于 2018-4-29 16:46 | 显示全部楼层
做的不错
回复

使用道具 举报

ID:727451 发表于 2020-4-12 19:50 | 显示全部楼层
这分别实现的是什么功能呀?
回复

使用道具 举报

ID:727910 发表于 2020-4-13 01:54 来自手机 | 显示全部楼层
不太懂唉,为什么有的器件没连在一起呢?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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