单片机--ds18b20

在这里插入图片描述
在这里插入图片描述
#include “reg52.h”
#include “absacc.h”
#include “onewire.h”

unsigned char code SMG_NoDot[18] = {0xc0,0xf9,0xa4,
0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x80,0xc6,
0xc0,0x86,0x8e,0xbf,0x7f};

unsigned char code SMG_IsDot[10] = {0x40,0x79,0x24,
0x30,0x19,0x12,0x02,0x78,0x00,0x10};

unsigned int T_dat;

void Delay(unsigned int t);
void DelaySMG(unsigned int t);
void DisplaySMG_Bit(unsigned char pos, unsigned char value);
void DisplaySMG_Temperature(unsigned int dat);
void Read_Temperature();

void main()
{
while(1)
{
Read_Temperature();
DisplaySMG_Temperature(T_dat);
}
}

void Delay(unsigned int t)
{
while(t–)
{
DisplaySMG_Temperature(T_dat);
}
}

void DelaySMG(unsigned int t)
{
while(t–);
}

void DisplaySMG_Bit(unsigned char pos, unsigned char value)
{
XBYTE[0xE000] = 0xff;
XBYTE[0xC000] = 0x01 << pos;
XBYTE[0xE000] = value;
}

void DisplaySMG_ALL(unsigned char value)
{
XBYTE[0xE000] = value;
XBYTE[0xC000] = 0xff;
}

void DisplaySMG_Temperature(unsigned int dat)
{
DisplaySMG_Bit(7, SMG_NoDot[dat%10]);
DelaySMG(100);
DisplaySMG_Bit(6, SMG_IsDot[(dat/10)%10]);
DelaySMG(100);
DisplaySMG_Bit(5, SMG_NoDot[(dat/100)%10]);
DelaySMG(100);

DisplaySMG_ALL(0xff);

}
void Read_Temperature()
{
unsigned char LSB,MSB ;

Init_DS18B20();			
Write_DS18B20(0xCC);			
Write_DS18B20(0x44);
Delay(1000);
Init_DS18B20();		
Write_DS18B20(0xCC);		
Write_DS18B20(0xBE);			
LSB = Read_DS18B20();		
MSB = Read_DS18B20();			
Init_DS18B20();		

T_dat = 0x0000;
T_dat = MSB;
T_dat <<= 8;
T_dat = T_dat | LSB;
//temp>>=4;
if((T_dat & 0xf800) == 0x0000)
{
	T_dat >>= 4;
	T_dat = T_dat*10;
	T_dat = T_dat + (LSB&0x0f)*0.625;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值