如果再加上DS18B20送数码管 显示温度怎么做啊 谢谢了啊
可能是你刷新的太快,它没有完成一次转换而就被你读数了,以致于读出了错误的数;而下一次读时又是在它完成转换后的值,所以又正确了……你试着把刷新时间弄长一点试试,一般来说弄在2秒为佳
如果你采用动态扫描方式数码管闪烁说明你的刷新扫描时间太长,以致于人眼能感觉出闪烁。当然,如果你确认你的扫描时间没问题,那就要确认一下你在刷新显示的时候会不会被中断,如果被中断后会不会影响你显示时序等以及中断时间会不会太长。
如果你要通过中断来显示也行,只需用定时器定时,每隔一断时间(比如200ms)显示一下就OK了。当然,这里边会涉及到中断的优先级。不过具体情况还得具体分析哈。
没有你的硬件,用PROTEUS仿真了一个显示电路,见插图。
稍稍改了一下程序,显示效果不错,数值随着温度调整,可以发生变化。
……
temp = TMPH;
temp <<= 8;
temp = temp | TMPL;
tt = temp * 0.0625;
a = tt * 10000;
a = a + 1235; //加上了四位小数
//温度百位
P2 = 255; //先消隐
P0 = table1[a / 1000000];
P2 = 255 - 0x80; delayms(5); //延时5ms
//温度十位
P2 = 255; P0 = table1[a % 1000000 / 100000];
P2 = 255 - 0x40; delayms(5);
//温度个位,此位带小数点
P2 = 255; P0 = table2[a % 1000000 / 10000 % 10];
P2 = 255 - 0x20; delayms(5);
//温度十分位
P2 = 255; P0 = table1[a % 1000000 / 1000 % 10];
P2 = 255 - 0x10; delayms(5);
//温度百分位
P2 = 255; P0 = table1[ a % 1000000 / 100 % 10];
P2 = 255 - 8; delayms(5);
//温度千分位
P2 = 255; P0 = table1[a % 1000000 / 10 % 10];
P2 = 255 - 4; delayms(5);
//温度万分位
P2 = 255; P0 = table1[a % 1000000 % 10];
P2 = 255 - 2; delayms(5);
}
}
在写ds18b02时下到单片机中只有一个数码管亮,一个微亮,显示为5且数值...
显示数值是85吧 表示ds18b20读取数据,没有成功 只有一个数码管亮,一个微亮 这个是你,显示程序有问题。看看各部分的延时。肯定是一个延时长,一个延时短,要调一下
DS18b02温度传感器读字节问题
DQ应该是映射到端口上了。程序意思大体上就是把端口置1 4微秒再置04微秒,再置1 4微秒后。DQ将被压入一位,压入顺序是从低到高,一共8位。每位的读取间隔要66微秒。--- 那个us可能不是表示微秒,否则这个CPU就是100MHz的了|||
ds18b02的DPF中文资料
ATMEL公司还会提供中文版的说明书,DALLAS就不会了,还是看英文的吧!
51单片机DS18b02 的驱动程序求解释下,程序在下面,为什么程序中DQ=1...
unsigned char Read1302(void){ unsigned char i,dat;delaynus(2); \/\/稍微等待,使硬件做好准备 for(i=0;i<8;i++) \/\/连续读8个二进制位数据 { dat>>=1; \/\/将dat的各数据位右移1位,因为先读出的是字节的最低位 if(DATA==1) \/\/如果读出的数据是1 dat|=0x80; \/...
怎么样看DS18B02的时序图
读数据 1 将数据线拉到高电平 2 延时2微秒 3 将数据线拉低 4 延时6微秒 5 将数据线拉高 6 延是4微秒 7 读数据线的状态得到1个状态位,并进行数据处理 8 延时30微秒 9 重复以上步骤,直到发送完整个字节。
电子万年历
miao=0;\/\/秒超过59,再加1,就归零 write_sfm(0x08,miao);\/\/令LCD在正确位置显示"加"设定好的秒数 temp=(miao)\/10*16+(miao)%10;\/\/十进制转换...\/\/Init_DS18B20();\/\/温度传感器DS18b2初始化子函数,在头文件中 flag=ReadTemperature();\/\/将18b2头文件运行返回的函数结果送到变量FLAG中,用于显示 \/\/...
急求一个 DS18B2O感温 然后 at89c51单片机控制2267发射信号的程序 及...
不明白你的意思啊
口袋白金重甲暴龙金手指代码
8.再在金手指列表的金手指的小方块双击就行了9.要取消的话,对准你要删除的按第3个delete,然后关闭模拟器在重开就行了。注意:(1)按Add new,然后会出现个小窗口,小窗口有两个空白框,把你要用的金手指代码复制,然后粘贴在大的空白框里面,然后把Action Repldy DS、RAW这两个选项选上,而小的空白框,可以不管,...
口袋妖怪白金 汉化版金手指的问题(NDS)
我用的是ds上汉化版白金R4的金手指,我想改出凤凰、洛基亚、天空龙之类的神兽要选开哪项啊?开了之后...18B——钢帝企鹅18C——胖胖翁18D——卷毛翁18E——椋鹰18F——龅牙狸190——大海狸191——礼士...全树果 94000130 ffbb0000 62101140 00000000 b2101140 00000000 d5000000 03e60095 c0000000 000000...
192a硒鼓加12A粉可以不
全树果 94000130 FFBB0000 62101140 00000000 B2101140 00000000 D5000000 03E60095 C0000000 0000003F D6000000 00000C00 D4000000 00000001 D2000000 00000000 全邮件 94000130 FFBB0000 62101140 00000000 B2101140 00000000 D5000000 03E60089 C0000000 0000000B D6000000 00000B30 D4000000 00000001 D2000000 00000000 ...
雀届穗悦: 参考下吧! 18B20数字温度显示系统 综合实验:用18B20(数字温度采集)74LS47(数码管译码)74LS138(三八译码) DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125...
兴隆县18577222864: ad590温度测量电路用数码显示?
雀届穗悦: 用单片机+ADC转换后用数码管显示出来哦,或者用万用表也能直接测量输出电压显示出温度. 如果要测量温度的话一个DS18B20+单片机+加数码管也可以啊.简单多了.
兴隆县18577222864: 我现在写了DS18B20的c程序还有用定时器输出的PWM波程序,用数码管显示温度的,但是把它们组合在一起不行 - ?
雀届穗悦: 这是一定不行的,定时器写的pwm是会破坏18b20的时序的;如果时间允许序的话,即pwm高(低)电平时间大于读写18b20的时间;我建议你在每个pwm的高(低)电平的时候进行18b20的操作;若时间不允许的话,那么只能在定时器中加上18b20的读取时间了,这样将会很麻烦;以上仅供参考.希望你早日解决问题,谢谢
兴隆县18577222864: 做一个电子温度计ds18b20 led数码管 - ?
雀届穗悦: 用ds18b20必须有单片机,需要用单片机控制时序才能读出来,如果非要用74芯片搭一个,只想说等大神去做
兴隆县18577222864: 有没有人用PROTEUS仿真过DS18B20+数码管啊 - ?
雀届穗悦: 我仿真过,这个你要注意,你在ds18b20的程序中肯定有延迟函数,而这个延迟在软件仿真的时候和实际硬件肯定是有区别的,如果你把程序中的delay这样的延迟函数调整一下就应该可以成功了,不是说程序不加修改直接移植就可以成功. 还有,软仿真不出来,最好找出原因,不要一味地说不可靠.
兴隆县18577222864: 求一基于单片机的项目??? - ?
雀届穗悦: 基于单片机的万年历 (用DS1302 和DS18B20 ,可以显示年月日 周 时分秒 温度 ,可调) 基础的话可以从 蜂鸣器 、流水灯、数码管显示(静态和动态)、按键(独立按键和矩阵键盘)、LCD液晶显示、无线接收等一个一个小的模块学习,最后可以做一个综合的实验(万年历).
兴隆县18577222864: 求基于AT89S52单片机与4路DS18B20+LED显示的程序加原理图,下图是目前画出的原理图,不知对否,求大神帮忙 - ?
雀届穗悦: DS18B20的接法不正确,不过应该不会影响仿真效果.如果是做实物产品的话,DQ端要加4.7K的上位电阻.也可以使用总线式,一条线上接四个DS18B20..附件是一个8路的温度采集及其显示,还可以PC机通信.供参考. 很抱歉,回答者上传的附件已失效
兴隆县18577222864: 1602液晶怎么送数字 - ?
雀届穗悦: //1602液晶显示程序, TX-1B实验板上的1602LCD的R/W读写端接地, 即始终只写, 不读数据//使用1602LCD显示DS18B20转换的温度值#include <reg52.H>#include <intrins.H>#include <math.H>#define uchar unsigned char#define uint ...
兴隆县18577222864: 求助下DS1302,还有DS18B20的单片机数码管显示的程序?
雀届穗悦: 问题一:假设a(x)是写时间寄存器的函数,你编程的时候,是这样一个步骤:算好时间,写好a(13)、a(04)、a(08)代表2013、04、08.然后生成HEX写进单片机去.那么你校时的时候呢,搞另外一个函数,将13、04、08计算出来,然后调用a(x)不就写进去了么?问题二:数码管不是有位选么?将要闪烁的那个位选选中就好了嘛~~
兴隆县18577222864: 为什么数码管超过25显示就不对了 - ?
雀届穗悦: 1. 我没听懂“只能显示前25个数,超过25就从0开始重新循环到25” 是什么意思;2. P1=dispcode[abcd/100];qwei=0;delay(400);qwei=1;abcd=abcd%100 ;P1=dispcode[abcd/10];bwei=0;delay(400);bwei=1; 如果我没理解错,你这个是显示abcd=xianzhi_h;(湿度?)应该是默认<100;所以你程序中取百位、十位有没有问题啊?