数字式温度测量电路的设计

合集下载

单片机基于stm32的数字温度计设计

单片机基于stm32的数字温度计设计

单片机基于stm32的数字温度计设计
数字温度计是一种用于测量环境温度的设备。

在这个问题中,我们将使用基于STM32的单片机来设计一个数字温度计。

为了设计这个温度计,我们需要以下组件和步骤:
1. STM32单片机:STM32是一种基于ARM架构的单片机,它具有强大的计算能力和丰富的外设接口,适用于各种应用。

2. 温度传感器:我们需要选择一种适合的温度传感器,常用的有数字式温度传感器,如DS18B20。

3. 连接电路:将温度传感器连接到STM32单片机。

这通常需要使用一些电子元件,如电阻、电容和连接线等来建立电路连接。

4. 编程:使用适合STM32单片机的编程语言,如C语言,来编写程序。

程序将读取温度传感器的数据,并将其转换为数字值。

5. 温度显示:将温度数据显示在合适的显示设备上,如LCD显示屏或七段数码管。

可以使用STM32单片机的GPIO口控制这些显示设备。

6. 数据处理:可以对温度数据进行进一步处理,如计算平均温度、设定警报阈值等。

以上是一个基本的数字温度计设计的流程。

具体的实现细节和代码编写可能需要根据具体的硬件和软件平台进行调整。

基于AT89C51DS18B20的数字温度计设计

基于AT89C51DS18B20的数字温度计设计

基于AT89C51DS18B20的数字温度计设计一、本文概述Overview of this article本文旨在探讨基于AT89C51微控制器和DS18B20数字温度传感器的数字温度计设计。

我们将详细介绍如何利用这两种核心组件,结合适当的硬件电路设计和软件编程,实现一个能够准确测量和显示温度的数字温度计。

This article aims to explore the design of a digital thermometer based on AT89C51 microcontroller and DS18B20 digital temperature sensor. We will provide a detailed introduction on how to utilize these two core components, combined with appropriate hardware circuit design and software programming, to achieve a digital thermometer that can accurately measure and display temperature.我们将对AT89C51微控制器和DS18B20数字温度传感器进行简要介绍,包括它们的工作原理、主要特性和适用场景。

然后,我们将详细阐述硬件电路的设计,包括微控制器与温度传感器的连接方式、电源电路、显示电路等。

We will provide a brief introduction to the AT89C51 microcontroller and DS18B20 digital temperature sensor, including their working principles, main characteristics, and applicable scenarios. Then, we will elaborate on the hardware circuit design, including the connection method between the microcontroller and temperature sensor, power circuit, display circuit, etc.在软件编程方面,我们将介绍如何使用C语言对AT89C51微控制器进行编程,实现温度数据的读取、处理和显示。

数字式温度测量系统的设计与实现

数字式温度测量系统的设计与实现

2024/8/3
5
2.温度检测系统的数字化实现
首先,调试ADC0804的测试程序,并用数码管进行实时显示。 显示要求为0.0~100.0。然后利用标定温度传感器所得的数据 进行变换系数的求取。注意为了减小CPU的计算量,可采用 定点数运算,及为了显示温度的小数点后一位,可将所有的温 度数据都×100,则折算系数计算公式为
➢ (二)设计一个数字式温度检测系统。焊 接PWM单元电路板,搭建系统硬件,下载 程序,实现设计。
➢ (三)问题与思考,任务拓展。
2024/8/3
11
7.1 数字式温度检测系统的组成
➢ 数字式温度测量系统是利用微处理器为核心而构 成的一种温度测量和显示系统,它主要有温度测 量单元,温度变送单元,模数转换单元,数据处 理分析单元以及显示单元等组成。
➢ 为了便于对温度测量系统的准确性进行验证,该 系统还具有可控加温环节,具体实现思路是采用 PWM方式驱动加热丝,完成温度的增加,从而减 小了系统标校和测试的工作量。
6
6.4 温度检测系统的程序设计
➢ 例如:系统有四个按键,我们可以按照如下思想 进行规定:
➢ KEY1:实时温度显示按键,当按下此键系统显示 实时温度。
➢ KEY2:PWM占空比设定键,系统显示当前的占 空比,数据范围1~99。
➢ KEY3:占空比加1键,每按下一次,当前占空比 加1,加到99停止。
2024/8/3
4
6.3 温度检测系统的标校过程
1.传感器变送器的零点和满量程的标定
温度传感器的主要技术指标为:零点、满量程输出、 增益、以及线性度等。进行温度传感器的这几个指标的测 试过程,称为传感器的标定。
首先,准备一个烧杯的冰水混合物,将被标定温度变送器 和校准用热电阻Pt100都埋入到冰水混合物中,直到接Pt100的 标准表显示温度为0℃,再调节温度变送器的调零电阻,使得温 度变送器的输出为0V。然后再用加热装置加热烧杯的水并使其 沸腾,读取标准表所示的实际温度数,然后再调节温度变送器 的满量程调节电阻,使得其输出为5V。 反复进行零点和满量程标定若干次,直到合适为止,并记录此 时满量程所对应的实际输出电压和实际温度值,为下面的温度 测量的数字实现提供依据。

数字温度计设计

数字温度计设计

数字温度计摘要:温度计在实际生产和人们的生活中都有广泛应用。

该设计是数字温度计,首先是对总体方案的选择和设计;然后通过控制LM35进行温度采集;将温度的变化转为电压的变化,其次设计电压电路,将变化的电压量通过放大系统转化为所需要的电压;再通过TC7107将模拟的电压转化为数字量后直接驱动数码管LED对实时温度进行动态显示。

最后在Proteus仿真软件中构建了数字温度计仿真电路图,仿真结果表明:在温度变化时,可以通过电压的变化形式传递,最终通过3位十进制数显示出来。

关键词:温度计;电路设计;仿真目录1设计任务与要求 (1)2方案设计与论证 (1)3单元电路的设计及仿真 (2)3.1传感器 (2)3.2放大系统 (2)3.3 A/D转换器及数字显示 (4)4 总电路设计及其仿真调试过程 (6)4.1总电路设计 (6)4.2仿真结果及其分析 (7)5 结论与心得 (9)6 参考文献 (11)1 设计任务与要求温度计是工农业生产及科学研究中最常用的测量仪表。

本课题要求用中小规模集成芯片设计并制作一数字式温度计,即用数字显示被测温度。

具体要求如下:(1)测量范围0~100度。

(2)测量精度0.1度。

(3)3位LED数码管显示。

掌握线性系统的根轨迹、时域和频域分析与计算方法;(2)掌握线性系统的超前、滞后、滞后-超前、一二阶最佳参数、PID等校正方法;(3)掌握MATLAB线性系统性能分析、校正设计与检验的基本方法。

2 方案设计与论证数字温度计的原理是:通过控制传感器进行温度采集,将温度的变化转化为电压的变化;然后设计电压电路,将变化的电压通过放大系统转化为需要的电压;再通过A/D转换器将模拟的电压转换为数字量后驱动数码管对实时温度进行动态显示。

原理框图如图2-1所示:图2-1数字温度计原理框图由设计任务与要求可知道,本设计实验主要分为四个部分,即传感器、放大系统、模数转换器以及显示部分。

经过分析,传感器可以选择对温度比较敏感的器件,做好是在某参数与温度成线性关系,比如用温敏晶体管构成的集成温度传感器或热敏电阻等;放大系统可以由集成运放组成或反相比例运算放大器;A/D转换器需要选择有LED 驱动显示功能的,而可供选择的参考元件有ICL7107,ICL7106,MC14433等;显示部分用3位LED数码管显示。

数字温度计工作原理及设计

数字温度计工作原理及设计
图6 :温 度 检 测 电路 的原 理 框 图
3基础知识 介绍
1 . 3 方案 比较


3 . 1 L M 3 5 集成温度 传感器
L M3 5属于 NS公司生产 的集成 电路温度 传感器系列产 品,它 的特点是工作精度高和线 性工作范围较宽。该器件输 出电压与摄 氏温度 线性成 比例 。这个特 点符合我们 日常对温度读 书的 习惯 。对其精度 的验证是用 电烙铁直接靠 近L M3 5温度传感器给其加热 ,很快显示数数 值来 。方便实验数据测量 。从使用者 的习惯及 方便性来说 , L M3 5与用开 尔文标准 的线性温 度传感 器相 比更优越 一些 ,此外 ,L M3 5无需 外部校准或微调,可 以提供  ̄1 / 4  ̄ C的常用 的室 温精度 ,方 便实用 。L M3 5集成温度传 感器如
图 3所 示 。
片 ቤተ መጻሕፍቲ ባይዱ

、 J
图1 :数字温度计原理框 图
以上两 种方 案第 一种方 案 电路 设计 上 比 较简 单对 于温度显示计的设计上也可 以添加例 如温度 临界 点报警 功能,但 是使用单片机进行 硬件 电路焊接后 , 还必须软件编程再进行调试 。 后续工作繁 多。因此 此设计选择第二种方案 。 虽电路 复杂 点但通 过找资料、 电路设计 、硬件 电路焊接 后就 可以实 现温度测量 。
图5 :L E D引脚定义 图
1设计方案选择
1 . i 方 案 一
可 以采 用温 度传 感 器 DS 1 8 B 2 0 ,在 单片 机 温度 检测应 用 电路 设计 中,大 多 都是 使用 DS 1 8 B 2 0温度 传感 器 ,而且 它可 以直 接读 取 被测非 电量温度值 , 进 行转换,达到设计要求 。 数字 温度 计 由 DS 1 8 B2 0传感 器、时 钟振 荡 电 路 、单片 机、L E D 显示 电路 、单 片机 复位 电 路等 电路组成 。原理框 图如 图 1 所示 。

毕业设计179数字电子技术课程设计之温度计

毕业设计179数字电子技术课程设计之温度计

数字温度计《数字电子技术课程设计》指导老师:学院:电气工程与自动化学院专业:电子信息工程班级:姓名:学号:2007年5月数字式温度计用传统的水银或酒精温度计来测量温度,不仅测量时间长、读数不方便、而且功能单一,已经不能满足人们在数字化时代的要求,本文提出了一种新型的数字式温度测量电路的设计方案。

一、设计目的(1)了解大规模专用集成电路的组成;(2)了解半导体温度传感器的工作原理;(3)掌握非电量测量基本原理;(4)了解A/D转换的概念;(5)学会基本放大电路的使用以及调试;(6)掌握利用大规模集成电路设计数字式温度计电路和调试的方法。

二、设计内容及要求(1)利用大规模集成电路ICL7107型三位半A/D转换器和集成温度传感器AD590设计一数字式温度计电路;(2)要求温度测量范围为-55℃~150℃;显示采用三位半LED显示,自动显示正负号;取样速率约为6次/秒;准确度±1%±1字;(3)工作温度范围0~40℃,电源为士5V,要既可以采用交流,也可采用直流供电;(4)画出电路图,写出完整的报告(包括电路结构的确定、元件参数的确定);(5)用面包板格出电路,并调试之。

三、数字式温度计的组成和工作原理这种数字式温度表由温度传感器、t/V转换电路、基准电源、三位半数字电压表、电源五个部分组成。

图1 数字温度计设计框图1.集成温度传感器图2(a)所示AD590是美国生产的集成温度传感器,具有很高准确度。

采用Y0-52封装的AD590,外形同小功率晶体管相似。

第1脚为正极.第2脚为负极.第3脚接管壳,使用时将第3脚接地,可起到屏蔽作用。

AD590的测温范围是—55℃~150℃,电源电压范围是4—30V。

当工作电压选5V、温度保持125℃;长期温度漂移仅±1℃/月。

AD590的图形符号见图1(b).它等效于1个高吸抗的恒流源。

在工作电压为1—30V 、测温范围是—55~150℃的范围之内,对应于热力学温度T 每变化1K ,就输出1μA 的电流。

51单片机数字温度计设计与实现

51单片机数字温度计设计与实现

51单片机数字温度计设计与实现温度计是一种常见的电子测量设备,用于测量环境或物体的温度。

而数字温度计基于单片机的设计与实现,能够更准确地测量温度并提供数字化的显示,具备更多功能。

一、设计原理数字温度计的设计原理基于温度传感器和单片机。

温度传感器用于感测温度,而单片机负责将传感器读取的模拟信号转化为数字信号,并进行温度计算及显示。

二、所需材料1. 51单片机2. 温度传感器(例如DS18B20)3. 数码管或液晶显示屏4. 连接线5. 电源电路电容、电阻等元件三、设计步骤1. 连接电路:按照电路原理图将51单片机、温度传感器和显示器等元件进行连接。

注意正确连接引脚,以及电源电路的设计和连接。

2. 编写程序:利用汇编语言或C语言编写51单片机的程序,实现温度读取、计算和显示功能。

3. 温度传感器设置:根据温度传感器的型号和数据手册,配置单片机相应的输入输出口、温度转换方式等参数。

4. 读取温度:通过单片机对温度传感器进行读取,获取传感器采集的温度数据。

5. 温度计算:根据传感器输出的数据和转换方法,进行温度计算,得到更准确的温度数值。

6. 数字显示:将计算得到的温度数值通过数码管或液晶显示屏进行数字显示。

可以选择合适的显示格式和单位。

7. 添加附加功能:可以根据实际需求,增加其他功能,如报警功能、数据记录、温度曲线显示等。

8. 系统测试与优化:将设计的数字温度计进行系统测试,确保其正常运行和准确显示温度。

根据测试结果进行可能的优化或改进。

四、注意事项1. 连接线应牢固可靠,避免出现松动或接触不良的情况。

2. 选择合适的温度传感器,并正确设置传感器的相关参数。

3. 程序设计时应注意算法的准确性和优化性,以确保测量的准确性和实时性。

4. 温度传感器的安装和环境选择也会影响温度计的准确性,应避免与外部环境干扰和热源过近的情况。

五、应用领域1. 家庭和工业温度监测:数字温度计可以广泛应用于室内、室外温度监测,工业生产中的温度控制等。

数字温度计的设计与制作实验报告

数字温度计的设计与制作实验报告

重庆邮电大学通信与信息工程学院班级GJ011201小组成员徐睿2012210460李易晓2012210057张地根2012210114指导老师邓炳光数字温度计的设计与制作实验报告设计要求1,数字温度计设计与制作:利用之前绘制的“C51学习板”掌握的SCH和PCB图知识,绘制一个基于STC89C51的单片机系统,增加温度采集0~120度,温度显示要求3位整数+1位小数,电路原理图和PCB图2,SCH必须按照规范进行绘制。

3,系统还要求具备电源指示灯,外部使用MINI-USB进行5V供电,在满足要求的情况下,使用的元器件越少越好;温度采集可以用模拟或数字器件、显示可以用LCD或数码管。

4,PCB板要求使用底层走线,元器件在顶层。

5,PCB板上标识自己的学号、姓名。

6,PCB板大小,满足元器件布局的情况下,尽可能减少面积。

7,PCB审查正确后,进行单面板腐蚀的相关操作:热转印、腐蚀、钻孔、裁剪等。

元器件自行购买,然后焊接,调试,编写单片机程序,完成设计报告。

设计步骤一主要原器件的选择控制模块:STC89C52温度采集模块:DS18B20显示模块:8位共阴数码管二原理图的绘制1新建一个工程,在Altium Designer软件中的“File”选项中选择“New→Project→PCB project”,然后保存工程至文件夹中(文件名定义要规范)。

2纸张配置,在Design选项中单击左键,选择Document Options项,然后根据原理图的要求选择合适的配置。

3展开工程管理标签、元器件库。

4填写图纸信息。

(项目名称、图纸名称、版本、序号、作者。

)5元器件绘制。

1)创建元件库;2).绘制元器件;3)完善元器件属性;6.修改元器件名字;7. 同一个库中增加其他元器件;8.打开原理图库管理标签。

1)元器件放置。

2)元器件摆放、连线。

(按格点对齐。

)3)修改元器件值。

4)完成图纸。

5)生成Bom表。

三PCB图绘制1)封装设计。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

泰山职业技术学院毕业设计(论文)题目:数字式温度测量电路设计系部:汽车电子工程系专业:应用电子学号:***************职称:指导老师二OO 年月日泰山职业技术学院毕业论文(设计)任务书课题名称:数字式温度测量电路设计系部:汽车与电气工程系_________专业:应用电子_________________姓名:赵志广___________________学号:_________________________指导教师:刘勇_____________________二〇〇年月日摘要温度是一种最基本的环境参数,人们生活与环境温度息息相关,在工业生产过程中需要实时测量温度,在工业生产中也离不开温度的测量,因此研究温度的测量方法和控制具有重要的意义。

本设计是一款简单实用的小型数字温度计,所采用的主要元件有传感器18B20,单片机AT89S52,,四位共阴极数码管一个,电容电阻若干。

本次数字式温度测量计的设计共分为五部分,主控制器,LED显示部分,传感器部分,复位部分,时钟电路。

本论文首先是对其工作原理进行了叙述,然后对其各个电路进行分析与设计,最后完成整个系统的设计。

【关键词】数字式温度测量电路、单片机、AT89C52、温度传感器、DS18B20 Digital temperature measurement circuit designAuthor: Directed by:Abstract:The temperature is a basic environmental parameters of people's lives are closely related to the ambient temperature in industrial processes require real-time measurements of temperature, is also inseparable from the temperature measurement in industrial production of temperature measurement and control of importantsignificance.This is a simple and practical design small digital thermometer, the main components of the sensor 18B20 MCU AT89S52 is, four digital cathode tube one, capacitive resistance of certain The design of the digital temperature gauge is divided into five parts, the main controller, LED display, sensor parts, reset part of the clock circuit. Firstly, its working principle is described and its various circuit analysis and design, to finalize the design of theentire system.Key words:Microcontroller, AT89C52, temperature sensor, DS18B20第一章概述1.1 电路功能和组成数字式测量电路应具有下列基本功能;1、能把温度转换为成比列的模拟电信号(电流或电压等)。

2、把模拟电信号变换成数字信号。

3、最后用过数字电路(计数、译码和显示)直接指示出温度值。

根据上述基本功能的要求,可画出数字式测温电路的方框图,如图1所示。

它主要包括;温度变换处理器、A/D转换器和计数、译码、显示三大部分。

由图可以看出,在电路组成上数字式测温电路与其它数字式测量电路(比如数字式电压表等),有许多相同之处,差别仅在于测温电路多了温度变换和处理部分,这部分的作用是;1、要把温度(非电量)转换成与之成比例的电信号2、对转换后的电压进行线性化,零点校正等处理并加以放大。

图1 数字式温度测量电路组成框图同其它数字式测量电路一样,A/D转换器也是数字式测量电路的核心组成部分。

1.2 设计方案的考虑为了实现图1所示各方框的功能,可以有很多种不同的方法,设计时应根据不同的设计要求和具体的情况进行选择。

1、温度变换电路关键是确定温度传感器,常用的传感器有热电偶,铂电阻,半导体热敏电阻等。

它们有各自的性能和应用范围,比如热电偶适于高温测量(常用于500°C以上的温度范围)而热敏电阻比较低,常用于温度低于200°C的场合。

近年来集成温度传感器已被广泛采用。

它的主要优点是测温精度高,重复性好。

线性优良,使用方便且适于远距离传送。

不足之处是它的适用温度范围不是很宽。

电压放大电路应有高的共模仰制比、低噪声个高输入电阻、这样才能对传感器输出的微弱电压进行有效的放大,采用测量放大器电视最理想的方法。

2、A/D转换器利用V/F转换器实现A/D转换。

该方法的有点是转换精度高、电路简单、成本较和抗干扰能力强,尤其适于在转换速度不高又需要远距离信号传输的场合下应用。

3、计数、译码和显示电路这部分内容在数字电子电路课程中都已进行了详细的讨论,本设计电路也没有其它特殊要求,但应注意的是要在固定时间内对A/D转换后的数字量进行计数。

根据以上对组成功能块的初步讨论,可以画出温度测量电路较为详细的方框图,见图2所示,图中增加了一个控制门电路,由它产生一个门控信号(时序脉冲),只有在其脉冲宽度内才允许计数器计数,这样才能实现上述的在固定时间内对数字信号进行计数的要求。

为了实现精确的温度测量,要求这个门控信号的脉冲宽度要十分精确和稳定。

图2 数字式温度计组成方框图1.3 设计要求1、技术指标(1)测量范围:-50°C~+150°C 。

(2)测量精度:误差<0.2%。

(3)非线性度:<0.2%。

(1)主要部件采用中、大规模集成电路芯片。

(3)功耗小(<5W)2、设计内容(1)数字式温度计组成方框图,确定设计方案。

(2)分析各单元电路的工作原理和特性,并有必要的计算。

(3)说明主要集成电路芯片的功能、特点和基本工作原理。

(4)简述测量电路的调试方法。

(5)绘出完整的电路图。

(6)完成设计说明书第二章、软件设计1、系统总体方案设计本次课程设计采用的是protues软件仿真,用Keil软件进行编译。

Protues软件是英国Labcenter electronics公司出版的EDA工具软件。

它不仅具有其它E DA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前最好的仿真单片机及外围器件的工具。

软件部分由主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。

开始初始化调显示子程序得出温度总子程序返回图1 主程序流程2、主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。

这样可以在一秒之内测量一次被测温度,其程序流程见图3-1所示。

3、读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。

其程序流程图如图3-2所示图2读出温度子程序流程4、二进制转换BCD码命令子程序二进制转换BCD码命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。

二进制转换BCD码命令子程序流程图,如图4图4二进制转换BCD码流程图5、计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图5所示。

图5测量温度流程图6、温度数据显示子程序显示数据子程序主要是对显示缓冲器中的示数据进行刷新操作,查表送段码至L ED,开位码显示,采用动态扫描方式。

7、实验仿真图6系统仿真图如图6所示,没有加上复位电路和时钟电路,这是protues的一个缺陷,在没有全部电路的情况下依然能够进行仿真。

调试结果分析:本次数字温度计能够比较精确的测量一般温度,测量范围是-55~160,并且能够测出小数。

8、系统原理图复位电路时钟电路P0口上拉电阻温度传感器第三章、源程序代码;************************************************* ;DS18B20的读写程序,数据脚P3.4 * ;显示数据通过P1口传输,P3.0控制小数位的显示 * ;P3.1控制个位的显示,P3.2控制十位的显示 * ;P3.3控制百位的显示,P3.1控制小数点的显示 * ;显示温度-55到+125度,显示精度为0.1度 *;显示采用4位LED共阴显示测温值 *;*************************************************TEMPER_L EQU 40H ;用于保存读出温度的低8位TEMPER_H EQU 41H ;用于保存读出温度的高8位FLAG1 EQU 38H ;是否检测到DS18B20标志位TEMPL EQU 30H ;用于保存读出正确温度值的低8位TEMPH EQU 31H ;用于保存读出正确温度值的高8位TEMPHC EQU 32H ;温度转换寄存器低8位TEMPLC EQU 33H ;温度转换寄存器高8位BUF1 EQU 34H ;显示缓冲寄存器小数位BUF2 EQU 35H ;显示缓冲寄存器个数位BUF3 EQU 36H ;显示缓冲寄存器十数位BUF4 EQU 37H ;显示缓冲寄存器百数位TEMPDIN BIT P3.4 ;数据脚定义DIN BIT P3.1 ;小数点控制;**********************************************ORG 0000H ;主程序入口地址AJMP MAIN ;转主程序ORG 0003H ;外中断0中断入口DB 00H,00H,00H,00H,00H,00H,00H;RETI ;跳至INTEX0执行中断服务程序 ORG 000BH ;定时器T0中断入口地址DB 00H,00H,00H,00H,00H,00H,00H ;RETI ;跳至定时器T0执行中断服务程序 ORG 0013H ;外中断1中断入口DB 00H,00H,00H,00H,00H,00H,00H ;RETI ;跳至INTEX1执行中断服务程序 ORG 001BH ;定时器T1中断入口地址DB 00H,00H,00H,00H,00H,00H,00H ;RETI ;中断返回(不开中断)ORG 0023H ;串行口中断入口地址DB 00H,00H,00H,00H,00H,00H,00H ;RETI ;中断返回(不开中断);**********************************************;两位数码管来显示温度,显示范围00到99度,显示精度为1度;因为12位转化时每一位的精度为0.0625度,我们不要求显示小数所以可以抛弃29H 的低4位;将28H中的低4位移入29H中的高4位,这样获得一个新字节,这个字节就是实际测量获得的温度;无需乘于0.0625系数;**********************************************MAIN: MOV SP, #50H ;设置堆栈MOV P1, #0FFH ;LPTEMP:LCALL GET_TEMPER ;调用读温度子程序LCALL CONVTEMP ;温度BCD码计算处理子程序LCALL DISPBCD ;显示区BCD码温度值刷新子程序MOV P0,TEMPLCMOV P2,TEMPHC;*************************************LCALL DISPLAY ;调用数码管显示子程序;*************************************AJMP LPTEMP ;循环;*************************************; 这是DS18B20复位初始化子程序;*************************************INIT_1820:SETB TEMPDINNOPCLR TEMPDIN ;主机发出延时537微秒的复位低脉冲MOV R1,#3TSR1: MOV R0,#107DJNZ R0,$DJNZ R1,TSR1SETB TEMPDIN ;然后拉高数据线NOPNOPNOPMOV R0,#25H ;延时TSR2: JNB TEMPDIN,TSR3 ;等待DS18B20回应DJNZ R0,TSR2LJMP TSR4 ;DS1820不存在TSR3: SETB FLAG1 ;置标志位,表示DS1820存在CLR P3.7 ;检查到DS18B20就点亮P3.7LEDLJMP TSR5TSR4: CLR FLAG1 ;清标志位,表示DS1820不存在CLR P3.1LJMP TSR7TSR5: MOV R0,#117TSR6: DJNZ R0,TSR6 ;时序要求延时一段时间TSR7: SETB TEMPDIN ;结束RET;****************************************; 读出转换后的温度值;****************************************GET_TEMPER:SETB TEMPDIN ;LCALL INIT_1820 ;先复位DS18B20JB FLAG1,TSS2RET ;判断DS1820是否存在?若DS18B20不存在则返回TSS2: CLR P3.6 ;DS18B20已经被检测到!!MOV A,#0CCH ;跳过ROM匹配LCALL WRITE_1820MOV A,#44H ;发出温度转换命令LCALL WRITE_1820;*****************************************;这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒;*****************************************LCALL DISPLAY ;显示温度;*****************************************LCALL INIT_1820 ;准备读温度前先复位MOV A,#0CCH ;跳过ROM匹配LCALL WRITE_1820MOV A,#0BEH ;发出读温度命令LCALL WRITE_1820LCALL READ_18200 ;将读出的温度数据保存到35H/36HRET;*******************************************;写DS18B20的子程序(有具体的时序要求);*******************************************WRITE_1820:MOV R2,#8 ;一共8位数据CLR C ;C清0SETB TEMPDIN ;/NOP ;/NOP ;/WR1: CLR TEMPDIN ;MOV R3,#6 ;延时DJNZ R3,$RRC A ;数据右移MOV TEMPDIN,C ;写入一位数据MOV R3,#23 ;延时DJNZ R3,$SETB TEMPDIN ;拉高数据端口NOPDJNZ R2,WR1 ;判断是否写完SETB TEMPDIN ;拉高数据端口RET;*************************************;处理温度BCD码子程序;*************************************CONVTEMP:MOV A,TEMPH ;ANL A,#80H ; 判断最高位JZ TEMPC1 ; 判断温度是否在零下?CLR C ; 温度值补码变成原码MOV A,TEMPL ;CPL AADD A,#01H ;MOV TEMPL,A ;MOV A, TEMPH ; -CPL A ;ADDC A,#00H ;MOV TEMPH,A ; TEMPHC HI=符号位MOV TEMPHC,#0BH ; 置"-"标志SJMP TEMPC11 ;TEMPC1: MOV TEMPHC,#0AH ; 置"+"标志不显示;**************************************TEMPC11: MOV A,TEMPHC ; 计算小数位温度BCD值SWAP AMOV TEMPHC,A ;MOV A,TEMPL ;ANL A,#0FH ; 乘0.0625MOV DPTR,#TEMPDOTTAB ;MOVC A,@A+DPTR ;MOV TEMPLC,A ; TEMPLC LOW= 小数部分 BCD ;**************************************MOV A,TEMPL ; 计算整数位温度BCD值ANL A,#0F0H ;SWAP A ;MOV TEMPL,A ;MOV A,TEMPH ;ANL A,#0FH ;SWAP A ;ORL A,TEMPL ;MOV TEMPER_L ,A ;//LCALL HEX2BCD1 ; 调用单字节十六进制转BCD子程序;************************************MOV TEMPL,A ;ANL A,#0F0H ;SWAP A ;ORL A,TEMPHC ; TEMPHC LOW = 十位数 BCDMOV TEMPHC,A ;MOV A,TEMPL ;ANL A,#0FH ;SWAP A ; TEMPLC HI = 个位数 BCDORL A,TEMPLC ;MOV TEMPLC,A ;MOV A,R7 ;JZ TEMPOUT ;ANL A,#0FH ;SWAP A ;MOV R7,A ;MOV A,TEMPHC ; TEMPHC HI = 百位数 BCDANL A,#0FH ;ORL A,R7 ;MOV TEMPHC,A ;TEMPOUT: RET ;;**************************************;小数部分分码表**************************************TEMPDOTTAB: DB 00H,01H,01H,02H,03H,03H,04H,04H,05H,06HDB 06H,07H,08H,08H,09H,09H ;*************************************;显示区 BCD 码温度值刷新子程序;**************************************;温度暂存器内的2字节中,高字节的低半字节和低字节的高半字节组成一个字节, ;这个字节的二进制值转换为十进制后,就是温度值的百、十、个位值,而剩下的低字节化为;十进制后,就是温度值的小数部分.;**************************************DISPBCD:MOV A,TEMPLC ; 温度数据移入显示寄存器ANL A,#0FH ; 取低字节的低4位(小数部分)MOV BUF1,A ; 小数部分放入寄存器MOV A,TEMPLC ; 取低字节的高4位(个位数)SWAP A ;ANL A,#0FH ;MOV BUF2,A ; 个位数放入寄存器MOV A,TEMPHC ; 取高字节的低4位(十位数)ANL A,#0FH ;MOV BUF3,A ; 十位数放入寄存器MOV A,TEMPHC ; 取高字节的高4位(百位数)SWAP A ;ANL A,#0FH ;MOV BUF4,A ; 百位数放入寄存器MOV A,TEMPHC ;ANL A,#0F0H ;CJNE A,#10H,DISPBCD0 ; 百位数=0?SJMP DISPOUT ;;*************************************;最高位为0和正数的符号位都不显示;*************************************DISPBCD0: MOV A,TEMPHC ;ANL A,#0FH ;JNZ DISPOUT ; 十位数是0?MOV A,TEMPHC ;SWAP A ;ANL A,#0FH ;MOV BUF4,0AH ; 符号位不显示 MOV BUF3,A ; 十位数显示符号DISPOUT::RET ;;*************************************;单字节十六进制转BCD;*************************************HEX2BCD1:MOV B,#100 ; 十六进制 ->BCD DIV AB ; B=A%100MOV R7,A ; R7=百位数MOV A,#10 ;XCH A,B ;DIV AB ; B=A%BSWAP A ;ORL A,B ;RET ;;*************************************;X8 表示第7位需要异或运算;X5 表示第4位需要异或运算;X4 表示第3位需要异或运算;1 表示第0位需要异或运算*************************************CRC8CAL: PUSH ACC ;MOV R7,#08H ;CRC8LOOP1: XRL A,B ;RRC A ;MOV A,B ;JNC CRC8LOOP2 ;XRL A,#18H ;CRC8LOOP: RRC A ;MOV B,A ;POP ACC ;RR A ;PUSH ACC ;DJNZ R7,CRC8LOOP1 ;POP ACC ;RET ;;******************************************;读DS18B20的程序,从DS18B20中读出9个字节数据;开始的两个字节为温度数据;******************************************READ_18200: MOV R4,#9 ; 将温度高位和低位从DS18B20中读出 MOV R1,#TEMPER_L ; 低位存入40H(TEMPER_L),高位存入41H(TEMPER_H) MOV B, #00H ;;************************************RE00: MOV R2,#8 ; 数据一共有8位RE01: CLR CSETB TEMPDIN ; 拉高数据端口NOPNOPCLR TEMPDIN ; 拉低数据端口NOPNOPNOPSETB TEMPDIN ;MOV R3,#9 ; 延时RE10: DJNZ R3,RE10 ;MOV C,TEMPDIN ; 读出数据MOV R3,#23 ; 延时RE20: DJNZ R3,RE20 ;RRC A ; 数据右移一位DJNZ R2,RE01 ; 是否读完一个字节?;************************************MOV @R1,A ;INC R1 ; 读下一字节LCALL CRC8CAL ; 数据验证DJNZ R4,RE00 ; 9字节数据是否读完?MOV A,B ; 验证数据放入A中JNZ READ_OUT ; 验证出错则不改变温度值MOV TEMPL,TEMPER_L ; 温度数据的低字节放入寄存器 MOV TEMPH,TEMPER_H ; 温度数据的高字节放入寄存器READ_OUT: RET;*****************************************;显示子程序;*****************************************DISPLAY:MOV DPTR,#NUMTAB ; 指定查表启始地址MOV R0,#4 ; 显示4位数据DP11: MOV R1,#20 ; 显示1000次DPLP:SETB P3.1 ; 小数点不亮MOV A,BUF4 ; 取百位数JZ LOOP0MOVC A,@A+DPTR ; 查百位数的7段代码 MOV P1,A ; 送出百位的7段代码 CLR P3.3 ; 开百位显示ACALL DL1ms ; 显示1msSETB P3.3 ; 关百位显示LOOP0: SETB P3.1 ; 小数点不亮 MOV A,BUF3 ; 取十位数MOVC A,@A+DPTR ; 查十位数的7段代码 MOV P1,A ; 送出十位的7段代码 CLR P3.2 ; 开十位显示ACALL DL1ms ; 显示1msSETB P3.2 ; 关十位显示MOV A,BUF2 ; 取个位数MOVC A,@A+DPTR ; 查个位数的7段代码 ADD A,#80HMOV P1,A ; 送出个位的7段代码 CLR P3.1 ; 小数点亮CLR P3.1 ; 开个位显示ACALL DL1ms ; 显示1msSETB P3.1 ; 关个位显示SETB P3.1 ; 小数点不亮MOV A,BUF1 ; 取小位数MOVC A,@A+DPTR ; 查小位数的7段代码 MOV P1,A ; 送出小位的7段代码 CLR P3.0 ; 开小位显示ACALL DL1ms ; 显示1msSETB P3.0 ; 关小数显示DJNZ R1,DPLP ; 250次没完循环DJNZ R0,DP11 ; 4个100次没完循环RET;****************************************;0.2MS延时(按12MHZ算);****************************************DL1MS: MOV R7,#100DJNZ R7,$RET;****************************************;7段数码管0~9数字的共阴显示代码;****************************************NUMTAB: DB 03FH,06H,05BH,04FH,66H,6DH,7DH,07H,7FH,6FH,00H,40H ;; "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-" ;****************************************END第四章、实验总结通过这次对数字式温度测量电路的设计分析,我了解了设计电路的程序,也让我了解数字式温度测量电路的原理与设计理念,也初步了解了温度控制电路的原理。

相关文档
最新文档