找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

高手帮我看下这个ds18b20程序

[复制链接]
admin 发表于 2012-9-2 19:39:22 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
下面这个程序是我刚写的,不知道怎么回事,数码管上总显示000.0C
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit DQ=P1^3;
sbit led=P1^0;
uchar flag_get;
uchar str[7];

uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void delay_9us(uchar x)
{
while(x--);
}
void init_18b20(void)
{
DQ=0;
delay_9us(60);
DQ=1;
delay_9us(4);
if(DQ)
led=0;
}

void write_char(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
DQ=0;
delay_9us(2);
DQ=dat&0x01;
delay_9us(5);
DQ=1;
dat>>=1;
}
// delay_6us(5);
}

uchar read_char()
{
uchar dat,i;
for(i=0;i<8;i++)
{
DQ=0;
_nop_();
_nop_();
dat>>=1;
if(DQ)
dat|=0x80;
delay_9us(5);
DQ=1;
_nop_();
_nop_();

}
return(dat);
}

uint read_temperture()
{
float tt;
uchar templ;
uint bb,aa,temph;
init_18b20();
write_char(0xcc);
write_char(0x44);
delay_9us(150);
init_18b20();
write_char(0xcc);
write_char(0xbe);
templ=read_char();
temph=read_char();
temph<<=8;
aa=temph|templ;
// aa=257;
tt=aa*0.0625;
bb=tt*10+0.5;
return(bb);
}

void time0(void) interrupt 1 //中断,用于数码管扫描和温度检测间隔
{
uchar num,count;
TH0=0xef; //定时器重装值
TL0=0xf0;
num++;
if (num==50)
{
num=0;
flag_get=1;
}
count++;
if(count==1) //数码管扫描
{
P2=0;
P0=str[0];
}
if(count==2)
{
P2=1;
P0=str[1];
}
if(count==3)
{
P2=2;
P0=str[2];
}
if(count==4)
{
P2=3;
P0=str[3];
}
if(count==5)
{
P2=4;
P0=str[4];
}
if(count==6)
{
P2=5;
P0=str[5];
count=0;
}
}
void main()
{
uint temp;
TMOD|=0x01;//定时器设置
TH0=0xef;
TL0=0xf0;
IE=0x82;
TR0=1;
while(1)
{
if(flag_get==1) //定时读取当前温度
{
flag_get=0;
temp=read_temperture();
if(temp&0x8000)
{
str[0]=0x40;//负号标志
temp=~temp; // 取反加1
temp +=1;
}
else
str[0]=0;
str[1]=tab[temp/1000]; //百位温度
str[2]=tab[(temp%1000)/100]; //十位温度
str[3]=tab[((temp%1000)%100)/10]|0x80; //个位温度,带小数点
str[4]=tab[(((temp%1000)%100)%10)];//十分位
str[5]=0x39; //显示C符号
}
}
}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-29 07:53 , Processed in 0.049680 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表