智能仪器课程设计报告李林.docx
- 文档编号:10303571
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:23
- 大小:243.10KB
智能仪器课程设计报告李林.docx
《智能仪器课程设计报告李林.docx》由会员分享,可在线阅读,更多相关《智能仪器课程设计报告李林.docx(23页珍藏版)》请在冰点文库上搜索。
智能仪器课程设计报告李林
智能仪器设计课程设计报告
―――基于DS18B20温度测量系统的设计
学生姓名:
李林
学号:
0701170118
班级:
07011701
任课教师:
石晓晶
成绩:
南京理工大学机械工程学院
基于DS18B20温度测量系统的设计
摘要:
设计了一种数字化温度测量系统,其误差小于等于±0.5℃,具有3位数码显示(XX.X℃)和开机自检功能,并配有简单键盘,能够设置温度上、下限临界报警值设置并上位机通信。
关键字:
DS18B20,温度测量,单片机
目录
引言………………………………………………………………………………….4
1硬件电路设计……………………………………………………………………..5
1.1总体方案………………………………………………………………..5
1.2DS18B20介绍………………………………………………………..5
1.2.1DS18B20的主要特征…………………………………………5
1.2.3DS18B20的时序………………………………………………6
1.3键盘控制设计……………………………………………………………...7
1.4共阴极LED显示控制设计………………………………………………8
1.5复位电路的设计…………………………………………………………..9
1.6DS18B20测温电路的设计………………………………………………..9
1.7上位机通信电路…………………………………………………………..10
2软件编程设计……………………………………………………………………11
2.1总体流程图…………………………………………………………….11
2.2主程序…………………………………………………………………11
2.3自检子程序……………………………………………………………12
2.4上、下限温度值传送子程序…………………………………………13
2.5键盘控制子程序………………………………………………………14
2.6DS18B20复位子程序…………………………………………...........15
2.7DS18B20写控制字子程序………………………………...................16
2.8DS18B20读数据子程序……………………………………………….16
2.12数据表…………………………………………………………...........17
总结…………………………………………………………………………….........17
致谢……………………………………………………………………………….....18
参考文献……………………………………………………………………….........19
附录1(电路图)………………………………………………………………......21
附录2(实物图)…………………………………………………………………..20
引言
在工业控制和生产自动化中,对于温度量的测量是十分重要的。
测量温度的方法多种,传统温度测量方法是通过温度敏感元件,将温度的测量转换成对电信号的测量,再通过调理电路和模—数转换后得到温度值。
本设计的温度测量系统,采用了Dallas公司的DS18B20型“一线总线”接口的数字化传感器,通过软件控制的方式,简化了硬件设计环节。
1硬件电路设计
1.1总体方案
本设计的总体思路为:
以单片机为控制核心,采用动态扫描的LED显示方式,并采用查询的方式对按键进行扫描。
它包括:
单片机核心模块、LED显示模块、键盘模块、报警模块、温度测量模块和上位机通信模块。
图1.1硬件系统框图图1.2DS18B20封装图
1.2DS18B20介绍
DS18B20是美国DALLAS半导体公司生产的最新可组网、单线数字式温度传感器。
DS18B20将温度传感器、A/D传感器、寄存器、接口电路集成在一个芯片中,外观与普通塑封晶体管极为相似,可实现直接数字化输出、测试,并具有控制功能强、传输距离远、抗干扰能力强、微型化、微功耗、易于和微控制器MCU或微机进行数据交换等特点。
图1.2DS18B20封装DS18B20采用的是1-Wire总线协议。
1-Wire是DALLAS公司的一项专有技术,它采用一根信号线实现信号的双向传输,接口简单、节省1/0口线、便于扩展和维护。
1.2.1DS18B20的主要特征
美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。
全部传感元件及转换电路集成在形如一只三极管的集成电路内。
“一线总线”独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
现在,新一代的DS18B20体积更小、更经济、更灵活。
使你可以充分发挥“一线总线”的优点。
同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:
环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。
而且新一代产品更便宜,体积更小[8]。
1.DS18B20的特性[9]
(1)适应电压范围更宽,电压范围:
3.0~5.5V,寄生电源方式下可由数据线供。
(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。
(4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。
(5)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。
(6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。
(7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。
(8)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。
(9)负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
2.DS18B20内部结构及DS18B20的管脚排列
64位光刻ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。
不同的器件地址序列号不同。
DS18B20内部结构主要由四部分组成:
64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。
DS18B20的引脚定义:
(1)DQ为数字信号输入/输出端
(2)GND为电源地
(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)
图1.3RAM及EEPROM结构
图1.4温度转换数据关系图1.5DS18B20电路
1.2.3DS18B20的时序
复位时序如下:
图1.6复位时序
DS18B20的数据读写是通过时间隙处理位和命令字来确认信息交换的。
写时间隙分为写“0”和写“1”,时序如图1.7。
在写数据时间隙的前15uS总线需要是被控制器拉置低电平,而后则将是芯片对总线数据的采样时间,采样时间在15~60uS,采样时间内如果控制器将总线拉高则表示写“1”,如果控制器将总线拉低则表示写“0”。
每一位的发送都应该有一个至少15uS的低电平起始位,随后的数据“0”或“1”应该在45uS内完成。
整个位的发送时间应该保持在60~120uS,否则不能保证通信的正常。
图1.7DS18B20写时序
读时间隙时控制时的采样时间应该更加的精确才行,读时间隙时也是必须先由主机产生至少1uS的低电平,表示读时间的起始。
随后在总线被释放后的15uS中DS18B20会发送内部数据位,这时控制如果发现总线为高电平表示读出“1”,如果总线为低电平则表示读出数据“0”。
每一位的读取之前都由控制器加一个起始信号。
注意:
如图1.8所示,必须在读间隙开始的15uS内读取数据位才可以保证通信的正确。
在通信时是以8位“0”或“1”为一个字节,字节的读或写是从高位开始的。
图1.8DS18B20读时序
1.3键盘控制设计
本设计的温度上限和下限设置由四个按键控制。
从右向左分别为:
“下限设置”键、“上限设置”键、“设置位变换”键和“数值上调”键,分别经上拉电阻连接至单片机的P2.0到P2.3口。
图1.9单片机与键盘输入电路
上下限温度值的设置过程如下:
1程序在初始化时将温度上限值设为30度,若须要设置温度上限值,则须按住“上限设置”键不放,约1s左右后,LED显示上限温度值中的十位值“3”,其他位为熄灭状态。
2按一下“数值上调”键,LED显示数字为“4”,以此类推,到“9”后再按则清零为“0”。
3按一下“设置位变换”键,则设置位变换到温度值得个位,若要设置数值,则可重复步骤2。
4再按一下“设置位变换”键,则设置位变换到温度值得小数位,再按一下设置位有循环到十位。
5松开“上限设置”键,则上限温度设置完成。
6设置下限温度时,只须按住“下限限设置”键,其余过程与设置上限温度过程相同。
1.4共阴极LED显示控制设计
如图1.10P0口经电阻上拉后总线驱动器74LS245相连,以增强其电流的输出能力。
经过电阻限流后,与四位LED显示器的a~dp码段相连,作为显示数据的输入端。
图1.9中,P2.7到P2.4分别与U4的A1到A4相连。
经驱动后,分别与LED显示器的四个公共端相连接,作为动态扫描的选通信号。
图1.10扫描显示控制电路
1.5复位电路的设计
本设计采用的89C52单片机为高电平复位,电容和电阻组成的延时电路可以保证时间常数为1s,并具有上电复位和手动复位的功能。
图1.11单片机复位电路
1.6DS18B20报警电路的设计
图1.12为DS18B20的报警电路图,DQ口为DS18B20的数据输入输出口,通过4.7K的上拉电阻与P1.7相连。
图1.12报警显示电路
1.7上位机通信电路
本设计中包含了单片机与上位机通信的电路部分,可以实现上位机通过RS—232口进行程序的下载,还可将测量的温度值传送给上位机。
采用USART的以通信的方式,通过MAX232芯片将TTL电平逻辑和RS232的电平逻辑进行转换。
图1.13与上位机串行通信RS-232接口电路
2软件编程设计
2.1总体流程图
软件监控程序流程为,开机自检、检测按键、温度测量、阈值比较、数据传送和数据显示,其流程图如下:
图2.1软件流程图
2.2主程序
主程序的功能为设置程序的起始地址,完成各种子程序的调用。
;**********************************************************************
ORG0000H
LJMPMAIN
ORG0040H
MAIN:
LCALLT_UPDATA
LCALLT_DOWNDATA
NOP
NOP
LCALLTEST
;***********************************************************************
L1:
LCALLKEY_TEST
;**********************************************************************
LCALLDS18_RESET
MOVA,#0CCH;写控制字
LCALLDS18_W
MOVA,#44H;写控制字,转换温度
LCALLDS18_W
LCALLDELAY_500US;延时等待转换完毕
LCALLDS18_RESET
MOVA,#0CCH;写控制字
LCALLDS18_W
MOVA,#0BEH
LCALLDS18_W;写控制字,读12B寄存器的值
LCALLDS18_R;读数据
;***********************************************************************
LCALLCMP_UP
LCALLCMP_DOWN
;***********************************************************************
LCALLTRANS
MOVR5,A
MOVR4,#0FFH;显示的循环次数寄存器
LCALLSHOW
LJMPL1
AJMP$
;***********************************************************************
2.3自检子程序
自检程序的功能是查看LED显示器是否能够正常工作。
正常显示值为:
“8.8.8.8.”。
;***********************************************************************
TEST:
MOVP0,#0FFH
MOVP2,#0FH
SETBP1.6
SETBP1.5
LCALLDELAY_1S
CLRP1.6
CLRP1.5
RET
;********************************************************************
2.4上、下限温度值传送子程序
下面两个子程序的功能是将程序存储区的温度上下限值存入到数据存储区,以方便后面对上下限值得读写操作。
;********************************************************************
T_UPDATA:
MOVR0,#30H;UP_DATA的数据存储区RAM地址
MOVR3,#0;计数器
T_U:
MOVDPTR,#UP_DATA
MOVA,R3
MOVCA,@A+DPTR
MOV@R0,A
INCR0
INCR3
CJNEA,0FFH,T_U
RET
;******************************************************************
T_DOWNDATA:
MOVR0,#40H;DOWN_DATA的数据存储区RAM地址
MOVR3,#0;计数器
T_D:
MOVDPTR,#DOWN_DATA
MOVA,R3
MOVCA,@A+DPTR
MOV@R0,A
INCR0
INCR3
CJNEA,0FFH,T_D
RET
;*********************************************************************
2.5键盘控制子程序
本段子程序的作用是对是否有按键按下进行判断,若有“上限设置”键或“下限设置”键按下,则进入到相应的程序段。
;*********************************************************************
KEY_TEST:
MOVR2,#01111111B;设置显示位寄存器
MOVR0,#30H;UP_DATA的存储地址
MOVR1,#40H;DOWN_DATA的存储地址
JNBP2.1,UP_SET;如果p2.1按下,跳转上限设置
JNBP2.0,DOWN_SET;如果p2.0按下,跳转下限设置
RET
;***********************************************************************
;上限设置
UP_SET:
LCALLDELAY_50MS
JBP2.1,KEY_TEST;键盘消抖
MOVA,@R0;显示十位
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
MOVA,R2
MOVP2,A
JNBP2.2,UP_SHIFT;判断是否有调节键按下
JNBP2.3,U_U
JNBP2.1,UP_SET;等待p2.1松开
LCALLDELAY_50MS
LJMPKEY_TEST
;***********************************************************************
UP_SHIFT:
LCALLDELAY_50MS
JBP2.2,UP_SET;键盘消抖
INCR0
RRA;右移一位
CJNEA,#0EFH,S1;移位到最右边
MOVR0,#30H
MOVR2,#01111111B;复位
AJMPS3
S1:
MOVR2,A
S3:
JNBP2.2,$;等待p2.2松开
LJMPUP_SET
;***********************************************************************
U_U:
LCALLDELAY_50MS
JBP2.3,UP_SET
INC@R0;上限值加1
CJNE@R0,#10,U_N_QINGLING
MOV@R0,#0
U_N_QINGLING:
LJMPUP_SET
;**********************************************************************
;下限设置
DOWN_SET:
LCALLDELAY_50MS
JBP2.0,KEY_TEST;键盘消抖
MOVA,@R1;显示十位
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A
MOVA,R2
MOVP2,A
JNBP2.2,DOWN_SHIFT
JNBP2.3,D_U
JNBP2.0,DOWN_SET;等待p2.1松开
LCALLDELAY_50MS
LJMPKEY_TEST
;***********************************************************************
DOWN_SHIFT:
LCALLDELAY_50MS
JBP2.2,DOWN_SET;键盘消抖
INCR1
RRA;右移一位
CJNEA,#0EFH,S2;移位到最右边
MOVR1,#40H
MOVR2,#01111111B;复位
AJMPS4
S2:
MOVR2,A
S4:
JNBP2.2,$;等待p2.2松开
AJMPDOWN_SET
;*********************************************************************D_U:
LCALLDELAY_50MS
JBP2.3,DOWN_SET
INC@R1;上限值加1
CJNE@R1,#10,D_N_QINGLING
MOV@R1,#0
D_N_QINGLING:
LJMPDOWN_SET
;***********************************************************************
2.6DS18B20复位子程序
参考DS18B20的复位时序,晶振频率为12MHz,严格按照DS18B20的时序编程。
;***********************************************************************
DS18_RESET:
SETBP1.7
NOP
CLRP1.7
LCALLDELAY_500US;延时500us
SETBP1.7;释放总线
LCALLDELAY_40US;延时40us暂不做延时
JBP1.7,$;总线若为低,则复位成功;否则复位失败,等待。
LCALLDELAY_500US;延时等待复位过程结束
RET
;***********************************************************************
2.7DS18B20写控制字子程序
参照DS18B20写数据时序。
;***********************************************************************
DS18_W:
MOVR2,#8;写一个字节
CLRC
W_1:
CLRP1.7
NOP
NOP;拉低1us以上
NOP
RRCA;带进位循环右移
MOVP1.7,C;写一位数据
LCALLDELAY_40US;延时40us
SETBP1.7
NOP
NOP
DJNZR2,W_1
SETBP1.7;每位数据中恢复高电平
RET
;********************************************************************
2.8DS18B20读数据子程序
参照DS18B20读数据时序。
;***********************************************************************
DS18_R:
MOVR2,#11;读一个字节
SETBP1.7
R_1:
CLRP1.7;拉低
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 仪器 课程设计 报告