资源简介
DS18B20单总线读取温度,不占用其它端口
代码片段和文件信息
/**********************BST-V51实验开发板例程************************
* 平台:BST-V51 + Keil U3 + STC89C52
* 名称:实时采集当前环境温度值,并显示于数码管上
* 公司:深圳市亚博软件开发有限公司
* 淘宝:bstmcu.taobao.com
* 日期:2012-8-14
* 晶振:11.0592MHZ
* 说明:免费开源,不提供源代码分析.
******************************************************************/
#include
#define uchar unsigned char
#define uint unsigned int
sbit DS=P2^2; //define interface
uint temp; // variable of temperature
uchar flag1; // sign of the result positive or negative
sbit dula=P2^6;
sbit wela=P2^7;
unsigned char code table[]={0x3f0x060x5b0x4f0x660x6d0x7d
0x070x7f0x6f0x770x7c0x390x5e0x790x71};
unsigned char code table1[]={0xbf0x860xdb0xcf0xe60xed0xfd
0x870xff0xef};
void delay(uint count) //delay
{
uint i;
while(count)
{
i=200;
while(i>0)
i--;
count--;
}
}
void dsreset(void) //send reset and initialization command
{
uint i;
DS=0;
i=103;
while(i>0)i--;
DS=1;
i=4;
while(i>0)i--;
}
bit tmpreadbit(void) //read a bit
{
uint i;
bit dat;
DS=0;i++; //i++ for delay
DS=1;i++;i++;
dat=DS;
i=8;while(i>0)i--;
return (dat);
}
uchar tmpread(void) //read a byte date
{
uchar ijdat;
dat=0;
for(i=1;i<=8;i++)
{
j=tmpreadbit();
dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT里
}
return(dat);
}
void tmpwritebyte(uchar dat) //write a byte to ds18b20
{
uint i;
uchar j;
bit testb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb) //write 1
{
DS=0;
i++;i++;
DS=1;
i=8;while(i>0)i--;
}
else
{
DS=0; //write 0
i=8;while(i>0)i--;
DS=1;
i++;i++;
}
}
}
void tmpchange(void) //DS18B20 begin change
{
dsreset();
delay(1);
tmpwritebyte(0xcc); // address all drivers on bus
tmpwritebyte(0x44); // initiates a single temperature conversion
}
uint tmp() //get the temperature
{
float tt;
uchar ab;
dsreset();
delay(1);
tmpwritebyte(0xcc);
tmpwritebyte(0xbe);
a=tmpread();
b=tmpread();
temp=b;
temp<<=8; //two byte compose a int variable
temp=temp|a;
tt=temp*0.0625;
temp=tt*10+0.5;
return temp;
}
void display(uint temp) //显示程序
{
uchar A1A2A2tA3;
A1=temp/100;
A2t=temp%100;
A2=A2t/10;
A3=A2t%10;
dula=0;
P0=table[A1]; //显示百位
dula=1;
dula=0;
wela=0;
P0=0xfe;
wela=1;
wela=0;
delay(1);
dula=0;
P0=table1[A2]; //显示十位
dula=1;
dula=0;
wela=0;
P0=0xfd;
wela=1;
wela=0;
delay(1);
dula=0;
P0=table[A3]; //显示个位
dula=1;
dula=0;
wela=0;
P0=0xfb;
wela=1;
wela=0;
delay(1);
}
void main()
{
uchar a;
do
{
tmpcha
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 8241 2015-10-12 18:50 【实验57】温度计DS18B20\18b20
文件 3200 2015-10-12 18:50 【实验57】温度计DS18B20\18b20.c
文件 3833 2015-10-12 18:50 【实验57】温度计DS18B20\18b20.hex
文件 27 2015-10-12 18:50 【实验57】温度计DS18B20\18b20.lnp
文件 6914 2015-10-12 18:50 【实验57】温度计DS18B20\18b20.LST
文件 12942 2015-10-12 18:50 【实验57】温度计DS18B20\18b20.M51
文件 8315 2015-10-12 18:50 【实验57】温度计DS18B20\18b20.OBJ
文件 976 2013-10-31 19:34 【实验57】温度计DS18B20\18b20.opt.bak
文件 484 2015-10-12 18:50 【实验57】温度计DS18B20\18b20.plg
文件 2138 2012-02-15 20:28 【实验57】温度计DS18B20\18b20.Uv2.bak
文件 55695 2015-10-12 19:35 【实验57】温度计DS18B20\18b20.uvopt
文件 13228 2015-10-12 19:35 【实验57】温度计DS18B20\18b20.uvproj
文件 983 2012-02-15 20:28 【实验57】温度计DS18B20\18b20_Opt.Bak
文件 2105 2010-06-29 12:56 【实验57】温度计DS18B20\18b20_Uv2.Bak
- 上一篇:宿舍管理系统需求分析报告
- 下一篇:TFCalc薄膜设计软件
相关资源
- ds18b20温度传感是什么传感器
- DS18B20_Serial_println.ino
- ds18b20测温例程tm4c123x
- STM32F103C8T6读取DS18B20串口显示程序.r
- DS18B20温度+DHT11湿度+LCD1602
- TM4C系列ds18b20温度传感器例程
- 读写ds18b20内部eeprom
- 基于FPGA的DS18B20单总线控制+数码管显
- STM32F103C8T6读取DS18B20串口显示程序
- STM32F103读取ds18b20温度传感器
- DS18B20-液晶1602显示温度和控制(代码
- 基于FPGA的LCD1602实时显示DS18b20温度
- 通过DS18B20检测环境温度,并在LCD128
- FPGA实现的DS18B20温度传感器
- stm32f407对ds18b20温度传感器数据的采集
- 基于zigbee的温度传感器DS18B20
- DS18B20 AT89C51 单片机 protus keil 温度传感
- FPGA综合系统设计二基于FPGA的温度采集
- 基于STC89C52和DS18B20的温控系统
- stm32f103 ds18b20
- 基于FPGA的DS18B20测温代码
- STM32驱动DS18B20库函数驱动
- ds18b20-mini2440驱动,测试程序,qt显示
- STM32 18B20完整程序
- STM32F103驱动ILI9341DS18B20RTCADCIRED
- 基于STM32C8t6实现的温度控制系统
- DS18B20无线多点温度采集系统的设计
- 基于STM32C8T6的按键温度双模式控制风
- 乐鑫Esp8266驱动 ds18b20、dht11 温湿度传
- 基于战舰STM32的1602液晶驱动程序+ds1
评论
共有 条评论