找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13340|回复: 36
收起左侧

51单片机半导体甲醛传感器模块显示程序

  [复制链接]
ID:163099 发表于 2017-3-22 17:03 | 显示全部楼层 |阅读模式
无意中某宝发现一款甲醛传感器,资料显示为每秒发送一组串口数据,其中包含甲醛值,使用的stc89c52rc,分享一下

开机后还没稳定

开机后还没稳定

开机后还没稳定

开机后还没稳定

传感器背面

传感器背面

传感器正面

传感器正面


半导体甲醛模块单片机源程序:


  1. #include<reg52.h>
  2. #include "lcd.h"
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5.                                                        //可一次接收数据量
  6. void rs232_init();
  7. uchar flag,i,k,l;
  8. uint num;                                                       //删除无用变量                           

  9. uchar table1[9];
  10. uchar table2[6]={0x20,0x20,0x39,0x2e,0x39,0x39};                                             //接收缓存数组
  11. uchar j=0;                                                             //接收计数器

  12. void shujuchuli ()
  13. {
  14.   if(flag==1)
  15.                  {
  16.                          ES=0;
  17.                      
  18.                         for(j=0;j<9;j++)                        
  19.                            {
  20.                                 SBUF=table1[j];
  21.                                  while(!TI);
  22.                                  TI=0;
  23.                                                 }
  24.                                                             num=table1[4]*256+table1[5];

  25.                                                                 table2[0]=num/10000;
  26.                                                                 table2[1]=num%10000/1000;
  27.                                                        
  28.                                                                  
  29.                                                                 table2[2]=num%10000%1000/100+0x30;
  30.                                                                 table2[3]=0x2e;
  31.                                                                 table2[4]=num%10000%1000%100/10+0x30;
  32.                                                                 table2[5]=num%10000%1000%100%10+0x30;
  33.                                                                 
  34.                                 
  35.                          j=0;                                           //清零接收计数器
  36.                          ES=1;
  37.                          flag=0;
  38.                  }

  39. }




  40. main()
  41. {
  42.          rs232_init();
  43.                
  44.                   
  45.          while(1)
  46.          {
  47.        
  48.                  LcdInit();

  49.                  shujuchuli ();
  50.                  
  51.         

  52.             LcdWriteData(0x43);
  53.                 LcdWriteData(0x48);
  54.                 LcdWriteData(0x32);
  55.                 LcdWriteData(0x4f);
  56.                 LcdWriteData(0x3a);
  57.         for(l=0;l<6;l++)
  58.         {
  59.                 LcdWriteData(table2[l]);       
  60.         }
  61.                 LcdWriteData(0x6d);
  62.                 LcdWriteData(0x67);
  63.                 LcdWriteData(0x2f);
  64.                 LcdWriteData(0x6d);
  65.                 LcdWriteData(0x33);
  66.        
  67.            Lcd1602_Delay1ms(300);
  68.         }
  69. }
  70. void rs232_init()
  71. {
  72.          TMOD=0x20;
  73.          TH1=0xfa;
  74.          TL1=0xfa;
  75.                  PCON=0x80;
  76.          TR1=1;
  77.                  SCON=0x50;
  78.                                                                //先设定号工作方式,在打开允许接收
  79.          EA=1;
  80.          ES=1;        
  81. }
  82. void ser()interrupt 4
  83. {                 
  84.      RI=0;  
  85.          table1[j] = SBUF;
  86.     if(table1[j]==0xff&&j==0)
  87. {
  88. j=1;
  89. }
  90. else if(j==1&&table1[j]==0xff)
  91. {
  92. j=2;
  93. }

  94. else if (j==2&&table1[j] == 0x01)
  95. {

  96. j=3;

  97. }
  98. else if (j==3&&table1[j] == 0x27)
  99. {

  100. j=4;

  101. }

  102. else if(j>=4&&j<8)
  103. {


  104. j ++;
  105. }

  106. else if(j == 8)
  107. {

  108. flag=1;
  109. j=0;
  110. }
  111. else
  112. {
  113. j=0;
  114. }         


  115. }         
复制代码

0.png

全部代码下载:
甲醛半导体模块数据在1602.rar (29.24 KB, 下载次数: 136)
回复

使用道具 举报

ID:165415 发表于 2017-4-12 16:04 | 显示全部楼层
LcdInit();这个应该放在while外面吧?有空试试看程序
回复

使用道具 举报

ID:165415 发表于 2017-4-12 16:14 | 显示全部楼层
另外程序应该有问题,这个传感器的测量范围是0-1mg,你这里竟然显示了3.2mg
回复

使用道具 举报

ID:163099 发表于 2017-4-15 06:30 来自手机 | 显示全部楼层
方俱灭 发表于 2017-4-12 16:04
LcdInit();这个应该放在while外面吧?有空试试看程序

好像是,不过这样也能用
回复

使用道具 举报

ID:163099 发表于 2017-4-15 06:32 来自手机 | 显示全部楼层
方俱灭 发表于 2017-4-12 16:14
另外程序应该有问题,这个传感器的测量范围是0-1mg,你这里竟然显示了3.2mg

这是刚预热成功,读数还在下降中
回复

使用道具 举报

ID:195937 发表于 2017-5-3 11:21 | 显示全部楼层
楼主,可以提供这个模块的购买地址吗,万分感谢!!!
505078640@qq.com
回复

使用道具 举报

ID:29312 发表于 2017-5-11 22:13 | 显示全部楼层
本帖最后由 thatkey 于 2017-5-12 12:44 编辑

你好  我的个位数之前两个字符有乱码 @UJC(JBP`{3$WJIZ}(Z]P3T.png
回复

使用道具 举报

ID:183223 发表于 2017-5-15 19:29 | 显示全部楼层
传感器选的什么啊?
回复

使用道具 举报

ID:201967 发表于 2017-5-17 21:41 | 显示全部楼层
我的为什么总是显示9.99呀
回复

使用道具 举报

ID:201967 发表于 2017-5-17 21:42 | 显示全部楼层
大神,我的为什么总是显示9.99呀??
回复

使用道具 举报

ID:198407 发表于 2017-5-18 22:10 | 显示全部楼层
大神 我的为什么总显示9.99啊

求解答啊
回复

使用道具 举报

ID:188601 发表于 2017-5-19 15:48 | 显示全部楼层
想知道将输出的电压怎么转换成浓度
回复

使用道具 举报

ID:163099 发表于 2017-5-21 21:59 来自手机 | 显示全部楼层
我们失恋在夏季 发表于 2017-5-18 22:10
大神 我的为什么总显示9.99啊

求解答啊

显示9.99说明没有接收到串口信号,检查一下接线,波特率,不行用usb串口监测一下通信内容有问题吗
回复

使用道具 举报

ID:163099 发表于 2017-5-21 22:01 来自手机 | 显示全部楼层
smile123 发表于 2017-5-19 15:48
想知道将输出的电压怎么转换成浓度

甲醛模块干的事,模块用的stm8模数转换的
回复

使用道具 举报

ID:212141 发表于 2017-6-17 21:58 | 显示全部楼层
谢谢大神,好好学习。
回复

使用道具 举报

ID:175237 发表于 2017-6-27 09:57 | 显示全部楼层
mark学习
回复

使用道具 举报

ID:221416 发表于 2017-7-21 17:15 | 显示全部楼层
多谢楼主,下载下来试试。
回复

使用道具 举报

ID:223551 发表于 2017-7-31 15:16 | 显示全部楼层
哪位大神有甲醛测试仪的完整程序啊,急需啊,传感器是和这个一样的
希望有的大神可以给我一下
回复

使用道具 举报

ID:223551 发表于 2017-8-1 16:08 | 显示全部楼层
为什么我直接将程序烧进去,1602也没字显示啊!
回复

使用道具 举报

ID:223551 发表于 2017-8-3 15:40 | 显示全部楼层
怎么在这个程序里加入语音芯片呢!当超过标准时·语音报警
回复

使用道具 举报

ID:268536 发表于 2017-12-29 15:14 | 显示全部楼层
cell 发表于 2017-5-21 21:59
显示9.99说明没有接收到串口信号,检查一下接线,波特率,不行用usb串口监测一下通信内容有问题吗

我的也是,程序下进去后总是显示9.99,都检查了,也没啥不对啊
回复

使用道具 举报

ID:198608 发表于 2017-12-29 20:25 | 显示全部楼层
levyjersy 发表于 2017-5-17 21:41
**** 作者被禁止或删除 内容自动屏蔽 ****

这个应该是模拟了,得需要模数转换
回复

使用道具 举报

ID:146834 发表于 2017-12-29 22:25 | 显示全部楼层
仿真图。没有传感器,
2017-12-29_222241.jpg
回复

使用道具 举报

ID:146834 发表于 2018-1-8 18:56 | 显示全部楼层
thatkey 发表于 2017-5-11 22:13
你好  我的个位数之前两个字符有乱码

你好,传感器在哪里购买的,有地址吗。
回复

使用道具 举报

ID:295150 发表于 2018-3-21 18:18 | 显示全部楼层
你好,这个传感器输出是电压还是数字信号?一直搞不明白,谢谢。
回复

使用道具 举报

ID:163099 发表于 2018-3-22 13:48 | 显示全部楼层
米诺子 发表于 2018-3-21 18:18
你好,这个传感器输出是电压还是数字信号?一直搞不明白,谢谢。

传感器输出数字信号,串口输出
回复

使用道具 举报

ID:302353 发表于 2018-4-23 23:14 | 显示全部楼层
   if(table1[j]==0xff&&j==0) { j=1; } else if(j==1&&table1[j]==0xff) { j=2; }  else if (j==2&&table1[j] == 0x01) {  j=3;  } else if (j==3&&table1[j] == 0x27) {  j=4;  }为啥table【i】要等于0xff呢
回复

使用道具 举报

ID:302353 发表于 2018-4-23 23:27 | 显示全部楼层
if(table1[j]==0xff&&j==0) { j=1; } else if(j==1&&table1[j]==0xff) { j=2; }  else if (j==2&&table1[j] == 0x01) {  j=3;  } else if (j==3&&table1[j] == 0x27) {  j=4;  }为啥table【j】要等于0xff呢?j==1&&table1[j]==0xff,else if (j==2&&table1[j] ==0x01) else if (j==3&&table1[j] == 0x27) {  j=4;  }
大神这几句能解释下吗
回复

使用道具 举报

ID:163099 发表于 2018-6-10 09:27 | 显示全部楼层
飞科技 发表于 2018-4-23 23:27
if(table1[j]==0xff&&j==0) { j=1; } else if(j==1&&table1[j]==0xff) { j=2; }  else if (j==2&&table1[j] ...

传感器发来的数据有固定格式,为FF FF 01 27...........,为确保数据从第一帧开始接收,所以这里做了一些判断,以防甲醛值数据正确
回复

使用道具 举报

ID:407111 发表于 2018-10-12 09:11 | 显示全部楼层
是什么传感器啊,大神求回复
回复

使用道具 举报

ID:386202 发表于 2019-2-5 16:42 | 显示全部楼层
这甲醛传感器接STC89C52哪几个端口啊?
回复

使用道具 举报

ID:386202 发表于 2019-2-5 18:10 | 显示全部楼层
这甲醛传感器接STC89C52哪几个端口啊?
回复

使用道具 举报

ID:386202 发表于 2019-4-14 12:31 | 显示全部楼层
51单片机甲醛传感器测试浓度
回复

使用道具 举报

ID:386202 发表于 2019-4-14 15:39 | 显示全部楼层
这甲醛传感器接STC89C52哪几个端口啊?
回复

使用道具 举报

ID:504436 发表于 2019-4-16 10:34 | 显示全部楼层
zhongmiaoyuan 发表于 2019-4-14 15:39
这甲醛传感器接STC89C52哪几个端口啊?

同问,我也发现代码里面没有定义端口,甲醛传感器的端口
回复

使用道具 举报

ID:504436 发表于 2019-4-16 11:31 | 显示全部楼层
请问用的是usb接口吗,还是转换了RS232,还有甲醛传感器连51的 IO  口,我看程序里没有定义这几个接口呀,应该就是P30和P31吧,希望解释一下
回复

使用道具 举报

ID:371423 发表于 2019-4-19 14:06 | 显示全部楼层
sjr02 发表于 2017-12-29 15:14
我的也是,程序下进去后总是显示9.99,都检查了,也没啥不对啊

请问你后来解决了吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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