最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

温度采集系统课程设计报告

来源:动视网 责编:小OO 时间:2025-09-24 21:00:01
文档

温度采集系统课程设计报告

1、设计目的1)查资料了解8255A和ADC0809AD转换器的工作原理2)原理图设计,用PROTEL画出原理图3)软件设计,给出流程图及源代码并加注释2、所用设备1)8088CPU2)DS18B20温度传感器3)A/D570转换器4)8255A可编程并行接口5)3片LED显示6)74LS138译码器3、设计内容及步骤以8088CPU为核心设计一个温度采集系统,系统可以实现一路温度的采集,在3位LED显示器上显示当前温度。本设计所用器件主要有传感器,A/D转换器,8088CPU,可编程并行接口
推荐度:
导读1、设计目的1)查资料了解8255A和ADC0809AD转换器的工作原理2)原理图设计,用PROTEL画出原理图3)软件设计,给出流程图及源代码并加注释2、所用设备1)8088CPU2)DS18B20温度传感器3)A/D570转换器4)8255A可编程并行接口5)3片LED显示6)74LS138译码器3、设计内容及步骤以8088CPU为核心设计一个温度采集系统,系统可以实现一路温度的采集,在3位LED显示器上显示当前温度。本设计所用器件主要有传感器,A/D转换器,8088CPU,可编程并行接口
1、设计目的

 1)查资料了解8255A和ADC0809AD转换器的工作原理

   2)原理图设计,用PROTEL画出原理图

   3)软件设计,给出流程图及源代码并加注释

2、所用设备

1)8088CPU

2)DS18B20温度传感器

3)A/D570转换器

4)8255A可编程并行接口

5)3片LED显示

6)74LS138译码器
3、设计内容及步骤

以8088 CPU 为核心设计一个温度采集系统,系统可以实现一路温度的采集,在3位LED显示器上显示当前温度。本设计所用器件主要有传感器,A/D转换器,8088CPU,可编程并行接口8255,LED显示器等。首先传感器把所测的温度转换为电压,输入A/D转换器中进行转换,然后再把得到的二进制数经过CPU在LED上显示出来系统总体方案按照设计要求我们把传感器选择DS18B20,A/D转换采用AD570,把温度传感器采集过来的电压信号直接传给A/D 转换器,然后通过8路数据接入8255可编程芯片,经微处理器8088处理后输出,通过LED显示当前采集的温度值。

图-1 系统框图

4、程序设计(各个软件模块设计和流程图)

4.1温度采集DS18B20的读数据流程图

图-2  温度采集DS18B20的读数据流程图

4.2 处理温度BCD码流程图

图-3 处理温度BCD码流程图

4.3 显示数据刷新流程图

图-4 显示数据刷新流程图

4.4系统总的流程图

图-5系统总的流程图

4.5系统总程序

TEMPER_L DATA 36H ;温度寄存器的低位 

TEMPER_H DATA 35H ;温度寄存器的高位 

TEMPER_NUM DATA 60H ;保存温度值 

FLAG BIT 00H ;器件是否存在的标志位,器件存在由软件置1,否则清0 

DQ BIT P1.0 

ORG 0000H 

AJMP START 

;

;*********************************************************

; /*主程序*/ * 

;********************************************************** 

ORG 0030H 

START: MOV SP,#70H 

       CALL GET_TEMPER ;读取温度值 

       CALL TEMPER_COV ;读取转换后的温度值 

       MOV R0,A 

       CALL DISP 

       CALL DELAY 

       AJMP START 

;

;************************************************************** 

 /*查询方式取得AD转换结果子程序*/ * 

;**************************************************************

 READAD:MOV   AL,92H       ;方式字,端口AB为输入方式,C为输出方式

OUT   PORTCT,AL       ;PORTCT为控制端口地址,设方式字

MOV   AL,01

OUT   PORTC ,AL       ;使PC0为1,PORTC为C端口地址

MOV   AL,00

OUT   PORTC,AL        ;使PC0为0,启动AD转换

W:     IN    AL,PORTB        ;读取端口B中的状态

             RCR   AL,01           ;如PB0为1,则再查询

             JC    W

MOV   AL,01

OUT   PORTC,AL        ;使PC0为1,撤销启动信号

IN    AL,PORTA        ;读取转换数据

 

;************************************************************** 

; /*取得温度子程序*/ * 

;************************************************************** 

GET_TEMPER: SETB DQ 

CALL CHECK ; 

MOV A,#0CCH ; 跳过ROM匹配(当总线上只有一个器件时可跳过读ROM命令) 

CALL DSWRITE ; 写入命令 

MOV A,#44H ; 发出温度转换命令 

CALL DSWRITE 

NOP 

CALL DELAY 

CALL DELAY 

CALL CHECK 

MOV A,#0CCH ; 跳过ROM匹配 

CALL DSWRITE 

MOV A,#0BEH ; 发出读温度命令 

CALL DSWRITE 

CALL DSREAD ;读取温度的低位 

MOV R0,#TEMPER_L 

MOV @R0,A ;存入TEMPER_L 

CALL DSREAD ;读取温度的低位 

DEC R0 ;存入TEMPER_H 

MOV @R0,A 

RET 

;************************************************************* 

; /*读DS18B20的程序,从DS18B20中读出一个字节的数据*/ * 

;************************************************************* 

DSREAD: MOV R2,#8 

READ1: CLR C 

SETB DQ 

NOP 

NOP 

CLR DQ 

NOP 

NOP 

NOP 

SETB DQ 

MOV R3,#01 

DJNZ R3,$ 

MOV C,DQ 

MOV R3,#23 

DJNZ R3,$ 

RRC A 

DJNZ R2,READ1 

RET 

;************************************************************* 

; /*写DS18B20子程序*/     * 

;************************************************************ 

DSWRITE: MOV R2,#8 

CLR C 

WRITE1: CLR DQ 

MOV R3,#6 ;延时12US 

DJNZ R3,$ 

RRC A 

MOV DQ,C 

MOV R3,#23 ;46US 

DJNZ R3,$ 

SETB DQ 

NOP 

DJNZ R2,WRITE1 

SETB DQ 

RET 

;************************************************************

; /*温度转换程序*/ * 

;**************************************************************; 

TEMPER_COV: MOV A,#0F0H 

ANL A,TEMPER_L ; 舍去温度低位中小数点后的四位温度数值 

SWAP A 

MOV TEMPER_NUM,A 

MOV A,TEMPER_L 

JNB ACC.3,TEMPER_COV1 ; 四舍五入去温度值, 

INC TEMPER_NUM ;D3为1则加1,为0则舍去 

TEMPER_COV1: MOV A,TEMPER_H ; 高位 

ANL A,#07H ;温度寄存器的高字节只有后3位有效 

SWAP A 

ORL A,TEMPER_NUM ; 拼装 

MOV TEMPER_NUM,A ; 保存变换后的温度数据 

CALL BIN_BCD 

RET 

;************************************************************** 

; /*检查器件是否存在子程序*/ * 

;************************************************************** 

CHECK: CALL DSINIT ; 初始化 

JB FLAG,CHECK1 ; 检查标志位判断器件是否存在 

AJMP CHECK ; 若DS18B20不存在则继续检测 

CHECK1: CALL DELAY1 

RET 

;************************************************************

; /*BCD码转换子程序*/ * 

;************************************************************* 

BIN_BCD: MOV DPTR,#TEMP_TAB 

MOV A,TEMPER_NUM 

MOVC A,@A+DPTR 

MOV TEMPER_NUM,A 

RET 

;************************************************************** 

; /*初始化子程序程序*/ 

;初始化时序是由总线发出一个复位信号,然后由器件发 * 

;出一个应答信号,表示该器件存在,并准备好开始工作 

;************************************************************** * 

DSINIT: SETB DQ 

NOP 

CLR DQ ;总线发一个复位信号 

MOV R0,#80H 

DJNZ R0,$ ; 延时 

SETB DQ ;拉高总线准备检测 

MOV R0,#25H ;延时 

DJNZ R0,$ 

JNB DQ,INIT2 ;检测是否有应答信号,有应答信号跳转 

AJMP INIT3 ; 延时 

INIT2: SETB FLAG ; 置标志位,表示DS1820存在 

AJMP INIT4 

INIT3: CLR FLAG ; 清标志位,表示DS1820不存在 

AJMP INIT5 

INIT4: MOV R0,#6BH 

DJNZ R0,$ ; 延时 

INIT5: SETB DQ ;拉高总线 

RET 

;************************************************************ 

; /*配置程序*/ * 

;*************************************************************; 

RE_CONFIG: JB FLAG,RE_CONFIG1 ; 若DS18B20存在,转RE_CONFIG1 

RET 

RE_CONFIG1: MOV A,#0CCH ; 发SKIP ROM命令 

CALL DSWRITE 

MOV A,#4EH ; 发写暂存存储器命令 

CALL DSWRITE 

MOV A,#00H ; TH(报警上限)中写入00H 

CALL DSWRITE 

MOV A,#00H ; TL(报警下限)中写入00H 

CALL DSWRITE 

MOV A,#7FH ; 选择12位温度分辨率 

CALL DSWRITE 

RET 

;************************************************************* 

; /*显示子程序*/ * 

;************************************************************* 

DISP: MOV A,R0 ;转换结果低位 

ANL A,#0FH 

ACALL DSEND ;显示 

MOV A,R0 

SWAP A 

ANL A,#0FH ;转换结果高位 

ACALL DSEND ;显示 

RET 

DSEND: MOV DPTR,#SGTB1 

MOVC A,@A+DPTR ;取字符 

MOV SBUF,A 

JNB TI,$ 

CLR TI 

RET 

;************************************************************ 

; /*延时程序*/ * 

;*********************************************************** 

DELAY: MOV R7,#00H 

DELAY0: MOV R6,#00H 

DJNZ R6,$ 

DJNZ R7,DELAY0 

RET 

DELAY1: MOV R7,#20H 

DJNZ R7,$ 

RET 

;

 

;************************************************************* 

; /*字符编码*/ * 

;************************************************************* 

SGTB1:  DB   03H    ;0 

        DB   9FH    ;1 

        DB   25H    ;2 

        DB   0DH    ;3 

        DB   99H    ;4 

        DB   49H    ;5 

        DB   41H    ;6 

        DB   1FH    ;7 

        DB   01H    ;8 

        DB   09H    ;9 

        DB   11H    ;A 

        DB   0C1H   ;B 

        DB   63H    ;C 

        DB   85H    ;D 

        DB   61H    ;E 

        DB   71H    ;F 

        DB   00H 

TEMP_TAB: DB 00H,01H,02H,03H,04H,05H,06H,07H 

          DB 08H,09H,10H,11H,12H,13H,14H,15H 

          DB 16H,17H,18H,19H,20H,21H,22H,23H 

          DB 24H,25H,26H,27H,28H,29H,30H,31H 

          DB 32H,33H,34H,35H,36H,37H,38H,39H 

          DB 40H,41H,42H,43H,44H,45H,46H,47H 

          DB 48H,49H,50H,51H,52H,53H,54H,55H 

          DB 56H,57H,58H,59H,60H,61H,62H,63H 

          DB H,65H,66H,67H,68H,69H,70H,71H 

          DB 72H,73H,74H,75H,76H,77H,78H,79H 

          DB 80H,81H,82H,83H,84H,85H,86H,87H 

          DB 88H,H,90H,91H,92H,93H,94H,95H 

          DB 96H,97H,98H,99H 

          END

5、硬件设计

5.1温度采集模块

温度采集部分运用DS18B20传感器,其测温系统简单,测温精度高,连接方便,占用口线少,转换速度快,与微处理器的接口简单,给硬件设计工作带来了极大的方便,能有效地降低成本,缩短开发周期。

5.1.1 DS18B20简介 

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

(2)在使用中不需要任何外围元件。

(3)可用数据线供电,电压范围: 3.0—5.5 V。

(4)测温范围:-55 — 125 ℃。固有测温分辨率为0.5 ℃。

(5)通过编程可实现9—12位的数字读数方式。

(6)用户可自设定非易失性的报警上下限值。

(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。 

5.1.2  DS18B20的内部结构

(1)  b闪速ROM的结构如下:  

开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前56位的CRC校验码,这也是多个DS18B20可以采用一线进行通信的原因。 

(2) 非易市失性温度报警触发器TH和TL,可通过软件写入用户报警上下限。 

(3) 高速暂存存储器 

DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM。后者用于存储TH,TL值。数据先写入RAM,经校验后再传给E2RAM。而配置寄存器为高速暂存器中的第5个字节,他的内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如下: 

低5位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动,R1和R0决定温度转换的精度位数,即是来设置分辨率,如表1所示(DS18B20出厂时被设置为12位)。  

设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要在分辨率和转换时间权衡考虑。 

高速暂存存储器除了配置寄存器外,还有其他8个字节组成,其分配如下所示。其中温度信息(第1,2字节)、TH和TL值第3,4字节、第6~8字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。  

当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0062 5 ℃/LSB形式表示。温度值格式如下:  

对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。表2是对应的一部分温度值。  

DS18B20完成温度转换后,就把测得的温度值与TH,TL作比较,若T>TH或T < TL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行告警搜索。

(4) CRC的产生在 b ROM的最高有效字节中存储有循环冗余校验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确

5.1.3 DS18B20的工作原理 

DS18B20 的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解 18B20的内部存储器资源。18B20 共有三种形态的存储器资源,它们分别是: ROM  只读存储器,用于存放 DS18B20ID 编码,其前 8 位是单线系列编码(DS18B20 的编码是19H) ,后面48 位是芯片唯一的序列号,最后 8位是以上 56的位的 CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20 共  位 ROM。 RAM  数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20 共9 个字节 RAM,每个字节为 8 位。第1、2 个字节是温度转换后的数据值信息,第 3、4 个字节是用户 EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第 5 个字节则是用户第 3 个 EEPROM的镜像。第 6、7、8 个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第 9 个字节为前 8个字节的 CRC码。EEPROM  非易失性记忆体,用于存放长期需保存的数据,上下限温度报警值和校验数据, DS18B20共3位EEPROM,并在 RAM 都存在镜像,以方便用户操作。另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。 

5.1.4 DS18B20的精确延时问题 

虽然DS18B20有诸多优点,但使用起来并非易事,由于采用单总线数据传输方式,DS18B20的数据I/O均由同一条线完成。因此,对读写的操作时序要求严格。为保证DS18B20的严格I/O时序,需要做较精确的延时。在DS18B20操作中,用到的延时有15 μs,90 μs,270 μs,540 μs等。因这些延时均为15 μs的整数倍,因此可编写一个DELAY15(n)函数,源码如下: 

只要用该函数进行大约15 μs×N的延时即可。有了比较精确的延时保证,就可以对DS18B20进行读写操作、温度转换及显示等操作。(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。软件模块设计和流程图

5.2 A/D转换部分

本模块采用A/D570进行转换,A/D570内部带有三态输出门,但不是外部可控的,转换结束时,三态门会自动接通,因此,从转换结束到取走数据这段时间内,输出数据线始终被占据。A/D570的输入模拟电压可为单极性,也可为双极性,极性可通过标为15脚的不同接法来选择。但接地时为单极性输入,电压范围为0~10V,若悬空则为双极性,电压范围为-5~+5V. A/D570要求用低电平启动信号,启动信号输入端为B/-C. 

其结构图如下:

图-6 A/D转换电路图

5.3 数据处理部分

本部分采用8255A可编程接口与8088处理器共同作用,进行数据运算,其硬件连接图如下:

图-7 数据处理电路图

5.4 数据显示电路部分

数据显示用3片LED数码管,其电路连接图如下,图中103为排阻1000K。

图-8 数据显示电路图

5.5系统总电路图

图-9 系统总电路图

6、心得体会

经过一周的学习和设计,终于完成了这次课程设计的内容。通过和其他成员合作,实现了程序的基本功能,以及运用网络和其他书籍查询相关知识的能力,让我们有了灵活使用丰富资源的能力。在程序的设计和编码过程中,不仅将书本的知识又重新巩固了一遍,同时还查阅了大量的书籍文献,提高了自身能力;从项目的角度来看做到了知识的灵活运用,提高了软件的设计能力和编码熟练度。在课程设计过程中,我遇到了很多问题,虽然只是一个很简单的设计课题,却让我从中体会到了,做好一件事所需要的努力。但是,这是一个很好的经历,在遇到问题的时候,能查阅相关书籍和询问老师,在老师的引导下,一步步完成设计的任务。

这次汇编课程设计为我们提供了不一般的学习方法和机会,让我们从传统的被动授学转变为主动求学;从死记硬背的模式中脱离出来,转变为在实践中学习,增强了领悟、创新和推断的能力。掌握了自学的方法,思考方式逐渐趋于成熟,逻辑性规范、明确。这些方法的提高是终身受益的,我认为这难得的一周,让我真正懂得了生活和学习的基本规律。

7、参考文献

[1] 戴梅萼,《微型计算机及应用》,清华大学出版社,第四版

[2] 张毅坤,陈善久,《单片微型计算机原理及应用》,西安电子科技大学出版社

[3] 雷晓平,《微机原理与接口技术》, 人民邮电出版社 

8、具体分工

0605074332 张  辉  程序设计整理

0605074327 韩  帅  绘图并查找资料

0605074331 郭新梦  硬件设计整理

文档

温度采集系统课程设计报告

1、设计目的1)查资料了解8255A和ADC0809AD转换器的工作原理2)原理图设计,用PROTEL画出原理图3)软件设计,给出流程图及源代码并加注释2、所用设备1)8088CPU2)DS18B20温度传感器3)A/D570转换器4)8255A可编程并行接口5)3片LED显示6)74LS138译码器3、设计内容及步骤以8088CPU为核心设计一个温度采集系统,系统可以实现一路温度的采集,在3位LED显示器上显示当前温度。本设计所用器件主要有传感器,A/D转换器,8088CPU,可编程并行接口
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top