#include "stc8.h"
#include "delay.h"
#include "def.h"
#include "ds18b20.h"
sbit DQ=P1^3; //ds18b20 端口
//DS18B20复位函数
void ow_reset(void)
{
DQ=1; //从高拉倒低
DQ=0;
delay4us(125); //>480 us 低电平复位信号
DQ=1;
delay4us(4); //>15us 的上升沿 15-60us高电平后 是60-240us 的应答信号
}
//等待DS18B20的回应
//返回1:未检测到DS18B20的存在
//返回0:存在
u8 ds18B20_check(void)
{
u8 retry=0; //检测计算变量
while (DQ&&retry<50)
{
retry++;
delay4us(1); //大概4us
};
if(retry>=100)return 1;
else retry=0;
while (!DQ&&retry<60) //保持240us的延时 完成整个的复位过程
{
retry++;
delay4us(1); //大概4us
};
if(retry>=60)return 1; //没有接到DS18B20应答
return 0; //接到应答
}
//初始化DS18B20 同时检测DS的存在
//返回1:不存在
//返回0:存在
u8 ds18b20_init(void)
{
u8 m;
ow_reset(); //复位总线
m=ds18B20_check(); //等等ds应答
return m;
}
//DS18B20写命令函数
//向1-WIRE 总线上写1个字节
//u8 val 要写入字节
//DS18B20手册最下面有时序图
void write_byte(u8 val)
{
u8 i,testb;
for(i=8;i>0;i--)
{
testb=val&0x01; //最低位移出
val=val>>1;
if(testb) //写1
{
DQ=0;
delay4us(1); //4us
DQ=1;
delay4us(15); //60us
}
else //写0
{
DQ=0;
delay4us(15); //60us
DQ=1;
delay4us(1); //4us
}
}
}
//DS18B20读1字节函数
//从总线上取1个字节
//返回值为读取字节值
//说明 一次1bit的读取最少需要60us 两次读取之间需要至少1us的恢复时间
// 单次读取1bit 总线拉低不能超过15us 然后马上拉高
u8 read_byte(void)
{
u8 i;
u8 value=0;
for(i=8;i>0;i--)
{
DQ=1;
value>>=1; //value=value>>1
DQ=0;
delay4us(2); //拉低4us
DQ=1; //拉高
delay4us(3); //拉高10us 准备接收总线当前数据
if(DQ)value|=0x80; //将当前数据值存入临时变量
delay4us(13); //50 us延时 完成一次读取的延时(一次读取最少60us)跳过1us的恢复时间
}
DQ=1;
return(value);
}
//读出温度函数
//返回为温度值 温度值为short变量 有正负
short read_temp() //short可以表示-32768~+32767
{
u8 TL,TH;
u8 temp;
short t;
ow_reset(); //总线复位
ds18B20_check(); //等待DS应答
write_byte(0xcc); //发命令
write_byte(0x44); //发转换命令
ow_reset(); //复位
ds18B20_check(); //等待DS应答
write_byte(0xcc); //发命令
write_byte(0xbe); //发送读温度命令
TL=read_byte(); //读温度值的低字节
TH=read_byte(); //读温度值的高字节
if(TH>7)
{
TH=~TH;
TL=~TL;
temp=0;//温度为负
}else temp=1;
t=TH;
t<<=8;
t+=TL; // 两字节合成一个整型变量。
if(temp==0)t+=1; //如果是负数需要补1 负数转正数是取反后加1
t=(float)t*0.625; //0.0625为12位温度采集的分辨率 t为采集的数值 这里扩大10倍提取小数点后一位
if(temp)return t;
else return -t;
}
没有合适的资源?快使用搜索试试~ 我知道了~
STC8A8K64S4A12单片机 DS18B20温度读取 串口监测输出 KEIL工程文件源码.zip
共30个文件
obj:5个
lst:5个
c:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 5 下载量 5 浏览量
2021-11-16
20:08:48
上传
评论 1
收藏 80KB ZIP 举报
温馨提示
STC8A8K64S4A12单片机 DS18B20温度读取 串口监测输出 KEIL工程文件源码 void main() { short temperature; //温度变量 UartInit(); //串口初始化 delay1ms(200); UartSendStr("DS18B20 read temperature\r\n"); while(1) { temperature=read_temp(); //读取温度值 if(temperature<0) //是负温度 UartSendByte('-'); UartSendByte(temperature/100%10+'0'); //串口温度显示 UartSendByte(temperature/10%10+'0'); UartSendByte('.'); UartSendByte(temperature%10+'0'); UartSendStr("\r\n"); delay1ms(500); } }
资源推荐
资源详情
资源评论
收起资源包目录
STC8A8K64S4A12单片机 DS18B20温度读取 串口监测输出 KEIL工程文件源码.zip (30个子文件)
STC8A8K64S4A12单片机 DS18B20温度读取 串口监测输出 KEIL工程文件源码
程序
delay
delay.c 390B
delay.h 144B
MAIN
main.hex 4KB
main.OBJ 21KB
main.lnp 89B
uart.lst 3KB
ds18b20.obj 23KB
main_uvproj.bak 14KB
main.c 2KB
main.uvopt 6KB
main.M51 18KB
ds18b20.lst 7KB
main.plg 56KB
main.LST 6KB
spi.__i 168B
uart.obj 22KB
spi.lst 3KB
delay.lst 2KB
main 70KB
delay.obj 5KB
main.uvproj 14KB
spi.obj 385B
main.uvgui_Administrator.bak 91KB
main_uvopt.bak 7KB
def.h 290B
main.uvgui.Administrator 70KB
HARDWARE
Uart
uart.h 360B
uart.c 852B
ds18b20
ds18b20.c 3KB
ds18b20.h 84B
共 30 条
- 1
资源评论
- redskyeee2022-10-07资源很实用,对我启发很大,有很好的参考价值,内容详细。
- m0_678296422023-06-06感谢资源主分享的资源解决了我当下的问题,非常有用的资源。
- max挖坑2022-04-30用户下载后在一定时间内未进行评价,系统默认好评。
- m0_522365462022-06-29用户下载后在一定时间内未进行评价,系统默认好评。
- cuitjxg2023-04-24感谢大佬,让我及时解决了当下的问题,解燃眉之急,必须支持!
SKCQTGZX
- 粉丝: 85
- 资源: 5820
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 全卷积网络基于voc2012数据集简单pytorch实现
- pycharm的一些介绍-用于更好的学习python
- 基于C++的程序设计大赛天梯赛L2答案(天梯赛)
- 基于python实现的三次样条插值和均值插值法实现
- Python语言教程2-python批量图片大小处理-多文件夹
- Python语言教程1-python批量图片重命名,将后缀某几个不想要的字去除
- Space Combat Kit 太空战斗套件Unity游戏开发插件资源unitypackage C#
- Universal Device Preview 通用设备预览Unity游戏开发插件资源unitypackage
- Paladin Anim Set 圣骑士动画集Unity游戏动作动画插件资源unitypackage
- 计算机财务管理期末考报表部分题目及答案.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功