ds18b20汇编设计报告(附电路图和程序)Word格式文档下载.doc
- 文档编号:6941694
- 上传时间:2023-05-07
- 格式:DOC
- 页数:18
- 大小:606KB
ds18b20汇编设计报告(附电路图和程序)Word格式文档下载.doc
《ds18b20汇编设计报告(附电路图和程序)Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《ds18b20汇编设计报告(附电路图和程序)Word格式文档下载.doc(18页珍藏版)》请在冰点文库上搜索。
4.1.1主程序流程图
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。
这样可以在一秒之内测量一次被测温度,其程序流程见图7所示。
图7主程序流程图
4.1.2各子程序流程图
1、初始化程序
所有操作都必须由初始化脉冲开始,波形如图,单片机先输出一个480~960us低电平到DQ引脚,再将DQ引脚置高电平,过15~60us后检测DQ引脚状态,若为低电平则DS18B20工作正常,否则初始化失败,不能正常测量温度。
2、读取温度子程序
读取温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。
主要包括以下三个命令:
(1)写暂存器命令【4EH】
这个命令为由TH寄存器开始向DS18B20暂存器写入数据,4EH命令后的3字节数据将被保存到暂存器的地址2、3、4(TH、TL、CONFIG)三个字节。
所有数据必须在复位脉冲前写完。
即如果只想写一个字节的数据到地址2,可按如下流程:
1、初始化;
2、写0CCH,跳过ROM检测;
3、写4EH;
4、写1字节数据;
5、复位,即向DQ输出480~960us低电平
(2)读暂存命令【BEH】
这个命令由字节0读取9个暂存器内容,如果不需要读取所有暂存内容,可随时输出复位脉冲终止读取过程
(3)转换温度命令【44H】
这个命令启动温度转换过程。
转换温度时DS18B20保持空闲状态,此时如果单片机发出读命令,DS18B20将输出0直到转换完成,转换完成后将输出1。
图8读取温度子程序
3、写流程图
写时隙:
写时隙由DQ引脚的下降沿引起。
18B20有写1和写0两种写时隙。
所有写时隙必须持续至少60μs,两个时隙之间至少有1μs的恢复时间。
DS18B20在DQ下降沿后15μs~60μs间采样DQ引脚,若此时DQ为高电平,则写入一位1,若此时DQ为低电平,则写入一位0,如图9所示。
所以,若想写入1,则单片机应先将DQ置低电平,15us后再将DQ置高电平,持续45μs;
若要写入0,则将DQ置低电平,持续60μs。
图9写流程图
4、读流程图
读时隙:
读时隙由DQ下降沿引起,持续至少1μs的低电平后释放总线(DQ置1)DS18B20的输出数据将在下降沿15μs后输出,此时单片机可读取1位数据。
读时隙结束时要将DQ置1。
所有读时隙必须持续至少60μs,两个时隙之间至少有1μs的恢复时间。
图10读流程图
4.4汇编语言程序源代码
27
DATA_BUS BIT P3.3
FLAG BIT 00H
TEMP_L EQU 30H
TEMP_H EQU 31H
TEMP_DP EQU 32H
TEMP_INT EQU 33H
TEMP_BAI EQU 34H
TEMP_SHI EQU 35H
TEMP_GE EQU 36H
DIS_BAI EQU 37H
DIS_SHI EQU 38H
DIS_GE EQU 39H
DIS_DP EQU 3AH
DIS_ADD EQU 3BH
ORG 0000H
AJMP START
ORG 0050H
START:
MOV SP, #40H
MAIN:
LCALL READ_TEMP
LCALL PROCESS
AJMP MAIN
;
读温度程序
READ_TEMP:
LCALL RESET_PULSE
MOV A, #0CCH
LCALL WRITE
MOV A, #44H
LCALL WRITE
LCALL DISPLAY
LCALL RESET_PULSE
MOV A, #0CCH
LCALL WRITE
MOV A, #0BEH
LCALL READ
RET
复位脉冲程序
RESET_PULSE:
RESET:
SETB DATA_BUS
NOP
CLR DATA_BUS
MOV R7, #255
DJNZ R7, $
SETB DATA_BUS
MOV R7, #30
DJNZ R7,$
JNB DATA_BUS, SETB_FLAG
CLR FLAG
AJMP NEXT
SETB_FLAG:
SETB FLAG
NEXT:
MOV R7, #120
JNB FLAG, RESET
RET
写命令
WRITE:
MOV R6, #8
CLR C
WRITING:
MOV R7, #5
RRC A
MOV DATA_BUS, C
MOV R7, #30H
DJNZ R6, WRITING
循环显示段位
DISPLAY:
MOV R4, #200
DIS_LOOP:
MOV A, DIS_DP
MOV P2, #0FFH
MOV P0, A
CLR P2.7
LCALL DELAY2MS
MOV A, DIS_GE
SETB P0.7
CLR P2.6
MOV A, DIS_SHI
CLR P2.5
MOV A, DIS_BAI
MOV A, TEMP_BAI
CJNE A, #0,SKIP
AJMP NEXTT
SKIP:
CLR P2.4
NEXTT:
DJNZ R4, DIS_LOOP
读命令
READ:
MOV R0, #TEMP_L
MOV R6, #8
MOV R5, #2
READING:
MOV C, DATA_BUS
DJNZ R6, READING
MOV @R0, A
INC R0
DJNZ R5, READING
数据处理
PROCESS:
MOV R7, TEMP_L
MOV A, #0FH
ANL A, R7
MOV TEMP_DP,A
MOV A, #0F0H
SWAP A
MOV TEMP_L, A
MOV R7, TEMP_H
ORL A, TEMP_L
MOV B, #64H
DIV AB
MOV TEMP_BAI,A
MOV A, #0AH
XCH A, B
MOV TEMP_SHI,A
MOV TEMP_GE,B
MOV A, TEMP_DP
MOV DPTR, #TABLE_DP
MOVC A, @A+DPTR
MOV DPTR, #TABLE_INTER
MOVC A, @A+DPTR
MOV DIS_DP, A
MOV A, TEMP_GE
MOV DPTR, #TABLE_INTER
MOV DIS_GE, A
MOV A, TEMP_SHI
MOV DIS_SHI, A
MOV DIS_BAI ,A
DELAY2MS:
MOV R6, #3
LOOP3:
MOV R5, #250
DJNZ R5, $
DJNZ R6, LOOP3
TABLE_DP:
DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06H
DB 06H,07H,08H,08H,09H,09H
TABLE_INTER:
DB 03FH,006H,05BH,04FH,066H
DB 06DH,07DH,07H,07FH,06FH
END
5DS18B20简单介绍
DALLAS最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。
DALLAS半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。
温度测量范围为-55~+125摄氏度,可编程为9位~12位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
被测温度用符号扩展的16位数字量方式串行输出;
其工作电源既可以在远端引入,也可以采用寄生电源方式产生;
多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
5.1DS18B20的性能特点如下:
●独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯
●DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温
●DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内
●适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电
●温范围-55℃~+125℃,在-10~+85℃时精度为±
0.5℃
●零待机功耗
●可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温
●在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快
●用户可定义报警设置
●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件
●测量结果直接输出数字温度信号,以"
一线总线"
串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力
●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作
以上特点使DS18B20非常适用与多点、远距离温度检测系统。
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列、各种封装形式如图12所示,DQ为数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源;
GND为地信号;
VDD为可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
图12外部封装形式
5.2DS18B20使用中的注意事项
DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:
●DS18B20从测温结束到将温度值转换成数字量需要一定的转换时间,这是必须保证的,不然会出现转换错误的现象,使温度输出总是显示85。
●在实际使用中发现,应使电源电压保持在5V左右,若电源电压过低,会使所测得的温度精度降低。
●较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。
在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。
●在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此,当单总线上所挂DS18B20超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
●在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环,这一点在进行DS18B20硬件连接和软件设计时也要给予一定的重视。
5.3DS18B20内部结构
图13为DS1820的内部框图,它主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器(内含便笺式RAM),用于存储用户设定的温度上下限值的TH和TL触发器存储与控制逻辑、8位循环冗余校验码(CRC)发生器等七部分。
DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图6所示
图13DS18B20内部结构框图
64b闪速ROM的结构如下:
8bit检验CRC
48bit序列号
8bit工厂代码(10H)
MSB LSB MSB LSB MSB LSB
开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。
温度报警触发器TH和TL,可通过软件写入户报警上下限。
主机操作ROM的命令有五种,如表所列
指
令
说
明
读ROM(33H)
读DS1820的序列号
匹配ROM(55H)
继读完64位序列号的一个命令,用于多个DS1820时定位
跳过ROM(CCH)
此命令执行后的存储器操作将针对在线的所有DS1820
搜ROM(F0H)
识别总线上各器件的编码,为操作各器件作好准备
报警搜索(ECH)
仅温度越限的器件对此命令作出响应
DS18B20温度传感器的内部存储器
还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。
高速暂存RAM的结构为8字节的存储器,结构如图14所示。
便笺式存储器(上电状态)
温度测量值LSB(50H)
温度测量值MSB(50H
TH高温寄存器
TL低温寄存器
配位寄存器
预留(FFH)
预留(OCH)
预留(IOH)
循环冗余码校验(CRC)
E2PROM
(85℃)
Byte0
Byte1
Byte2
Byte3
Byte4
Byte5
Byte6
Byte7
Byte8
图14高速暂存RAM结构图
前2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
温度低位
温度高位
TH
TL
配置
保留
8位CRC
LSBMSB
当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.0625℃/LSB形式表示。
温度值格式如下:
23
22
21
20
2-1
2-2
2-3
2-4
MSB LSB
S
26
25
24
MSB LSB
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;
如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
图中,S表示位。
对应的温度计算:
当符号位S=0时,表示测得的温度植为正值,直接将二进制位转换为十进制;
当S=1时,表示测得的温度植为负值,先将补码变换为原码,再计算十进制值。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
DS18B20温度传感器主要用于对温度进行测量,数据可用16位符号扩展的二进制补码读数形式提供,并以0.0625℃/LSB形式表示。
表2是部分温度值对应的二进制温度表示数据。
表2部分温度值
温度/℃
二进制表示
十六进制表示
+125
0000011111010000
07D0H
+25.0625
0000000110010001
0191H
+0.5
0000000000001000
0008H
0000000000000000
0000H
-0.5
1111111111111000
FFF8H
-25.0625
1111111001101111
FE6FH
-55
1111110010010000
FC90H
DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较,若T>
TH或T<
TL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应。
因此,可用多只DS18B20同时测量温度并进行告警搜索。
在64位ROM的最高有效字节中存储有循环冗余校验码(CRC)。
主机根据ROM的前56位来计算CRC值,并和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ds18b20 汇编 设计 报告 电路图 程序