1、温度遥测遥控系统的设计与实现- 0 -QUST 毕业论文温度遥测遥控系统的设计和实现QUST青岛科技大学本科毕业设计(论文)- 1 -温度遥测遥控系统的设计和实现摘 要文章介绍了一种基于 AT89S52 单片机的水温遥控遥测系统的设计。设计采用 AT89S52 单片机为控制内核,重点介绍了单片机工作方式和外围接口电路,包括温度采集模块所实现的数模转换、控制器 AT89S52 之间数据通过无线传送模块串行所实现的通信功能、温度显示模块所实现的数码管的动态显示功能。系统分为上下位机,通过无线收发装置实现对水温遥测遥控。关键词:AT89S52 单片机;ADC0809 数模转换;单片机的串行通信;数码
2、管动态显示;温度遥测遥控系统的设计与实现- 2 -目录1 引言 .- 1 -2 温度遥测遥控系统整体设计方案 .- 3 -3 系统硬件设计 .- 5 -3.1 PROTLE 99SE 和温度测量系统电路图的制作 - 5 -3.2 芯片的介绍和使用 .- 6 -3.2.1 AT89S52 及其在系统中的使用 - 6 -3.2.2 ADC0809 介绍和在温度测量模块的使用 .- 8 -3.2.3 74HC573 及其在接口电路中的使用 .- 10 -3.2.4 74LS74 双 D 触发器及其在温度测量模块的使用 - 10 -3.2.5 74LS02 或非门 - 11 -3.2.6 双位数码管在
3、显示模块的使用 .- 11 -3.3 各芯片在系统电路图中的作用和联系 .- 12 -3.4 无线模块 SRWF-1 V6.1 及其在上下位机无线通信作用 .- 12 -3.5 硬件的焊接和调试 .- 13 -3.6 温度传感器和温度转换算法 .- 14 -4 系统软件控制设置 .- 15 -4.1 AT89S52 控制寄存器及其在系统中的设置 .- 15 -4.1.1 中断控制器 .- 16 -4.1.2 定时计数器控制寄存器和初值的计算 .- 18 -4.1.3 上下位机串行通信的控制和波特率 .- 19 -4.2 温度测量模块和显示模块的程序控制 .- 22 -4.2.1 ADC0809
4、 的工作原理 .- 22 -4.2.2 数码管的显示 .- 23 -4.3 编译和烧录软件 .- 23 -5 总结 .- 25 -青岛科技大学本科毕业设计(论文)- 3 -1 引言温度遥测与遥控系统是一种远端测控单元装置,测控终端集 A/D 功能和I/O 功能为一体,负责对工业设备、环境、流体的温度监测和控制,特别适合那些环境恶劣,测量人员不容易接近的场合,近年来在工农业生产中应用广泛。目前的应用领域可分为远程遥测遥控和非远程遥测遥控,他们的主要差别在于远程遥测遥控主要是通过 GPRS 网络实现更大的地域跨度,但是相对来说本文所研究的非远程遥测与遥控系统则更适合于车间等小空间(300 米以内)
5、的操作,此系统的的特点是成本小,系统相对简单,容易维护,具体可应用在家庭洗浴系统、工业热能系统等根据短距离遥控遥测系统的特点,本文提出了对近距水温遥控遥测的设计方案,并最后实现了对模拟的 0-100oC 的温度的无线近距离测量和控制,主要工作包括温度的数模转换、温度在数码管上的动态显示和控制器之间通过无线模块进行的串行通信。温度遥测遥控系统的设计与实现- 4 -2 温度遥测遥控系统整体设计方案本次设计,可分为上位机和下位机两大部分,分别实现温度数据的采集和温度的控制功能。以下为系统大体原理框图(图 2-1):上位机 下位机图 2-1 系统原理框图 Fig.2-1 The system conf
6、iguration block diagram注释: 热水注入器 冷水注入器 温度感应器A/D 转换模块 无线收发模块 1 数码管显示器无线收发模块 2 温度手控器 数码管显示器上位端阐述:1)冷/热水注入器/负责接受控制器所发出的指令并调水的温度,具体为 01 指令为加冷水,10 指令为加热水,其他指令无效。2)温度感应器负责采集温度并将之转换为模拟的电信号,它与 A/D 转换模块组成温度测量模块负责将采集到的模拟电信号转换为 8 位数字信号,并将其送到控制器 1,由于测量范围是 0100,所以误差控制在 1是没有问题的。3)控制器 1 负责:1.每 2S 接受一次数字信号并将其送到无线模块
7、并发送出去并送至数码管显示。2.负责将无线收发模块接受到的控制信号控制冷/热水注入器/。4)无线收发模块负责每 1 秒发送一次温度,并随时(在发送温度数据的时间之外)准备着接受下位端的控制数据下位端阐述:青岛科技大学本科毕业设计(论文)- 5 -1)无线收发模块每 1S 接受一次温度数据并将其送至控制器 2,并随时(在接受温度数据的时间之后一秒的时间里)将控制器 2 所采集的控制信号发送2)控制器 1 负责:1.每 1S 接受一次数字信号送至数码管显示.2.采集温度手控器的状态并送至无线模块发送出去。3)温度手控器,我们可以根据数码管所显示的数据发送指令 01 指令为加热,10 指令为降温,其
8、他指令无效。4)温度显示模块以双位数码管和,原理为双位数码管的动态显示原理。温度遥测遥控系统的设计与实现- 6 -3 系统硬件设计本章重点讲述了温度遥测遥控系统的硬件的设计和实现,主要包括温度测量模块、温度显示模块和控制模块所包括的芯片以及各种芯片的结构功能、工作原理以及在设计中的使用方法,并且在开头一节讲述了硬件电路设计软件PROTEL 99SE 的使用。3.1 PROTLE 99SE 和温度测量系统电路图的制作(1)电路原理设计部分(Advanced Schematic 99):电路原理图设计部分包括电路图编辑器(简称 SCH 编辑器) 、电路图零件库编辑器(简称 Schlib 编辑器)和
9、各种文本编辑器。本系统的主要功能是:绘制、修改和编辑电路原理图;更新和修改电路图零件库;查看和编辑有关电路图和零件库的各种报表。图 3-1 温度 AD 转换电路板原理图Fig. 3-1Temperature AD transform circuit principle diagram青岛科技大学本科毕业设计(论文)- 7 -(2)印刷电路板设计系统(Advanced PCB 99):印刷电路板设计系统包括印刷电路板编辑器(简称 PCB 编辑器) 、零件封装编辑器(简称 PCBLib 编辑器)和电路板组件管理器。本系统的主要功能是:绘制、修改和编辑电路板;更新和修改零件封装;管理电路板组件。 (
10、3)自动布线系统(Advanced Route 99):本系统包含一个基于形状(Shape-based )的无栅格自动布线器,用于印刷电路板的自动布线,以实现PCB 设计的自动化。 图 3-2 温度的采集和 AD 转换电路板图Fig.3-2 Temperature AD transform circuit diagram3.2 芯片的介绍和使用在本节中介绍了温度测量模块、显示模块、通信模块所用到的芯片的功能、结构。并具体阐述了各芯片在系统中的设置和使用。3.2.1 AT89S52 及其在系统中的使用AT89S52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统温度遥测遥控系统
11、的设计与实现- 8 -可编程。Flash 存储器,与工业 80C51 产品指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的 8位 CPU 和在系统可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。管脚解释:P0 口: P0 口是一个 8 位漏极开路的双向 I/O 口。作为输出口,每位能驱动 8 个 TTL 逻 辑电平。对 P0 端口写“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时,P0 口也被作为低 8 位地址/数据复用。在这种模式下, P0 不具有内部上拉电阻。 在 fla
12、sh 编程时, P0 口也用来接收指令字节;在程序校验时,输出指令字节。程序校验 时,需要外部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p1 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P1端口写“1”时,内部上拉电阻把端口拉高,图 3-3 89s52 单片机管脚图 此时可以作为输入口使用。作为输入使Fig.3-3 Pin map for89s52 用时,被外部拉低的引脚由于内部电阻此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL ) 。此外,P1.0 和 P1.1 分别作定时器/ 计数器 2 的外部计数输
13、入(P1.0/T2 )和定时器/ 计数器 2 的触发输入 P1.1/T2EX) 。P2 口:P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口,在访问外部程序存储器或用 16 位地址读取外部数据存储器(例如执行 MOVX DPTR,A)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送 1。在使用 8 位地址(如 MOVXRI)访问外部数据存储器时,P2 口输出 P2 锁存器的内容。在 flash 编程和校验时, P2 口也接收高 8 位地址字节和一些控制信号。P3 口:P3 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p3 输出缓冲器能驱动 4 个 TTL
14、 逻辑电平。对 P3 端口写“1” 时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的青岛科技大学本科毕业设计(论文)- 9 -原因,将输出电流(IIL) 。P3 口亦作为 AT89S52 特殊功能(第二功能)使用,如下表所示。在 flash 编程和校验时, P3 口也接收一些控制信号。端口引脚第二功能:P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INTO(外中断 0)P3.3INT1(外中断 1)P3.4TO(定时/计数器 0)P3.5T1(定时/计数器 1)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读
15、选通)RST:复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将是单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时, ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。一般情况下,ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号(即机器周期),该位置位后,只有一条 MOVX 和MOVC 指令才能将 ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 禁止位无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52 由外部程序存储器取指令(或数据)时,每个机器周期两次 PSEN 有效,即输出
16、两个脉冲,在此期间,当访问外部数据存储器,将跳过两次 PSEN信号。EA/VPP:外部访问允许,欲使 CPU 仅访问外部程序存储器(地址为0000H-FFFFH) ,EA 端必须保持低电平(接地) 。需注意的是:如果加密位 LB1被编程,复位时内部会锁存 EA 端状态。如 EA 端为高电平(接 Vcc 端) ,CPU则执行内部程序存储器的指令。FLASH 存储器编程时,该引脚加上+12V 的编程允许电源 Vpp,当然这必须是该器件是使用 12V 编程电压 Vpp。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。3.2.2 ADC0809 介绍和在温
17、度测量模块的使用1主要特性1)8 路输入通道,8 位 A/D 转换器,即分辨率为 8 位。2)具有转换起停控制端。 温度遥测遥控系统的设计与实现- 10 -3)转换时间为 100s(时钟为 640kHz 时),130s(时钟为 500kHz 时)4)单个+5V 电源供电 5)模拟输入电压范围 0+5V,不需零点和满刻度校准。6)工作温度范围为-40+85 摄氏度 7)低功耗,约 15mW。图 3-4 ADC0809 管脚图Fig.3-4 Pin map for ADC08092内部结构ADC0809 是 CMOS 单片型逐次逼近式 A/D 转换器,内部结构如图 1322所示,它由 8 路模拟开
18、关、地址锁存与译码器、比较器、8 位开关树型 A/D 转换器、逐次逼近寄存器、逻辑控制和定时电路组成。3引脚功能说明IN0IN7:8 路模拟量输入端。 D0D7:8 位数字量输出端。 ADDA、ADDB、ADDC:3 位地址输入线,用于选通 8 路模拟输入中的一路 ALE:地址锁存允许信号,输入,高电平有效。 START:A/D 转换启动脉冲输入端,输入一个正脉冲(至少 100ns 宽)使启动(脉冲上升沿使 0809 复位,下降沿启动 A/D 转换) 。 EOC: A/D 转换结束信号,输出,当 A/D 转换结束时,此端输出一个高电平(转换期间一直为低电平) 。 OE:数据输出允许信号,输入,
19、高电平有效。当 A/D 转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 青岛科技大学本科毕业设计(论文)- 11 -CLK:时钟脉冲输入端。要求时钟频率不高于 640KHZ。 REF(+) 、REF(-):基准电压。 Vcc:电源,单一+5V。 GND:地。ADC0809 的工作过程3.2.3 74HC573 及其在接口电路中的使用在单片机最小系统中 74HC573 是基本的芯片之一,在使用时根据需要 OE 接地,LE 悬空。它和74LS373 等芯片一样可以根据芯片特性完成以下功能:1.数据锁存 当输入的数据消失时,在芯片的输出端,数据仍然保持; 这个概念在并行数据扩展中经
20、常使用到。 2.数据缓冲加强驱动能力。74LS244/74LS245/74LS373/74LS573 都具备数据 图 3-5 74LS573 管脚图缓冲的能力。 Fig.3-5 Pin map for 74LS573OE:output-enable,输出使能 ; LE:latch-enable,数据锁存使能,latch 是锁存的意思; 在本设计中,主要使用为数据所存,以作为 ADC0809 模拟通道选择。在使用时根据需要 OE 接地,LE 悬空。3.2.4 74LS74 双 D 触发器及其在温度测量模块的使用在 74LS74 芯片中有两个 D 触发器,故称双 D 触发器表 3-1 74ls74
21、 功能表Table3-1 74ls74menu-key输 入 输 出SD RD CP D Qn1 Qn10 1 1 01 0 0 10 0 温度遥测遥控系统的设计与实现- 12 -1 1 1 1 01 1 0 0 11 1 Qn Qn阐述:在本次设计中 D 触发器做分频器(二分频) ,在使用过程中,将Q1 非和 D1 相连,然后在 CLK1 处输入ALE 单片机机器周期信号(1MHZ) ,在 Q1 处即可输出供 ADC0809 使用的clk 信号(5KHZ) 。图 3-6 74LS74 内部结构图Fig.3-6 74LS573 inter construction3.2.5 74LS02 或非
22、门74LS51 广泛使用于逻辑电路中,它能实现基本的或非功能。图 3-7 74LS02 管脚图Fig.3-7 Pin map for 74LS02在本次设计中,使用 74LS02 配合单片机的读写管脚和 ADC0809 的 OE 管脚来实现对 ADC 的启动和转换完成后实现中断。3.2.6 双位数码管在显示模块的使用数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示) ;按能显示多少个“8”可分为 1 位、2 位、4 位等等数码管;本次设计使用的数码管是共阳极双位数码管,采用动态显示方式(具体
23、见3.2.2)青岛科技大学本科毕业设计(论文)- 13 -经过测量;数码管的管教显示解释如下:COM1、COM2:控制显示的位, “01”为显示个位;“10”为显示十位;a、b、c、d、e、f、g、dp 管脚和控制的 LED 灯如图 3-8 所示dp图 3-8 双位数码管管脚图Fig.3-8 Pin map for double-digital tube3.3 各芯片在系统电路图中的作用和联系整块板子以 ADC0809 为核心,其中:D 触发器做分频器为 ADC0809 提供时钟信号,或非门主要作用是结合 P2.7 口翻译单片机发出的读写信号,翻译为ADC0809 的启动 AD 转换的信号。A
24、D 转换完成之后由单片机 P0 脚读入,在单片机内转化为可以在数码管显示的十位、个位。其中 P2.1、P2.0 口完成动态显示的片选工作。3.4 无线模块 SRWF-1 V6.1 及其在上下位机无线通信作用本设计所用的无线模块为桑瑞公司开发的无线模块 SRWF-1 V6.1,此型号模块具有很强的抗干扰能力, 全透明传输, 体积小 ,功耗低传输距离远的特点,并且体积小图 3-9 无线模块 SRWF-1 引脚少便于初学者做无线设计的开 Fig.3-9 Wireless module SRWF-1 发。表 3-2 插槽管脚介绍Table 3-2 Pins Introduction序号 接口说明 连接
25、终端接口 备注1 GND 电源 模拟地 2 电源 DC 3.6V5.0V 温度遥测遥控系统的设计与实现- 14 -3 RXD/TTL 串行数据接收端 TTL TXD 4 TXD/TTL 串行数据发射端 TTL RXD 5 SGND 信号地 模拟地 可与电源地相连6 A(TX) A(RX) RS-485 的 A RS-232 的 TX7 B(RX) B(TX) RS-485 的 B RS-232 的 RX8 SLP 休眠控制 (输入) TTL 休眠信号 低有效 t15ms9 RESET 复位 (输出) TTL 唤醒信号 负脉冲唤醒 t 1ms在无线模块提供的两对 TX,RX 引脚中,RXD/TT
26、L 串行数据接收端、TXD/TTL 串行数据发射端,这一对为 TTL 电平协议,适合交叉连接单片机的串行通信的 RX、TX。而 A(TX)、B(RX) 这对为 RS-485、RS-232 远程抄表常用的电平协议。在模块的下方 A、B、C 、 D、E,为选择通信的信道所用,不同的信道根据调制的频率不同区分,具体的频率信息如下:ABC 的状态:表 3-3 SRWF-1 信道频率Table 3-3 SRWF-1 Channel Frequency000 信道 001 010 011 100 101 110 111433.3030MHZ 432.6876 432.0732 431.4588 430.8
27、444 430.2300 429.6156 429.0012本次设计使用 000 信道3.5 硬件的焊接和调试由于前年的电子电工技术实习使我掌握了焊接的基本技巧,表述如下:先给元件焊接部分和线路板渡锡,把元件插入电路板,一手握烙铁一手拿锡丝,用电烙铁加热被焊处,加锡适量,待锡融化为水并充分融入电路板表面,离开电烙铁,等待锡点冷却。经调查,在市场上印电路板的费用大概是 300400 人民币左右,所以请陈琦老师帮忙,印刷,这对硬件的焊接技术的要求更高。底座的焊接在电路板有三个底座,ADC0809 的用的是 28 脚的双排直插式的,74LS74和 74LS51 为 14 脚的双排直插式的;在焊接时,
28、要先把底座插到电路板上再进行焊接,底座各脚的焊点要小,以免各脚之间导通,还不能形成虚焊,虚焊会导致电路不通,底座要焊接牢固,不能和电路板距离太远,以免导致虚焊。底座还要放在公共线的两边,因为那两条线是电源线和地线。焊接好后要对照电路仔细检查,再用万用表检测,看焊接是否良好。青岛科技大学本科毕业设计(论文)- 15 -插针的焊接由于插孔太小,我使用了螺丝钻孔扩大插孔,使得插针顺利插入。在焊接时考虑到某些管脚的不在适用范围内,可放弃不焊。3.6 温度传感器和温度转换算法LM35 总体简介LM35 是由 NA 所生产的温度传感器,其输出电压与摄氏温标呈线性关系,转换公式如式,0 时输出为 0V,每升
29、高 1,输出电压增加 10mV。LM35 有多种不同封装型式,外观如图所示。在常温下,LM35 不需要额外的校准处理即可达到 1/4的准确率。 电源供应模式有单电源与正负双电源两种其引脚如图所示,正负双电源的供电模式可提供负温度的量测;两种接法的静止电流-温度关系如图所示,在静止温度中自热效应低(0.08),单电源模式在 25下静止电流约 50A,工作电压较宽,可在 420V 的供电电压范围内正常工作非常省电。 温度传感器中电压和温度的线性关系:V out-LM35(T)=10mv/0C*T0C如公式所示:在一百摄氏度时 Vout-LM35=1V 在温度采集电路中ADC0809 芯片的参考电压
30、是 5V 所以我们首先要通过功放电路将 LM35 的输出电压放大 5 倍,ADC0809 在输入电压为 5V 的情况下转换结果是 1111 1111B,我们再将之转化为 99oC,即 99 约等于 256 * 4 / 10,此过程将在软件中实现。 图 3-10 LM35 管脚图Fig.3-10 Pin map for LM35温度遥测遥控系统的设计与实现- 16 -4 系统软件控制设置本章阐述了第 3 章所讲到的控制器控制部分控制原理以及根据芯片的工作原理为芯片提供工作时序的软件设计。在本章的最后讲述了在本次设计中所使用语言编译软件和程序烧录软件的使用。4.1 AT89S52 控制寄存器及其在
31、系统中的设置寄存器是单片机控制及设置的核心,在 AT89S52 单片机中,有以下寄存器分别控制单片机及其外围电路完成各种不同的功能:1. B 寄存器 符号为 B,在单片机中的地址是 F0H,在本次设计中 B 寄存器主要完成显示模数转换的结果,模数转化的结果为 2 位 16 进制数字,必须按照要求实现 10 进制显示,用单片汇编语言中的除法指令 DIV AB,这就用到 B 寄存器存放被除数“10” ,和除完之后的个位。2. 累加器 ACC 地址为 E0H 不必赘述3. 程序状态字 PSW 地址为 D0H 表 4-1 PSW 数据位Table 4-1 The Bits of PSWD7 D6 D5
32、 D4 D3 D2 D1 D0 CY AC F0 RS1 RS0 OV P CY:进位标志。有进、借位,CY1;无进、借位,CY0 在本次设计中 CY 的主要用途是执行 RLC A,RRC A 指令时使得 ACC 中需要的 BIT移出使用AC:辅助进、借位(高半字节与低半字节间的进、借位 )。F0:用户标志位RS1、RS0 :工作寄存器组选择位。控制使用哪一组的 R0R7,默认为00;即第一组。0V:溢出标志位。P:奇偶校验位:它用来表示 ALU 运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则 P=1,否则为 0。在串行通信时使用较为频繁。本次设计没有应用该项功能。4. 中断优先级控制
33、寄存器 IP 地址为 B8H 默认优先级从高到低为:INT0 外部中断 T0 定时中断 INT1 外部中断 T1 定时器中断 T2青岛科技大学本科毕业设计(论文)- 17 -中断 T2 定时器中断(AT89S52 特有中断)串行接口中断5. 中断允许控制寄存器 IE 地址为 A8H 以上两个中断寄存器将会在 4.1.1 中断控制器和中断向量中详细的描述6. 串行口锁存器 SBUF 地址为 99H 7. 串行口控制寄存器 SCON 地址为 98H 以上两个寄存器配合完成数据的串行发送接受详细内容在 3.1.28. TH1 8DH 定时器/计数器 1(高 8 位) TH0 8CH 定时器/计数器
34、1(低 8 位)TL1 8BH 定时器/计数器 0(高 8 位) TL0 8AH 定时器 /计数器 0(低 8 位) TMOD 89H 定时器/计数器方式控制寄存器 TCON 88H 定时器/计数器控制寄存器 以上定时器寄存器将会在 4.1.2 定时计数器控制寄存器和初值的计算中详细的介绍。9. DPTR 十六位数据地址指针包括:DPH 83H 数据地址指针(高 8 位) DPL 82H 数据地址指针(低 8 位) 在设计中使用数据地址指针完成查表显示功能10. SP 81H 堆栈指针 4.1.1 中断控制器在单片机工作中,当 CPU 正在处理某项事务的时候,如果外界或内部发生了紧急事件,要求
35、 CPU 暂停正在处理的工作转而去处理这个紧急事件,待处理完以后再回到原来被中断的地方,继续执行原来被中断了的程序,这样的过程称为中断。中断能够极大地提高 CPU 的工作效率;在本次设计中通过对优先级的定义全局的使用了各种中断,中断的优先级和开关是通过寄存器 IP 和 IE中断优先级控制寄存器 IP当几个中断源同时向 CPU 发出中断请求时,CPU 应优先响应最需紧急处理的中断请求。为此,需要规定各个中断源的优先级,使 CPU 在多个中断源同时发出中断请求时能找到优先级最高的中断源,响应它的中断请求。在优先级高的中断请求处理完了以后。再响应优先级低的中断请求。在单片机中,IP 寄存器负责控制中
36、断源的优先级, IP 置位时的数据决定了单片机的默认中断优先顺序,如下:中断源 入口地址温度遥测遥控系统的设计与实现- 18 -外部中断 0 0003H定时器 0 溢出 000BH外部中断 1 0013H定时器 1 溢出 001BH串行口中断 0023H通常,在中断入口地址处安排一条跳转指令,以跳转到用户的服务程序入口。中断服务程序的最后一条指令必须是中断返回指令 RETI。我们可以通过了解中断的优先顺序来分配中断处理进程使得单片机工作的更为迅速、有序中断的允许和禁止在 51 系列单片机中,中断的允许和禁止是由中断允许寄存器 IE 控制的。IE 中各位允许标志如表:中断允许寄存器 IE表 4-
37、2 IE 数据位Table 4-2 The Bits of IED7 D6 D5 D4 D3 D2 D1 D0EA X X ES ET1 EX1 ET0 EX0(1)EA :总中断允许开关。它是个总开关,凡是要设置中端都得先通过它。EA=1,开放所有的中断;EA=0 ,则所有中断都被禁止。(2)ES :串行口中断控制位。ES=1,允许中断;ES=0,禁止中断。(3)ET1:定时/计数器 1 中断控制位。ET1=1,允许中断;ET1=0,禁止中断。(4)EX1 :外中断 1 中断控制位。EX1=1 ,允许中断;EX1=0 ,禁止中断。(5)ET0:定时器 0 中断控制位。ET0=1 ,允许中断;
38、ET0=0 ,禁止中断。(6)EX0 :外中断 0 中断控制位。EX0=1 ,允许中断;EX0=0 ,禁止中断。IE 寄存器的各位都可以根据要求,置位或者清零,从而是该中断源处于允许或者禁止状态。在上位机中,我们使用到了 INT0 中断,T0 中断和串行通信中断,它们的任务如下:INT0 中断作为 A/D 转换中断查询方式的中断入口,来通知 A/D 转换已经完成,在中断子程序中做出相应的反应。T0 中断作为数码管动态显示的计时器和一秒发送一次温度信息的计时器。所以我们设置 IE 为 95H: MOV IE,#10010011B;在下位机中同样使用了 T0 中断作为数码管动态显示的计时器和串行通
39、信中断。和一秒发送一次控制信息的计时器青岛科技大学本科毕业设计(论文)- 19 -所以我们设置 IE 为 92H: MOV IE,#10000010B;4.1.2 定时计数器控制寄存器和初值的计算89S52 单片机内部设有三个 16 位的可编程定时器/计数器 T0、T1、T2(T2在本次设计中不使用)在定时器/计数器中除了有两个 16 位的计数器之外,还有两个特殊功能寄存器(控制寄存器 TCON 和方式寄存器 TMOD) 。16 位的定时/计数器分别由两个 8 位专用寄存器组成,即:T0 由 TH0 和 TL0 构成;T1由 TH1 和 TL1 构成。每个寄存器均可单独访问。这些寄存器是用于存
40、放定时或计数初值的。TMOD 主要是用于选定定时器的工作方式;TCON 主要是用于控制定时器的启动停止,此外 TCON 还可以保存 T0、T1 的溢出和中断标志。当定时器工作在计数方式时,外部事件通过引脚 T0(P3.4)和 T1(P3.5 )输入。方式寄存器 TMOD表 4-3 TMOD 数据位Table 4-3 The Bits of TMODD7 D6 D5 D4 D3 D2 D1 D0GATE1 C/T1 M1 M0 GATE0 C/T M1 M0GATE:门控制位。 GATE 和软件控制位 TR、外部引脚信号 INT 的状态,共同控制定时器计数器的打开或关闭。CT:定时器计数器选择位
41、。C/T1,为计数器方式;CT0,为定时器方式。本次设计使用的定时计数器的定时功能。M1M0:工作方式选择位,定时器计数器的 4 种工作方式由 M1M0 设定。表 4-4 定时计数器的工作方式Table 4-4 Working Ways of Counter/Timer.编码 工作方式 描述00 工作方式 0 13 位计数器01 工作方式 1 16 为计数器10 工作方式 2 自动再装入 8 位计数器11 工作方式 3 定时器 0:分成两个 8 位计数器定时器 1:停止计数在本次设计中,T0 使用的是工作方式 1 作为外部定时器使用 T1 使用的是工作方式 2 作为波特率发生器使;所以在阐述初
42、值计算的时候其他的工作方式就不多赘述。控制寄存器 TCON表 4-5 TCON 数据位Table 4-5 The Bits of TCON温度遥测遥控系统的设计与实现- 20 -D7 D6 D5 D4 D3 D2 D1 D0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TF1:定时器 1 溢出标志位。当字时器 1 计满溢出时,由硬件使 TF1 置“1” ,并且申请中断。进入中断服务程序后,由硬件自动清“0” ,在查询方式下用软件清“0” 。TR1:定时器 1 运行控制位。由软件清“0”关闭定时器 1。当 GATE=1,且INT1 为高电平时, TR1 置 “1”启动定时器 1;
43、当 GATE=0,TR1 置“1”启动定时器 1。TF0:定时器 0 溢出标志。其功能及操作情况同 TF1。TR0:定时器 0 运行控制位。其功能及操作情况同 TR1。IE1:外部中断 1 请求标志。IT1:外部中断 1 触发方式选择位。IE0:外部中断 0 请求标志。IT0:外部中断 0 触发方式选择位。在本次设计中使用到的只有 TR1 和 TR0 两个标志,来控制定时器的开关(3)初值的计算在定时器模式下,计数器的计数脉冲来自于晶振脉冲的 12 分频信号,即对机器周期进行计数。本设计选择 12M 晶振,则定时器的计数频率为 1MHZ。假设定时时间为 T,机器周期为 T1,即 12/晶振频率
44、。X 为定时器初值。则 X=2n-T/T1。方式 0,n=13,方式 1 时,n=16,方式 2 和方式 3,n=8在设计中定时器 T0 为工作方式 1 定时 50ms 用作数码管的动态显示周期,所以我们设的初值为 21650000=15535 换算成 16 进制约为:4C00HMOV TL0,#00H MOV TH0,#4CH;至于 T1 计时器作为波特率的计算在 4.2.2 中阐述。4.1.3 上下位机串行通信的控制和波特率计算机的数据传送有并行数据传送和串行数据传送两种方式。串行数据传送的特点是数据传送按位顺序进行,最少只需一根传输线即可完成,成本低但速度慢。计算机与外界的数据传送大多数
45、是串行的,其传送的距离可以从几米到几千公里。串行通信又可分为:异步串行通信和同步串行通信。现在主要讲述本次设计所用到的异步串行通信。青岛科技大学本科毕业设计(论文)- 21 -在异步串行通信中,数据或者字符是一帧一帧传输的,帧的格式是:一帧由四个部分组成:起始位、数据、奇偶校验位和停止位。图 4-1 串行通信数据结构Fig4-1 Serial communication data structure起始位为0, 数据位由 58 位数据组成,低位在前,然后是奇偶校验位(可省略) ,然后是停止位(可以是一位也可以是两位) 。串行控制寄存器 SCON表 4-6 SCON 数据位Table 4-6 T
46、he Bits of SCON(1)SM0、SM1串行口工作方式选择位表 4-7 串行工作方式Table 4-7 Ways of Serial WorkSM0 SM1 工作方式 功能描述 波特率0 0 0 同步移位寄存器方式(用于 I/O 扩展) fosc/120 1 1 10 位 UART(8 位数据位) 可变,由定时器控制1 0 2 11 位 UART(9 位数据位) fosc/32 或 fosc/641 1 3 11 位 UART(9 位数据位) 可变,由定时器控制(3)REN允许接收位REN 位用于对串行数据的接收进行控制:REN = 0 禁止接收,REN = 1 允许接收;该位由软件
47、置位或复位。(4)TB8 发送数据位 8在方式 2 和方式 3 时,TB8 的内容是要发送的第 9 位数据,其值由用户通过软件设置。在双机通信时 TB8 一般作为奇偶校验位使用;在多机通信中,常以 TB8位的状态表示主机发送的是地址帧还是数据帧,且一般约定: TB8 = 0 为数据帧,TB81 为地址帧。(5)RB8接收数据位 8D7 D6 D5 D4 D3 D2 D1 D0SM0 SM1 SM2 REN TB8 RB8 TI RI起始位数据位0数据位1数据位奇偶位n - 1起始位停止位停止位帧位时间M a r kS p a c e温度遥测遥控系统的设计与实现- 22 -在方式 2 或方式 3
48、 时,RB8 存放接收到的第 9 位数据,代表着接收数据的某种特征( 与 TB8 的功能类似),故应根据其状态对接收数据进行操作。(6)TI发送中断标志当方式 0 时,发送完第 8 位数据后,该位由硬件置位。在其它方式下,于发送停止位之前,由硬件置位。因此 TI = 1,表示帧发送结束,其状态既可供软件查询使用,也可请求中断。TI 位由软件清“0”。(7) RI接收中断标志当方式 0 时,接收完第 8 位数据后,该位由硬件置位。在其它方式下,当接收到停止位时,该位由硬件置位。因此 RI = 1,表示帧接收结束。其状态既可供软件查询使用,也可以请求中断。RI 位由软件清“0”。根据本次设计的需要
49、我们把 SCON 设置为:MOV SCON,# 01010000B 即允许接受,定时器 1 作为波特率发生器,数据位为 8 位,同时以询问的方式来查询是否发送成功,并打开接收中断。中断允许寄存器 IE表 4-8 IE 数据位Table 4-8 The Bits of IED7 D6 D5 D4 D3 D2 D1 D0EA X X ES ET1 EX1 ET0 EX0其中:ES 为串行中断允许位;当 ES0 时,禁止串行中断;当 ES=1 时,允许串行中断。电源控制寄存器 PCON在 C51 单片机中,该寄存器中除最高位之外,其它位都没有定义。最高位(SMOD)是串行口波特率的倍增位,当 SMOD=1 时,串行口波特率加倍。系统复位时 SMOD=0