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
STC 51单片机54——气压水压计HX710B 串口显示均值滤波+滑窗滤波相关推荐
- 单片机数码管显示自行车里程c语言,基于51单片机的自行车里程计速度计设计.doc...
信电学院课程设计报告 题目: 基于51单片机的自行车里程计/速度计设计 学生姓名 学 号 班 级 专 业 指导教师 说 明 1. 课程设计文本材料 2. 学生根据指导教师下达的任务书.指导书完成课程设 ...
- 利用51单片机+0.96寸iic接口oled显示图片或动图
利用51单片机+0.96寸iic接口oled显示图片或动图 前言:之前讲过如何使用oled显示数字以及字符,但并未讲述如何显示BMP格式的图片, 这篇将在之前的基础上加以封装一些函数用来显示图片 硬件 ...
- 基于51单片机的多路温度检测调节串口传输系统
本设计基于51单片机的多路温度检测调节串口传输系统(仿真+源码+视频讲解) 仿真:proteus8.9 程序编译器:keil 4 编程语言:C语言 编号C0009 [腾讯文档]C0009 网盘链接 资 ...
- 【031】基于51单片机的超声波倒车雷达系统(带温度显示补偿)Proteus仿真设计
一.压缩包资料内容 (1).基于51单片机的超声波倒车雷达系统(带温度显示补偿)系统proteus仿真设计一份: (2).基于51单片机的超声波倒车雷达系统(带温度显示补偿)系统proteus仿真设计 ...
- 基于51单片机驱动HC-SR04超声波模块(LCD1602显示)
基于51单片机驱动HC-SR04超声波模块(LCD1602显示) 一.基本参数 二.通信时序 三.部分代码展示 四.实际效果 总结 一.基本参数 点击图片购买 HC- SR04+是一款宽电压工作的超声 ...
- 两位数码管30秒倒计时c语言,基于51单片机共阴两位数码管显示倒计时
<基于51单片机共阴两位数码管显示倒计时>由会员分享,可在线阅读,更多相关<基于51单片机共阴两位数码管显示倒计时(2页珍藏版)>请在人人文库网上搜索. 1.基于51单片机共阴 ...
- 51单片机LCD1602 定时器时钟 实现年月日时分秒显示
实现功能:利用51单片机的定时器原理制作时钟,显示使用LCD1602,可以显示时分秒年月日和星期 ,识别平年闰年,按键可调整时间日期,整点报时. 1.定时器中断实现时钟基本原理 若系统晶振为12MHZ ...
- 基于51单片机的简易电子计算器——有温度显示和万年历等额外功能
基于51单片机的简易电子计算器--有温度显示和万年历等额外功能 设计实际所实现的功能 模式一可显示日期.时钟.温度,模式二可进行计算器的计算,且显示日期温度模式和计算器模式可随意切换,模式三可以滚动显 ...
- 51单片机4x4矩阵键盘扫描+数码管显示
51单片机4x4矩阵键盘扫描+数码管显示 个位闪烁感在这篇文章已经修复<51单片机4x4矩阵键盘扫描+数码管显示(二)(修bug篇)> 材料:AT89C52.2位数码管.74HC595. ...
最新文章
- python format 格式化字符串
- SCSI软件层对性能的影响
- ADODB.Connection 错误 '800a0e7a' 未找到提供程序。该程序可能未正确安装。解决办法...
- UML之构件图和部署图
- Tesla超越谷歌无人驾驶汽车雄心的背后,是以色列公司Mobileye
- 089_DOM节点动态创建、添加和删除
- 2021暑假每日一题 【week1 完结】
- uvalive5096(积分题)
- vuecli启动的服务器位置,VUE启动流程vue-cli
- 进销存中多计量单位解决方法
- 山东理工oj答案java_众数问题(山东理工OJ)
- 缺芯下的新造车“月考”成绩单来了!
- Python 按行读取文本文件 缓存 和 非缓存实现
- dataframe 查找特定值_C++初级编程NOIP题:11H1544: 查找特定的值
- 使用阿里云邮件推送服务群发邮件
- BIOS的全局变量gST gBS gDS
- mac被限制什么意思_苹果ip完美解决电脑ip被限制问题
- 科林明伦杯”哈尔滨理工大学第十届程序设计竞赛(同步赛)
- 2018年互联网技术岗(数据分析)暑期实习面试经验
- 使用百度网盘下载ed2k文件