找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2188|回复: 1
收起左侧

基于单片机的双烟雾双温度报警系统图纸程序

[复制链接]
ID:321563 发表于 2019-5-26 18:48 | 显示全部楼层 |阅读模式
TIM截图20190526184258.png TIM截图20190526184702.png TIM截图20190526184451.png

单片机源程序如下:
  1. #include "lcd1602.h"
  2. #include "18b20.h"
  3. #include "key_contrl.h"
  4. #include "adc0832.h"

  5. #include <reg52.h>

  6. int temp[2];


  7. int timecount,flag=0,number=0,count=0;

  8. extern char temph;                                          //初始下限值

  9. unsigned char SN[2][8]={{0x28,0xb3,0x75,0x79,0x97,0x16,0x03,0x32},
  10.                                                 {0x28, 0xaa, 0x0f, 0xc6,0x1b,0x13,0x02, 0x5c}
  11.                                                 };//二维数组存取序列号

  12. extern char series;

  13. char alarmLevel = 2,talarm = 0;


  14. unsigned char value1,value;
  15. float nongdu1,nongdu;

  16. extern  bit sdflag;
  17. unsigned int data dis1[4]={0x00,0x00,0x00,0x00}; //定义3个显示数据单元和一个数据存储单元
  18. unsigned int data dis[4]={0x00,0x00,0x00,0x00}; //定义3个显示数据单元和一个数据存储单元


  19. unsigned char  level1=0,level=0;


  20. unsigned char tempFlag=0,nongduFlag=0;

  21. sbit ledblue = P0^1;

  22. sbit ledred = P0^3;
  23. void countLevel1()
  24. {
  25.         dis1[2]=value1/51;   //AD值转换为3为BCD码,最大为5.00V。
  26.     dis1[3]=value1%51;   //余数暂存
  27.     dis1[3]=dis1[3]*10;    //计算小数第一位
  28.     dis1[1]=dis1[3]/51;
  29.     dis1[3]=dis1[3]%51;
  30.     dis1[3]=dis1[3]*10;    //计算小数第二位
  31.     dis1[0]=dis1[3]/51;   

  32.         dis[2]=value/51;   //AD值转换为3为BCD码,最大为5.00V。
  33.     dis[3]=value%51;   //余数暂存
  34.     dis[3]=dis[3]*10;    //计算小数第一位
  35.     dis[1]=dis[3]/51;
  36.     dis[3]=dis[3]%51;
  37.     dis[3]=dis[3]*10;    //计算小数第二位
  38.     dis[0]=dis[3]/51;   

  39.                 nongdu = dis[2]*1.0+dis[1]*0.1+dis[0]*0.01;

  40.                 nongdu1 = dis1[2]*1.0+dis1[1]*0.1+dis1[0]*0.01;
  41.                 if(nongdu1<0.70)
  42.                 {
  43.                         level1=1;               
  44.                 }
  45.                 else if(0.70<=nongdu1<0.85)
  46.                 {
  47.                         level1=2;
  48.                
  49.                 }
  50.                  else if(0.85<=nongdu1<0.90)
  51.                   {
  52.                         level1=3;
  53.                
  54.                   }
  55.                  else if(0.90<=nongdu1<0.95)
  56.                   {
  57.                         level1=4;
  58.                
  59.                   }

  60.                  else if(0.95<=nongdu1<1.00)
  61.                   {
  62.                         level1=5;

  63.                   }
  64.                  if(1.00<=nongdu1)
  65.                   {
  66.                                         level1=6;               
  67.                   }

  68.                 if(nongdu<0.70)
  69.                 {
  70.                         level=1;               
  71.                 }
  72.                 else if(0.70<=nongdu<0.85)
  73.                 {
  74.                         level=2;
  75.                
  76.                 }
  77.                  else if(0.85<=nongdu<0.90)
  78.                   {
  79.                         level=3;
  80.                
  81.                   }
  82.                  else if(0.90<=nongdu<0.95)
  83.                   {
  84.                         level=4;
  85.                
  86.                   }

  87.                  else if(0.95<=nongdu<1.00)
  88.                   {
  89.                         level=5;

  90.                   }
  91.                  if(1.00<=nongdu)
  92.                   {
  93.                                         level=6;               
  94.                   }               
  95. }


  96. void t0(void) interrupt 1 using 0       
  97. {   TH0=(65535-50000)/256; //50ms定时
  98.           TL0=(65535-50000)%256;  
  99.           timecount++;//re_disp++;
  100.           if(timecount>9){timecount=0;flag=~flag;}                                 //50ms到了则反显
  101.         //if(re_disp>200){re_disp=0;if(id)id=0;}  //10秒到了则由调整模式自动进入正常显示模式
  102. }


  103. void t1(void) interrupt 3 using 0
  104. {
  105.         TH1=(65535-50000)/256;//50ms定时
  106.         TL1=(65535-50000)%256;
  107.         number++;
  108.         if(number>10)
  109.         {
  110.                 number=0;
  111.                 count++;

  112.                 //beep=0;
  113.         }
  114. }


  115. void baojin(void)
  116. {
  117.                
  118.                 if(level1>=2||level>=2)
  119.                 {

  120.                         nongduFlag=1;
  121.                 }
  122.                 else
  123.                 {
  124.                         nongduFlag=0;
  125.                 }

  126.         if(tempFlag|nongduFlag|sdflag)
  127.         {
  128.                                 beep=0;
  129.                                 ledblue=1;ledred = 0;


  130.         }
  131.         else
  132.         {
  133.                                 beep=1;ledblue=0;ledred = 1;

  134.         }
  135. }

  136. void main(void)
  137. {
  138.         //flag =1;
  139.         TMOD=0x11;//定时器0c初始化   
  140.         TH0=(65535-50000)/256;
  141.         TL0=(65535-50000)%256;
  142.         TH1=(65535-50000)/256;
  143.         TL1=(65535-50000)%256;       
  144.         EA=1;
  145.         ET0=1;
  146.            ET1=1;

  147.         TR0=0;
  148.         TR1=0;


  149.                 LCMInit(); //LCM初始化
  150.                 Delay5Ms(); //延时片刻(可不要)
  151.                 Init_DS18B20();//温度 芯片初始化

  152. ……………………

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

所有资料51hei提供下载:
源程序.zip (99.33 KB, 下载次数: 18)

评分

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

查看全部评分

回复

使用道具 举报

ID:620907 发表于 2019-10-10 13:06 来自手机 | 显示全部楼层
请问楼主图片有清晰一点儿的嘛
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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