/*--------------------------------------------------*/
/* AVR-ARM开发网论坛 */
/* http://www.avrarm.com */
/* AVR生成代码测试程序 */
/*--------------------------------------------------*/
/* 程序由AVR辅助开发工具V2.1.0自动生成 */
/* AVR系统的处理器为: ATMega16 */
/* AVR系统的晶振频率: 8.0000 Mhz */
/*--------------------------------------------------*/
#include <iom16v.h>
#include <macros.h>
#include "ds18b20.h"
#include "delay.h"
unsigned char temp_buf[4];
/**********************************************************************
functionName: unsigned char resetDS18B20(void)
description :DS18B20初始化
**********************************************************************/
unsigned char resetDS18B20(void)
{
unsigned char errTime=0;
RLS_DS18B20; //释放总线
_NOP();
HLD_DS18B20; //Maga16控制总线
CLR_DS18B20; //强制拉低
delay_nus(480); //209.42us
//以上延时大于480us
RLS_DS18B20; //释放总线,总线自动上拉
_NOP();
while(STU_DS18B20)
{
delay_nus(6); //5.15us
errTime++;
if(errTime>20)
return(0x00); //如果等带大于约 5.15us*20就返回0x00,报告复位失败(实际上只要等待15-60us)
}
errTime=0;
while(!(STU_DS18B20))
{
delay_nus(6); //5.15us
errTime++;
if(errTime>50)
return(0x00); //如果等带大于约 5.15us*50就返回0x00,报告复位失败(实际上只要等待60-240us)
}
return(0xff);
}
/**********************************************************************
functionName: unsigned char readByteDS18B20(void)
description :读DS18B20一个字节
**********************************************************************/
unsigned char readByteDS18B20(void)
{
unsigned char i;
unsigned char retVal=0;
RLS_DS18B20; //释放总线
for(i=8;i>0;i--)
{
retVal>>=1;
HLD_DS18B20; //Maga16控制总线
CLR_DS18B20; //强制拉低
delay_nus(8); //延时大于1us
SET_DS18B20; //释放总线,DS18B20会将总线强制拉低
//delay_nus(8);
RLS_DS18B20; //释放总线
if(STU_DS18B20)
retVal|=0x80;
delay_nus(32); //31us
HLD_DS18B20; //释放总线
SET_DS18B20; //释放总线,DS18B20会将总线强制拉低
//delay_nus(30); //30.38us
}
delay_nus(5); //2.71us(大于1us就行了)
return(retVal);
}
/**********************************************************************
functionName: unsigned char readByteDS18B20(void)
description :写DS18B20一个字节
**********************************************************************/
void writeByteDS18B20(unsigned char wb)
{
unsigned char i;
unsigned char temp;
RLS_DS18B20; //释放总线
for(i=0;i<8;i++)
{
HLD_DS18B20; //Maga16控制总线
CLR_DS18B20; //强制拉低
delay_nus(4); //14.92us
//SET_DS18B20; //释放总线
//delay_nus(16); //14.92us
temp=wb>>i;
temp&=0x01;
if(temp)
SET_DS18B20; //释放总线
else
CLR_DS18B20; //强制拉低
delay_nus(50); //30.38us
//RLS_DS18B20; //释放总线
SET_DS18B20; //释放总线
delay_nus(4); //2.71us(大于1us就行了)
}
}
/**********************************************************************
functionName: unsigned int readTempDS18B20(void)
description :读DS18B20温度
**********************************************************************/
unsigned int readTempDS18B20(void)
{
unsigned char tempL,tempH;
unsigned int x;
//resetDS18B20();
//writeByteDS18B20(0xcc); //跳过ROM
//writeByteDS18B20(0x44); //启动温度转换
delay_nms(1); //等待1ms
resetDS18B20();
writeByteDS18B20(0xcc); //跳过ROM
writeByteDS18B20(0xbe); //读数据
tempL=readByteDS18B20();
tempH=readByteDS18B20();
x=(tempH<<8)|tempL;
resetDS18B20();
writeByteDS18B20(0xcc); //跳过ROM
writeByteDS18B20(0x44); //启动温度转换
return(x);
}
//压缩BCD码转换成ASCII码
void BCDtoASCII(unsigned char cBCD,unsigned char *pstr)
{
unsigned char i,j;
i=cBCD>>4;
j=cBCD&0x0F;
*pstr++=i+0x30;
*pstr=j+0x30;
}
//读取当前温度并解释
void Read_Temp(void)
{
unsigned int temp=0;
temp=readTempDS18B20();
BCDtoASCII((temp>>8)&0x0F,&temp_buf[0]);
BCDtoASCII((temp>>8)&0x0F,&temp_buf[1]);
BCDtoASCII((temp>>4)&0x0F,&temp_buf[2]);
BCDtoASCII(temp&0x0F,&temp_buf[3]);
}
没有合适的资源?快使用搜索试试~ 我知道了~
DS18B20程序+仿真(C语言源码系统仿真实例).rar
共14个文件
c:4个
h:3个
src:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 69 浏览量
2023-05-02
17:52:08
上传
评论
收藏 45KB RAR 举报
温馨提示
C语言源码系统仿真实例免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,本人不对所涉及的版权问题或内容负法律责任。如有侵权,请举报或通知本人删除。
资源推荐
资源详情
资源评论
收起资源包目录
DS18B20程序+仿真(C语言源码系统仿真实例).rar (14个子文件)
8、DS18B20程序+仿真
ds18b20.gif 22KB
test
test.SRC 97B
uart.h 1KB
ds18b20.h 889B
TEST.hex 4KB
ds18b20.c 4KB
delay.h 162B
test.prj 1KB
uart.c 2KB
delay.c 2KB
TEST.cof 7KB
main.c 2KB
ds18b20._c 4KB
1820.DSN 64KB
共 14 条
- 1
资源评论
荣华富贵8
- 粉丝: 210
- 资源: 7653
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于python实现的大麦抢票脚本README说明
- C++ Calculate CGPA and GPA 代码
- 2023-04-06-项目笔记 - 第三百零五阶段 - 4.4.2.303全局变量的作用域-303 -2025.11.02
- LabVIEW练习34,在一个波形表中显示三条随机数组成的曲线
- ch340串口驱动程序+2011版本
- bili-mac-v1.15.0.dmg
- 引入注意力机制的resnet鸟类识别
- 技术资料分享ZigBee网络管理实验例程手册非常好的技术资料.zip
- 技术资料分享Zigbee技术规范与协议栈分析非常好的技术资料.zip
- 技术资料分享zigbee各版本规范比较非常好的技术资料.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功