#include"Ds18b20.h"
uchar ds18b20_temp=0;
/*******************************************************************************
* 函 数 名 : Delay1ms
* 函数功能 : 延时函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Delay1ms(uint y)
{
uint x;
for( ; y>0; y--)
{
for(x=110; x>0; x--);
}
}
/*******************************************************************************
* 函 数 名 : Ds18b20Init
* 函数功能 : 初始化
* 输 入 : 无
* 输 出 : 初始化成功返回1,失败返回0
*******************************************************************************/
uchar Ds18b20Init()
{
uchar i;
DSPORT = 0; //将总线拉低480us~960us
i = 100;
while(i--);//延时642us
DSPORT = 1; //然后拉高总线,如果DS18B20做出反应会将在15us~60us后总线拉低
i = 0;
while(DSPORT) //等待DS18B20拉低总线
{
Delay1ms(1);
i++;
if(i>5)//等待>5MS
{
return 0;//初始化失败
}
}
return 1;//初始化成功
}
/*******************************************************************************
* 函 数 名 : Ds18b20WriteByte
* 函数功能 : 向18B20写入一个字节
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Ds18b20WriteByte(uchar dat)
{
uint i, j;
for(j=0; j<8; j++)
{
DSPORT = 0; //每写入一位数据之前先把总线拉低1us
i++;
DSPORT = dat & 0x01; //然后写入一个数据,从最低位开始
i=6;
while(i--); //延时68us,持续时间最少60us
DSPORT = 1; //然后释放总线,至少1us给总线恢复时间才能接着写入第二个数值
dat >>= 1;
}
}
/*******************************************************************************
* 函 数 名 : Ds18b20ReadByte
* 函数功能 : 读取一个字节
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
uchar Ds18b20ReadByte()
{
uchar byte, bi;
uint i, j;
for(j=8; j>0; j--)
{
DSPORT = 0;//先将总线拉低1us
i++;
DSPORT = 1;//然后释放总线
i++;
i++;//延时6us等待数据稳定
bi = DSPORT; //读取数据,从最低位开始读取
/*将byte左移一位,然后与上右移7位后的bi,注意移动之后移掉那位补0。*/
byte = (byte >> 1) | (bi << 7);
i = 4; //读取完之后等待48us再接着读取下一个数
while(i--);
}
return byte;
}
/*******************************************************************************
* 函 数 名 : Ds18b20ChangTemp
* 函数功能 : 让18b20开始转换温度
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Ds18b20ChangTemp()
{
Ds18b20Init();
Delay1ms(1);
Ds18b20WriteByte(0xcc); //跳过ROM操作命令
Ds18b20WriteByte(0x44); //温度转换命令
//Delay1ms(100); //等待转换成功,而如果你是一直刷着的话,就不用这个延时了
}
/*******************************************************************************
* 函 数 名 : Ds18b20ReadTempCom
* 函数功能 : 发送读取温度命令
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Ds18b20ReadTempCom()
{
Ds18b20Init();
Delay1ms(1);
Ds18b20WriteByte(0xcc); //跳过ROM操作命令
Ds18b20WriteByte(0xbe); //发送读取温度命令
}
/*******************************************************************************
* 函 数 名 : Ds18b20ReadTemp
* 函数功能 : 读取温度
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Ds18b20ReadTemp()
{
uchar temp = 0;
uchar tmh, tml;
Ds18b20ChangTemp(); //先写入转换命令
Ds18b20ReadTempCom(); //然后等待转换完后发送读取温度命令
tml = Ds18b20ReadByte(); //读取温度值共16位,先读低字节
tmh = Ds18b20ReadByte(); //再读高字节
temp = tmh;
temp <<= 4;
temp += (tml>>4);
ds18b20_temp=temp;
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本源码附带了仿真程序,采用Proteus7.8进行仿真,不低于这个版本的软件都能打开,亲测Proteus8完美运行,附带AD原理图可以进行pcb画板操作,适用于毕业设计,学习提升,资料齐全。 程序介绍: 车载防酒驾智能控制系统的设计 内容: 1、单片机控制系统单元设计; (含显示键盘电路等) 2、数据采集系统设计( A/D转换) ; (包括酒精浓度检测),( 选择台适的传感器) 3、信号处理电路设计; (包括信号的调理、采集和处理) 4、语音报警电路的设计(蜂鸣器报警就可以,超过20mg/100ML酒精浓度,汽车不能 火,蜂呜器报警) ; 5、达到过20mg/100ML酒精浓度,汽车不能点火控制电路的设计; 5、有关电源电路的设计, 要求电源电路220v交流电经过整流后5V。 主要内容: 本课题要求以用STC系列单片机为控制核心, 1实现根据温度变化自动调节风扇的转速,有利于散热。 2显示屏显示酒精浓度,超过20mg/100ML就报警。
资源推荐
资源详情
资源评论
收起资源包目录
基于51单片机的车载防酒驾系统设计+代码+原理图+仿真.zip (44个子文件)
基于51单片机的车载防酒驾系统设计+代码+原理图+仿真
程序
lcd1602.c 2KB
ADC0832.C 958B
lcd1602.LST 4KB
STARTUP.LST 14KB
ADC0832.LST 3KB
main_uvproj.bak 14KB
main.OBJ 5KB
Ds18b20.c 4KB
lcd1602.OBJ 4KB
STARTUP.A51 6KB
main.plg 430B
main.M51 20KB
Ds18b20.LST 8KB
main.LST 4KB
lcd1602.h 1KB
main.uvproj 14KB
Ds18b20.OBJ 6KB
main.lnp 89B
main.uvopt 58KB
STARTUP.OBJ 749B
Ds18b20.h 486B
ADC0832.h 435B
main.hex 3KB
main 17KB
ADC0832.OBJ 3KB
main.c 1KB
main_uvopt.bak 58KB
搜狗截图22年05月31日0334_4.png 183KB
元件清单.xlsx 10KB
流程图.bmp 1.05MB
搜狗截图22年05月31日0331_1.png 166KB
功能.png 35KB
原理图
__Previews
Sheet1.SchDocPreview 73KB
History
Sheet1.~(4).SchDoc.Zip 29KB
Sheet1.~(3).SchDoc.Zip 18KB
Sheet1.~(1).SchDoc.Zip 1KB
Sheet1.SchDoc 260KB
搜狗截图22年05月31日0332_2.png 241KB
搜狗截图22年05月31日0333_3.png 184KB
搜狗截图22年05月31日0334_5.png 3KB
ISIS仿真
仿真.PWI 1KB
ISIS.dmp 37KB
仿真.DSN 156KB
Last Loaded 仿真.DBK 167KB
共 44 条
- 1
资源评论
风和技术资料库
- 粉丝: 37
- 资源: 925
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功