没有合适的资源?快使用搜索试试~ 我知道了~
C语言基于51单片机的DS18b20的温度报警系统
5星 · 超过95%的资源 需积分: 50 187 下载量 39 浏览量
2010-10-12
15:42:02
上传
评论 21
收藏 6KB TXT 举报
温馨提示
试读
9页
报警温度范围为全量程从-55到125度 是在做多点温度报警系统顺便写的 保证好使 用液晶1602显示并且能在软件上设置报警温度上下限
资源推荐
资源详情
资源评论
/**************************************************************************************
1.对于全局变量与局部变量的区分使用,对于有返回值的子函数如 init_1602()及init_18b20()
如果将其返回值设为全局变量在调用时也不能直接调用返回值flag或flag1read_temp()
因为会出现这两个子函数没有调用的警告;对于没有返回值的子函数如displaytemp()
定义的全局变量TH,TL适用于其他任意子函数并且所有的全局变量的值相同
2.对于设置的温度报警上下限AH,AL当设置在主函数即作为局部变量时不起作用 当写为
全局变量时就能很好的工作 原因是什么?
3.此程序能达到的报警温度为0到99摄氏度
**************************************************************************************/
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit rs=P1^0;
sbit rw=P1^1;
sbit en=P1^2;
sbit DQ=P1^7;
sbit beep=P1^6;
uchar dis[6]={0,0,0,0,0,0};
uchar code error[]=" DS18B20 error";
uchar code error1[]=" Please check";
uchar code explain[]="AT:AH: 26;AL: 24";
uchar code explain1[]="Ntemp: C";
uchar code num[]="0123456789";
uchar TH,TL,AH=28,AL=26;//注意这里是全局变量 对于任意子函数通用AH,AL为报警上下限自己设置
void delayms(uint z) //ms级别的延时用于一般的延时
{
uint x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
1.对于全局变量与局部变量的区分使用,对于有返回值的子函数如 init_1602()及init_18b20()
如果将其返回值设为全局变量在调用时也不能直接调用返回值flag或flag1read_temp()
因为会出现这两个子函数没有调用的警告;对于没有返回值的子函数如displaytemp()
定义的全局变量TH,TL适用于其他任意子函数并且所有的全局变量的值相同
2.对于设置的温度报警上下限AH,AL当设置在主函数即作为局部变量时不起作用 当写为
全局变量时就能很好的工作 原因是什么?
3.此程序能达到的报警温度为0到99摄氏度
**************************************************************************************/
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit rs=P1^0;
sbit rw=P1^1;
sbit en=P1^2;
sbit DQ=P1^7;
sbit beep=P1^6;
uchar dis[6]={0,0,0,0,0,0};
uchar code error[]=" DS18B20 error";
uchar code error1[]=" Please check";
uchar code explain[]="AT:AH: 26;AL: 24";
uchar code explain1[]="Ntemp: C";
uchar code num[]="0123456789";
uchar TH,TL,AH=28,AL=26;//注意这里是全局变量 对于任意子函数通用AH,AL为报警上下限自己设置
void delayms(uint z) //ms级别的延时用于一般的延时
{
uint x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
void delayus(uint i) //实现15(n+1)us的延时主要用于DS18B20使用
{
for(i;i>0;i--)
{
_nop_();_nop_();_nop_();_nop_();
}
_nop_();_nop_();
}
void buzzer() //蜂鸣器报警子函数
{
uchar y ;
for (y=0;y<30;y++)
{
delayms(60) ;
beep=~beep ;
}
beep=1 ;
}
bit busy_1602() //当1602处于读忙状态时数据的最后一位BF=1 将不接受任何指令必须等到BF=0
{
bit flag;
rs=0;
rw=1; //为读状态
en=1;
delayms(1);
flag=(bit)((P0&0x80)>>7);//强制类型转换
return flag;
}
void write_com(uchar com) //写指令
void delayus(uint i) //实现15(n+1)us的延时主要用于DS18B20使用
{
for(i;i>0;i--)
{
_nop_();_nop_();_nop_();_nop_();
}
_nop_();_nop_();
}
void buzzer() //蜂鸣器报警子函数
{
uchar y ;
for (y=0;y<30;y++)
{
delayms(60) ;
beep=~beep ;
}
beep=1 ;
}
bit busy_1602() //当1602处于读忙状态时数据的最后一位BF=1 将不接受任何指令必须等到BF=0
{
bit flag;
rs=0;
rw=1; //为读状态
en=1;
delayms(1);
flag=(bit)((P0&0x80)>>7);//强制类型转换
return flag;
}
void write_com(uchar com) //写指令
剩余8页未读,继续阅读
ybsh3682861
- 粉丝: 5
- 资源: 22
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页