问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

我想用FPGA数码管显示DS18B20测量的信息。引脚怎么连接啊?

发布网友 发布时间:2022-05-27 02:10

我来回答

2个回答

热心网友 时间:2024-03-19 03:46

可以的。

上面是我做的FPGA读取DS18B20的实例。

 

DS18B20用FPGA控制有点麻烦,因为FPGA的时序处理复杂。所以你要严格遵守DS18B20的时序图,按上面标明的时序进行处理。

祝你成功!

追问朋友,能给个VHDL代码吗?

热心网友 时间:2024-03-19 03:47

有一中四个数码管连在一起的 但只有十二个脚的 很好用
我有它的资料给你看下
单总线温度传感器DS18B20简介
DS18B20是DALLAS公司生产的单总线式数字温度传感器,它具有微型化、低功耗、高性能、搞干扰能力强、易配处理器等优点,特别适用于构成多点温度测控系统,可直接将温度转化成串行数字信号(提供9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片。它具有3引脚TO-92小体积封装形式,温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可采用寄生电源方式产生,多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。
DS18B20外形及引脚说明
外形及引脚如图2所示:

图2 管脚排列图
在TO-92和SO-8的封装中引脚有所不同,具体差别请查阅PDF手册,在TO-92封装中引脚分配如下:
1(GND):地
2(DQ):单线运用的数据输入输出引脚
3(VDD):可选的电源引脚
DS18B20工作过程及时序
DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。
高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。
初始时,温度寄存器被预置成-55℃,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1℃,这个过程重复进行,直到计数器2计数到0时便停止。
初始时,计数器1预置的是与-55℃相对应的一个预置值。以后计数器1每一个循环的预置数都由斜率累加器提供。为了补偿振荡器温度特性的非线性性,斜率累加器提供的预置数也随温度相应变化。计数器1的预置数也就是在给定温度处使温度寄存器寄存值增加1℃计数器所需要的计数个数。
DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。在计数器2停止计数后,比较器将计数器1中的计数剩余值转换为温度值后与0.25℃进行比较,若低于0.25℃,温度寄存器的最低位就置0;若高于0.25℃,最低位就置1;若高于0.75℃时,温度寄存器的最低位就进位然后置0。这样,经过比较后所得的温度寄存器的值就是最终读取的温度值了,其最后位代表0.5℃,四舍五入最大量化误差为±1/2LSB,即0.25℃。
温度寄存器中的温度值以9位数据格式表示,最高位为符号位,其余8位以二进制补码形式表示温度值。测温结束时,这9位数据转存到暂存存储器的前两个字节中,符号位占用第一字节,8位温度数据占据第二字节。
DS18B20测量温度时使用特有的温度测量技术。DS18B20内部的低温度系数振荡器能产生稳定的频率信号;同样的,高温度系数振荡器则将被测温度转换成频率信号。当计数门打开时,DS18B20进行计数,计数门开通时间由高温度系数振荡器决定。芯片内部还有斜率累加器,可对频率的非线性度加以补偿。测量结果存入温度寄存器中。一般情况下的温度值应该为9位,但因符号位扩展成高8位,所以最后以16位补码形式读出。
DS18B20工作过程一般遵循以下协议:初始化——ROM操作命令——存储器操作命令——处理数据
① 初始化
单总线上的所有处理均从初始化序列开始。初始化序列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉冲。存在脉冲让总线控制器知道DS1820 在总线上且已准备好操作。
② ROM操作命令
一旦总线主机检测到从属器件的存在,它便可以发出器件ROM操作命令之一。所有ROM操作命令均为8位长。这些命令列表如下:
Read ROM(读ROM)[33h]
此命令允许总线主机读DS18B20的8位产品系列编码,唯一的48位序列号,以及8位的CRC。此命令只能在总线上仅有一个DS18B20的情况下可以使用。如果总线上存在多于一个的从属器件,那么当所有从片企图同时发送时将发生数据冲突的现象(漏极开路会产生线与的结果)。
Match ROM( 符合ROM)[55h]
此命令后继以64位的ROM数据序列,允许总线主机对多点总线上特定的DS18B20寻址。只有与64位ROM序列严格相符的DS18B20才能对后继的存贮器操作命令作出响应。所有与64位ROM序列不符的从片将等待复位脉冲。此命令在总线上有单个或多个器件的情况下均可使用。
Skip ROM( 跳过ROM )[CCh]
在单点总线系统中,此命令通过允许总线主机不提供64位ROM编码而访问存储器操作来节省时间。如果在总线上存在多于一个的从属器件而且在Skip ROM命令之后发出读命令,那么由于多个从片同时发送数据,会在总线上发生数据冲突(漏极开路下拉会产生线与的效果)。
Search ROM( 搜索ROM)[F0h]
当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。
Alarm Search(告警搜索)[ECh]
此命令的流程与搜索ROM命令相同。但是,仅在最近一次温度测量出现告警的情况下,DS18B20才对此命令作出响应。告警的条件定义为温度高于TH 或低于TL。只要DS18B20一上电,告警条件就保持在设置状态,直到另一次温度测量显示出非告警值或者改变TH或TL的设置,使得测量值再一次位于允许的范围之内。贮存在EEPROM内的触发器值用于告警。
③ 存储器操作命令
Write Scratchpad(写暂存存储器)[4Eh]
这个命令向DS18B20的暂存器中写入数据,开始位置在地址2。接下来写入的两个字节将被存到暂存器中的地址位置2和3。可以在任何时刻发出复位命令来中止写入。
Read Scratchpad(读暂存存储器)[BEh]
这个命令读取暂存器的内容。读取将从字节0开始,一直进行下去,直到第9(字节8,CRC)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。
Copy Scratchpad(复制暂存存储器)[48h]
这条命令把暂存器的内容拷贝到DS18B20的E2存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又正在忙于把暂存器拷贝到E2存储器,DS18B20就会输出一个“0”,如果拷贝结束的话,DS18B20 则输出“1”。如果使用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持10ms。
Convert T(温度变换)[44h]
这条命令启动一次温度转换而无需其他数据。温度转换命令被执行,而后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于做时间转换的话,DS18B20将在总线上输出“0”,若温度转换完成,则输出“1”。如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持500ms。
Recall E2(重新调整E2)[B8h]
这条命令把贮存在E2中温度触发器的值重新调至暂存存储器。这种重新调出的操作在对DS18B20上电时也自动发生,因此只要器件一上电,暂存存储器内就有了有效的数据。在这条命令发出之后,对于所发出的第一个读数据时间片,器件会输出温度转换忙的标识:“0”=忙,“1”=准备就绪。
Read Power Supply(读电源)[B4h]
对于在此命令发送至DS18B20之后所发出的第一读数据的时间片,器件都会给出其电源方式的信号:“0”=寄生电源供电,“1”=外部电源供电。
④ 处理数据
DS18B20的高速暂存存储器由9个字节组成,其分配如图3所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后。

图3 高速暂存存储器分配图
温度/0C 二进制表示 十六进制表示
符号位(5位) 数据位(11位)
+125 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 07D0H
+25.0625 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0191H
+10.125 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 00A2H
+0.5 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0008H
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000H
-0.5 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 FFF8H
-10.125 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 FF5EH
-25.625 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 FE6FH
-55 1 1 1 1 1 1 0 0 1 0 0 1 0 0 0 0 FC90H
DS18B20温度数据表

上表是DS18B20温度采集转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于或等于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

温度转换计算方法举例:
例如当DS18B20采集到+125℃的实际温度后,输出为07D0H,则:

实际温度=07D0H╳0.0625=2000╳0.0625=1250C。
例如当DS18B20采集到-55℃的实际温度后,输出为FC90H,则应先将11位数据位取反加1得370H(符号位不变,也不作为计算),则:
实际温度=370H╳0.0625=880╳0.0625=550C。
追问按照上边的计算公式 怎么写程序 尤其是 如何判断是否取反 这一段的程序
可以追加分
回答看下下面的程序吧!
#include "DS18B20.h"
//unsigned char Init_DS18B20_flag = 0;

/***********ds18b20延迟子函数(晶振12MHz )*******/

void delay_18B20(unsigned int i)
{
while(i--);
}

/**********ds18b20初始化函数**********************/

void Init_DS18B20(void)
{
unsigned char x=0;
DQ = 1; //DQ复位
delay_18B20(8); //稍做延时
DQ = 0; //单片机将DQ拉低
delay_18B20(80); //精确延时 大于 480us
DQ = 1; //拉高总线
delay_18B20(14);
x = DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
delay_18B20(20);
}

/***********ds18b20读一个字节**************/

unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 给脉冲信号
dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80;
delay_18B20(4);
}
return(dat);
}
/*************ds18b20写一个字节****************/

void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
delay_18B20(5);
DQ = 1;
dat>>=1;
}
}
/**************读取ds18b20当前温度************/
/*
unsigned char ReadTemperature(void)
{
unsigned char a=0;
unsigned char b=0;
//unsigned int t=0;
unsigned char flag;//初始化是否成功标志位 0,成功 1,失败

//flag=Init_DS18B20();
Init_DS18B20();
WriteOneChar(0xCC); // 跳过读序号列号的操作
WriteOneChar(0x44); // 启动温度转换

delay_18B20(100); // this message is very important

Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度

写不下了 追问 我再跟你补充!追问多谢好心人帮助!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
cpa改分电话可信吗 有人今年收到这样的短信吗? 温馨提示 通知:你此次报考的湖南中级会 ...会计从业资格证,今天有陌生号码打电话说我没过,是真的吗?我都考三... 坠入星河的温柔仙句 惊艳所有人的优美文案 坠入星河的温柔仙句 温柔很仙的宝藏文案 温柔到心坎里的文案句子(温柔且治愈的短句子) 实习期劳务合同简易版 ...企业受伤,如果辞职是否还有补偿?医疗费谁出? 毛晓彤十大经典电视剧 这个锦尚天舞舞蹈里面的音乐是什么?急求 http://m.iqiyi.com/w_19rr... Atmega128的主要特性 image register是什么意思? 指出STATUS寄存器bit7-5与4种寻址的关系 谁会做一个关于春节,元宵节的电子小报?? 美国回来的朋友送我一对耳环,盒子外面写着ZALES,请问这是什么牌子或店名... 孩子总打嗝,孩子在肚子里动不动就一跳一跳的打嗝,次数... 我想开家小饰品店 大概18平方,卖耳环 项链 戒指 娃娃 包包 指甲油等小... 呼和浩特市万达广场一楼有家买卖手表、项链、包、戒指、耳环... ...起一个淘宝店铺名字,我是卖小首饰的,主要卖耳环,谢谢了,采纳之后还 ... 急求魔道祖师第二季第五集广播剧的百度云,非常感谢 魔道祖师第二季十一级以后的百度云资源 求魔道祖师第二季百度网盘!!不要压缩包!!! 哪位大神有魔道祖师第二季高清百度云资源 有没有魔道祖师的第一季和第二季的动漫百度网盘? 如果丢失的苹果手机ID在我新苹果手机上登录ID,那么丢失的苹果手机还有... 苹果手机弄丢了+以前的ID登在新手机上有没有啥影响? 此夜曲中闻折柳,何人不起故园情。全文 急~ 此夜曲中闻折柳,何人不起故乡情的意思 小鸟在树上唱歌,蝴蝶在花丛中跳舞照样子写拟人句 小鸟叽叽喳喳地叫(改拟人句)可以改成小鸟在树上唱歌吗? 基于lut的移位寄存器具体是怎么实现的 公司签订两年劳动合同,并签订提前离职赔偿协议。提前离职赔偿1万,合法... 被公司骗签离职补偿协议 焦煤2205行情 梦见自己捉了一只乌龟:又丢了 文言文伯牙鼓琴的译文 梦到自己抓一只小乌龟 收养应当遵循什么原则呢? 收养应当遵循什么原则 梦见自己在树上捉了一只乌龟跑一只 梦到抓到一只乌龟变成小猪是什么意思? 伯牙鼓琴 文言文翻译 收养应当遵循的原则 文言文翻译(伯牙鼓琴)急需~~~!!! 收养应当遵循的原则是 梦到男友我的朋友睡在一张床上 梦见朋友睡在我家床上休息是怎么解? 昨天梦见朋友在床上睡觉,有一只小老鼠在他的头那,我就赶紧给他说了... 收养应当遵循哪些基本原则? 应当收养应当遵循什么原则