STC 51单片机54——气压水压计HX710B 串口显示均值滤波+滑窗滤波

这篇具有很好参考价值的文章主要介绍了STC 51单片机54——气压水压计HX710B 串口显示均值滤波+滑窗滤波。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

STC 51单片机54——气压水压计HX710B 串口显示均值滤波+滑窗滤波

 STC 51单片机54——气压水压计HX710B 串口显示均值滤波+滑窗滤波

 

//气压模块为红色模块,传感器型号未知,其信号放大器型号为HX710B
// STC15W408AS 11.0592MHz 波特率9600,串口输出大气压强值
// STC15W408AS没有定时器1,所以用定时器2做波特率发生器
// 采用电脑USB供电会有很大的干扰,建议采用电池或者充电宝
#include "reg52.h"

#define Download_command 0xf1 //功能码

sfr AUXR = 0x8e;
sfr IAP_CONTR   =   0xC7;   //0000,x000 EEPROM控制寄存器
sfr T2H         =   0xD6;   //0000,0000 T2高字节
sfr T2L         =   0xD7;   //0000,0000 T2低字节

sbit HX710_SCK = P1^4;
sbit HX710_DT = P1^5;

long HX710_Buffer = 0;
long HX710_Sum =0;
unsigned char nn=0;
unsigned char FilterN=50; //平均数
unsigned char HX710_Flag=0;

unsigned int InitV=10900; //气压值的高5位有效数字(10进制),减少初次滤波误差
unsigned char FilterWin=60; //窗口长度
unsigned char nw=0;
unsigned int xdata HX710_Uint[60]; //与FilterWin数值一致
unsigned long HX710_SumUint =0;
unsigned int HX710_Data;


unsigned long HX710_Read(void);
//void Delay1Ms(void);
void Delay(void);
void Timer0Init(void);
void Init_Uart(void);
void Send(unsigned char dat);
void Show_Long(long num);
void Show_Pressure(long num);
void Show_Uint(unsigned int num);

void Uart(void)interrupt 4
{
    unsigned char dat;
    unsigned int ISP_i,ISP_j;

//    if(TI==1)
//    {
//        TI=0;
//    }
  if(RI==1)
    {
        dat=SBUF;
        RI=0;        
        SBUF=dat; //将串口接收到的数据再次发送出去            

        if(dat==Download_command)
        {
            for(ISP_j=500;ISP_j>0;ISP_j--)
              for(ISP_i=200;ISP_i>0;ISP_i--);
            IAP_CONTR =0x60;//软件复位,并从ISP监控程序区启动
        }
    }
}

void Timer0 (void) interrupt 1
{
    unsigned int temp;
    if(nn<FilterN){
      HX710_Sum=HX710_Sum+HX710_Read();    
        nn++;
    }
    else{
        HX710_Flag=1;
        HX710_Buffer=HX710_Sum/FilterN;
      HX710_Sum=0;
        nn=0;
        
    temp=HX710_Buffer/1000; //temp单位为10Pa
//        HX710_Data=temp;
        HX710_SumUint=HX710_SumUint-HX710_Uint[nw]+temp;
        HX710_Data=HX710_SumUint/FilterWin;    
        HX710_Uint[nw]=temp;        
        if(nw<(FilterWin-1))
            nw++;            
        else
            nw=0;            
    }

    TL0 = 0x33;        //设置定时初始值
    TH0 = 0x89;        //设置定时初始值
}

void InitData(void)
{
  unsigned char k;
    for(k=0;k<FilterWin;k++)
      HX710_Uint[k]=InitV;
    HX710_SumUint=(unsigned long)FilterWin*InitV; //注意:此处的数据类型强制转换不可以省略!!!    
}

void main()
{
//    unsigned int i;
    InitData();
  Timer0Init();
    Init_Uart();
  while(1){
        if(HX710_Flag==1){
//          Show_Long(HX710_Buffer);
            Show_Pressure(HX710_Buffer); //显示均值滤波
            Show_Uint(HX710_Data);  //显示均值滤波+滑窗滤波
            HX710_Flag=0;
        }
        
//      for(i=0;i<10;i++)
//          Delay();
//          Delay1Ms();
//      SBUF='Q';        
    }

}

完整代码打包:

51单片机读取气压水位传感器HX710B_HX710B-单片机文档类资源-CSDN下载气压模块为红色模块,传感器型号未知,其信号放大器型号为HX710B。所用单片机为STC15W408AHX710B更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/fengyuzhe13/85354856文章来源地址https://www.toymoban.com/news/detail-450447.html

到了这里,关于STC 51单片机54——气压水压计HX710B 串口显示均值滤波+滑窗滤波的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机(STC8) -- 开发环境搭建(Keil C51)

    STC8H3K系列芯片概述 文章中所用的芯片选型为STC8H3K64S4,后续STC8案例均以该芯片展开 内核 • 超高速 8051 内核(1T),比传统 8051 约快 12 倍以上,指令代码完全兼容传统8051 • 21个中断源,4 级中断优先级 • 支持在线仿真 工作电压 • 1.9V~5.5V 工作温度 • -40℃~85℃ Flash 存储

    2024年01月25日
    浏览(39)
  • 51单片机汽车胎压大气气压测量仪仿真设计_数码管显示(代码+仿真+设计报告+讲解)

    (代码+仿真+设计报告+讲解) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0018 本课程设计用MPX4115传感器来检测压力参数,ADC0832进行模数转换后,利用单片机AT89C52进行数据处理后,用四个八段数码管显示压力值。压力测量的量程在15.3KPA~114.9KPA,

    2024年02月08日
    浏览(33)
  • 51单片机(二)8051内核及STC89C52介绍

    我们现在经常使用的STC89C52RC单片机就是基于8051内核的,它是深圳宏晶科技生产的一款单片机,它与MCS-51兼容,下面开始介绍STC89C52RC单片机。 1. STC89C52RC的兼容型号         STC89C52RC兼容 STC89C51RC,STCLE51RC,STC89C53RC,STC89LE52RC等。 以下是完整型号列表: 我们平时用的stc89c52已经能

    2024年02月06日
    浏览(40)
  • STC89C51系列单片机与ADC0832通信

    ADC0832是一种常用的8位模数转换器,它可以将模拟信号转换为数字信号,以供单片机进行处理。STC89C51系列单片机是一款常见的8位单片机,具有强大的处理能力和丰富的外设资源,可以与ADC0832通信,实现模拟信号采集的功能。 本文将介绍如何使用STC89C51单片机与ADC0832通信,并

    2024年02月13日
    浏览(32)
  • STC51单片机学习9--DS18B20温度传感器

    DS18B20是Dallas半导体公司的一款数字温度传感器芯片; DS18B20是一款支持 1-wire总线接口的温度传感器; DS18B20能测量的温度范围-55℃--125℃,精度是±0.5℃; DS18B20可以将分辨率设定为9到12位; DS18B20的工作电压范围3--5.5V 单片机的P4.1引脚用来接DS18B20的数据引脚 以下是友台半导体

    2024年02月12日
    浏览(39)
  • 【STC89C52】学习51单片机的必备电子电路知识基础

    电子电路是学习51单片机的基础, 如果能把以下几个模块弄清楚学习51单片机就不成问题啦。 目录 1.电平 2.单片机IO口 3.电阻 4.电容  5.电路原理图 ​编辑 6.单片机最小系统结构  7.单片机工作的基本时序 单片机是一种数字集成芯片,数字电路中只有高电平和低电平。 单片

    2023年04月26日
    浏览(46)
  • 初学51单片机(STC89C52)一个倒计时显示器和大家分享

      想要实现倒计时显示器,首先得确定从哪个时间开始倒计时,这就需要写出一个计数的程序来,通过按键来控制需要的数,从而开始倒计时。我的开发板上用的Key2,Key3,Key4,Key5这四个键,分别对应着加1,减1,乘2,开始计时四个功能。   通过加一,减一,乘2三个操作,

    2024年02月10日
    浏览(41)
  • 【51单片机】STC-ISP软件保姆级烧录教程(以普中A2开发板为例)

            本章节实验到此已经完毕,考虑到大家的基础差异较大,刚接触51单片机的小伙伴可能对烧录过程有些困惑,作者便在篇末给大家提供保姆级烧录教程,帮助大家快速掌握单片机程序烧录技巧,希望对大家有所帮助! 本教程所需软件下载(win系统)         

    2023年04月08日
    浏览(42)
  • 免费开源51单片机个人课程设计--基于stc89c52及红外遥控的测温智能电风扇

    51单片机个人课程设计–基于stc89c52及红外遥控的测温智能电风扇 个人学校的课程设计-智能电风扇,包含proteus原理图与源代码。 代码部分由我个人写的也有普中实验中的代码块。 3.1 硬件设计 主要器件: 单片机 AT89C52 红外接收 HS0038 LCD1602 温度测量 DS18B20 驱动集成芯片 L298

    2023年04月10日
    浏览(46)
  • 51单片机STC15W4K56S4控制步进电机28BYJ-48正反转

    步进电机28BYJ-48(12V)介绍:       首先,我们看下步进电机28BYJ-48(12V)外观图,如下:         28BYJ-48(12V)含义如下:28表示电机直径28毫米,B表示电机 ,Y表示永磁,J表示带减速箱,48表示四相八拍。       下面解释下“4 相永磁式”的概念,28BYJ-48 的构造如下图所示

    2023年04月17日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包