1、摘 要随着计算机技术的发展,单片机技术已成为计算机技术中的一个独特的分支,单片机的应用领域也越来越广泛,特别是在工业控制和仪器仪表智能化中扮演着极其重要的角色。过去经常采用模拟电路、数字电路实现的电路系统,现在相当大一部分可以用单片机予以实现,传统的电路设计方法已演变成软件和硬件相结合的设计方法。在实际应用中,单片机经常要与各种传感器相结合组成一定的应用系统,以实现系统的自动检测与控制。本文所设计的智能饮水机就是单片机结合传感器的一个简单应用。该系统设计综合单片机以及电子技术理论,从生活实际出发,完善了饮水机的功能。设计方案中,主要采用数字温度传感器DS18B20组成测温系统作为检测单元,并运
2、用了AT89C52作为主机单元、 X5045EEPROM作为存储单元、HD7279芯片来管理键盘和显示器。整个设计系统实现三个功能,即加热、对温度上下限的控制和定时加热。与传统的饮水机相比,由于采用了自动检测和控制的电子设计技术,可较好地实现对水温的测量和控制,具有较广泛的应用前景。关键词: 温度采集,89C52,X5045,HD7279.目录摘 要IABSTRACTII第1章 绪 论11.1引言11.2 研究的目的与意义11.3 本次设计的工作2第2章 总体设计32.1 设计任务32.2系统结构设计32.2.1电路原理和器件选择32.2.2系统框图及说明4第3章 硬件设计63.1 主板设计6
3、3.1.1主机单元63.1.2 存储单元73.1.3 人机接口单元93.2 副板设计143.2.1 温度采集单元143.2.2时钟单元153.3 控制单元173.4 原理图的绘制设计17第4章 软件设计194.1 主程序设计194.1.1 主程序和中断程序流程图194.1.2 变量和常量说明204.2 人机接口单元软件设计224.2.1 键处理程序流程图及说明224.2.2变量和常量说明234.2.3 各按键功能及其子程序说明244.3 DS1302的软件设计244.4 DS18B20的软件设计25第5章 系统的调试和问题总结285.1 系统硬件调试285.2 系统软件调试28结束语30致 谢
4、31参考文献32附录一 系统原理图33附录二 系统PCB图35附录三 元件列表36第1章 绪 论1.1引言信息技术快速发展的今天,单片机技术的贡献是不可缺少的。生产中使用的智能仪表、分布式控制系统总线、智能家电和智能办公设备都可以见到单片机的身影。日常生活中使用的电子产品如MP3、手机、智能洗衣机、智能饮水机等都是以单片机为核心的。本文所设计的多功能饮水机就是单片机结合传感器的一个简单应用。1.2 研究的目的与意义单片机在电子产品中的应用已经越来越广泛, 在很多电子产品中也用到了温度检测和温度控制。目前广泛使用的饮水机,具有价格低廉,制造简便等优点。但是随着用户长时间使用,这些饮水机功能单一、
5、能耗较大、长时间饮用饮水机的水对健康不利等缺点逐渐暴露出来。传统的饮水机的局限性一般体现在以下几个方面:第一,功能相对简单。只有简单的温度控制,而且用户还不能自己根据自己的喜好设定温控参数。第二,能耗较大。在没有人使用的时候饮水机也处在开机状态无疑会造成能源的大量浪费,在能源紧缺的今天这个方面亟待解决。第三, 长期饮用饮水机里的水会对健康不利。由于广泛使用的饮水机烧水不能完全沸腾,长期饮用这种水会对身体造成较大的伤害。本此设计的基于AT89C52的多功能饮水机, 采用DS18B20实现温度采集,经过HD7279管理的LED显示, 读数直观、准确。并且程序存储器E2PROM采用了, 可以很容易的
6、实现软件升级, 从软件方面提高仪器精度。同时可以对加热实现基本的控制,从而防止了“千滚水”对身体造成的伤害,满足生活的需求2。1.3 本次设计的工作 (1)查阅大量的国内外有关多功能饮水机方面的文献资料,剖析了一些饮水机的实际产品,并吸取同类产品的优点。 (2)根据饮水机的发展趋势和现有的设计条件,提出了多功能饮水机的整体设计方案和技术要求。 (3)完成了系统硬件部分选型、设计和制作,并进行了调试。 第2章 总体设计2.1 设计任务1设计题目:多功能饮水机2仪表功能:1) 对温度上下限的控制;2) 定时开机、定时关机;3) 对实时温度进行采集并在LED数码管上进行显示;3仪表操作:用户可以根据
7、自己的喜好来设计不同温度上下限。上电以后系统将自动运行,显示的是当前水温,按一次设定按键,可实现显示温度控制的上限值,再按增建或减键配合左移键可以修改这个值,最后按一下确认键将新修改的值保存。温度下限、定时开机时间、定时关机时间的修改和温度上限相似,设定键用来切换设定参数,温度上下限,开机时间、关机时间,以及时钟时间。用增建、减键加上左移键可以完成对这些参数的修改3。2.2系统结构设计2.2.1电路原理和器件选择主机单元由AT89C52单片机和相关的存储器组成,是仪表的核心。关键部分期间名称及其在电路中的主要功能如下:(1)AT89C52:完成监控系统数据采集过程、采集方式和报警过程的控制。是
8、整个系统的核心处理器,单片机首先把通过传感器测到的现场温度与预先设置的温度进行比较,如果大于或小于预先设置值,就输出信号去控制加热器的工作,从而实现温度控制。(2)X5045:看门狗定时器防止系统死机,保证程序正常运行;内部EEPROM有掉电数据存储功能,用于保存各采集通道的报警上限。(3)HD7279:管理键盘和LED显示器,实现人机交互。(4)DS18B20:单线数字温度传感器,可直接将被测温度转化为串行数字信号,以供单片机处理。(5)DS1302:是一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿功能,工作电压为2.55.5V。AT
9、89C52看门狗时钟芯片电源温度检测加热控制HD7279键盘显示2.2.2系统框图及说明: 图2.1 系统框图(1)电源部分电源给系统各芯片提供工作电压。本次设计主要给各个芯片提供+5V电压。(2)温度检测部分本次设计采用DS18B20采集温度。(3)加热控制部分加热控制部分由9012三极管、固态继电器、加热电阻组成。实现对水的加热和温度控制。(4)键盘显示部分将DS18B20的温度信号和DS1302时钟信号以某种方式显示出来。显示仪表中常用LED数码管显示测量数据。本次设计用数码管显示实时温度值、温度控制上限值、温度控制上限值,时间、开始时间和关机时间,每个参数显示采用8个LED。同时为了更
10、好的实现系统的功能,还要设计5个按键:设定键、增建、减键、左移键、确定键,使饮水机具有基本的人机交互功能。本次设计选用HD7279与微处理器接口,可有效实现对按键和LED数码管的管理。(5)看门狗部分该部分实现采用X5045芯片,防止系统死机,保证程序正常运行。另外,X5045有EEPROM保存温度控制的上下限4。第3章 硬件设计本次设计设计的多功能饮水机,采用DS18B20实现温度的实时采集,DS1302时钟芯片来调整时间。采用AT89C52单片机作为系统微控制器,实现与DS1302、DS18B20的控制及对数据的处理显示。采用HD7279管理键盘和显示器,采用X5045实现掉电保护重要参数
11、功能,看门狗功能,防止系统死机。在硬件电路设计中主要使用了DS18B20温度传感器,DS1302时钟芯片,单片机AT89C52,键盘和显示器管理芯片HD7279,X5045等。另外,开关量控制环节选用了9012三级管和固态继电器实现了弱电对强电的控制。3.1 主板设计 AT89C52、HD7279、X5045和振荡电路组成了主机单元,是仪表的核心部分。利用X5045EEPROM存储测量值上下限和开机、关机时间,并且具有看门狗定时器功能,来进行数据采集等过程的设置和控制,振荡电路在单片机内部产生脉冲信号,C1 、C2为30pf,晶振振荡频率为12MHz.3.1.1主机单元AT89C52单片机是A
12、TMEL公司20实际90年代初期推出的增强型单片机,它完全兼容标准型的AT89C51,并在AT89C51的基础上增加了128B的片内RAM,4KBFlash存储器,T2定时器等功能。1) 外部引脚及功能: AT89C52与AT89C51的引脚一样,也有PDIP,PICC,TQFP等多种封装形式。.如图3.1,引脚的区别是由于增加了定时器2而引起的。有区别的只有P1.0,P1.1两个引脚,这两个引脚在不使用定时器2时仍可作为静态I/O接口使用,在单片机使用定时器2时,P1.0,P1.1还可能承担着外部记数脉冲输入,外部触发信号输入,可编程方波输出等功能 5 。 2) 内部增强功能单元 : AT8
13、9C52的内部功能完全兼容AT89C51的功能,而且在AT89C51的基础上增加了128B的片内RAM,4KBFlash存储器,T2定时器等功能。关于新增加的4KBFlash存储器,只是AT89C52片内ROM地址分配变成为0000H-1FFFH,其使用方法与AT89C51的一样。图3.1 AT89C52 引脚配置3.1.2 存储单元X5045是单片机系统电路的一个辅助芯片,它将复位,电压检测,看门狗定时器和块锁保护的串行EEPROM功能集合成一个芯片内;采用SPI串行外设接口方式,降低了系统成本并减少了对电路板空间的要求,提高了系统的可靠性。1. X5045的功能介绍(1)上电复位当器件通电
14、并超过VCC压时,X5045内部的复位电路将会提供一个约为200ms的复位脉冲让微处理器能够正常复位。(2)看门狗定时器看门狗定时器对微处理器提供了一个因外界干扰而引起程序陷入死循环或“跑飞”状态保护的功能。X5045内部的一个控制寄存器中有两位可编程位决定了定时周期的长短。当系统出现故障时,在设定的时间内如果没有对X5045进行访问,看门狗定时器以RESET信号作为输出响应,即变为高电平,延时约200ms以后RESET由高电平变为低电平。/CS的下降沿复位看门狗定时器。(3)低电压检测工作过程中X5045监测电源电压下降并电源电压跌落到VCC压以下时,会产生一个复位脉冲,复位脉冲保持有效直到
15、电源电压降1V以下。如果电源电压在降落到门限电压后上升,则在电源电压超过门限电压后延时约200ms,复位信号消失,使得微处理器可以继续工作6。(4)串行EEPROM存储器X5045的存储器部分是具有Xicor公司的锁保护CMOS 4KB串行E2PROM。它被组织8位的结构,由一个四线构成的SPI总线方式进行操作,一次最多可写16B。2X5045的引脚与定义:1) SO 串行数据输出端。数据在SCK的下降沿输出到SO上。2) SI 串行数据输入端。所有操作命令、字节地址及写入的数据在此引脚上输入,SI线上输入的数据在SCK的上升沿被锁存。3) SCK 串行时钟输入端,控制数据的输入和输出。 图3
16、.2 X5045的引脚图4) /CS芯片选择输入端(片选)。当CS/为低电平时,X25045能工作。CS/的电平变化将复位看门狗定时器5) VCC 电源电压。6) /WP写保护输入端,当WP/为低电平时,对芯片的写操作被禁止,其他功能仍正常。WP/为高电平时,写操作允许,其他功能仍然正常。7) /RESET 复位输入端,漏极开路输出方式,高电平有效。用于电源检测和看门狗超时输出。8) GND 电源地。3X5045与单片机的接口电路本次设计如图3.3所示,89C52的P1.0、P1.1、P1.2、P1.3脚分别与X5045的片选端1脚(/CS)、串行输入2脚(SO)、串行时钟6脚(SCK)和串行
17、输出5脚(SI)相连,二者的RESET引脚相连。P1.0作为芯片选择输入端(片选)负责X25045是否选通,当89C52访问X25045时将/CS置低电平。/CS信号一般不通过P2口选通,因为P2口工作于地址总线时,其输出是脉冲方式,呈现高电平,不能保证片选持续有效,也就不能对其进行任何操作。在这里不使用/WP信号,直接接+5V。5045与单片机引脚连接和相关地址的分配如下/CS:片选端,低电平有效,与P1.0相连;CLK:串行时钟输入端,与P1.2相连;SO:串行数据输出端,与P1.1相连;SI:串行数据输入端,与P1.3相连;RESET:复位端,与单片机的复位引脚RESET相连。图3.3
18、X5045与单片机的接口电路3.1.3 人机接口单元HD7279是管理键盘和LED显示器的专用智能控制芯片,该芯片采用串行接口方式,可同时驱动8位共阴极LED数码管或者64位独立LED发光二极管,同时能对多达88的键盘矩阵进行监视,具有自动消除键抖动并识别按键代码的功能。从而可以提高CPU的工作效率,同时其串行接口方式又可以简化CPU接口电路的设计。1. HD7279的主要特点: (1)与CPU间采用串行接口方式,仅占用4根端口线; (2)内部含有译码器,可直接接收BCD码或16进制码,同时具有两种译码器方式,实现LED数码管位寻址和段寻址,消隐和闪烁性等多种控制指令,编程灵活; (3)循环左
19、移和循环右移指令; (4)内部含有驱动器,无需外围元件可直接驱动LED; (5)具有极联功能,可方便的实现多于8位显示或多于64键的键盘接口;(6)具有自动消除抖动并识别按键键值的功能。2 . HD7279的引脚说明 HD7279为28引脚标准双列直插式封装(DIP),单一的+5V供电,其引脚排列如图3.4所示。DIG0-DIG7分别为8个LED数码管的位驱动输出端。SA-SG分别为LED数码管的A-G的输出端。DP为小数点的驱动输出端。HD7279与微处理器仅需4条接口线,其中非CS为片选信号(低电平有效)。RC引脚用于连接HD7279的外接振荡元件,其典型值为R=1.5千欧,,C=15pF
20、。非RESET为复位端。该端由低电平变成高电平并且保持25ms即复位结束。通常,该端接+5V即可7。 图3.4 HD7279的引脚 表3.1 HD7279引脚说明引脚名称说明1,2VDD正电源(+5V)3,5NC悬空4VSS接地6CS片选信号,低电平有效7CLK同步时钟输入端8DATA串行数据输入输出端9KEY按键有效输出端10-16SG-SALED的g-a段驱动输出17DP小数点驱动输出端18-25DIG0-DIG7LED位驱动输出端26CLKO震荡输出端27RCRC震荡器连接端28RESET复位端,低电平有效3. AT89C52与HD7279接口本次设计采用5按键和8个LED显示,所用的是
21、HD7279串行接口8位LED数码管及64键盘智能控制芯片。HD7279与微处理器仅需4条接口线。在设计中将/CS接P1.4,CLK接P1.5,DATA接P1.6,/KEY接P1.7,当P1.4清零时,选中HD7279,可对其作相应的操作。如图3.5所示,89C52的P1.4、P1.5、P1.6、P1.7分别与HD7279A的6脚(/CS)、7脚(CLOCK)、8脚(DATA)和9脚(/KEY)相连。P1.4作为片选线,负责HD7279A是否选通,是8位准双向I/O口,可带4个LSTTL负载。当89C52访问HD7279A(写入指令、显示数据、位地址、段地址或读出键值)时,将/CS置低电平。D
22、ATA为串行数据,当89C52向HD7279A发送数据时,DATA为输入端;当89C52从HD7279A读入数据时,DATA为输出端。CLK为数据串行传送的同步时钟输入端,时钟的上升沿将数据写入HD7279A或从HD7279A中读出数据。KEY为按键信号输出端,在无键按下时为高电平,有键按下时为低电平,并一直保持到按键释放为止。 图3.5 AT89C52与HD7279A接口电路7279与单片机引脚连接和相关地址的分配如下/CS:片选端,低电平有效,与P1.4相连CLK:串行时钟输入端,与P1.5相连DATA:串行数据输出/输入端,与P1.6相连KEY:按键有效信息端,与P1.7相连实际应用电路
23、中(具体见附录主板原理图),8只下拉电阻和8只位选电阻应遵从一定的比例关系,下拉电阻应大于位选电阻的5倍而小于其50倍,典型值为10倍。在本次设计中,我选用了100K的下拉电阻,10K的位选电阻。100K/10K=10 满足比例关系在不影响显示的前提下,下拉电阻应尽可能地取较小的值,这样可以提高键盘部分的抗干扰能力8。4. HD7279与键盘接口利用HD7279的10脚作为行线,18脚22脚作为列线组成5键的键盘,完成对键盘的译码和键值分别为20H、18H、10H、08H、00H。根据键值就可以确定是哪个键按下,具体见图3.6。5 HD7279与LED数码管接口HD7279A是的串行控制芯片,
24、能同时驱动8位共阴极LED数码管,在这里我们只用到了8位共阴极LED数码管。HD7279A是动态循环显示方式。HD7279A的10脚-17脚分别与8位LED数码管的g、f、e、d、c、b、a、dp段相连,18脚-25脚为LED数码管的位驱动输出端,负责LED每一位的亮与灭,如图3.6所示。图3.6 HD7279与LED、键盘接口电路3.2 副板设计本次副版设计选用DS18B20数字式温度传感器作为温度采集元件、DS1302时钟芯片副版的核心单元。同时选用9012PNP型三极管和固态继电器作为开关量环节实现弱电对强电的控制。3.2.1 温度采集单元本次设计选用DS18B20温度传感器作为温度采集
25、元件。DS18B20是由美国DALLAS公司生产的单线数字温度传感器芯片。与传统的热敏电阻有所不同,DS18B20可直接将被测温度转化为串行数字信号,以供单片机处理,它还具有微型化、低功率、高性能、抗干扰能力强等优点。通过编程,DS18B20可以实现912位的温度读数。信息经过单线接口送入DS18B20或从DS18B20送出,因此从微处理器到DS18B20仅需连接一条信号线和地线。读、写和执行温度变换所需的电源可以由数据线本身提供,而不需要外部电源。 DS18B20可用引脚只有三个,如图3.7所示。引脚功能和接线方法随芯片采用的供电方式不同而不同。DS18B20有两种供电方式,寄生电源模式和外
26、部电源模式。工作于寄生电源模式时, VDD和GND 都与地相接, DS18B20 从数据线上供电。当总线为高电平时,DS18B20从总线上供电,同时内部电容充电, 当总线变为低电平时, 电容放电为DS18B20供电。DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。 图3.7 DS18B20引脚 1. 芯片内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始
27、8位是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的9。2. DS18B20与单片机接口电路如图3.8,DQ为温度传感器的数据输入/输出端,接到单片机的P2.0口。GND 接地,VCC接电源。图3.8DS18B20与单片机接口电路3.2.2 时钟单元DS1302是DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿功能,工作电压为2.55.5V。DS1302采用三线接口
28、,与CPU进行同步通信,并可采用突发方式一次传送多个字节的时间数据或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM存储器。1. 芯片引脚说明:如图3.8,为DS1302的引脚排列图,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能
29、:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端10。 图3.8 DS1302 引脚2. DS1302与单片机的接口电路 如图3.9,脚RST是复位端,接到89C52的P2.4引脚。GND引脚接地,VCC接电
30、源。SCLK是串行时钟输入端,接到89C52的P2.5引脚。I/O是数据输入/输出端,接到单片机的P2.3口,X1、X2是32.768MHz晶振输入输出端。图3.9 DS1302与单片机的接口电路3.3 控制单元本次设计开关量控制环节选用了9012三极管和固态继电器实现了弱电对强电的控制。如图3.10。9012PNP型三极管应用广泛,在收音机等常用家电中可以经常看见它的身影。9012三极管在此作为开关量环节,起到了放大电流的作用,与固态继电器结合,从而实现了开关的作用。此次选用的固态继电器是百特公司的产品,该型号的固态继电器是直流输入控制,交流过零导通,过零关断输出型无触点继电器。它常用与控制
31、电路的导通和断开,是控制一般家用电器,如电动机、加热器、白炽灯的首选器件。图3.10开关量控制环节3.4 原理图的绘制设计 EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。此次原理图的设计主要包括键盘显示器电路设计、看门狗,温度采集电路设计。原理图及其PCB图见附录。(1)绘制原理图步骤: 新建原理图,设定图纸为A4。放置元器件,合理调整它们的位置。绘制各个元器件之间的连线。 进行ERC电检查。把各个元件依次编号和封装。生成网络表。进行原理图打印。(2)生成PCB图 根据
32、已经绘制好的原理图生成的网络表设计PCB电路板,并要认真填写元件的封装形式和尺寸大小。制作电路板步骤:确认网络表的封装形式和尺寸无误。在KeepOut层画出电路板边界。装入元件库。装入网络表。手工对元件进行布局。进行自动布线。手工调整布线。第4章 软件设计硬件与软件是单片机应用开发系统的两个重要组成部分,本设计为了充分体现装置的智能化以及减小硬件电路的体积,软件部分设计的重要性就显得尤为突出了,所以软件设计工作在整个设计中是非常重要的、其工作量也是比较大的。在拟订软件总体设计方案时,由于实际单片机控制系统的功能复杂、信息量大和程序较长,这就需要选择合理的切合实际的程序结构设计方法。常用的设计方
33、法有三种:1、模块化的程序设计;2、自顶向下逐步求精程序设计;3、结构化程序设计。在本设计中采用第一种方法,及模块化程序设计,它的设计思路是把一个复杂应用程序整体功能规划成若干相对独立的程序模块,各模块可以单独设计、编程、调试,然后把功能相关的模块通过连接程序连在一起调试,最后各模块在主程序控制下进行总体调试,最终成为可完成设计要求,具有使用价值的程序11。4.1 主程序设计程序设计采用模块化设计,控制时序采用时间触发的时间片轮询调度法,1s为一个控制周期,分为20个时间片,每个时间片为50ms,将所有的任务分配在各时间片完成,主程序仅完成初始化,然后进入休眠状态。50ms定时采用89C52内
34、部定时器0,工作在方式1,由于晶振为12MHz,1个机器周期为1微秒,所以T1预装初始值=65536-50000=15536=3CB0H。X5045看门狗定时器周期设置为200ms,写入状态寄存器常数STATUS_REG=20H12。 4.1.1 主程序和中断程序流程图主程序主要完成系统的初始化功能流程图如图4.1(a)所示,其中包括内部变量清零、看门狗定时器初始化、键盘/显示芯片初始化、时钟芯片初始化,完成初始化功能后,系统进入休眠状态,可减少功耗和提高抗干扰能力,由各种中断唤醒,执行完中断服务程序后,重新进入休眠状态,系统的各任务在T0中断服务程序中执行,中断服务程序流程图如图4.1(b)
35、所示。4.1.2 变量和常量说明相关的主要变量和常量分配,一边安排在主程序开始时采用伪指令方式说明,本系统采用的地址分配如下表4-14-3所示:启动内部变量及定时器初始化X5045初始化HD7279初始化休眠LOOP中断唤醒中断服务程序入口定时器常数重装SYS_CLK+1SYS_CLKSYS_CLK=10?采样键处理模块显示模块看门狗定时器“喂狗”中断服务程序返回NY(b)中断服务程序流程图DS18B20初始化DS1302初始化(a)主程序流程图表表4-1 片内RAM主要变量分配伪指令表符号伪指令地址或常量意 义SET_STADATA30H表示测量状态指针,每按键一次加“1”,切换要显示的参数
36、值SYS_CLKDATA32H表示系统时钟,其取值范围是0-19,完成时间片分配DR0-DR7DATA40H-47HLED显示单元缓冲区LEFTDATA33H左移键闪烁位置的标志KB_FIGBIT10H表示该建是否处理过KB_FIG=1的标志位,KB_FIG=1,表示该键已处理过;KB_FIG=0,表示该键未处理过,保证按键一次响应一次表4-2 X5045主要变量分配伪指令表符号伪指令地址或常量意 义CSBITP1.0CS代表89C52的P1.0,即硬件连接SCKBITP1.2SCK代表89C52的P1.2,即硬件连接SIBITP1.3SI代表89C52的P1.3,即硬件连接SOBITP1.1
37、SO代表89C52的P1.1,即硬件连接WRENEQU06H用WREN代表允许写操作指令06HWRDIEQU04H用WRDI代表允许写操作指令04HRDSREQU05H用RDSR代表允许写操作指令05HWRSREQU01H用WRSR代表允许写操作指令01HREADEQU03H用READ代表允许写操作指令03H表4-3 DS18B20主要变量分配伪指令表符号伪指令地址或常量意 义DQBITP2.0DQ代表89C52的P2.0,接的是18B20的数据线TEM_HDATA55H温度的高八位存储单元TEM_LDATA56H温度的低八位存储单元TEM_NUM DATA DATA57H温度的整数部分存储单
38、元FLAG BIT63HDS18B20存在的标志位4.2 人机接口单元软件设计4.2.1 键处理程序流程图及说明键盘查询程序设计分配在每个时间片内完成一次,间隔50ms,通过设置按键标志位,保证按一次键响应一次13。键处理任务模块程序流程图如图4.2所示,在每个时间片内调度一次,由于查询按键的间隔位50ms,超过了键抖动持续时间(小于20ms),故无需编制按键防抖动设计。程序框图说明:首先判断有无键按下,有键按下时,KEY-OK标志位置0;无键按下时,KEY_OK标志位置1。判断键有无处理过,处理过则返回,未处理过,则KEY-FIG位置0,且读出键值,根据键值的不同调用相应的子程序,从而保证每
39、个按键只处理了一次。KEY模块KEY_OK=1?NKB_FIG=1?N读键值(KEY_IN)【设定】【】【】【】【确定】KB_FIG=1返回KB_FIG=0YY图4.2 键处理程序流程图4.2.2 变量和常量说明 键盘显示芯片HD7279与AT89C52连接相关的主要变量如上表4.1所示,地址分配采用伪指令方式说明如表4.4所示: 表4.4 HD7279地址分配伪指令表符号伪指令地址或常量意 义CS_7279BITP1.4CS_7279代表89C52的P1.4,即硬件相连CLKBITP1.5CLK代表89C52的P1.5,即硬件相连DATABITP1.6DATA代表89C52的P1.6,即硬件
40、相连KEY_7279BITP1.7KEY_7279代表89C52的P1.7,即硬件相连4.2.3 各按键功能及其子程序说明本系统有五个按键功能如表4.5所述。表4.5 按键功能及键码表按键功能键码意 义设定设置参数键20H每按下一次,就显示一个设定参数值增建增加18H每按一下,设定参数加一减键减少10H每按一下,设定参数减一左移左移08H每按一下,LEFT加一确认确认键00H每次修改完参数后,按下此键,即可将修改后的参数存入内存中保存起来。 4.3 DS1302的软件设计采用DS1302作为记录测控系统中的数据记录,其软硬件设计简单,时间记录准确,既避免了连续记录的大工作量,又避免了定时记录的
41、盲目性,给连续长时间的测量、控制系统的正常运行及检查都来了很大的方便,可广泛应用于长时间连续的测控系统中14。图4.3为DS1302流程图。系统开始运行初始化DS1302设置正常数据范围进行测控程序显示出异常数据是否有异常数据NY图 4.3 DS1302流程图4.4 DS18B20的软件设计DS18B20 单线通信功能是分时完成的,他有严格的时隙概念,如果出现序列混乱, 1-WIRE 器件将不响应主机,因此读写时序很重要。系统对 DS18B20 的各种操作必须按协议进行。根据 DS18B20 的协议规定,微控制器控制 DS18B20 完成温度的转换必须经过以下 4 个步骤 :(1)每次读写前对
42、 DS18B20 进行复位初始化。复位要求主 CPU 将数据线下拉 500ms ,然后释放, DS18B20 收到信号后等待 16ms60ms 左右,然后发出 60ms240ms 的存在低脉冲,主 CPU 收到此信号后表示复位成功。15(2)发送一条 ROM 指令,如下表所示:DS18B20 的 ROM 指令集指令名称指令代码指令功能读 ROM33H读 DS18B20ROM 中的编码(即读 64 位地址)ROM 匹配(符合 ROM )55H发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与编码相对应 DS18B20 使之作出响应,为下一步对该 DS18B20 的读写作准备搜索 R
43、OM0F0H用于确定挂接在同一总线上 DS18B20 的个数和识别 64 位 ROM 地址,为操作各器件作好准备跳过 ROM0CCH忽略 64 位 ROM 地址,直接向 DS18B20 发温度变换命令,适用于单片机工作警报搜索 0ECH该指令执行后,只有温度超过设定值上限或下限的片子才做出响应(3)发送存储器指令,如下表所示:DS18B20 的存储器指令集指令名称指令代码指令功能温度变换44H启动 DS18B20 进行温度转换,转换时间最长为 500ms (典型为 200ms ),结果存入内部 9 字节 RAM 中 读暂存器0BEH 读内部 RAM 中 9 字节的内容写暂存器4EH发出向内部 RAM 的第 3 , 4 字节写上,下限温度数据命令,紧跟该命令之后,是传送两字节的数据 复制暂存器48H将 RAM 中第 3 , 4 字节的内容复制到 EEPROM 中重调 EEPROM0B8HEEPROM 中的内容恢复到 RAM 中的第 3 , 4 字节读供电方式0B4H 读 DS18B20 的供电模式,寄生供电时 DS18B20 发送“ 0