单片机实现温度测量
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
温度测量电路设计
1.课程设计的目的
计算机控制系统课程设计是自动化专业的一个重要实践教学环节。在课程设计过程中,学生通过一个较完整的设计过程,可以加深对本门课程所学理论知识的理解与应用,提高学生对所学理论知识的综合运用能力,使学生对计算机控制系统有一个整体认识,掌握计算机控制系统的设计方法。通过课程设计,还可以培养学生独立工作能力,为将来毕业设计打好基础。
2.设计方案论证
2.1设计要求
某热电偶的测温范围为0到200℃,其输出电压为0到2V,设计一个温度测量电路。其主要功能有:要求其分辨率为8位,能实时显示温度值,具有上、下限报警功能(正常温度范围为30到180℃)。
完成软、硬件设计。
2.2设计思路
首先,分析系统总体结构:模拟信号的数字处理与显示
整个过程为:热电偶测量温度输出0到2V的电压信号,经放大电路调整到标准信号输入到A/D模块,之后转换成数字信号,CPU读取数字信号在内部对其进行处理(包括标度变换、越限报警等),之后控制数码管显示对应温度值,并控制报警灯的亮灭,温度测量系统框图如图1所示。
图1温度测量系统框图
2.3设计过程
2.3.1硬件设计
从A/D转换器开始入手,A/D模块可以选用ADC0809,这样既满足分辨率为8位的要求又考虑到以后多路模拟信号是的扩展,其输入信号选用0到5V,由于热电偶输出为0到2V电压信号,故需配合使用2.5倍放大器。
CPU选用80C51芯片,考虑到系统的可扩展性配合使用8255A并行接口扩展芯片。
选用三个LED数码管配合三个MC14513芯片组成三位温度显示数码管组。
报警灯选用通用一个红色TTL发光二极管。
现列出主要仪器及芯片清单如表1所示。
表1主要仪器及芯片一览表
名称用途
PC机编程、设计电路等
80C51中央处理单元、系统核心
8255A扩展并行接口
74LS373地址锁存器
ADC0809将模拟电压信号转换成数字信号
放大器调整电压信号使之符合ADC0809要求LED数码管(3个)显示温度值
MC14513(3个)BCD-7段锁存、译码、驱动数码管
发光二极管(红色)报警灯
各主要芯片的必要说明:
8255A:
图28255A引脚图
如图2所示,8255A共40个引脚,图示为双列直插式。
可以通过写控制字的方法对其进行设定如表2所示。
表28255A控制字
1D6D5D4D3D2D1D0
特征位A组工作方式
00——方式0
01——方式1
11——不用
PA
0输出
1输入
PC
高四位
0输出
1输入
B组工
作方式
0方式0
1方式1
PB
0输出
1输入
PC
低四位
0输出
1输入
8255A的工作方式与端口有关,PA口有3种方式(0方式、1方式、2方式),PB口和PC口只有2种方式(0方式、1方式)。
方式0:是一种基本输入/输出工作方式,有如下特点:
①0方式是一种基本输入/输出工作方式。通常不用联络信号,或不使用固定的联络信号。所谓基本I/O方式是指查询方式传送,也包括无条件传送。这种方式不能采用中断方式和CPU交换数据。输出锁存,输入有三态缓冲能力而无锁存功能。
②在0方式下,彼此独立的两个8位和两个4位并行口,共24根I/O线全部由用户支配。在0方式下,只能把C口的高4位为一组或低4位为一组同时输入或输出,不能再把4位中一部分作输入另一部分作输出,即4位一起行动。
③在0方式下不设置专用联络信号线,需要联络时,可由用户指定C口中的哪根线完成某种联络功能。
④是单向I/O,一次初始化只能指定端口(PA、PB和PC)作输入或作输出,不能指定端口同时既作输入又作输出。
综上,PA、PB、PC均选择方式0即可满足设计要求。
ADC0809:
为8位A/D转换模块,IN0到IN7为8路模拟量输入端口;ADDA、ADDB、ADDC为8路模拟开关的3位地址输入端,以选择对应的输入通道,ADDC为高位,ADDA为低位;START启动控制输入端口,可与ALE连在一起遇到正脉冲则启动转换;EOC转换结束信号输出端,为0则当前正处于转换中;OE输出允许控制端,高电平有效。
现设计硬件电路如下:
如附录1所示,由于片外地址较少(片外芯片较少且无片外程序存储芯片和片外数据存储)故只需一片74LS373。
按图中连接方式,74LS373的输入引脚连低8位地址总线,输出引脚Q7连接8255A片选端引脚CS,Q1和Q0分别连接8255A口地址选择引脚A1和A0,74LS373的G引脚引脚接80C51的ALE引脚,E引脚接地,这样确定8255A各
口地址如下:
PA口地址:0FF7CH
PB口地址:0FF7DH
PC口地址:0FF7EH
控制口地址:0FF7FH
8255A 的PB 口选择工作方式0,数据流向为输入,作为数据采集口连接到ADC0809的数据输出端以采集经ADC0809转换完的温度数据。
PC 口的高四位选择工作方式0,数据流向为输出,作为控制信号输出口连接到ADC0809的控制引脚,其中PC6、PC5、PC4分别连接ADC0809的引脚C 、B 、A 用以选择当前工作的模拟通道PC7连接ADC0809的引脚START 和ALE 用以控制A/D 转换的启动与停止。
PC 口的低四位选择工作方式0,数据流向为输入,作为查询口与ADC0809的EOC 和OE 引脚相连,用以查询ADC0809的当前工作状态。
ADC0809使用通道0与放大器输出口相连,放大器增益为2.5倍。PA 口选择方式0,数据流向为输出,其低四位连接LED 数码管的数据总线,PA4连接百位数码管的锁存允许端,PA5连接十位数码管的LE ,PA6连接个位数码管的LE ,PA7连接报警指示灯,低电平灯亮。
2.3.2软件设计
程序的难点在于标度变换和控制三个数码管显示温度值及报警灯的控制。对于标度变换按一般过程:应用公式:()00A A A N N A m m
x
x +−=
其中:0A ——一次测量仪表的下限
m A ——一次测量仪表的上限x A ——实际测量值(工程量)m N ——仪表上线对应的数字量
x N ——测量值对应的数字量
本系统中:00=A ,200=m A ,255=m N 80C51读入x N ,则需计算:
()x x
x N N A 51
4000200255=+−=
显然,对于8位的80C51来说上述计算不仅程序复杂、速度慢而且结果精度不高。
为解决这一问题,可以预先用PC 机计算好0到255对应的温度值并列成数据表存入从0100H 开始的256个内存单元中,之后仅需通过指令查找对应的温度值即可,牺牲了少量多余的内存单元,不仅加快了系统运行速度还提高了精度。
数据表可通过MATLAB 编程获得:
A=[0:1:255];B=A./255.*200;C=round(B)
数码管显示程序:
对查找到的温度值必须转换成BCD 码的形式依次输出百、十、个位,故可