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