请教一个非常工作中遇到困难和问题的问DS

给跪了:问个关于DS18B20的问题,显示85.0度,不变-电子产品世界论坛
给跪了:问个关于DS18B20的问题,显示85.0度,不变
以前用着DS18B20好好的,最近调试个STC89C52最小系统+74hc573+ds18b20+数码管,然后就出现了奇葩的问题,怎么都调试不好,面子完全挂不住了,ds18b20已经写了N套方案了,最长处的问题是显示85度(初始化温度),这个应该是温度转换的问题,12位精度转换需要750ms,然后有时候也会遇到其他奇葩问题,完全解决不了饿了,各位大神探讨一二,二楼贴上最近的一套驱动代码(郭天祥的ds驱动),大家看一看。
环境:STC89C52
DS18B20接P1^2
数码管(四位一体共阴极数码管)P3口位选:0x77,0x6f,0x5f,0x3f
段选:P2。
#include "reg52.h"
uchar unsigned char
unsigned int
sbit ds=P1^2;
//温度传感器信号线
uchar code table[]=
//不带小数点
0xfc,0x60,0xD9,0xf1,0x65,0xb5,0xbd,0xe0,0xfd,0xf5
unsigned char code table1[]=
//带小数点
0xfe,0x62,0xdb,0xf3,0x67,0xb7,0xbf,0xe2,0xff,0xf7
uchar code table2[]=
0x77,0x6f,0x5f,0x3f
void delay(uint z)//延时函数
for(x=z;x&0;x--)
for(y=110;y&0;y--);
void dsreset(void)
//18B20复位,初始化函数
while(i&0)i--;
while(i&0)i--;
bit tempreadbit(void)
//读1位函数
//i++ 起延时作用
ds=1;i++;i++;
i=8;while(i&0)i--;
return (dat);
uchar tempread(void)
//读1个字节
uchar i,j,
for(i=1;i&=8;i++)
j=tempreadbit();
dat=(j&&7)|(dat&&1);
//读出的数据最低位在最前面,这样刚好一个字节在DAT里
return(dat);
void tempwritebyte(uchar dat)
//向18B20写一个字节数据
for(j=1;j&=8;j++)
testb=dat&0x01;
dat=dat&&1;
i=8;while(i&0)i--;
i=8;while(i&0)i--;
void tempchange(void)
//DS18B20 开始获取温度并转换
dsreset();
tempwritebyte(0xcc);
// 写跳过读ROM指令
tempwritebyte(0x44);
// 写温度转换指令
uint get_temp()
//读取寄存器中存储的温度数据
uchar a,b;
dsreset();
tempwritebyte(0xcc);
tempwritebyte(0xbe);
a=tempread();
b=tempread();
//两个字节组合为1个字
temp=temp|a;
f_temp=temp*0.0625;
//温度在寄存器中为12位 分辨率位0.0625°
temp=f_temp*10+0.5;
//乘以10表示小数点后面只取1位,加0.5是四舍五入
f_temp=f_temp+0.05;
//temp是整型
////////////////////显示程序//////////////////////////
void display()
uchar ge,shi,
i=get_temp();
//temp=256;
bai=temp/100;
shi=temp%100/10;
ge=temp%100%10;
P2=table[bai];
P2=table1[shi];
P2=table[ge];
void main()
tempchange();
display();
积极讨论者送上5积分,解决问题的100积分送上
DS18B20的程序网上很多,找来试一下。
要不换个DS18B20试试。
说的是,换个硬件试试
给跪了,换了大概10来个了。1
其他没问题,再说这个硬件这么简单,程序小,问题奇葩。。。。。。。,
上拉加了没?
出现85度还有个可能性是时序没对
模拟1-wire的话,看看延时
应该是传感器坏了,换一个吧,我遇到过
用示波器,看18B20有没有响应主机的命令
匿名不能发帖!请先 [
Copyright (C) 《电子产品世界》杂志社 版权所有关于CST MWS和CST DS联合仿真有问题请教 - CST使用问答
易迪拓培训,专注于微波、射频、天线设计工程师的培养
关于CST MWS和CST DS联合仿真有问题请教
关于CST MWS和CST DS联合仿真有问题请教
看完该贴,感触颇深,该贴中在 DS下面只看了S参数的变化情况,如果我想看看在 DS环境下改变了某个电阻、电容、电感的值以后,想重新看看MWS环境中的方向图,增益有什么变化,怎么办呢??谢谢!!&网友回复:举个例子吧,说的更清楚一点就是下面的框图&&假如和功分器都在CST MWS中实现,而移相器在DS中实现,移相器涉及到电阻电容之类的器件,改变电阻电容,在DS中确实能得到相位的变化,但是我想观察这些相位的变化在有没有引起MWS中的天线的方向图,增益的变化。这些怎么实现呢?求解答网友回复:根据你说的,如下去做:&&在设置DS中的电阻、电感值的时候,采用参数化,然后设置好co-simulation with MWS。&&1、采用parameter sweep,选择观察后处理模板,在后处理模板设置好你关注的东西,然后开始仿真。&&2、直接仿真,然后把你关注的天线方向图切面增益图(或你关注的)复制到1D-result中,再仿真参数变化后的,再复制进去,看结果。网友回复:谢谢,我做个小的实验试试看是否可行!!网友回复:你说的parameter sweep是在DS环境里的还是在MWS里面的啊?&还有你的1、2两点是并列的吗?我试了一下,好像不怎么会设置,能在说的具体点吗?谢谢了,联合仿真还是第一次接触,好多东西不懂&还有co-simulation with MWS什么意思,需要设置什么东西吗网友回复:有没有大神指导一下啊,研究了好长时间还是不怎么会,我按照CST给的例程里面有一个联合调试的,但是必须把(天线)和(功分器、移相器)分两个单独的文件,在(功分器、移相器)的文件中调用(天线)的文件进行仿真,得到的结果不正确,不管我改不改电容的大小(改变相移量),最终的天线方向图都不变
申明:网友回复良莠不齐,仅供参考。如需专业解答,请学习易迪拓培训专家讲授的。
CST培训课程推荐
最全面、最专业的CST微波工作室视频培训课程,可以帮助您从零开始,全面系统学习CST的设计应用【】
微信公众号
扫描二维码关注我们的微信公众号
关注后首次购买本站课程可享受九折优惠
频道总排行

参考资料

 

随机推荐