资源简介
2线DS18B20程序
代码片段和文件信息
//*************DS18B20寄生供电模式程序开始*******************/
//数据口P3.6强上拉口P3.7,系统时钟3.2768MHz
//*******************************************************/
#include
#define uint unsigned int
#define uchar unsigned char
uchar BIT_Array[8]={BIT0BIT1BIT2BIT3BIT4BIT5BIT6BIT7};
uchar flag;//判断复位是否成功
uchar sunx;//温度值
//******************声明引用的子函数*********************/
uchar Read_DQ(uchar num);//设置IO口为输入模式
void Set_DQ(uchar numuchar dat);//设置IO口为输出模式
void delay(uint count);//延时函数
uchar ReadOneChar(void);//读一个字节
void WriteOneChar(uchar dat);//写一个字节
void Init_DS18B20(void);//复位
void tmpchange(void);//启动温度转换
uchar ReadTemperature(void);//读取温度值
//****************启动DS18B20进行温度转换****************/
void tmpchange(void)
{
Init_DS18B20();
if(flag==1)//判断复位是否成功
{
delay(1);
WriteOneChar(0xCC); // 跳过读序号列号的操作
WriteOneChar(0x44); // 启动温度转换
Set_DQ(70); //强上拉使能P3.7
}
}
//********************从18b20读取温度值******************/
//定义P3.6为DQ口。DQ表示与18b20相连的io口;
uchar ReadTemperature(void)
{
uchar aa=0;
uchar bb=0;
uint t=0;
uint tt=0;
Set_DQ(71); //强上拉关闭P3.7
Init_DS18B20();
delay(5);
if(flag==1)//判断复位是否成功
{
delay(1);
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
aa=ReadOneChar();
bb=ReadOneChar();
Init_DS18B20();
delay(5);
t=bb;
t<<=8;
t=t|aa;
tt=t*0.0625;
return(tt);
}
else
return(0);
}
//***********************延时函数***********************/
void delay(uint count)
{
while(count--);
}
/*--------初始化18b20------*/
//内部的具体延时时间需要调整,因为晶振频率不同;
void Init_DS18B20(void)
{
uchar x=0;
Set_DQ(61); //DQ复位
delay(5); //稍做延时
Set_DQ(60); //单片机将DQ拉低
delay(400); //480us--960us
Set_DQ(61); //拉高总线
delay(40); //大于60us
x=Read_DQ(6); //如果x=0则初始化成功 x=1则初始化失败
if(x==0)
{
flag=1;
Set_DQ(61);
delay(300);
}
else
{
flag=0;
Set_DQ(61);
delay(300);
}
}
//**********************读一个字节**********************/
uchar ReadOneChar(void)
{
uchar i=0;
uchar j=0;
uchar dat = 0;
for (i=8;i>0;i--)
{
Set_DQ(61);
delay(1);
相关资源
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- E4A无障碍跨程序操作类库(带源码、
- labview魔方程序
- 程序员专用字体YaHei.Consolas.1.11b42517
- scratch3.0 源程序(说相声)
- 欧姆龙CP1系列单轴定位PLC程序.cxp
- SVR算法程序可运行
- labview编程软件滤波器以及编写程序设
- 电力系统潮流计算程序集合
- 仿知乎界面小程序源代码
- STM32蓝牙和串口程序
- elantech触控板驱动程序 v13.6.11 官方最
- 根据硬件ID和程序ID生成注册码
- 用python编写的移动彩信的发送程序
- TCL-S1916 ,1924交换机管理程序
- 51单片机PWM程序,占空比、周期可调整
- 嵌入式图形界面MiniGUI的示例程序9例
- 数字频率合成dds正弦波基于FPGA的DDS产
- 28335CAN调试程序
- 导线测量平差程序 很实用
- USB转串口驱动,FT232R驱动程序,最新
- 改进的BP神经网络算法
- 通风网络解算程序 fortran90
- 编写简单的RMI程序 多线程web 服务器
- 图论软件包(图论里的程序)
- A星算法_原理讲解_例子
- MFC程序-碰撞的小球
- 德卡D3读卡器测试程序驱动文件
- Auto CAD_LISP程序集
评论
共有 条评论