基于89c51单片机数字温度计设计图和c语言程序,用DS18B20温度传感器和数码管。qq:609347745 10

 我来答
CYF0316
2012-05-31 · TA获得超过269个赞
知道小有建树答主
回答量:365
采纳率:100%
帮助的人:87.8万
展开全部

sbit DQ=P1^6; //采集温度数据线

unsigned char tflag;

unsigned int tive;

float temper;

/****************************************

函数功能:短暂延时

入口参数:num

出口参数:

*****************************************/

void delay(unsigned int num)

{

while(num--);

}

/****************************************

函数功能:DS18B20初始化

入口参数:

出口参数:

*****************************************/

void init_DS18B20(void)

{

//主机发送复位脉冲

DQ=1;

DQ=0;

delay(600); //x

DQ=1;

//等待DS18B20发送应答信号

delay(60); //防止DS18B20本身问题而读不出数据采用确认法

while(!DQ);

// delay(480); //DS18B20本身没有问题,可以延时将应答过程忽略

}

/****************************************

函数功能:读一个字节

入口参数:

出口参数:

*****************************************/

readchar(void) //从低位开始读

{

unsigned char i=0;

unsigned char dat=0;

for(i=0;i<8;i++)

{

DQ=1;

DQ=0;

delay(10);  //CPU缓冲时间  采样时间 

dat>>=1; //从高到低先存放一位数据

   DQ=1;

if(DQ) //如果是1,将数据存放

dat|=0x80;

DQ=1;

delay(9); //数据读取时间,下一次数据读取前需要延时

}

return(dat);

}

/****************************************

函数功能:写一个字节

入口参数:

出口参数:

*****************************************/

writechar(unsigned char dat)

{

unsigned char i=0;

for(i=0;i<8;i++)

{

DQ=1;

DQ=0; //等待接收缓冲区的来临,整个过程的时间为60~120us

delay(15); //

DQ=dat&0x01; //第一次写最低位,将字节变为位

delay(15); // 

dat>>=1;    //准备写入下一位数据。

}

}

/****************************************

函数功能:读取温度

入口参数:

出口参数:

*****************************************/

read_temperature(void)

{

unsigned int a,b;

init_DS18B20(); //初始化子程序

writechar(0xcc); //写入指令

writechar(0x44);

init_DS18B20();

writechar(0xcc);

writechar(0xbe);

a=readchar(); //低八位

b=readchar(); //高八位

tive=b;

tive<<=8;

tive=tive|a;

if(tive>0x0800)   //温度为负温度第13位到15为为1,温度为正温度   //第13位到15为为0,所以值小于0x800说明为正温度

tive=~tive+1;  

else

tive=tive;

temper=tive*0.0625;  //采用12位分辨率所以每次的增量是0.0625

temper=temper*10; //保留小数点后面一位

return(temper);  

}

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bd05c47
2012-05-31 · 超过10用户采纳过TA的回答
知道答主
回答量:51
采纳率:0%
帮助的人:30.5万
展开全部
汇编语言行么?这是我大三的课程设计。图是protel的。
追问
谢谢,必须是C语言的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sdlylshl9
2012-06-03 · TA获得超过1814个赞
知道小有建树答主
回答量:779
采纳率:75%
帮助的人:255万
展开全部
已加你Q
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式