ds18b20学习总结

2023-06-17

总结是一种事后记录方式,针对于工作结束情况、项目完成情况等,将整个过程中的经验、问题进行记录,并在切实与认真分析后,整理成一份详细的报告。如何采用正确的总结格式,写出客观的总结呢?以下是小编整理的关于《ds18b20学习总结》,供需要的小伙伴们查阅,希望能够帮助到大家。

第一篇:ds18b20学习总结

DS18B20学习总结

及其高精度温度测量的实现

1.1 DS18B20简介

DS18B20是美国DALLAS半导体公司生产的可组网数字式温度传感器. 主要由三个数据部件组成:64的激光ROM,温度灵敏原件,非易失性温度告警触发器TH和TL。 封装如图一:

图一 1.

2DS18B20的特点:

1. 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

2. DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现多点测温。 3. DS18B20在使用中不需要任何外围元件。

4. 测温范围-55℃~+125℃,固有测温分辨率0.5℃。 5. 测量结果以9位数字量方式串行传送。

内部结构框图如图二所示。

图二

2.1 访问温度计的协议:

(一)初始化

(二)ROM操作命令

(三)存贮器操作命令

(四)处理/数据

由热敏原件中晶振特性计算出所测的温度。 注意:复位操作如下图三

图三 必需要给DS18B20输入脉冲激活其复位功能。

DS18B20的驱动程序:

/*************************此部分为18B20的驱动程序*************************************/

#include #include sbit D18B20=P3^7; sbit error=P3^4; #define NOP() _nop_() /* 定义空指令 */ #define _Nop() _nop_() /*定义空指令*/ void TempDelay (unsigned char idata us); void Init18b20 (void); void WriteByte (unsigned char idata wr); //单字节写入 void read_bytes (unsigned char idata j); unsigned char CRC (unsigned char j); void GemTemp (void); void Config18b20 (void); void ReadID (void); void TemperatuerResult(void); bit flag; unsigned int idata Temperature; unsigned char idata temp_buff[9]; //存储读取的字节,read scratchpad为9字节,read rom ID为8字节 unsigned char idata id_buff[8];

unsigned char idata crc_data; unsigned char code CrcTable [256]={ 0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65, 157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220, 35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98, 190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255, 70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7, 219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154, 101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36, 248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185, 140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205, 17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80, 175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238, 50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115, 202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139, 87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22, 233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168, 116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53};

void GetTemp() {

if(TIM==100)

{ TIM=0;

TemperatuerResult();

每隔 1000ms 读取温度。

void TemperatuerResult(void) {

p = id_buff;

ReadID();

//先确定是第几个DS18B20

Config18b20(); //配置DS18B20的报警温度和分辨度

Init18b20 ();

//复位)

WriteByte(0xcc);

//skip rom

WriteByte(0x44);

//Temperature convert

Init18b20 ();

//复位)

WriteByte(0xcc);

//skip rom

WriteByte(0xbe);

//read Temperature

p = temp_buff;

GemTemp(); //读取温度

}

void GemTemp (void) {

read_bytes (9);

if (CRC(9)==0) //校验正确

{

Temperature = temp_buff[1]*0x100 + temp_buff[0]; //

Temperature *= 0.0625;

Temperature /= 16;

TempDelay(1);

} } *Function:CRC校验 *parameter: *Return: *Modify: *************************************************************/ unsigned char CRC (unsigned char j) {

unsigned char idata i,crc_data=0;

for(i=0;i

crc_data = CrcTable[crc_data^temp_buff[i]];

return (crc_data); }

/************************************************************ *Function:向18B20写入一个字节 *parameter: *Return: *Modify:

void WriteByte (unsigned char idata wr) //单字节写入 {

unsigned char idata i;

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

{

D18B20 = 0;

_nop_();

D18B20=wr&0x01;

TempDelay(3);

//delay 45 uS //

5 _nop_();

_nop_();

D18B20=1;

wr >>= 1;

} }

/************************************************************ *Function:读18B20的一个字节 *parameter: *Return: *Modify: *************************************************************/ unsigned char ReadByte (void)

//读取单字节

unsigned char idata i,u=0;

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

{

D18B20 = 0;

u >>= 1;

D18B20 = 1;

if(D18B20==1)

u |= 0x80;

TempDelay (2);

_nop_();

}

return(u); } /************************************************************ *Function:读18B20 *parameter: *Return: *Modify: *************************************************************/ void read_bytes (unsigned char idata j) {

unsigned char idata i;

for(i=0;i

{

*p = ReadByte();

p++;

} } /************************************************************ *Function:延时处理 *parameter: *Return: *Modify: *************************************************************/ void TempDelay (unsigned char idata us) {

while(us--); } /************************************************************ *Function:18B20初始化 *parameter: *Return: *Modify: *************************************************************/ void Init18b20 (void) {

D18B20=1;

_nop_();

D18B20=0;

TempDelay(80);

//delay 530 uS//80

_nop_();

D18B20=1;

TempDelay(14);

//delay 100 uS//14

_nop_();

_nop_();

_nop_();

if(D18B20==0)

{flag = 1; error=0; }

//detect 1820 success!

else

{flag = 0; error=1; }

//detect 1820 fail!

TempDelay(20);

//20

_nop_();

_nop_();

D18B20 = 1; }

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

向18B20写入一个字节 *parameter: *Return: *Modify: *************************************************************/ void WriteByte (unsigned char idata wr) //单字节写入 {

unsigned char idata i;

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

{

D18B20 = 0;

_nop_();

D18B20=wr&0x01;

TempDelay(3);

//delay 45 uS //5

_nop_();

_nop_();

D18B20=1;

wr >>= 1;

} }

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

读18B20的一个字节

*/ unsigned char ReadByte (void)

//读取单字节 {

unsigned char idata i,u=0;

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

{

D18B20 = 0;

u >>= 1;

D18B20 = 1;

if(D18B20==1)

u |= 0x80;

TempDelay (2);

_nop_();

}

return(u); }

/************************************************************ 3.1.2

SPI数据线配置。

/*************************此部分为74HC595的驱动程序使用SPI总线连接*************************************/

#include #include

#define NOP()

_nop_()

/* 定义空指令 */ #define _Nop() _nop_()

/*?定义空指令*/ void HC595SendData(unsigned int SendVal);

//SPI IO sbit

MOSIO =P1^5; sbit

R_CLK =P1^6; sbit

S_CLK =P1^7; sbit

IN_PL =P3^4;

//74HC165 shift load

把数据加载到锁存器中 sbit

IN_Dat=P3^5;

//74HC165 output

数据移出 sbit

OE

=P3^6;

/********************************************************************************************************* ** 函数名称: HC595SendData ** 功能描述: 向SPI总线发送数据

*********************************************************************************************************/ void HC595SendData(unsigned int SendVal) {

unsigned char i;

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

{

if((SendVal<

else MOSIO=0;

S_CLK=0;

NOP();

NOP();

S_CLK=1;

}

R_CLK=0; //set dataline low

NOP();

NOP();

R_CLK=1; //片选

OE=0; }

3.1.

3试验数码管上显示温度

#include extern GetTemp();

//声明引用外部函数 extern unsigned int idata Temperature;

// 声明引用外部变量 void delay(unsigned int i);

sbit

LS138A=P2^2;

//管脚定义 sbit

LS138B=P2^3; sbit

LS138C=P2^4;

//此表为 LED 的字模, 共阴数码管 0-9 -

unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; unsigned long LedOut[5],LedNumVal; void system_Ini() {

TMOD|= 0x11;

TH1 = 0xD8;

//10

TL1 = 0xF0;

IE = 0x8A;

TR1 = 1 main() { unsigned char i;

system_Ini();

while(1)

{

GetTemp();

/********以下将读18b20的数据送到LED数码管显示*************/

LedNumVal=Temperature;

//把实际温度送到LedNumVal变量中

LedOut[0]=Disp_Tab[LedNumVal%10000/1000];

LedOut[1]=Disp_Tab[LedNumVal%1000/100];

LedOut[2]=Disp_Tab[LedNumVal%100/10]; //十位

LedOut[3]=Disp_Tab[LedNumVal%10];

//个位

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

{

P0 = LedOut[i] ;

switch(i)

{

//138译码

case 0:LS138A=0; LS138B=0; LS138C=0; break;

case 1:LS138A=1; LS138B=0; LS138C=0; break;

case 2:LS138A=0; LS138B=1; LS138C=0; break;

case 3:LS138A=1; LS138B=1; LS138C=0; break;

}

delay(100);

}

P0 = 0;

} }

//延时程序

void delay(unsigned int i) {

char j;

for(i; i > 0; i--)

for(j = 200; j > 0; j--); } 4.1 讨论DS18B20的自动报警功能实现。

DS18B20只是一个测温元件,所谓的报警功能要通过程序由单片机来实现。

DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,头2个字节包含测得的温度信息,第3和第4字节TH(报警温度上限)和TL(报警温度下限)的拷贝。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。第

6、

7、8字节保留未用。要实现报警,完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较(当然要自己编程序)。若T>TH或T

第二篇:DS18B20的各个ROM命令

1、 Read ROM[33H]

2、 Match ROM[55H]

这个是匹配ROM命令,后跟64位ROM序列,让总线控制器在多点总线上定位一只特定的DS18B20。只有和64位ROM序列完全匹配的DS18B20才能响应随后的存储器操作。所有和64位ROM序列不匹配的从机都将等待复位脉冲。这条命令在总线上有单个或多个器件时都可以使用。

3、Skip ROM[0CCH]

这条命令允许总线控制器不用提供64位ROM编码就使用存储器操作命令,在单点总线情况下,可以节省时间。如果总线上不止一个从机,在Skip ROM命令之后跟着发一条读命令,由于多个从机同时传送信号,总线上就会发生数据冲突(漏极开路下拉效果相当于相“与”)

4、Search ROM[0F0H]

当一个系统初次启动时,总线控制器可能并不知道单线总线上有多个器件或它们的64位编码,搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。

5、Alarm Search[0ECH]

这条命令的流程和Search ROM相同。然而,只有在最近一次测温后遇到符合报警条件的情况,DS18B20才会响应这条命令。报警条件定义为温度高于TH或低于TL。只要DS18B20不掉电,报警状态将一直保持,知道再一次测得的温度值达不到报警条件。

6、Write Scratchpad[4EH]

这个命令向DS18B20的暂存器TH和TL中写入数据。可以在任何时刻发出复位命令来中止写入。

7、Read Scratchpad[0BEH]

这个命令读取暂存器的内容。读取将从第1个字节开始,一直进行下去,直到第9(CRC)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。

8、Copy Scratchpad[48H]

这个命令把暂存器的内容拷贝到DS18B20的E2ROM存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于把暂存器拷贝到E2存储器,DS18B20就会输出一个0,如果拷贝结束的话,DS18B20则输出1。如果使用寄生电源,总线控制器必须在这条命令发出后立即启动强上拉并保持10ms。

9、Convert T[44H]

这条命令启动一次温度转换而无需其他数据。温度转换命令被执行,而后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出时间隙,而DS18B20又忙于做时间转换的话,DS18B20将在总线上输出0,若温度转换完成,则输出1,。如果使用寄生电源,总线控制必须在发出这条命令后立即启动强上拉,并保持500ms以上时间。

10、Recall E2

这条命令把报警触发器里的值拷贝回暂存器。这种拷贝操作在DS18B20上电时自动执行,这样器件一上电,暂存器里马上就存在有效的数据了。若在这条命令发出之后发出读数据隙,器件会输出温度转换忙的标识:0为忙,1为完成。

11、Read Power Supply[0B4H]

若把这条命令发给DS18B20后发出读时间隙,器件会返回它的电源模式:0为寄生电源,1为外部电源。

第三篇:数字温度传感器DS18B20控制接口设计

摘 要: DS18B20是一款经典的单总线数字温度传感器芯片,较传统的温度传感器具有结构简单、体积小、功耗小、抗干扰能力强、使用简单、可组网实现多点温度测量等优点。本设计简要介绍了数字温度传感器DS18B20 的特性及工作原理,着重论述了用FPGA实现对此传感器的控制,并将测到的温度在LED数码管上显示出来。

关键词:DS18B20;温度传感器;FPGA;LED数码管

Abstract: DS18B20 is a classic single-bus digital temperature sensor chip, the more traditional temperature sensor has a simple structure, small size, low power consumption, and anti-interference ability, easy to use networking to achieve multi-point temperature measurement. The design brief describes the features and working principle of the digital temperature sensor DS18B20, focuses on the control of this sensor using FPGA, and the measured temperature is displayed on the LED digital tube. Keywords: DS18B20; temperature sensor; FPGA; LED digital tube

1 引言

传统的温度传感器系统大都采用放大、调理、A/ D 转换, 转换后的数字信号送入计算机处理, 处理电路复杂、可靠性相对较差, 占用计算机的资源较多。DS18B20 是一线制数字温度传感器, 它可将温度信号直接转换成串行数字信号送给微处理器, 电路简单, 成本低, 每一只DS18B20 内部的ROM 存储器都有唯一的64位系列号, 在1 根地址/ 信号线上可以挂接多个DS18B20, 易于扩展, 便于 组网和多点测量。

随着科技的发展 ,温度的实时显示系统应用越来越广泛 ,比如空调遥控器上当前室温的显示、热水器温度的显示等等。实现温度的实时采集与显示系统有很多种解决方案 ,本文使用全数字温度传感器DS18B20来实现温度的实时采集FPGA作为控制中心与数据桥梁;LED数码管作为温度实时显示器件。其中DS18B20作为FPGA的外部信号源,把所采集到的温度转换为数字信号,通过接口 (113脚)传给FPGA,FPGA启动ROM内的控制程序驱动LED数码管,通过IO口和数据线把数据传送给LED数码管,将采集到的温度实时显示出来。该设计结构简单、测温准确,成本低,工作稳定可靠,具有一定的实际应用价值。

2 DS18B20数字温度传感器介绍

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下:

2.1 DS18B20的性能特点

1独特的单线接口仅需要一个端口引脚进行通信; ○2多个DS18B20可以并联在惟一的三线上,实现多点组网功能; ○3无须外部器件; ○4可通过数据线供电,电压范围为3.0~5.5V; ○5零待机功耗; ○6温度以9或12位数字; ○7用户可定义报警设置; ○8报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; ○9负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;○ 2.2 DS18B20的内部结构图

DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2-1所示。

图2-1 DS18B20内部结构框图 图2-2 DS18B20字节定义

64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图2-2所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3-4所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分率。 2.3 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位补码形式读出。 2.4 DS18B20供电方式

DS18B20有两种供电方式,一种是寄生电源强上拉供电方式,一种是外部供电方式,如下图:

图2-3 寄生电源强上拉供电方式电路图

在寄生电源供电方式下,DS18B20 从单线信号线上汲取能量:在信号线 DQ 处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。为了使 DS18B20 在动态转换周期中获得足够的电流供应,当进行温度转换或拷贝到 E2 存储器操作时,用 MOSFET 把 I/O 线直接拉到 VCC 就可提供足够的电流,在发出任何涉及到拷贝到 E2 存储器或启动温度转换的指令后,必须在最多 10μS 内把 I/O 线转换到强上拉状态。在强上拉方式下可以解决电流供应不走的问题,因此也适合于多点测温应用,缺点就是要多占用一根 I/O 口线进行强上拉切换。

图2-4 外部电源供电方式电路图

在外部电源供电方式下,DS18B20 工作电源由 VDD 引脚接入,此时 I/O 线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线上理论可以挂接任意多个 DS18B20 传感器,组成多点测温系统。在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是 85℃。 3 设计需求

1温度测量范围:-55℃~+125℃ ○2可编程为9位~12位A/D转换精度 ○3测温分辨率可达0.0625℃ ○4 LED数码管直读显示 ○4 设计方案

4.1 硬件设计

将[DF2C8]FPGA 核心板和[EB-F2]基础实验板连接在一起,同时使能DS18B20 模块和数码管模块:数码管使能:用“短路帽”将实验板上的JP4和JP5全部短接。DS18B20 温度传感器使能跳线JP10 全部短接,元件安装示意如下图4-1和4-2(注意方向,半圆形的一边朝板子内部,平面朝外,和板上的图示一致)。

图 4-1:数码管使能图示 图 4-2:温度传感器安装和使能图示

4.1.1 温度传感器 DS18B20 电路

基础实验板上提供了一个由DS18B20构成的温度测量模块,其原理如图4-3所示。该电路选择外部供电方式。外部电源供电方式工作稳定可靠, 抗干扰能力强。

图4-3 单线制温度传感器 DS18B20 电路图

DS18B20与[DF2C8]FPGA核心板的连接关系如表4-1所示

表 4-1:DS18B20与[DF2C8]FPGA核心板连接时的管脚对应关系

4.1.2 数码管显示电路

基础实验板上具有2个共阳极的位七段数码管,构成8位构,其电路如图4-4 所示。

图 4-4:七段数码管显示电路图

数码管的控制引脚由两个跳线JP4和JP5使能(如图4-1所示) R10~R17是段码上的限流电阻,位码由于电流较大,采用了PNP三极管驱动。当位码驱动信号为低电平(0)时,对应的数码管才能操作;当段码驱动信号为低电平(0)时,对应的段码点亮。数码管不核心板连接时的管脚对应如表4-2所示:

表 4-2:数码管与[DF2C8]FPGA核心板连接时的管脚对应关系

4.2 HDL编码 4.2.1 时序

(1)复位: 使用DS18B20 时, 首先需将其复位, 然后才能执行其它命令。复位时, 主机将数据线拉为低电平并保持480Ls~ 960Ls, 然后释放数据线, 再由上拉电阻将数据线拉高15~ 60Ls, 等待DS18B20 发出存在脉冲, 存在脉冲有效时间为60~ 240Ls, 这样, 就完成了复位操作。其复位时序如图4-5所示。

图4-5:初始化时序

图4-6:写时序

(2)写时隙: 在主机对DS18B20 写数据时, 先将数据线置为高电平, 再变为低电平, 该低电平应大于1us。在数据线变为低电平后15us 内, 根据写“1”或写“0” 使数据线变高或继续为低。DS18B20 将在数据线变成低电平后15us~ 60us 内对数据线进行采样。要求写入DS18B20 的数据持续时间应大于60us 而小于120us, 两次写数据之间的时间间隔应大于1us。写时隙的时序如图4-6 所示

(3)读时隙 :当主机从DS18B20 读数据时, 主机先将数据线置为高电平, 再变为低电平, 该低电平应大于1us, 然后释放数据线, 使其变为高电平。DS18B20 在数据线从高电平变为低电平的15us 内将数据送到数据线上。主机可在15us 后读取数据线。读时隙的时序如图4-7 所示。

图4-7 :读时隙

4.2.2 DS18B20 的操作命令

主机可通过一线端口对DS18B20 进行操作, 其步骤为: 复位( 初始化命令) -> ROM 功能命令-> 存储器功能命令-> 执行/ 数据, DS18B20 的ROM 命令有5个( 见表1) , 存储器命令有6个( 见表2) 。命令的执行都是由复位、多个读时隙和写时隙基本时序单元组成。因此, 只要将复位、读时隙、写时隙的时序了解清楚, 使用DS18B20 就比较容易了, 时序如上文所述。

表4-3: 存储器命令操作表 表4-4:ROM命令功能操作表

4.2.3 Verilog HDL编码

详细Verilog HDL代码参见工程文件:DF2C8_13_DS18B20 工程文件中含有三个v 文件,LED_CTL.v 是数码管显示功能模块,DS18B20_CTL.v 是温度传感器的控制模块,TEMP.v 为顶层模块,实例化了前面两个模块,并将采集的温度值送至数码管中进行显示。其中最主要的温度传感器的控制模块,DS18B20_CTL.v。该程序对DS18B20 进行控制, 不仅可以简化程序, 还可以缩短1 次温度转换所需的时间. 这样的话, 1 次温度转换和数字温度值输出循环所涉及到的控制命令、数据交换和所需时隙如图4-8所示。

.

图4-8:1次温度转换的控制命令和时隙

5 仿真测试结果

5.1 仿真波形

温度测量模块仿真结果如图6-1所示:

图5-1:仿真波形

5.2 结果显示

下载配置文件后,可在数码管上观察到带一位小数的温度数值。如果用手捏住传感器,会发现显示的温度在升高。如下图:

图5-2 测温效果图示

参考文献:

[1] 沙占友 集成传感器的应用[M]. 中国电力出版社. [2] 罗钧,童景琳. 智能传感器数据采集与信号处理[M]. 化学工业出版社

[3] 周月霞,孙传友. DS18B20硬件连接及软件编程[J]. 传感器世界,2001,12. [4] 王晓娟,张海燕,梁延兴.基于DS18B20的温度实时采集与显示系统的设计与实现[J]. , 2007:38-41. [5] 党 峰, 王敬农, 高国旺. 基于DS18B20 的数字式温度计的实现[ J] . 山西电子技术, 2007( 3) [6] 金伟正. 单线数字温度传感器的原理与应用[ J] . 仪表技术与传感器, 2000( 7) : 42- 43. [7]DS18B20 Datasheet [ EB/ OL] . Dalla s: Dallas Semico nductor Cor po r atio n, 2005.

第四篇:3ds max学习心得

篇一:3ds max学习心得

3D学了快半个学期了,通过学习,对于3D我也有一些自己的心得,总结 如下:

1.3DMAX是个功能很强大的工具。但也有很多不足。它也有自己的强项和弱项。这一点,我们要有个清楚的认识,在学习的过程中,有些东西要学精一点,有些东西只要了解点就行了。如建模。材质。布光这些是最基本的基本。一定要尽量精通。而面对MAX的弱项如粒子系统。动力学系统。只要能运用就行了。别过多地花时间研究这些吃力不讨好的工具。打个比方说,MAX其实还能制做HTM文件,那是不是我们做网页一定要用3DMAX制做而摒弃DW或Fp这些专业的工具呢?

2.学的东西要合理应用。我有个朋友也会MAX,他在学习做水的那个时期里。他几乎所有的东东都是用水做的。房间里的地板是水,桌子上装的也是水。但他学习镜面反射时,他的世界里,又全是奇怪的世界。也不管运用合不合适。沾沾自喜。自我沉浸在那种自我满足中。这种学习方式要不得,将会成为作品创作的枷锁。

3.不要花大多时间和精力放在非主流的插件上。前些时间,MAX出了很多优秀的插件。光渲染器就有Mental ray、brazil、finalrender.vray.insight.这些渲染器都非常吸引人。但真的要一个个都掌握,那花的代价太大了。选择一个你认为最合适的,就用它。别朝三暮四。还有,我看过很多做山做水做树木的插件。其实,真正在作品中,很少用到它们。而且就效果来说,它们的商业利用价值并不高。大可用pS解决。除非你是专业从事游戏。动画制做。

4.学习进程中是有高峰和低谷的。在低谷时,不要对自己产生怀疑,每个人都一样。这时候,我的解决方法就是休息休息,看看别的高手的作品。总结下自己,作好下一步学习计划。

5.在做作品时,当你做一步都认为不理想时,别急着做第二步。花过多时间做自己开始就认为不满意的作品不划算。要认真对待每一步。

6.别过分依赖网络。我真的在网上看过有很菜很菜的问题。那些问题随便在一本最初级的教材上都可以找到解答。如果认真翻翻书,远比要求别人回答你的答案更及时更详尽。

7.永不满足。我很贪心。我见谁都说自己是菜鸟。就因为想偷学点东东来。它山之石可以功玉。别人身上总是有可以借鉴的知识。要不然怎么说成功者是站在巨人肩膀上呢。

8.真正好的作品来自作者的艺术修为,不是软件的操做能力。更不是机子的配置。很多人抱怨自己机子差。软件版本低。甚至认为MAX就是不能做出好作品而改学MAYA.大家可以看看(著名的三维艺术网站),那些老外用着烂机子和最普通MAX,也能做出不俗的作品。

篇二:3DSMAX学习心得

先从了解3DSMAX培训开始,3DSMAX是个庞大的软件,现在最高的版本是3dsmax 2012(大部分是在用2010) 广泛应用于室内设计、影视动画、建筑设计、广告、游戏、科研等领域。

初学者自学的时候往往不知到从哪里入手,眉毛胡子一把抓,不但学不到具体的东西,也增加了学习的难度,打击自己的信心。所以想学3DSMAX之前,必须要有个明确的方向,学3DSMAX想应用于那些方面?这样才可以针对性地去学习,把有效的时间和精力花在点子上……

学习3DSMAX必须掌握的内容:

1、三维空间能力的锻炼,熟练掌握视图、坐标与物体的位置关系。应该要做到放眼过去就可以判断物体的空间位置关系,可以随心所欲地控制物体的位置。

这是最基本的要掌握的内容,如果掌握不好,下面的所有内容都会受到影响。

有了设计基础和空间能力的朋友,掌握起来其实很简单;没有基础的朋友,只要有科学的学习和锻炼方法,也可以很快地掌握。这是我们课程培训里的第一步,一般人第一天就可以掌握了。

2、基本的几个操作命令:选择、移动、旋转、缩放、镜像、对齐、阵列、视图工具,这些命令是最常用也是最基本的,几乎所有制作都用到。

几个常用的三维和二维几何体的创建及参数,熟悉了之后,就掌握了3DSAMX的基本操作习惯。

3、二维图案的编辑,这是非常重要的一部分内容,很多三维物体的生成和效果都是取决于二维图案。主要是用“Edit Spline”来实现。对于曲线图案的点、段、线编辑主要涉及到几个常用的命令:Attach Refine Outline Boonlean Trim Wed Fillet Chemfer等,熟练掌握这些子命令,才可以自如地编辑各类图案。

材质、灯光是不可分割的,材质效果是靠灯光来体现的,材质也应该影响灯光效果表现。没有灯光的世界都是黑的。材质、灯光效果是效果图的灵魂,也时效果图制作一个难点。如何掌握好材质灯光效果,大概也有以下几个途径和方法:

1、掌握常用的材质参数、贴图的原理和应用。

2、熟悉灯光的参数及与材质效果的关系。

3、灯光、材质效果地表现主要是物理方面的体现,应该加强实际常识的认识和物理知识。

4、想掌握好材质、灯光效果的控制,除了以上的几方面,感觉也是很重要的,也是突破境界的一个瓶颈。所谓的感觉,就是艺术方面的修养,这就需要我们不断加强美术方面的修养,多注意观察实际生活中的效果,加强色彩方面的知识等!!!!

版本问题: Autodesk公司自从开发了3DSMAX到现在都没有出过中文版,在市面上所说的所谓中文版都是国人自己汉化的。以我个人多年的使用经验,在2005之前我不建议大家用汉化的3DSMAX,但我现在建议初学者使用3DSMAX简体中文版。

有几个方面的原因:

1、3DSMAX是个非常庞大复杂的软件,在国内己经比较流行,汉化技术己经成熟,不会影响使用,也不会造成系统的不稳定。

2、虽然以前翻译的术语很多不规范,用词难以统一。现在3d国内也是高手云集,用词己经成型

3、初学者用中文版,更容易入门,对命令工具面板更易懂。

但对于国人,甚至连ABC都不懂几个的朋友,是否可以学好英文版的3DSMAX呢?

答案是肯定,以我个人的学习和教学经验,主要也可以从以下几方面说明:

1、对于如此庞大的软件,开始接触的时候应该针对性地学习,选择自己兴趣行业方面应用开始。一旦有了针对性,其实开始我们所接触到的命令就不是很多了。

2、对于一些命令、术语,在学习应用的过程中,频繁的出现,点得多了,不记得单词也记得它的模样了,它的意思更不用说了。

3、MAX的使用是有一定规律性的,而且也非常形象,就是不太清楚命令的意思,通过操作看到实际变化,也知道它的大概意思。

只要有一定的学习方法,多练习,英文版一点也不可怕!!

自学的一些途径和方法:

1、加强交流,相互学习。多向同行朋友请教。这是个很重要的环节!这当然我们应该具备了一定基础后,交流和请教才有成效。如果连个命令的找不到的朋友,我建议还是找本书好好练练,有了点基础再向别人请教,要不这样就变成了别人在培训你了,我想这样没有几个个人可以做到的,也没几个人有这样的工夫。要问就要问些实际应用问题,不要问这个命令是干嘛的?是怎么用的?这个东西是怎么画出来的?这样的问题让人难以用几句话跟你表达,而且说了你也未必清楚怎么回事。所以有点基础是交流请教的必须的条件。

2、要有一本好书。所谓的好书并不是里面贴出来的图片好看,场景大就好了,也不是越厚越好。现在市面上的书多如牛毛,有些也很垃圾。对于初学者来说,应该选择一些介绍简单实例制作的书,在实例制作中消化和掌握命令,不但可以加深记忆,也提高了我们的兴趣。但这样的书必须每个步骤操作都要很详细,不能跳步,否则增加了初学者的学习难度,有些命令甚至在哪里都找不到。初学者我不建议看一些字典式的书,有了一定基础后这样的书才适合……

3、多媒体教学光盘也是一个好的辅助学习工具,它相对于书本比较生动有趣,也很直接。一般基础的应用都差不多,到了实际的应用,也需要有针对性地选择,也不是所有3DSMAX的教学光盘都看一遍,除非你有很多剩余的精力。还有教学光盘不要只是一味地看了一次又一次,这样的作用不大。应该一边看一边跟着练,几乎可以跟着做出同样的效果。也样才是有效的学习!!!

还有现在是个电脑网络时代,网站、论坛、邮件、QQ等交流工具,也提高很多和更宽广的交流空间,特别是些针对性的论坛,是我们一个很好的学习平台,应该好好利用。

接受培训:选择一个好的培训地方参加培训,这是个非常直接也见效最快的方法。有人直接教授,比自己摸索、看书要来得快,也轻松多了。我想这是大家都知道的。

但如何选择是一个好的培训地方,这是我们最关心也是最重要的问题!!下面从几个方面来分析:

目前的电脑培训中心多如牛毛,如何才能选择一间好的培训中心,可以从以下几个方面入手:

1、不要只看表面,一个大的培训中心,广告响,范围大,并不代表它就是好的,很多都是用钱堆出来的;还有门面、气派也不是重点。有多少台电脑,规模有多大都不是关键,关键是老师,一个好的老师是保证教学质量的关键,就算只有一台电脑,一个好的老师也可以把你教得很好。

2、现在很多培训老师都是兼职的,大的培训中心情况更为突出!当然我不是说兼职老师不好,所以一个培训中心并不是说现在反应好,但下次就不一定好了,看你是否遇到一个好的老师。我这两年在很多大型培训中心兼职过,很清楚里面的情况。有些培训中心为了节省开支,我设计的一些必要的课程也裁减掉了,请的些老师有些根本没有工作经验的,有很多也不是设计行业的,所以教的东西只能是很机械的命令操作

3、如何判断一个老师是否是个好老师,这对于我们一些门外汉还是有一定的难度。但是也可以从几个方便入手:这个老师的专业最好是相关设计专业的;言谈举止,一个好的老师,语言表达能力和相关涵养肯定是可以感觉出来的,也就是说话应该很在理;一个好的老师他做的图不一定要很漂亮,最重要就是他的教学方法、耐心和责任心,还有他的相关工作和教学经验!做的图漂亮并不一定就是个好老师。

4、除了上面提到的授课老师的把关,要选择一个好的培训地方,还要注意几点:

最好可以选择同时有设计业务这方面的培训地方,如设计公司的培训部等,而一般的专门电脑培训中心培训业务繁杂,很多都是点到为止,不够专业。

不要被一些吹捧出来的头衔和证书所迷惑,其实学设计制图等方面的课程,关键是要学到东西,独立制作能力是最重要的,现在那些证书我想大家都知道交钱考试就可以通过拿到的,含金量能有多少呢?而且现在一般去面试求职,拿出来的应该是你的实际操作技能和作品,那些证书没几个人会看你的。

如果稍微内行点的朋友还可以留意下课程内容的设置与安排,一个合理课程安排对于教学质量的影响也是很重要的。有些兼职老师还是不错的,但是由于局限于培训中心的课程安排和课时量,也只能勉为其难!

篇三:3dmax学习心得

终于把3dmax室内效果图设计学习完了,感觉重没有过的轻松,回想起学3dmaxr的过程,不知道是四百多集的教程要在一个半月搞懂吃透精通确实不是一样容易的事情。我以前是做平面的,没学3d之前曾经朋友及同事们说它是多么多么的难学让人忘而止步,也曾经一度的想放弃学它的念头,因为它实在是不是那么好学。虽然之前早被他们打过“预防针”,也有心理准备,不过学起来还是比自己想像的难的多。但最终还是坚持下来了,学过3d之后才让我感觉到什么是柳崖花明又一村。

3dmax开始学的时候面对它那庞大的功能,复杂的界面,真的让我无法下手,不知道从那儿学起,后来就想干脆就从做实例建模开始吧。抛开那此难懂的理论,从实例中慢慢悟解他们的功能。有幸的是我也下到了一部非常好的教程,这部教程由简到难 深入浅出了讲解了室内设计的各个方面的全过程。另外还附带有ls的教程,真是难得难得。在这里也提醒想要学3d的朋友,找一部好的教程是非常有必要的,它可以让你的学习达到质的飞跃。 通过这几年对设计软件的学习,也让我悟出了学习设计软件的一套捷径,那就是最好先从实例开始学习,什么狗屁理论不要去花费大浪的时间弄懂它,只要稍微的看一了,了解一下就可以了,然后从实例中来悟解来学习。这样,你的学习时间可以基本上缩短一半。好了,这也算是本人的一点心得体会,希望对朋友们有点帮助。

第五篇:• 3DS max学习方法

• 3DMAX练习 大门

• 学习3DSMAX必须掌握的内容

• 本站搜索更多关于“图片转3d max”的内容

一. 木纹材质调整方法:

1. 木纹材质的肌理调整:

A.使用过度色通道贴图后加入凹凸通道贴图,使木纹有凹凸感,肌理更明显凹凸通道强度通常为30%

B.材质球的高光强度(specular level:)通常为43%高光面积(glossiness)为28~40%之间。亚光油漆面的高光强度可以低点,高光面积可以高点。

C.木纹的纹路调整可在过度色通道贴图下的U,V,W,坐标中的W中调整。

D.自发光的调整为5%可以因灯光的强弱来调整这个数值。光强则强光弱则弱。

E.木纹的纹理的大小可在使用物体中用UVWmap 来调整纹理面积的大小,以材质的实际面积大小来定坐标大小,可适当的夸张。

F.在特殊的情况下还可以加入光线追踪来体现油漆的光泽度。通常在5~8%的强度。

2. 木纹材质的贴图选择:

A. 木纹的贴图过度色通道使用的材质图片要纹理清晰。

B. 材质图片的光感要均匀。无光差的变化为最好。

C. 材质图片的纹理要为无缝处理后的图片,如不是无缝处理的看图片的纹理变化(上下左右)不大为佳。

3. 木纹材质的使用注意点:

A. 常用的几种木纹的光泽是有差异的,在使用材质球做材质的时候我们就要注意。深色的木纹材质如黑胡桃、黑橡木等纹路的色差大,纹理清晰。浅色的木材如榉木、桦木、沙木等材质色浅纹路不清晰,带有隐纹,

二. 玻璃材质的调整方法:

1. 玻璃材质的特性:

A. 玻璃材质是一种透明的实体,在3D中表现的方法有很多手法。通常是调整材质球的不透明度和材质球的颜色。玻璃分为蓝玻,绿玻,白玻(清玻),和茶色玻璃等。每种玻璃都有它不同的透明度和反光度,厚度的不同也影响了玻璃的透明度和反光度。

B. 自然光,灯光也对玻璃的透明度和反光度有影响。玻璃的背景对玻璃的反光影响的强度很大,一个深色的背景可以使玻璃看上象一面镜子,在做图时就要注意这一点。

C. 玻璃是有厚度的,玻璃的边由于折射的原理是不很通明,所以玻璃的边缘比玻璃本身色深,我们在3D中可以用面贴图,来体现。

2. 玻璃材质在3D中的体现方法:

A. 玻璃材质透明度一般在60~80之间。

B. 颜色一定要深,暗,

C. 在 Extended parameters中我们要调整第一行第一个参数,一般为50~75之间。

D. 玻璃材质还有一定的反光度,我们就要加入光线追踪。8%~10%在通道Reftection中加入光线追踪的效果。

E玻璃的效果要通过灯光的影响才能达到理想的效果。

三. 钢材金属材质的调整方法:

1. 金属材质的特性:

A. 金属材质是反光度很高的材质,受光线的影响最大的材质之一。同时它的镜面效果也是很强的,高精度抛光的金属和镜子的效果是相差无几。我们在做这种材质的时候就要用到光线追踪。

B. 金属材质的高光部分是很精彩的部分,有很多的环境色都容入在高光中,有很好的反射,镜面的效果。在暗部又很暗,几乎没有光线的影响成黑色的,金属是种反差效果很大的物质。

C. 金属在颜色上的体现只在过度色时有,受灯光的影响很大。

2. 金属材质在3D中的调整方法:

A. 金属材质要选用金属的材质球(Multi-layer)在调整高光强度,和高光面积的大小。高光强度一般是很强的,通常我们调整在108~355之间

B. 金属调整镜面,一般在50~80之间。看灯光对材质的影响,我们在调整镜面效果的强度。

C. 做金属物体的效果时,我们还要注意造型上的细部调整,我们在做金属时要把物体的反光槽做出来,有了反光槽金属的光泽就富有了变化。

四、地面砖墙面砖瓷砖大理石等石财的调整方法:

1. 地面砖材质在做图是要注意的事项:

A. 地面砖墙砖在家装中是有灰缝的。我们做图时要吧灰缝表现出来就要用到凹凸贴图。在Adobe Photoshop 中,我们把会缝的效果用黑线做出来,再在3D中我们用凹凸贴图通道赋予材质。

B. 砖有它自身的大小,怎样才能比较精确的表现砖的大小是我们常遇到的问题,我们可以用UVWmap中BOX来做这种效果,我们缩放BOX的大小就可以得到想要砖的大小了。这种做法优点就是砖的大小可以任意调整,缺点就是地砖花色纹路不自然,对于浅色纹路不明显的砖使用表现时是常用的。

C. 还有种做法,用于纹路花色要求高的砖比如仿古砖、大纹路的大理石等。我们是在Adobe Photoshop 中把纹理材质画上网格地面灰缝。在用于材质贴图。

五. 文化石、层岩、鹅卵石等物体材质的调整:

1. 文化石材质的处理:

A. 文化石是一种很不规则的材质,有人造、天然的分类。常用为人造文化石它有这色泽鲜明,形状多样,质量轻,容易安装等特点,文化石凹凸的质感很强,是一种古老又现代的装饰材料,人们使用不下200~300年,现代家砖中也常常使用这种材质。在3D中我们主要是对文化石的凹凸效果要把握好,我们就要在Adobe Photoshop 中把文化石的纹理做成黑白的纹理贴图。在掉入3D中来使用。

B. 鹅卵石也是一样有着文化石的凹凸特点,但鹅卵石的光泽是很高的, 它的反光比较强,这在作图时要区别与文化石的一点。

还有很多的东西我在作图事发现了问题,这就要我们大家在作图时多多留意,总结经验吸取教训,这样才能一步一步的提高和进步。

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

上一篇:autocad绘图技巧下一篇:鄂土资发201133号