单片机温度控制_第1页
单片机温度控制_第2页
单片机温度控制_第3页
单片机温度控制_第4页
单片机温度控制_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的实施温度控制器的设计 摘 要 温室环境因子的自动控制是当今温室技术发展的重要方面,利用高性价比的单片微型计算 机来 对环境因子参数进行数据采集和简单的控制,从而解决温室环境因子自动控制问题。本设 计以 AT89C51 为系统的核心构建温室温度控制系统,温室温度经廉价实用的集成温度传感器及 ADC0809 进行 A/D 转换进入 C51 单片机,经过控制运算,对外设发出各种控制命令。系统扩展 LED 显示器, 显示动态的环境温度;扩展三个功能键,通过功能键改变控制设定值从而适应不同环境下 的用户。 系统硬件采用电子电路绘图软件 Protel99se 进行原理图设计;系统软件设计及仿真采用超 想 3000 TB 综合仿真实验仪,可进行硬件电路和软件的仿真,经过全面的仿真调试,系统运行情 况良好,达 到了预期的控制要求和控制精度。 关键词 单片机;温室;温度控制;硬件仿真 A Design of Hothouses Temperature Control Device Based on Single-chip-computer Abstract The automatic control of the hothouses environmental parameter is a important hand of the hothouse technology, using the cheapness and excellent single-chip-computer to get the environmental parameter and to make some simply control command and then we can resolve the problem. This design takes the AT89C51 as the center of the control system. The 51-computer gets the temperature parameter from the integration temperature sensor and the ADC0809 that transform the analog parameter to the digital parameter, and make some operation commands to the peripheral equipments. The design extends LED display, which display the dynamic environmental temperature and extends three functional key that the user can input the appropriate temperature parameter. The hardware of the system is plotted by the software of Protel99se; Using the emluator and Super image-3000TB for windows to debug the hardware and the software, and then get the prospective control effects. Key words Single-chip-computer; hothouse; temperature control; hardware emulation 目 录 摘要 关键词 Abstract Keywords 1. 绪论 1 1.1 国内外的研究应用现状1 1.2 发展方向及单片机系统在控制系统中的作 用2 1.3 本设计的目的和意义2 2. 系统硬件设计3 2.1 温度传感器的选型及其外围电路的设计3 2.2 A/D 转换模块设计5 2.3 单片机的选择7 2.4 LED 显示及功能键扩展8 2.5 温度指示信号接口9 3. 系统软件设计9 3.1 数据采集模块11 3.2 LED 显示模块15 3.3 用户设定数据模块(扩展键盘)17 3.4 控制运算指示报警模块21 4. 系统仿真与调试23 4.1 数据采集模块的仿真调试23 4.2 显示模块的仿真调试25 4.3 用户设定数据模块的仿真调试(扩展键盘)25 4.4 控制运算模块的仿真调试26 5. 结果与讨论27 参考文献28 附 录 29 1 1. 绪论 随着世界人口的不断增加和社会的不断发展进步,人们对农产品的要求从数量上和质量上 都不 断提高,尤其是新鲜蔬菜、观赏植物等需温室培育的植物更是如此。这就要求人为创造更 加适合作 物生长的环境。其中温室环境因子的调控占有很重要的地位。温室是一个相对较小的封闭 环境1, 这个小环境的自调节能力有限,经常会出现一个或多个环境因子超过作物的最适限制,影 响了温室 作物的生长和栽培效益。 现代温室环境工程是指调节、控制温室内影响植物生长的环境因子的工程技术,可调控的 环境 因子包括温室内的空气温度、湿度、光照、二氧化碳浓度、土壤的水分、酸碱度、养份2 等。随着 电子技术和轻工业技术的不断发展,利用廉价的单片机并综合现代传感器技术、智能控制 技术等先 进技术来实现全自动化的温室控制,进行蔬菜、花卉等作物的工厂化生产已经成为可能。 1.1 国内外的研究应用现状 目前,国内在温室自动控制方面的研究已经实现了在一定面积内对各种环境因子的综合控 制。 1996 年,江苏理工大学研制成功了一套温室环境控制设备,通过对温室内部温度、湿度、 光照及 CO2 浓度的监控,在 150m2 温室内实现了温度、湿度、光照、CO2 浓度的综合控制3。 当前,国内外利用单片机的温室控制系统软硬件实施方式主要有三种类型。 第一种是直接使用单片机以及其他一些外围芯片作为数据采集和控制的装置,不使用上位 PC 机 做数据处理。这种类型的自动控制系统一般以单片机为核心4,包括输入模块、控制模块、 输出模 块等。硬件电路一般由温度传感器及模拟信号处理电路、A/D 转换器、单片机、D/A 转换 器、LED (或 LCD)显示器及微打印机、简易键盘、指示报警装置等组成,即为一个单片机的最小 应用系统, 实现基本的输入输出功能和简单的控制功能。软件设计一般采用中断技术定时采集环境因 子参数, 然后经过相关的标度转换得到环境因子的参数化值,再通过一定的控制算法与设定值进行 比较从而 对外设进行控制,一般常用的控制算法是数字 PID 控制算法,这种算法经过改进可以实现 较为稳定 和精确的控制。 这种系统成本低,又有一定的控制精度,能较好的满足一般农业用户的需求;但由于控制 系统 的核心-单片机-的数据处理能力及存储器容量的限制,控制精度有限,对生长环境参数要 求较高的 一些特殊作物不能很好的满足要求,另外如果没有扩展微打印机就无法查询历史温度值, 因为单片 机的数据存储器数据断电即逝。例如图 1-1 所示的控制系统, 系统运行时,首先按照作物 生长规律 通过系统键盘设置好温室环境温度和土壤含水率,可自动控制开窗机构以调节温室内的环 境温度, 自动控制滴灌电磁阀以保持温室内的土壤含水率在一个最适宜作物生长的范围内4。 开窗 关窗 图 1-1 温室自动控制系统组成框图 第二种是使用上位机做数据处理,而单片机系统只相当于一个数据采集和控制执行装置, 基本 上不进行数据处理,即“上位机+下位机”的控制系统。该系统体系结构为中心计算机和以单 片机为 核心的智能控制仪的主从式结构。例如,控制系统由中心计算机和单片机智能控制仪(51 系列单片 机)组成,1 台上位机与多台下位机实现主从式通讯,对多个温室进行监测、管理和控制。 单片机智 ATC89C51 5 路按键 ADC 0809 4 路温度信号 4 路湿度信号 93C46 故障指示及报警器 固态继电器 固态继电器 开关窗 电动机 固态继电器电磁阀 LCD 模块 微型打印机 恒压滴 灌设备 2 能控制仪对温度、湿度、风速、风向、雨量、光照度等气象环境因子进行监测并对温室设 备进行控 制,计算机和控制仪之间采用 RS-485 总线连接,可随时进行系统的调整和扩展5,如图 1-2 所示。此 系统中单片机智能控制仪的主要作用是实现输入输出,即环境参数的读入和直接驱动外设, 其数据 处理大部分由上位 PC 机完成,较好的利用了下位单片机机很强的现场数据采集能力和上 位 PC 机优良 可靠的数据处理能力。此系统工作时,一般是由下位机读入环境参数,经过串口通信直接 送上位机 进行处理,上位机将处理的结果-各种控制命令- 送回下位机。 第三种是引入现场总线,系统由各个现场采集控制模块、现场总线和上位 PC 机组成,各 个模块 和计算机都是直接接在现场总线上的平等单元,它们之间采用点对点、广播方式进行通信。 对环境 因子的控制运算功能交给现场的智能模块去完成,而不需要每个数据的处理都通过上位机 进行,从 而避免了布线的不便和线路拥塞的可能。此系统中的上位机的主要功能是完成控制系统的 一些参数 设置和整个系统的信息管理6,很适合大规模的温室环境控制使用。 另外,随着网络技术的不断发展,后两种控制系统可通过上位机与局域网和 Internet 连接, 实现 信息的共享和各种数据的交换,其下层实施方案基本一致。 1.2 发展方向及单片机系统在控制系统中的作用 温室环境自动控制向着低成本和高精度、高可靠性和无人化、信息化方向发展。随着传感 技术、 计算机技术和自动控制技术的不断发展,温室计算机的应用将由简单的以数据采集处理和 监测,逐 步转向以知识处理和应用为主。作为上位机的数据来源,下位单片机系统的工作性能和数 据采集及 控制精度直接影响后续数据处理和控制命令的产生,因此构建稳定、可靠、成本低廉的单 片机数据 采集系统是温室环境控制系统设计中的重要环节。 1.3 本设计的目的和意义 本设计的目的是利用单片机采集环境温度值,以数字量的形式存储和显示,可以独立作为 一种 设备对温室温度进行有一定精度的控制,经过简单的运算发出各种控制命令,并能动态的 显示当前 温度值,设定目标控制温度值。同时,也可以作为数据采集装置,为上位机进行复杂运算 决策提供 数据来源。 图 1-2 上位机+下位机的控制系统 C51 单片机 上位机 驱动机构 执行机构 室内数据采集传感器及外围电路 室外数据采集传感器及外围电路 数据输出接口 AT89C51 3 个功能键 ADC 0809 温度超限指示及报警器 光电耦合 光电耦合 开关窗 电动机 LED 显示模 2-1 组成原理 2. 统硬件设计 以 AT89C51 单片机为系统的核心,通过 8155 扩展三个功能键及两位 LED 显示,数据从 ADC0809 通道 0 输入,经过滤波程序和温标转换程序获得较准确的当前环境温度值,然后由单片机 处理数据, 从而判断环境温度的大小,如果温度过高,则启动降温设备;温度过低,则启动加热设备; 如果温 度超出系统设置的范围,启动蜂鸣器报警,相应的发光二极管发光(如图 2-1 所示系统组 成图) 。硬 件设计电路原理图使用 Protel99SE 绘图软件完成,完整的电路原理图见附录 1。 2.1 温度传感器的选型及其外围电路的设计 根据一般温室作物(例如番茄、黄瓜等)的生长需求,温度控制范围为 1050 摄氏度即可 满足 要求。在各种温度传感器中,热敏电阻和集成温度传感器均可满足要求。对比两种传感器, 集成温 度传感器具有外接电路简单,输出稳定,功耗小,成本低的优点7,并且作为电子电路的 一个模块 对电路的影响也比较小,因此本设计选用 MAXIM 公司的集成温度传感器 MAX6613(典 型接线图如 图 2-2) ,此温度传感器是一种低功耗的模拟量输出温度传感器,五脚贴片式封装,可在 1.85.5V 的 电压下工作,电流一般只需 7.5A;在 2.55.5V 的电压下可工作于-55+130范围内;在 1.8V 的电 压下,可工作于+25+130 范围内。MAX6613 输出电压与温度的大小成比例关系, 050范围内 最大误差为1.3,-20 +50范围内误差为28 ,本设计测量的温度范围为 1050 即可,温 度最大误差为1.3,可以满足温室内大部分农作物的生长需求。 图 2-3 MAX6613 温度传感器输入输出关系曲线 图 2-2 MAX6613 接线图 4 如图 2-3 所示8 ,在 10 到 65 摄氏度范围内,温度与输出电压值接近一个线性关系,直 线过(20, 1.6)及(65,1.1)两点,通过以下运算: 90 164 90 V = T + (2-1) T = 164 90 V (2-2) 式中 V 输出的电压值(V) T 环境的温度值( ) 本装置设计中,温度范围为 10 到 65 摄氏度已经足够,在 0 到 5V 内,可直接输入,经 过程序 变换可得有足够精度的环境温度数字量,变换如下: 5 A FF D = (2-3) 式中 A 模拟量 D 数字量 由于求得模拟量与温度之间的数学关系如式(2-2) ,可用简单的整型运算实现,所以将转 换以 后的数字量经过运算很容易得到所对应的模拟量,将式(2-3)变换如下: FF A D 5 = (2-4 ) 式中 A 变换后的模拟量,以数字量的形式参与各种运算 D 数字量 经过以上变换利用简单的程序很容易实现温标的转换,将温度以二进制形式存储在 RAM 中。 由于温室环境对各种电子元器件来说比较恶劣,所以在模拟数据输入 A/D 转换之前数据传 输过 程中,必须加硬件电路防止外来干扰。本设计采用模拟信号抗干扰低通滤波电路(如图 2-4 所示),实 际应用环境中高频信号干扰严重影响了测控系统的精度,而集成温度传感器输出的信号为 很平滑的 低频信号,只要外接一个简单的 RC 低通滤波电路就可以达到较好的抗干扰效果。 图 2-4 系统抗干扰电路 设滤波器的输入信号电压为 ux,输出电压信号为 uy,则电路的微分方程式为10 y x t u u u d d RC x + = (2-5) 式中 R 滤波电路电阻值( ) C 滤波电路电容值(F) 令时间常数 =RC,对式 25 进行拉普拉斯变换,可得传递函数 1 1 ( ) ( ) ( ) + = = U s s U s H S x y (2-6) 5 这是一个典型的一阶系统,其频率响应函数为 1 ( )2 1 ( )2 1 1 ( ) 1 + + = + = j j H (2-7) 其幅频特性、相频特性表达式为: ( ) 1 ( )2 1 + A = (2-8) ( ) = arctan( )(2-9) 由上易得 RC 低通滤波器的幅频和相频特性(如图 2-5 所示) A(f) (f) 1/2 1 0 f 1/ 2 -45。 -90。 0 1/2 f 图 2-5 RC 低通滤波器幅频、相频特性 由图可知,当 RC f 2 1 时,输出 uy 与输入 ux 的积分成正比,即 = u dt RC u y x 1 (2-10) 此时 RC 低通滤波器起着积分器的作用,对高频成分的衰减为-20dB/10 倍频程(或- 6dB/10 倍频程) 。 当 RC f 2 = 1 时,A(f )= 2 1 ,即 RC fc 2 1 2 = (2-11) 此式表明,RC 的值决定着上截止频率10。因此,适当的改变 RC 数值,就可以改变滤 波器的截 止频率。 本系统设计滤去 1500HZ 以上的高频干扰,即 1500 2 1 = RC (2-12) 解得 RC=1.0605710-4,取 R=1000,C=0.1F 即可满足要求。 另外,在信号的输入端用一个二极管防止反向电压的输入对 A/D 转换器造成破坏11 。 2.2 A/D 转换模块设计 模拟温度传感器的信号须经 A/D 转换才能进入单片机处理。本设计选用 ADC0809 模数转 换器, 它是一种具有 8 路模拟量输入的 8 位 A/D 转换器。采用逐次逼近方式进行 A/D 转换,可 对 8 路模拟 量分时进行转换,其内部有地址锁存及译码器,符合本系统的性能要求。在启动信号的作 用下,控 6 制逻辑控制 A/D 转换器开始转换,经过由高到低逐位逼近后,转换完成,结果送三态输出 缓冲锁存 器,同时发出转换结束信号,当 CPU 读取数据时,使输出缓冲器输出有效,数字量从 D7D0 数据输 出线输出。ADC0809 的时序如图 2-6 所示,通道地址由 C、B、A 送入,在 ALE 上升沿, 经锁存和 译码选通一路模拟量,在 START 信号的下降沿,A/D 转换器开始转换,需约 10s,EOC 信号才变 为低电平。当转换结束时,EOC 信号再变为高电平。当 ADC0809 接到 OE 信号变成高电 平时,才 将输出缓冲器的数字量由 D7D0 输出11 。其主要技术指标如下: (1)分辨率: 8 位 (2)不可调误差: 1LSB (3)转换时间: 100s(640kHz 输入 CLOCK 时) (4)温度范围: -4085 (5)功耗: 15mW (6)单一电源: +5V。 图 2-6 ADC0809 时序图 7 ADC0809 与单片机的接口电路如图 2-7 所示。ADC0809 的通道地址 ABC 分别由 AT89C51 地址 总线的低 3 位 P0.0P0.2 提供;ADC0809 的通道地址锁存信号 ALE 和启动信号 START 由 AT89C51 的 P2.6 和 WR“或” 逻辑控制,当 P2.6 和 WR 都为低电平时,ALE 有效,将通道地址 ABC 锁存并译 码,同时 START 信号有效,A/D 转换开始。ADC0809 的输出允许信号 OE 在 P2.7 和 RD 信号同为低 电平时有效,输出转换后的数字量。转换结束后,EOC 经反相器接 AT89C51 的 P3.3 口, 通过查询 P3.3 口的电平,当其变为低时,从 ADC0809 读取数字量。利用超想 3000TB 综合仿真 实验仪(湖 北省单片机实验室产品)上的 0.5MHZ 脉冲源作为 ADC0809 的 CLOCK 端输入。由于 AT89C51 的 P2.6 口接 ADC0809 的片选端,故 ADC0809 的八路模拟量输入通道地址为 BFF8HBFFFH,依次对 应 IN0IN7。 2.3 单片机的选择 本系统设计属于实验开发,控制程序简单,程序中尽量采用整型运算,尽可能的避免了浮 点数 运算,故运算量小,所以一般型号的 51 单片机均可在速度上满足要求。具体选择时,考 虑了以下方 面的问题: (1)为降低成本和简化系统,单片机应该有内部程序存储器和数据存储器,以免扩展造成 系统 复杂化,占据过多的 I/O 口,并且也增加了系统的不稳定性因素。 (2)在开发过程中需要不断的调试改进软件,所选单片机内部程序存储器应可以重复多次 擦写。 (3)程序中使用了外部中断 0 和时间中断 T0,所选单片机应该有两个以上中断源。 (4)本系统程序算法简单,所选单片机应支持使用 MCS-51 系列通用汇编语言开发,以 利于软 硬件的结合,及时检查修改各种软硬件不协调。 AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器( FPEROMFlash Programmable and Erasable Read Only Memory)的低功耗、高性能 CMOS 8 位微处理器 13。该器件采用 ATMEL 高密 度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。将多功 能 8 位 CPU 和闪烁存储器组合在单个芯片中,是一种高效微控制器。满足以上各条要求,其主要特性 有: (1)与 MCS-51 兼容 (2)4K 字节可编程闪烁存储器 (3)寿命:1000 次写/擦循环 图 2-7 ADC0809 与单片机的接口 8 (4)数据保留时间:10 年 (5)1288 位内部 RAM (6)32 可编程 I/O 线 (7)两个 16 位定时器/计数器 (8)5 个中断源 (9)可编程串行通道 (10)低功耗的闲置和掉电模式 (11)片内振荡器和时钟电路 本系统选用 12MHz 晶振源,外接手工复位电路,使用 74LS14 斯密特触发器除反相作用 之外, 还具有隔离噪声干扰的作用,如图 2-8 所示。 2.4 LED 显示及功能键扩展 作为一种实用型的控制系统,应具有显示和输入控制参数的功能。而单片机的 I/O 口数量 有限, 在构建了上述系统模块以后,暂时没有用的并行 I/O 口已无法满足扩展键盘和显示所需要 的输入输 出通道,需扩展并行 I/O 口。常用的 I/O 扩展芯片有 TTL、CMOS 锁存器、缓冲器芯片 和 8255A、 8155 等,考虑到系统扩展可作为上位机的数据来源,与上位机通讯时可能占用较大的数据 缓存,所 以选用 8155。8155 是一个多功能接口芯片,既有三个并行 I/O 端口,又有 256B 的静态 RAM,还有 一个 14 位的定时器/计数器。其中第七脚 IO/M 是 RAM 或 I/O 的选择信号,当 IO/M =1 时选择 8155 的 I/O 口,AD7AD0 上的地址为 I/O 口地址;当 IO/M =0 时,选择 8155 的 RAM,AD7AD0 上的地 址为 8155 中的 RAM 单元地址,本系统中接单片机的 P2.0 脚11。 8155 按外部数据存储器统一编址,其地址为 16 位,其中高 8 位由片选线 CE(此处接 P2.7)提 供,低八位为片内地址。基于此,从图 2-9 中可以容易的计算出 PA 口、PB 口、PC 口 地址依次为: 7F01H、7F02H、7F03H 。 常用的显示器有 LCD 和 LED 显示。其中 LCD 是一种被动式显示器,外围电路较为复杂, 功耗 极低,抗干扰能力强,在显示时需要在其笔画端和 COM 端输入控制方波;LED 是由一种 有发光二 极管组成的显示器,通过二极管不同的发光组合显示数字。在此没有很特殊的功耗要求, 故采用 LED 显示,用两位七段数码管(带小数点位,便于以后系统精度提高进行扩展) ,共阴极接法。 通过 PA 口前两位经非门 74LS04 送位选码,所以 LED 显示位选码地址为 7F01H。通过 PB 口经 7407 驱动芯 片送段选码,所以 LED 显示段选码地址为 7F02H。 为了增加系统的适应性,扩展三个功能键,分别为+1、-1、RESET 键,键盘接外部中断 0。功 能键通过 PA 口后三位扩展,当按下某键以后,通过外部中断 0 服务程序从 PA 口读入数 据,经过运 算修改数据缓存,并送 LED 显示约 2 秒。 图 2-8 复位电路及晶振源 9 2.5 温度指示信号接口 P1.3 接红色发光二极管,P1.4 接黄色发光二极管,P1.6 接绿色发光二极管,P1.2 接蜂鸣 器。 (见 附录 1) 。当温度高于设定值而低于报警上限时,红色发光二极管发光,启动降温设备;当 温度低于 设定值而高于报警下限时,黄色二极管发光,启动升温设备;当温度正常时,绿色发光二 极管发光; 当温度高于报警上限时,红色发光二极管发光,蜂鸣器发声报警直到温度回到报警限内; 当温度低 于报警下限时,黄色发光二极管发光,蜂鸣器报警直到温度回到报警限内。 3. 系统软件设计 根据设计的要求及前述系统硬件设计的具体情况,系统软件包括以下模块:数据采集模块、 LED 显示模块、用户数据设定数据模块、控制运算指示报警模块(数据处理模块)等。在主程 序进行系 统数据存储器的初始化,并设定相关控制字,程序框图如图 3-1。RAM 空间分配如下: (1)ADC0809 转换温度缓存:30H (2)键值缓存:31H (3)显示缓冲:32H (4)用户输入数据缓存:37H 41H (5)外部中断 0 寄存器保护缓存:38H 39H (6)系统栈区:57H6FH (7)数字滤波数据缓存:7FH 存储温度值,7EH 存储允许温度偏差 (8)十进制显示拆字高位低位缓存:高位 71H,低位 72H 图 2-9 8155 扩展 LED 显示和功能键及指示信号接口10 否 是 主程序清单如下: ORG 0000H AJMP MAIN ORG 0003H ;中断 0 入口地址,接键盘 AJMP KEYJMP ORG 000BH ;时间中断 0 入口地址,接 A/D 转换器 AJMP CT0 ORG 0030H MAIN: MOV R1,#30H LOOP1: MOV R1,#00H INC R1 CJNE R1,#7FH,LOOP1 ;初始化用户内存单元, 30H7FH MOV 41H,#19H ;十进制#25D37H(用户设定温度缓存),十六进制#19H41H MOV 37H,#19H ;十进制#25D37H(用户设定温度缓存),十六进制#19H37H #30H 送 R1 #00H 送R1 R1 值加 1 R1 值等于#7FH 吗? 开 始 #19H 送键值缓存 31H #19H 送显示缓存 37H #19H 送用户设定数据缓存 41H 送 T0 和中断 0 控制字 启动时间定时器 T0 图 3-1 主程序框图 暂停等待中断 11 MOV 31H,#19H SETB EA ;设置 CPU 允许中断 SETB ET0 ;设置 T0 中断允许,T0 中断入口地址:000BH MOV TMOD,#01H ;设置定时器为工作方式 1,十六位的定时器 MOV TL0,#9FH MOV TH0,#9FH ;T0 赋初值,设定第一次中断的时间 SETB TR0 ;启动定时器 T0 开始工作 SETB EX0 ;外部中断 0 的允许控制位 ,中断 0 接键盘 SETB IT0 ;设置中断 0 的触发方式为边沿触发 LOOP2: SJMP LOOP2 ;等待中断 END ;此指令放在系统所有代码的最后 3.1 数据采集模块 数据采集模块通过 ADC0809 读取数据,由于温度是变化比较缓慢的参数,所以采用查询 的方式 采集数据。每中断一次连续读取两个环境温度数据进行数据处理(系统的稳定性由控制程 序在数据 处理时解决) ,利用 T0 中断来实现,程序框图如图 3-2 所示。 T0 中断服务程序清单: ORG 0064H CT0: CLR EX1 ;禁止 INT1 MOV DPTR,#0BFF8H ;A/D 转换的地址送指针 MOVX DPTR,A ;启动 A/D 转换器工作,指向通道 0 MOV R2,#20H DL3: DJNZ R2,DL3 ;延时查询 SETB P3.3 ;置 P3.3 为输入 DONE: JB P3.3,DONE ;判断转换是否结束? MOVX A,DPTR ;读入环境温度值 MOV 7FH,A ;第一次读入的数据送缓存 MOV DPTR,#0BFF8H ;第二次 A/D 转换的地址送指针 MOVX DPTR,A ;启动 A/D 转换器工作,指向通道 0 MOV R2,#20H DL31: DJNZ R2,DL31 ;延时查询 SETB P3.3 ;置 P3.3 为输入 DONE1: JB P3.3,DONE1 ;判断转换是否结束? MOVX A,DPTR ;第二次读入环境温度值 MOV 30H,A ;送缓存 30H ACALL FILT ;调用滤波子程序 MOV A,30H ACALL TEMPTRANCE ;调用温标转换子程序 MOV 30H,A ;送缓存 MOV 32H,A ;送显示缓冲 LCALL DP ;数据处理及控制子程序,先产生控制命令,再显示 LCALL DISPLAYW ;显示在 LED 上 MOV TL0,#9FH MOV TH0,#9FH ;T0 赋初值,设定中断时间 RETI 12 是 否 图 3-2 T0 中断服务程序框图 时间中断 T0 禁止外部中断 1 延时查询 置 P3.3 为输入 启动 A/D 转换 P3.3 为 1 吗? 读入转换结果 送缓存 7FH;启动第二次转换,结果送 30H 温标转换 数字限幅滤波 送数据缓存 30H 及显示缓存 32H 调用显示子程序 数据处理及控制子程序 中断返回 13 在 T0 中断服务程序中,需要进行温标转换。由于实验条件限制,本设计采用超想 3000TB 综 合实验仪上的 0 + 5V 的模拟量输出,直接进入 ADC0809 转换器进行 A/D 转换,将转换 结果除以 5 即得假设的环境温度值(程序清单见附录 2) 。在实际应用中,应根据前面温度传感器的输 入输出关 系,编写相关的温标转换子程序。由式(2-4)可得变换后的数字量,将 A代入式(2-2) , 即可求得 此范围里的温度值,程序框图如图 3-3 所示,汇编语言源程序如下: TEMPTRANCE: MOV B,#05H MUL AB ;A 中的数据乘以 5,结果送 A MOV B,#0FFH DIV AB ;A 中的数据除以#FFH,结果送 A,实现式(2-4)运算 MOV B,#5AH MUL AB ;A 中数据乘以#5AH (#90D) ,结果送 A MOV B,A ;AB MOV A,#0A4H ;#0A4H(#164D)A SUBB A,B ;实现式(2-2)运算,得到环境温度近似值 T = 164 90V RET 图 3-3 温标转换程序框图 开始 #05HB ABA #FFHB ABA #5AHB ABA AB #0A4HA ABA 返回 14 由于系统的性能及温度采集时外界干扰的影响,在数据作为环境温度进入温度数据处理程 序前, 需要进行数字滤波。所谓数字滤波,即通过一定的计算机程序,对采样信号进行平滑加工, 提高其 有用信号,消除和减少各种干扰和噪声,以保证计算机系统的可靠性和稳定性。本系统测 量和控制 的参数是温度,变化比较缓慢,采用程序判断滤波法中的限幅滤波一般即可达到要求。限 幅滤波是 把两次相邻的采样值相减,求出其增量(以绝对值表示) ,然后与两次采样允许的最大差值 (由被控 对象的实际情况决定,温室温度变化一般很慢,此处取为 3 摄氏度)Y 进行比较,若小 于 Y, 则取本次采样值为本次采样值,若大于Y,则仍取上次采样值作为本次采样值,即: |Y( k) Y( k1)| Y,则 Y(k)= Y(k) ,取本次采样值 |Y( k) Y( k1)| Y,则 Y(k)= Y(k1) ,取上次采样值 式中 Y(k)为第 k 次采样值;Y (k1)为第(k1)次采样值;Y 为相邻两次采样值 所允 许的最大偏差18,程序框图如图 3-4 所示。 否 是 图 3-4 限幅滤波程序框图 限幅滤波子程序程序清单如下: FILT: MOV 7EH,#03H MOV B,A ;A 值送缓存 SUBB A,7FH ;两次读入的温度值相减 JNB ACC.7,FILT0 CPL A ;结果为负值,取反 FILT0: CJNE A,7EH,FILT1 ;A 与 7EH 中的数据比较大小 FILT1: JC FILT3 ;C=1,转移,第一个数小于第二个数,此值可取;否则,取上次的值 MOV A,7FH AJMP FILT2 FILT3: MOV A,B 开始 #03H(Y)送 7EH AB |A( 7FH)|A A 中数据大于(7EH)吗? (7FH) A 返回 BA 15 MOV 7FH,A ;不断更新 A 值,动态比较,A 中的数据每有效一次就更新一次 FILT2: RET 3.2 LED 显示模块 LED 要求十进制显示,以便于用户使用。根据实用够用的原则,在本设计中两位 LED 显 示即可 满足要求。LED 显示有两种方式,静态显示方式和动态显示方式,本设计采用后者。将所 有的段选 线并联在一起,由一个八位并行口控制,而共阴极点由另一个并行口控制,这样两个八位 I/O 口就 可完成显示接口的控制。段选线是公用的,所以同一时刻不能显示不同的字形,只能采用 动态扫描 的显示方式。首先显示最高位的一个字符并延时 15ms,其余各位不显示,相应的位选线 关闭,保 证同一时刻只有一位显示,然后循环右移一位显示该位字符,也延时同样的时间,循环到 最后再从 第一位开始,这样循环反复显示,实际上每一位亮 15ms,暗(15)N ms,只要循环时 间足够短, 利用人的视觉暂留效应,使人们看起来像是一直在发光,达到一种稳定显示的视觉效果。 程序的思 路是通过拆字将八位二进制数拆为两位十进制数,然后通过查表程序,找出相应的段选码, 先送位 选码,再送段选码,延时 15ms,然后移位显示下一位(程序框图如图 3-5) 。 十进制 LED 显示子程序清单: DISPLAYW: ;数据由 32H 入 R0,显示在 LED MOV DPTR,#7F00H MOV A,#00110011B MOVX DPTR,A ;送 8155 控制字 MOV R0,#32H ACALL APART ;拆字,高位送 71H,低位送 72H MOV R3,#11111101B MOV A,R3 MOV DPTR,#7F01H MOVX DPTR,A ;位选码送#7F01H MOV DPTR,#TABLE1 MOV A,71H ANL A,#0FH ;屏蔽高位 MOVC A,A+DPTR MOV DPTR,#7F02H MOVX DPTR,A ;段选码送#7F02H 口 ACALL DELAY1 ;显示高位 MOV A,R3 RR A ;指向下一位 MOV DPTR,#7F01H ;送位选码 MOVX DPTR,A MOV DPTR,#TABLE1 MOV A,72H ANL A,#0FH ;屏蔽高位 MOVC A,A+DPTR MOV DPTR,#7F02H ;送段选码 MOVX DPTR,A 16 ACALL DELAY1 ;显示低位 TABLE1: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;共阴极显示码 RET ;* DELAY1: MOV R7,#04H ;延时 2ms DL11: MOV R6,#0FFH DL22: DJNZ R6,DL22 DJNZ R7,DL11 RET 图 3-5 动态显示程序框图 LED 显示子程序开始 送 8155 控制字#0303HA7F00H 拆字,转换为十进制,高位71H ,低位72H #FDHR3(位选码R3) R3(位选码)7F01H(PA 口) 查表求出高位 71H 段选码PB 口(7F02H ) R3A,右移一位,选中下一位 延时 2ms 查表求出低位 72H 段选码PB 口(7F02H ) 延时 2ms 返回主程序读入新数据如果数据有所改变嗣 则重新显示新数据嗣从而实现动态扫描嗡 返回 17 拆字时要将二进制拆为十进制,程序基于以下的算法(框图如图 3-6):读取八位二进制 数,不 断的用 10 去减它,当得到的结果为负数时,看看减了多少次,假定是 N 次,那么 N-1 就 是这个 8 位二进制数十位上的值;然后将为负的结果加上一次 10,结果就为个位上的数,这里有一 个条件, 就是 8 位二进制数不可大于 99,在此处能满足运算和控制要求。 APART: MOV A,R2 ;拆字子程序 MOV R2,#00H DISPLAY1: SUBB A,#10D INC R2 JNB ACC.7,DISPLAY1 ;ACC.7 等于 0,继续减#10D,否则往下执行 ADDC A,#10D DA A MOV 72H, A ;低位送 72H DEC R2 MOV 71H,R2 ;高位送 71H RET 图 3-6 拆字子程序 3.3 用户设定数据模块(扩展键盘) 键盘是单片机系统中简单通用的输入设备,用于向系统输入数据或者控制信息。键盘一般 是由 若干行和列的按键开关组成的矩阵,因而称为矩阵式键盘(或行列式键盘) ,行和列分别由 两个 I/O 口控制。计算机系统的键盘有两类:(1)编码键盘,键的识别由硬件实现;(2)非编码 键盘,键的 识别是由软件来完成的。 单片机对键盘控制的办法是扫描,扫描的方法有程控扫描法、定时扫描法和中断扫描法21。 程控扫描法是由程序控制键扫描的方法,首先判断是否有键按下,方法是使所有的行输出 均为 低电平,然后从另一个端口读入列值;然后去除抖动,若有键按下,则延时 510ms,再一 次判断有 无键按下,如果此时仍有键按下,则认为键盘上有一个键处于稳定闭合期;若有键闭合, 则求出闭 否 是 拆字子程序 显示缓冲 32H 数据A,#00HR2 A#10D,R2 值1 ACC.71 吗? A#10DA72H,得到低位 R2171H,得到高位 返回 18 合键的值,求键值的方法是对键盘进行逐行扫描。为保证键每闭合一次,CPU 只做一次处 理,程序 中需等闭合释放后才对其进行处理。求得键值只是手段,最终目的是要使程序转到相应的 地址去完 成该键的操作。一般对数字键就是直接将键值送到显示缓冲区进行显示,对功能键则需先 找到该功 能键处理程序的入口地址,并转去执行该键的命令,因此求得键值之后,还必须找到功能 键处理程 序入口。 定时扫描方式就是 CPU 每隔一定时间对键盘扫描一遍。当发现有键按下时,进行读入键 盘操作, 以求出键值,并分别进行处理。定时时间由 AT89C51 单片机内部定时器/计数器来完成, 这样可以减 少计算机扫描键盘的时间,以减少 CPU 的时间开销。具体做法是,当定时时间一到,定 时器便自动 输出一个脉冲信号,使 CPU 转去执行扫描程序,其扫描和求键值以及区别数字键和功能 键的方法与 程控扫描法类似,一点不同的是,采用定时扫描法时,必须在初始化程序中对定时器写入 相应的命 令,使之能产生中断,以便完成定时扫描的任务。 不管是程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论