文档库 最新最全的文档下载
当前位置:文档库 › 45 基于AT89C2051单片机的温度控制系统的设计

45 基于AT89C2051单片机的温度控制系统的设计

基于 AT89C2051单片机的温度控制系统的设计

第一章 绪 论

温度控制,在工业自动化控制中占有非常重要的地位。单片机系统的开发应用给现代工 业测控领域带来了一次新的技术革命,自动化、智能化均离不开单片机的应用。将单片机控 制方法运用到温度控制系统中,可以克服温度控制系统中存在的严重滞后现象,同时在提高 采样频率的基础上可以很大程度的提高控制效果和控制精度。

现代自动控制越来越朝着智能化发展,在很多自动控制系统中都用到了工控机,小型机、 甚至是巨型机处理机等,当然这些处理机有一个很大的特点,那就是很高的运行速度,很大 的内存,大量的数据存储器。但随之而来的是巨额的成本。在很多的小型系统中,处理机的 成本占系统成本的比例高达 20%,而对于这些小型的系统来说,配置一个如此高速的处理机 没有任何必要,因为这些小系统追求经济效益,而不是最在乎系统的快速性,所以用成本低 廉的单片机控制小型的,而又不是很复杂,不需要大量复杂运算的系统中是非常适合的。

温度控制,在工业自动化控制中占有非常重要的地位,如在钢铁冶炼过程中要对出炉的 钢铁进行热处理,才能达到性能指标,塑料的定型过程中也要保持一定的温度。随着科学技 术的迅猛发展,各个领域对自动控制系统控制精度、响应速度、系统稳定性与自适应能力的 要求越来越高,被控对象或过程的非线性、时变性、多参数点的强烈耦合、较大的随机扰动、 各种不确定性以及现场测试手段不完善等,使难以按数学方法建立被控对象的精确模型的情 况。

随着电子技术以及应用需求的发展,单片机技术得到了迅速的发展,在高集成度,高速 度,低功耗以及高性能方面取得了很大的进展。伴随着科学技术的发展,电子技术有了更高 的飞跃,我们现在完全可以运用单片机和电子温度传感器对某处进行温度检测,而且我们可 以很容易地做到多点的温度检测,如果对此原理图稍加改进,我们还可以进行不同地点的实 时温度检测和控制。

1.1 设计指标

设计一个温度控制系统具体化技术指标如下。

1. 被控对象可以是电炉或燃烧炉,温度控制在0~100℃,误差为±0.5℃;

2. 恒温控制;

3. LED实时显示系统温度,用键盘输入温度;

1.2 本文的工作

详细分析课题任务,设计了电源电路,键盘电路,单片机系统,显示电路,执行器电路, 报警电路,复位电路,时钟电路,A/D 转换电路等系统。然后根据课题任务的要求设计出实 现控制任务的硬件原理图和软件,并进行访真调试。

第二章 设计思想

实现温度控制的方法有多种,可以用工控机作为控制器,用热电阻测量温度;也可以用 单片机作为控制器,用热电偶进行温度测量。当然每一种方案都有其各自的优点。本章详细 列举、说明了基于89C2051单片机的温度控制的方案、并画出了其原理方框图,对方案的优 缺点进行了分析。

2.1 设计思想

方案

(1) 硬件组成:单片机、A/D 转换器、LED 显示器、集成的热电偶温度变送器、固态继 电器、大功率发热器。

(2) 工作原理:由集成的热电偶变送器对系统温度进行检测,并完成信号标准化、变送 功能。单片机执行控制功能、由固态继电器控制大功率发热器电源的导通与断开,从而达到 控制温度的目的。

(3) 系统原理框图

2.2 论证分析

最终方案论述:很显然,方案较其它相比无论在经济上和实现容易程度上都要好。 方案在实行控制的时候不像其它采用D/A 转换后再控制调节阀的方法,而是直接外接一 个固态继电器,通过内部改变定时器的中断时间来调节一个周期内电子开关的导通和断开时 间。这样既节省了材料也可以很大程度上减少硬件电路的结构。

综上所述方案有如下的特点:

(1) 在完成所要求的任务的基础之上还有着结构简单、明了的特点,很容易实现,而且 在一定的程度上节约成本。

(2) 由于采用了离线的方法,很大程度上的减少了编程的麻烦,实现起来较容易。

TL2551

89C2051 固态继电器 LED 显示

DDZ —Ⅲ热电偶温度变送器

键 盘

电炉

温度

图 2-1 方案的原理框图

(3) 采用了无污染能源,保护环境。同时也省去了为建造燃料供应子系统的费用,节约 了成本。采用了模拟的 PWM 变换,和固态继电器。可以将采样频率提高到很多的水平,使 控制结果更准确,实时性、控制效果更好。

第三章 系统设计

整个系统由软件和硬件两部分组成。本章详细介绍了系统的硬件和软件设计,并对硬件 和软件的每一个部分进行了分析,在后半部分还对系统模型进行了访真与程序调试。硬件和 软件的每一个坏节都是深思熟虑而成,各自完成相应的功能并组成一个统一的整体。

3.1 硬件设计

系统硬件由电源电路,温度检测变送电路、模数接口转换电路、单片机系统和人机接口 等部分组成。系统电源为整个系统提供电能;温度检测变送电路将检测到的温度信号转换成 标准的电压信号输入到模数接口转换电路;模数接口转换电路输出的数字信号进入单片机系 统;单片机系统根据输入的数字信号以模糊控制算法为基础求出控制值,控制执行器的运行 及温度的显示。原理框图见图2-1。

3.1.1 电源电路

由于整个系统都是用单片机和各类芯片及电阻、电容组成的,其工作电压为+5V,不需 要负电压,可采用三端固定正电压集成稳压器 7805 系列的芯片 [6] 。其输出电压 5V,按输出 电流不同可分为 78M05、78L05,输出电流分别为 0.5A和 1.0A,转换成功率分别为 2.5W和 5W。从整个系统的设计来看,其中有几块集成芯片和多个电阻、电容等器件,其功率总和应 在2W左右,所以考虑整个系统的功率裕量,采用78M05作为整个系统的供电芯片。

其主要电路如附图中的电源电路图所示。

其中输入电压为交流 220V,经过变压器其输出为 9.5V,再进行整流。整流可通过四个 二极管进行全波整流,也可以利用集成整流堆来进行(同原理)。后面接电容C1

、C2 为滤波电 容进行滤波,注意电解电容应该要有一定裕量,否则不能起到很好的滤波效果。本电路中使 用的电容大小为470uf,耐压为25伏。78L05的输出级接入两个滤波电容,用于减小因为电源 波动对系统造成的影响和滤波。其不需要采用大容量的电解电容器,容量大小为 100uf 耐压 为25伏,再接入0.1μF的电容器,便可减少因为电源波动的影响和滤去纹波,很好地改善负 载的瞬态响应。然而,随之产生一个弊端,即一旦78M05的输入出现短路时,输出端大电容 上存储的电荷,将通过集成稳压器内部放电,可能会造成内部电路的损坏,故在其间跨接一 个二极管,为放电提供放泄通路,对集成稳压器起到了分流保护作用。

3.1.2 温度检测与变送环节

信号的检测变送包含两个方面,一是检测环节,另一个是变送环节。

检测环节至关重要,检测元件的选型关系到检测的精度和变送环节中信号变送的容易程

度。在温度的检测过程中一般用热电阻和热电偶完成,热电阻一般用在检测精度要求不是很 高的地方,而热电偶则在灵敏度上比热电偶更好,检测精度能比热电阻有一个数位的差异 检测与变送设备主要根据被检测参数的性质与系统设计的总体考虑来决定。被检测参数 性质的不同,准确度要求、响应速度要求的不同以及对控制性能要求的不同都影响检测、变 送器的选择,要从工艺的合理性、经济性加以综合考虑。应遵循以下原则:

1. 可能选择测量误差小的测量元件。

2. 尽可能选择快速响应的测量元件与变送设备。

3. 对测量信号作必要的处理。

a测量信号校正。

b测量信号噪声(扰动)的抑制。

对测量信号进行曲线线性化处理。

温度是工业生产过程中最常见、最基本的参数之一。所以,温度的检测与控制是自动控 制工程的重要任务之一。测量温度的方法有两种,一种是接触式、另一种是非接触式。接触 式测量的主要特点是:方法简单、可靠,测量精度高。但是由于测温元件要与被测介质接触 进行热交换,才能达到平衡,因而产生了滞后现象。同时测量体可能与被测介质产生化学。 此外测量体还受到耐温材料的限制,不能应用于很高温度的测量。非接触式测温是通过接收 被测介质发出的辐射热来判断的。其主要特点是:测温原则上不爱限制;速度较快,可以对 运动休进行测量。但是它受到物体的辐射率、距离、烟尘和水汽等因素影响,测温误差较大。

由于本系统中测量的对象为电炉,测量温度在 0~100℃左右,且介质为水,不易与测量 体发生化学反应。所以理所当然选择接触式的温度测量方式更为理想。

目前工业生产过程中常用的接触式温度测温原理、与使用场合如表3-1:

表 3-1 各类传感元件的特点和使用场合

测温原理 温度计名称 测温范围℃ 主要特点 固体热膨胀

双金属温度计

结构简单,价格便宜,

适用于就上测量,传送 距离不很远

气体热膨胀 玻璃液体温度计

液体热膨胀 压力式温度计 -200~600

利用尸体或半导 体的电阻值随温 度变化的性质

铂、铜、镍、铑、 铁热敏电阻 准确度高,能远传,适 用于低、中温测量

锗、碳、金属氧化 物热敏电阻 普通金属热电阻

测量范围广,精度高, 能远传,适用于中、高 温测量

贵重金属热电阻 难熔金属热电阻 非金属热电阻

从表中所列的各种温度测量仪表中,机械式大多用于就地指示;辐射式的精度较差,只 有电的测温仪表精度较高,信号又便于传送。所以热电偶和热敏电阻温度计在工业生产和科 学研究领域中得到了广泛地应用。

热电偶温度计在工业生产过程中极为广泛。它具有测温精度高,在小范围内热电动势与 温度基本呈单值、线性关系,稳定性和复现性较好,测温范围宽,响应时间较快等特点。其 使用时一定要注意冷端温度补偿,在一般情况下采用补偿电桥的方法较多。其具体实现过程 见下面的分析过程。热电阻温度计是利用导体或半导体的电阻值随温度而变化的性质来测量 温度的。常用的有铂电阻、铜电阻、半导体热敏电阻等,但与热电偶相比较,在精度上,热 电偶精度比热电阻高。

变送器在数据采集过程中担任了把传感器检测到的信号变成统一标准信号(DC 4~20mA 或DC 1~5V ),从而使处理器能够识别数据的级别,便于在自运控制过程中进行运算和做出相 应的处理决策。

-200~700

积变化 电

阻变化 -270~900

电效应

利用金属的热 电效应

-200~1800

DDZ - Ш热电偶温度变送器可以把温度转换成统一的标准信号(DC4~20mA或DC1~5V), 其输出送显示仪表或调节器,调节器实现对温度的显示或自动控制。DDZ - Ш热电偶温度变送 器具有热电偶冷端温度补偿、零点调整、零点迁移、量程调整以及线性化等重功能。其具有 以下几个特点:

(1) 采用了线性集成电路,提高了仪表的可靠性、稳定性及各项技术性能。

(2) 热电偶温度变送器中采用了线性化电路,使变送器的输出电流。或电压信号和被测

温度(输入信号)成线性关系。

(3) 线路中采用了安全火花防爆措施,帮可用于危险场所中的温度测量变送。

由以上分析,我们可以得出结论,DDZ - Ш热电偶温度变送器是一种集成的自动化温度传 感变送器,在量程和精度上都完全满足设计中温度测量、变送的要求。

3.1.3 模数转换接口电路

因为单片机不能直接处理模拟信号,所以必须将热电偶检测到的温度模拟信号变化成数 字信号,单片机才能做出相应的处理。

按照设计指标,精度要求在±0.5℃。采用 8 位 A/D 转换器如果设定其成比例关系,即 0~255, 0℃~100℃。 则其精确度为0.39℃, 完全满足要求, 但考虑要留有一定的裕量, 即100℃ 不能为 255,虽然这个问题可以用调整变送器的方法来解决。但这其中又隐含了另外一个问 题即将温度的检测值到十进制温度转换的计算,A/D 转换结果每增加一个单位值,十进制温 度增加0.39度,这需要用二进字浮点数运算。意味着在有限的存储空间里面要存储浮点数的 加、减、乘、除和二进制数与十进制数的转换程序等;并且因为温度是通过键盘输入到存储 器中的所以输入的温度值也要经过转换,这就大大的加长了程序运行的时间同时也就减短了 A/D 转换所占用的时间和温度的采样点数,直接影响了其控制精度。同时很大程度上加大了 编程的难度,其在逻辑思维上、程序转换上都有较大的难度。要满足精度要求,而且还要在 运算上、数值转换上不困难,可以通过调整变送器的量程和 A/D转换器的分辨率来解决。

用 12 位 A/D 器,其输入电压为 0~5V 时对应的输出为 0~4096,设计要求温度控制在 0~100℃。我们可以将100℃时 A/D输出为1000,这样其精度可以达到0.1℃,完全满足设计 的要求。前面已经说明变送器的输出为 1~5V,所以可以调节送器的量程,0℃时变送器输出 为 1.22V,而 A/D 转换的输出为 1000?100℃时输出 2.44V,A/D 输出为 2000。通过以上设定, 在保证了很大的裕量的同时又减小了其计算的复杂性。其输出值=温度×10,运算的时候根本 不用采用浮点数运算,只要一个双字节无符号数减法、除法即可以完成,且在显示的时候也 可以精确显示到小数点后面一位。

TLC2551/2541是TI 公司生产的串行12位 A/D 转换器 [8]

,其采用DIP-8封装,简单的微

处理器接口,单通道差分输入,转换时间在Flock=400KHz 时为3.2us ,5V 供电时输入范围: 0~5V ,输入输出完全兼容 TTL 和 CMOS 电路,全部非校准误差:±1LSB 。单 5V 供电,工 作温度范围:0℃~70℃;其接口电路如图3-2。

3.1.4单片机最小系统

1 单片机选型

整个系统采用最小化设计,其外部所接组件大多采用了串行通信,所以在单片机选型时 不需要很多的并行口,有一定的程序存储器和定时器、外部中断即可。

由 A TMEL 公司生产的 A T89C2051,除了在外部引脚上少了两个并行口外,其它内部资 源与 A T89C51 完全相同,且其内部的 2KFLASH ROM 能够很方便的进行擦写,汇编指令与 80C51完全兼容的特点,成为了首选。其基本特征如下:

(1) 具有适于控制的8位CPU 和指令系统; (2) 128字节的片内RAM ;2KB 片内ROM ; (3) 15线并行I/O 口;

CS

1

IN+

2

IN_ 3 GND

4

REF

5 DO

6 CLK

7 VCC 8 U7

TLC2551 VCC

CS

VCC

DDZOUT C11 0.1UF C12 0.1UF

DO

CLK 图 3-2 模数转换电

图 3-3 89c2051及其引脚与网标

RST 1 P3.0(RXD) 2 P3.1(TXD) 3 X2 4 X1 5 P3.2 6 P3.3 7 P3.4 8 P3.5 9 VSS 10

P3.7

11

P1.0 12 P1.1 13 P1.2 14 P1.3 15 P1.4 16 P1.5 17 P1.6 18 P1.7 19 VCC 20

U8

89C2051 RXD TXD GND VCC RESET X2 X1 OPE

CS LOCK line1 line2 disselec SCL SAD DO CLK]

(4) 两个16位定时/计数器; (5) 一个全双工串行口;

(6) 6个中断源,两个中断优先级的中断结构; 2 晶振电路的设计

单片机内部带有时钟电路,因此,只需要在片外通过X1、X2引脚接入定时控制单元(晶 体振荡和电容),即可构成一个稳定的自激振荡器。

振荡器的工作频率一般在1.2~12MHz 之间,当然在一般情况下频率越快越好。可以保证 程序运行速度即保证了控制的实时性。一般采用石英晶振作定时控制元件;在不需要高精度 参考时钟时,也可以用电感代替晶振,有时也可以引入外部时钟脉冲信号。

C9、C10虽然没有严格要求,但电容的大小影响振荡器的振荡的稳定性和起振的快速性, 通常选择在 10~30PF 左右。在设计电路板时,晶振,电容等均应尽可能靠近芯片,以减小分 布电容,保证振荡器振荡的稳定性。

3.1.5片外数据辅助存储器

在系统的设计过程中,考虑到加热器在加热过程中出现断电的情况。当这种情况发生时, 系统应该继续加热到断电前设定的温度。而设定的温度存储在单片机的数据在存储器中,单 片机断电重启动后存储的设定温度已经消失。为了达到此功能,在单片机外部加入了一个基

于I 2 C 总线的E 2 PROM ,完成对设定温度的存储。

I 2 C 总线简介:I 2

C 总线由 PHILIPS 提出,是一种用于 IC 器件之间连接的二线制总线。

它通过SDA (串行数据线)及SCL (串行时钟线)两根线在连到总线上的器件之间传送信息,

并根据地址识别每个器件:不管是单片机、存储器、LCD 驱动器还是键盘接口。采用 I 2

C 总 线标准的单片机或IC 器件,其内部不仅有I 2 C 接口电路,而且将内部各单元电路按功能划分

为若干相对独立的模块,通过软件寻址实现片选,减少了器件片选线的连接 。

20P

C10

20P

Y1 12M x2

x1

+5V

S1SW-PB

C7

0.1u RESET

VCC

图 3-4 复位电路和时钟电路

其协议定义的数据格式如下:

A T24C01是美国 A TMEL 公司的低功耗CMOS 串行E 2

PROM ,它是内含128×8位存储

空间,具有工作电压宽(2.5~5.5V )、擦写次数多(大于10000次)、写入速度快(小于10ms ) 等特点。在系统中,用 A T24C01存储用户设定的保持温度,上限温度和下限温度。当系统断 电再得电以后,系统将自动的读出 A T24C01中的保存值,并根据其内容进行加热,直到设定

的温度。从而达到了断电后再加热的目的。其实际电路连接图如图 3-5,电阻 R7、R8 为 I 2

C

协议的上拉电阻。

3.1.6 人机交互接口 1 显示电路

开始 7/10 器件地址 R/W ACK SUBADD ACK DATA ACK …… 停止

图 3-5 AT24C01 接口

GND

VCC

LOCK SAD

SCL R7

5.1K

R8 5.1K

VCC

A0 1 A1 2 A2 3 GND

4

SDA

5

SCL 6 WAP 7 VCC 8 u10 AT24C01

a b

f c

g

d

e DPY 1 2 3 4 5 6 7 a

b

c d e f

g

8

dp

dp power 9

DS1

a b

f c

g

d

e DPY 1 2 3 4 5 6 7 a

b

c d e f

g

8

dp

dp power 9

DS2

十位

SER INA 1 SER IN B 2 Q0 3 Q1 4 Q2 5 Q3 6 CLK IN 8

CLR

9

Q4 10 Q5 11 Q6

12 Q7

13

U3

74HC164 RXD

TXD

C5

0.1UF

C6 0.1UF

SER INA 1 SER IN B 2 Q0 3 Q1 4 Q2 5 Q3 6 CLK IN 8 CLR

9

Q4 10 Q5 11 Q6 12 Q7

13

U4 74HC164

1

2 3

U2

AND

disselec VCC

SER INA 1 SER IN B 2 Q0 3 Q1 4 Q2 5 Q3 6 CLK IN 8 CLR

9

Q4 10 Q5 11 Q6 12 Q7

13 U5 74HC164

SER INA 1 SER IN B 2 Q0 3 Q1 4 Q2 5 Q3 6 CLK IN 8 CLR

9

Q4 10 Q5 11 Q6 12 Q7

13

U6

74HC164 a b

f c

g

d

e DPY 1 2 3 4 5 6 7 a

b

c d e f

g

8

dp

dp power 9

A1

个位

a b

f c

g

d

e DPY 1 2 3 4 5 6 7 a

b

c d e f

g

8

dp

dp power 9

A2

小数位

1 2 3 4 5 6 7 8

161514131211109

RP2

200*8 1 2 3 4 5 6 7 8

161514131211109

RP4

200*8 1 2 3 4 5 6 7 8

161514131211109

RP3

200*8 1 2 3 4 5 6 7 8

161514131211109

RP1

200*8

显示部分用于显示用户设定的温度、上限温度、下限温度和当前温度值等。当然,从理 论上而言,如果要很明了的显示各种数值的话,应该加上汉字显示模块,这样就可以一目了 然的识别出各种设定值。从这一方面来说 LCD 显示器就占有很大的优势。但 LCD 显示器也 存在着很大的不足,如LCD 显示器一般都有8 根数据线和5根控制线,即使是用串行的情况

下也要占用单片机的 8 个 I/O 口 [

,或者 6 根线和几个逻辑门。使用 LED 显示器可以很容易

解决 I/O 口的问题,采用 51 单片机的串行方式 0,只要两根线(数据与时钟)就能完成显示 功能,而且串行口还可以跟其它芯片共用,只要加上一个逻辑门电路形成线选就可以了。但 其有一个明显的弱点就是显示的时候只能看到一个值,让人有一种不直观的感觉,并且在键 盘上设定好一个显示管理键,要显示什么值只有按这个键就可以达到循环显示的目的。本显 示电路共设了四位,分别用于显示温度的百、十、个、小数位。所以显示的温度可以精确到 小数点后一位,即 0.1℃。但温度的设定值只能输入两位,即十位百位。Disselec 用于选通显 示。其具体电路图3-6所示:

2 信号输入电路

键盘作为人机接口之一,在系统的功能实现过程中起着不可或缺的作用。在硬件的实现 上,采用串行接口,由一个74HC164,其8个输出口作为矩阵键盘的列线,再由89C2051的 P1.1、P1.2作为行线组成,每根线上都加一个上拉电阻,用于减小干扰。整个键盘共设16个 键,见图3-7。其键名和功能如表3-2。

图3-6 显示电路

表 3-2

键盘设置与功能设定

图 3-7 键盘电路

键 名 个数(标号) 功 能

数字键 10(0~9)

输入 0~100℃的温度数值,不设小数,但可显示。

下限温度 1(15) 设定上限温度,正常显示时输入有限,数据输入时无效,且报错 上限温度

1(14)

设定下限温度,正常显示时输入有限,数据输入时无效,且报错

设定恒温 1(13) 设定恒温温度,正常显示时输入有限,数据输入时无效,且报错 停机键 1(11) 使其停止加热,正常显示时有限,停机时停止显示,停止测量。 确认键

1(10)

确定输入的数据,输入数据时有效,其它情况下报警。

下翻

1(12) 循环显示设定、上限、下限温度,按下显示 2 秒,不按则显示温度

3 报警电路

为使系统的人机交互界面更好,设置了两路报警信号,分别为两路红色的发光二极

管,用于显示越限报警和误输入报警。

当电炉中水温高于工作人员所设定的上限温度或者低于设定的下限温度时,则认为发生 了越限,越限报警灯(LED1)点亮,提示操作出现了越限报警,提醒工作人员注意是否有意外

情况发生。值得一提的是,当系统从低温开始加热,到下限温度以前系统都会出现越限报警。 当出现越限报警时,工作人员应该注意是不是此种情况,此情况可以忽略。

误输入报警(LED2)主要用于键盘管理中,当用键盘进行恒温设定、上、下限温度设定时 工作人员如果没有按说明中所要求的步骤进行操作的话就是所谓的误操作。当出现误操作时

图 3-8 报警电路

R9 200 R10 200

LED1 LED2

P1.0

P1.5

误输入报警灯点亮,此时工作人员应进行输入检查,查看说明并更正。

越限报警和误输入报警分别由P1.0和P1.5口引出,其上接的电阻为限流电阻,用于防止 电流过大而引起的发光二极管烧毁。 3.1.7执行机构

执行机构为一个固态继电器,程序中采用了模拟的 PWM 变换方法。通过控制固态继电 器的导通与关断达到控制电炉的通电和断电的目的。

3.2 软件设计

图 3-9 执行器电路图

R12 RES1

220V~AC

1

1 2

2

S3热电偶

DDZOUT

M2

DDZ-2型热电偶变送器

DS6

OPTOTRIAC

4 电网

R13 100

OPE 1

2 xp2 C14 0.1UF

系统的软件部分以主程序为入口,在初始化之后调用键盘管理程序,完成对键盘的扫描,

读入键值,并根据相应的键值进行各类操作。温度采样频率由定时器控制,在每一次采样完

成之后进行控制时间的计算和显示刷新。

3.2.1主程序

主程序作为程序的入口,控制各类程序的调用。在系统中其主要的任务是调用键盘管理

程序。然后其它的功能都由键盘管理程序和中断程序完成。可以说主程序起到了重启动后读

入E 2 PROM中的设计温度和上、下限温度;设计各类定时器和开中断的,并调用键盘管理程

序的功能。但这样处理主程序起到了分散功能的作用,即主程序会变得很容易编写,而具体

的功能都由功能子程序完成。

主程序流程如图3-10所示。具体程序如下:

开始

移入设定值并显示

初始化,开中断

调用键盘管理子程序

结束

图 3-10 主程序流

ORG 50H

START: MOV SP,#70H ?置堆栈,如堆栈超出会造成处理器复位。

LCALL RDNBYT ?读入E 2 PROM中的初使会标志、各类设定温度。

MOV R1,#SETTEMP

LCALL VALUDISP

MOV R1,#TEMPHIGH

LCALL VALUDISP

MOV R1,#TEMPLOW

LCALL VALUDISP ?单片机复位后,会分别显示各类设定温度2秒

MOV TMOD,#11H ?定时器0、1都为16位定时器

MOV TH0,#3CH

MOV TL0,#0B0H

MOV TH1,#3CH

MOV TL1,#0B0H ?两定时器第一周期内的定时时间为0.05秒(12M)

SETB PT1 ?定时器1优先,定时器1用于控制加热器的运行

SETB EA

SETB ET0

SETB ET1

SETB TR0

SETB TR1 ?开定时中断和总中断,两个定时器开始定时

LCALL KEYOPT ?调用键盘管理程序,完成各类操作用于显示设定

?温度、上、下限温度、和变换的子程序

3.2.2 串行A/D转换芯片的驱动和其输出值的量化

1TLC2551的驱动

前面已经说明系统中采用的 A/D转换芯片是串行的,所以我们在使用其时必须按照其时 序一步步的完成,其时序图如图3-11所示。

从图上可以看出 A/D 转换的最高位数据在 CS 变低以后的第二个脉冲开始出现,而 TLC2551为12位,即其转换结果在第14脉冲时完全从TLC2551出来进入到单片机内部。其 使用过程为先置 CS 为低,将其选通,然后一直发 14 个脉冲,从第 2 个到第 5 个脉冲后将 A/D 转换值存储于转换结果的高字节,从第6 个到13个时将其值存入到转换结果的低字节。 具体程序如下:

ADC:PUSH A

CLR CS ?选通 ADC

NOP SETB CLK NOP NOP CLR C ?清 C 标志 CLR CLK MOV R3,#12 ?时序要求 CLR A ? 清 ACC NOP ADCLK:SETB CLK

NOP NOP

图 3-11 TLC2551

的时序图

CLR CLK

MOV C,DO ?移入 ADC 值

RLC A ?左移

CJNE R3,#8,NEXT

MOV ADCDA TAH,A ?存储 ADC高位值

NEXT:DJNZ R3,ADCLK

MOV ADCDA TAL,A ?存储 ADC低位值

POP A

SETB CS ?关A/D

RET

2 A/D转换值到温度的量化子程序

由前面硬件部分的说明可以得出,设计要求的A/D转换结果跟温度值的关系是:A/D值 =温度×10。 正如前面说所,由于变送器的限制,我们只能将0℃时所对应的变送器输出为1.22V,

而将这些值通过A/D转换后结果刚好为1000和2000。 而100℃时对应的变送器输出是1.44V。

要达到上面所述的关系,只要将A/D转换值减去1000即可满足。

其量化顺序为:读入A/D转换值、用二进制无符号除法将转换值减去1000,再将其结果 用二进制无符号数除法除以10,取商和余数。分别作为温度的整数部分和小数部分,用于四 位温度显示。

流程图如图3-12所示。具体程序如下:

入口

启动A/D,读入数值

A/D值-1000

计算出温度值

返回

图 3-12 A/D转换和量化流程图

NUMDA TA DB C0H,F9H,D8H,B0H,99H,92H,82H F8H,80H,98H ?0~9的字形码

DISPLAY:SETB DISSELEC ?选取通显示

MOV SCON,#00H ?串口方式0

MOV R1,#04H ?显示四位

MOV R3,#0 ?用于判断是否应加入小数位

MOV DPTR,#NUMDA TA ?数字字型码地

MOV R0,#DISPTEMP ?移入显示数据的地址 LOOPDIS:MOV A,@R0 ?移入 A

MOVC A,@A+DPTR ?取值

MOV 24H,A ?加入一寄存器用于缓冲 MOV A,R3

CJNE A,#2,NOT2

MOV A,24H

SETB ACC.7 ?判断是否为个位,如是则点亮小数点 AJMP DD

NOT2:MOV A,24H

DD:MOV SBUF ,A

?发送

W AITDIS:JNB TI,W AITDIS

?等待发送

CLR TI DEC R0

?地址减1 DJNZ R1,LOOPDIS

?发送完毕否? OUTDIS: CLR DISSELEC

?不选通显示

RET

3.2.3 片外I 2 C E 2

PROM 驱动子程序和空间分布

E2PROM 的作用已在前面说明,其内部用连续的7个字节分别用于存储首次开机标志、设 定温度、上限温度和下限温度。其中标志占一个字节,其余各占2个字节。其时序图如图3-13

从上图我们很容易看出I 2

C 总线的时序。使用时最开始发起始位,然后是器件地址,接着

是从地址、数据最后是结束位,中间还夹着应答位。A T2401 在电路中的器件地址为 1010000

(前4位为I 2

C 协议规定的E2PROM 的地址, 后3位为其类地址, 由图3-6可知其类地址为000)。

因为只用到了其中的10H~16H 单元,其余单元空闲,所以SUBADD (图中的第二个 ADDESS ) 为00000010。

3.2.4温度及设定值的显示子程序

图 3-13 I 2 C 总线的时序图

[9

相关文档
相关文档 最新文档