资源简介
ds18b20.zip

代码片段和文件信息
#include
//通过DS18B20测试当前环境温度 并通过数码管显示当前温度值
sbit wela = P2^1; //数码管位选
sbit dula = P2^0; //数码管段选
sbit ds = P2^2;
//0-F数码管的编码(共阴极)
unsigned char code table[]={0x3f0x060x5b0x4f0x66
0x6d0x7d0x070x7f0x6f0x630x390x770x7c0x390x5e0x790x71};
//0-9数码管的编码(共阴极) 带小数点
unsigned char code tableWidthDot[]={0xbf 0x86 0xdb 0xcf 0xe6 0xed 0xfd
0x87 0xff 0xef};
//延时函数 例i=10则大概延时10ms.
void delay(unsigned char i)
{
unsigned char j k;
for(j = i; j > 0; j--)
{
for(k = 125; k > 0; k--);
}
}
//初始化DS18B20
//让DS18B20一段相对长时间低电平 然后一段相对非常短时间高电平 即可启动
void dsInit()
{
//一定要使用unsigned int型 一个i++指令的时间 作为与DS18B20通信的小时间间隔
//以下都是一样使用unsigned int型
unsigned int i;
ds = 0;
i = 103;
while(i>0) i--;
ds = 1;
i = 4;
while(i>0) i--;
}
//向DS18B20读取一位数据
//读一位 让DS18B20一小周期低电平 然后两小周期高电平
//之后DS18B20则会输出持续一段时间的一位数据
bit readBit()
{
unsigned int i;
bit b;
ds = 0;
i++;
ds = 1;
i++; i++;
b = ds;
i = 8;
while(i>0) i--;
return b;
}
//读取一字节数据 通过调用readBit()来实现
unsigned char readByte()
{
unsigned int i;
unsigned char j dat;
dat = 0;
for(i=0; i<8; i++)
{
j = readBit();
//最先读出的是最低位数据
dat = (j << 7) | (dat >> 1);
}
return dat;
}
//向DS18B20写入一字节数据
void writeByte(unsigned char dat)
{
unsigned int i;
unsigned char j;
bit b;
for(j = 0; j < 8; j++)
{
b = dat & 0x01;
dat >>= 1;
//写“1“ 让低电平持续2个小延时 高电平持续8个小延时
if(b)
{
ds = 0;
i++; i++;
ds = 1;
i = 8; while(i>0) i--;
}
else //写“0“ 让低电平持续8个小延时 高电平持续2个小延时
{
ds = 0;
i = 8; while(i>0) i--;
ds = 1;
i++; i++;
}
}
}
//向DS18B20发送温度转换命令
void sendChangeCmd()
{
dsInit(); //初始化DS18B20
delay(1); //延时1ms
writeByte(0xcc); //写入跳过序列号命令字
writeByte(0x44); //写入温度转换命令字
}
//向DS18B20发送读取数据命令
void sendReadCmd()
{
dsInit();
delay(1);
writeByte(0xcc); //写入跳过序列号命令字
writeByte(0xbe); //写入读取数据令字
}
//获取当前温度值
unsigned int getTmpValue()
{
unsigned int value; //存放温度数值
float t;
unsigned char low high;
sendReadCmd();
//连续读取两个字节数据
low = readByte();
high = readByte();
//将高低两个字节合成一个整形变量
value = high;
value <<= 8;
value |= low;
//DS18B20的精确度为0.0625度 即读回数据的最低位代表0.0625度
t = value * 0.0625;
//将它放大10倍 使显示时可显示小数点后一位 并对小数点后第二2进行4舍5入
//如t=11.0625 进行计数后 得到value = 111 即11.1 度
value = t * 10 + 0.5;
retu
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-11-15 15:38 ds18b20\
文件 123853 2015-04-07 17:19 ds18b20\DS18B20 (0-99).DSN
文件 1054 2015-04-08 09:29 ds18b20\DS18B20 (0-99).PWI
文件 123854 2015-04-07 17:17 ds18b20\Last Loaded DS18B20 (0-99).DBK
文件 6376 2009-05-07 14:37 ds18b20\STARTUP.A51
文件 14048 2015-04-08 16:41 ds18b20\STARTUP.LST
文件 749 2015-04-08 16:41 ds18b20\STARTUP.OBJ
目录 0 2016-11-16 08:41 ds18b20\仿真\
文件 124959 2016-09-29 16:13 ds18b20\仿真\DS18B20 (-55~125).DSN
文件 1340 2016-10-28 10:16 ds18b20\仿真\DS18B20 (-55~125).PWI
文件 124950 2016-09-29 16:05 ds18b20\仿真\Last Loaded DS18B20 (-55~125).DBK
文件 6376 2009-05-07 14:37 ds18b20\仿真\STARTUP.A51
文件 14048 2016-09-29 16:27 ds18b20\仿真\STARTUP.LST
文件 749 2016-09-29 16:27 ds18b20\仿真\STARTUP.OBJ
目录 0 2016-11-16 08:41 ds18b20\仿真\温度显示lcd1602\
文件 123878 2016-09-28 14:46 ds18b20\仿真\温度显示lcd1602\Last Loaded 温度显示LCD1602.DBK
文件 13096 2016-09-29 11:45 ds18b20\仿真\温度显示lcd1602\温度显示lcd1602
文件 4809 2016-09-29 11:45 ds18b20\仿真\温度显示lcd1602\温度显示lcd1602.c
文件 123995 2016-09-28 15:13 ds18b20\仿真\温度显示lcd1602\温度显示LCD1602.DSN
文件 4336 2016-09-29 11:45 ds18b20\仿真\温度显示lcd1602\温度显示lcd1602.hex
文件 47 2016-09-29 11:45 ds18b20\仿真\温度显示lcd1602\温度显示lcd1602.lnp
文件 10435 2016-09-29 11:45 ds18b20\仿真\温度显示lcd1602\温度显示lcd1602.LST
文件 17385 2016-09-29 11:45 ds18b20\仿真\温度显示lcd1602\温度显示lcd1602.M51
文件 14923 2016-09-29 11:45 ds18b20\仿真\温度显示lcd1602\温度显示lcd1602.OBJ
文件 178 2016-11-15 15:25 ds18b20\仿真\温度显示lcd1602\温度显示lcd1602.plg
文件 1340 2016-11-15 15:27 ds18b20\仿真\温度显示lcd1602\温度显示LCD1602.PWI
文件 55255 2016-11-16 08:41 ds18b20\仿真\温度显示lcd1602\温度显示lcd1602.uvopt
文件 13268 2016-09-28 16:34 ds18b20\仿真\温度显示lcd1602\温度显示lcd1602.uvproj
文件 55257 2016-09-29 15:43 ds18b20\仿真\温度显示lcd1602\温度显示lcd1602_uvopt.bak
文件 0 2016-09-28 15:03 ds18b20\仿真\温度显示lcd1602\温度显示lcd1602_uvproj.bak
文件 13309 2016-09-29 16:27 ds18b20\仿真\温控-55~125
............此处省略43个文件信息
相关资源
- vspd7.2.308.zip
- 价值2k的H漫画小说系统
- Pythonamp;课堂amp;笔记(高淇amp;400;集第
- ddos压力测试工具99657
- UML建模大全
- 开源1A锂电池充电板TP4056原理图+PCB
- m1卡 ic卡可选择扇区初始化加密软件
- TSCC.exe
- FTP课程设计(服务端+客户端)
- 计算机图形学 边填充算法实现代码
- 电力系统潮流计算程序集合
- oracle数据迁移项目实施方案
- Web Api 通过文件流 文件到本地
- Visio图标-最新最全的网络通信图标库
- Spire API文档
- OpenGL参考手册
- Python中Numpy库最新教程
- SPD博士V5.3.exe
- 直流无刷电机方波驱动 stm32 例程代码
- layui后台管理模板
- 仿知乎界面小程序源代码
- 云平台-阿里云详细介绍
- photoshop经典1000例
- scratch垃圾分类源码(最终版本).sb
- IAR ARM 7.8破解
- TI CCS V5.4 安装步骤及破解文件
- 松下plc FP-XH的驱动
- 局域网硬件信息收集工具
- 加快Windows XP操作系统开机速度
- 联想启天M4350 BIOS升级文件
评论
共有 条评论