#include "reg52.h"
#include "hs1101.h"
#define uchar unsigned char
//#define uint unsigned int
uchar tem0 , tem1;
uchar temp0 , temp1;
uint f=0; //初值
/****************************************************************************
* 名称: timer0()
* 功能: 定时器1,每50000us中断一次。
* 入口参数:
****************************************************************************/
void timer0() interrupt 1
{
EA =0;
TR0=0;
TR1=0;
TL0=0xFF; //重装值 定时50000us OX4BFFH
TH0=0x4B;
tem0 = TL1; //读数
tem1 = TH1;
TL1=0x00; //定时器1清零
TH1=0x00;
f=1; //作标注位
TR0=1;
TR1=1;
EA=1;
}
/****************************************************************************
* 名称: timer1()
* 功能: 计数器,用于计数将555输出的频率,以计数相对湿度。
* 入口参数:
****************************************************************************/
void timer1() interrupt 3 //T1中断,表示计数的频率溢出,超出了可测量的频率范围,显然在这里不可能。所以重新启动。
{
EA =0;
TR0=0;
TR1=0;
TL0=0x00; //重装值 定时50000us
TH0=0x4C;
TL1=0x00; //定时器1清零
TH1=0x00;
TR0=1;
TR1=1;
EA=1;
}
void Init_timer()
{
TMOD=0x51; //0101 0001 定时器0在模式1下工作16位定时器,定时方式 定时器1在模式1下工作16位计数器,T1负跳变加1
TL0=0x00; //定时器0初值 定时50000us
TH0=0x4C;
TL1=0x00; //定时器1清零
TH1=0x00;
ET0=1; //使能定时器0中断
ET1=1; //使能定时器1中断
EA=1; //使能总中断
TR0=1; //开始计时
TR1=1;
}
void tran()
{
f = tem1;
f = ( f<<8 ) | tem0;
f = f * 20; //这里f的值是最终读到的频率,不同频率对于不同相对湿度。
if(( 5623<= f)&&( f<=6852) )//相对湿度在有效范围内(0%--100%)
{
if(( 6734<f)&&( f<= 6852) )
{ temp0 = 0; temp1 =(6852 -f)*10/118; }
if( (6618<f)&&( f<= 6734) )
{ temp0 = 1; temp1 =(6734 -f)*10/116; }
if( (6503<f)&&( f<= 6618 ) )
{ temp0 = 2; temp1 =(6618 -f)*10/115; }
if( (6388<f)&&( f<= 6503 ) )
{ temp0 = 3; temp1 =(6503 -f)*10/115; }
if( (6271<f)&&( f<= 6388 ) )
{ temp0 = 4; temp1 =(6388 -f)*10/117; }
if( (6152<f)&&( f<= 6271 ) )
{ temp0 = 5; temp1 =(6271 -f)*10/119; }
if( (6029<f)&&( f<= 6152 ) )
{ temp0 = 6; temp1 =(6152 -f)*10/123; }
if( (5901<f)&&( f<= 6029 ) )
{ temp0 = 7;temp1 =(6029 -f)*10/128; }
if( (5766<f)&&( f<= 5901 ))
{ temp0 = 8; temp1 =(5901 -f)*10/135; }
if( (5623<f)&&(f<= 5766))
{ temp0 = 9; temp1 =(5766 -f)*10/143; }
}
else
{
temp0 = 0; temp1 = 0;
}
}
uchar Readhumidity(void)
{
uchar i,k;
uchar count;
Init_timer();
count = 0;
while(1)
{
for (i=0;i<200;i++)
for (k=0;k<200;k++); //延时
tran();
temp0 &= 0x0F;
temp1 &= 0x0F;
// temp0 = temp0 <<4;
// count=temp0 | temp1;
//Ddisp(count);
count=temp0*10+temp1;
return count;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
51单片机通过空气湿度传感器HS1101实现空气湿度数据采集软件源码,可供学习设计参 main() { unsigned int j ; uchar Temp; while(1) { Temp=Readhumidity(); if(Temp/100==0) TempData[0]=0; else TempData[0]=dofly_DuanMa[Temp/100]; //百位温度 if((Temp/100==0)&&((Temp%100)/10==0))//消隐 TempData[1]=0; else TempData[1]=dofly_DuanMa[(Temp%100)/10]; //十位温度 TempData[2]=dofly_DuanMa[(Temp%100)%10]; //个位温度,带小数点 TempData[3]=0x76; for(j=0;j<50000;j++) { Display(0,6); } } } void Disp
资源推荐
资源详情
资源评论
收起资源包目录
51单片机通过空气湿度传感器HS1101实现空气湿度数据采集软件源码.zip (16个子文件)
51单片机通过空气湿度传感器HS1101实现空气湿度数据采集
HS1101.LST 6KB
main.OBJ 3KB
HS1101.hex 4KB
HS1101 9KB
HS1101_uvproj.bak 13KB
main.c 1KB
main.LST 3KB
HS1101.c 3KB
HS1101.uvproj 13KB
HS1101.h 197B
HS1101_uvopt.bak 55KB
HS1101.plg 653B
HS1101.M51 12KB
HS1101.OBJ 7KB
HS1101.uvopt 55KB
HS1101.lnp 42B
共 16 条
- 1
SKCQTGZX
- 粉丝: 127
- 资源: 4768
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 学校课程软件工程常见10道题目以及答案demo
- javaweb新手开发中常见的目录结构讲解
- 新手小白的git使用的手册入门学习demo
- 基于Java观察者模式的info-express多对多广播通信框架设计源码
- 利用python爬取豆瓣电影评分简单案例demo
- 机器人开发中常见的几道问题以及答案demo
- 基于SpringBoot和layuimini的简洁美观后台权限管理系统设计源码
- 实验报告五六代码.zip
- hdw-dubbo-ui基于vue、element-ui构建开发,实现后台管理前端功能.zip
- (Grafana + Zabbix + ASP.NET Core 2.1 + ECharts + Dapper + Swagger + layuiAdmin)基于角色授权的权限体系.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页