云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 基于单片机的温湿度报警器设计

基于单片机的温湿度报警器设计

  • 62 次阅读
  • 3 次下载
  • 2025/6/17 10:27:47

基于单片机的温湿度监控报警系统设计

Write_byte(0xa1); Check_Ack(); temp=Read_byte(); SEND1(); IICStop();

return temp; }

void wrteeprom(unsigned char addr,unsigned char dat) { IICStart(); Write_byte(0xa0); Check_Ack(); Write_byte(addr); Check_Ack(); Write_byte(dat); Check_Ack(); IICStop(); }

#ifndef _2402_H_ #define _2402_H_ #include

sbit SCL = P1^0; //模拟I2C 总线的引脚定义

sbit SDA = P1^1; //定义2402在I2C总线协议中从机地址 void DELAY(unsigned int t); //延时函数 void IICStart(void); //I2C开始函数 void IICStop(void); //I2C结束函数 void Ack(void); //I2C应答函数 void NOAck(void); //I2C应答非函数 bit Check_Ack(void); //I2C应答检测函数 void SEND0(void); //I2C发送0函数

void SEND1(void); //I2C发送1函数 void Write_byte(unsigned char dat); //I2C发送字节函数 unsigned char Read_byte(void); //I2C读取字节函数

unsigned char rdeeprom(unsigned char addr); //读AT2402函数 void wrteeprom(unsigned char addr,unsigned char dat); //写AT2402函数

- 32 -

基于单片机的温湿度监控报警系统设计

#endif //_2402_H_ A1.3 DHT11传感器程序

#include \U8 U8FLAG,k;

U8 U8count,U8temp; U8

U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata; U8

U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp; U8 U8comdata;

U8 count, count_r=0; void Delay1(U16 j) { U8 i;

for(;j>0;j--)

{ for(i=0;i<27;i++); } }

void Delay_10us(void)

{ U8 i; i--; i--;

i--; i--; i--; i--; } void COM(void) { U8 i;

for(i=0;i<8;i++) { U8FLAG=2; while((!DATA)&&U8FLAG++); Delay_10us(); Delay_10us(); Delay_10us(); U8temp=0;

if(DATA)U8temp=1;

- 33 -

基于单片机的温湿度监控报警系统设计

U8FLAG=2;

while((DATA)&&U8FLAG++); //超时则跳出for循环 if(U8FLAG==1)break; //判断数据位是0还是1.如果高电平高过预定0高电平值则数据位为 1 U8comdata<<=1; U8comdata|=U8temp; } //0 }

//温湿度读取子程序 -以下变量均为全局变量

//温度高8位== U8T_data_H-温度低8位== U8T_data_L //湿度高8位== U8RH_data_H-湿度低8位== U8RH_data_L //校验 8位 == U8checkdata-调用相关子程序如下 U8 RH(void)

{ DATA=0; //主机拉低18ms Delay1(180); //原来为5 DATA=1;

Delay_10us(); //总线由上拉电阻拉高 主机延时20us Delay_10us(); Delay_10us(); Delay_10us();

DATA=1; //主机设为输入 判断从机响应信号 //判断从机是否有低电平响应信号,不响应跳出,响应则向下运行 if(!DATA) //T ! { U8FLAG=2; //判断从机是否发出 80us 的低电平响应信号是否结束 while((!DATA)&&U8FLAG++); U8FLAG=2; //判断从机是否发出 80us 的高电平,发出则进入数据接收状态 while((DATA)&&U8FLAG++);

COM(); //数据接收状态 U8RH_data_H_temp=U8comdata; COM();

U8RH_data_L_temp=U8comdata; COM();

- 34 -

基于单片机的温湿度监控报警系统设计

U8T_data_H_temp=U8comdata; COM();

U8T_data_L_temp=U8comdata; COM();

U8checkdata_temp=U8comdata;

DATA=1; //数据校验

U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp==U8checkdata_temp) { U8RH_data_H=U8RH_data_H_temp; }

U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; } return 1; }

else //传感器不响应 { return 0; }

A1.4 1602程序

/************该程序实现了对液晶1602的控制**************/ #include \#include \

void delay() //功能.延时,延时时间大概为140US。 { int i,j; for(i=0; i<=10; i++) for(j=0; j<=2; j++); } uchar Convert(uchar In_Date) { return In_Date; }

void enable(uchar del) //1602命令函数,输入的命令值 { P0 = Convert(del); RS = 0; RW = 0; E = 0; delay();

- 35 -

搜索更多关于: 基于单片机的温湿度报警器设计 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

基于单片机的温湿度监控报警系统设计 Write_byte(0xa1); Check_Ack(); temp=Read_byte(); SEND1(); IICStop(); return temp; } void wrteeprom(unsigned char addr,unsigned char dat) { IICStart(); Write_byte(0xa0); Check_Ack(); Write_byte(addr); Check_Ack(); Write_byte(dat); Check_Ack(); IICStop(); } #ifndef _2402_H_ #define _2402_H_ #include

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com