本次设计选用DS18B20温度传感器作为温度采集元件。DS18B20是由美国DALLAS公司生产的单线数字温度传感器芯片。与传统的热敏电阻有所不同,DS18B20可直接将被测温度转化为串行数字信号,以供单片机处理,它还具有微型化、低功率、高性能、抗干扰能力强等优点。通过编程,DS18B20可以实现9~12位的温度读数。信息经过单线接口送入DS18B20或从DS18B20送出,因此从微处理器到DS18B20仅需连接一条信号线和地线。读、写和执行温度变换所需的电源可以由数据线本身提供,而不需要外部电源。 DS18B20可用引脚只有三个,引脚功能和接线方法随芯片采用的供电方式不同而不同。DS18B20有两种供电方式,寄生电源模式和外部电源模式。工作于寄生电源模式时, VDD和GND 都与地相接, DS18B20 从数据线上供电。当总线为高电平时,DS18B20从总线上供电,同时内部电容充电, 当总线变为低电平时, 电容电为DS18B20供电。DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。 1. 芯片内部结构
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码。ROM的作用是使每一个DS18B20都各不相同,这样就实现一根总线上挂接多个DS18B20的目的[9]。 2. DS18B20与单片机接口电路,DQ为温度传感器的数据输入/输出端,接到单片机的P2.0口。GND 接地,VCC接电源。 3.2.2时钟单元
DS1302是DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿功能,工作电压为2.5~5.5V。DS1302采用三线接口,与CPU进行同步通信,并可采用突发方式一次传送多个字节的时间数据或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM存储器。 1. 芯片引脚说明:
如图3-7,为DS1302的引脚排列图,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302
11
由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端[10]。
图3-7 DS1302 引脚
2. DS1302与单片机的接口电路
脚RST是复位端,接到89C52的P2.4引脚。GND引脚接地,VCC接电源。SCLK是串行时钟输入端,接到89C52的P2.5引脚。I/O是数据输入/输出端,接到单片机P2.3口,X1、X2是32.768MHz晶振输入/输出端。
3.3 控制单元
本次设计开关量控制环节选用了9012三极管和固态继电器实现了弱电对强电的控制。如图3-8。
9012PNP型三极管应用广泛,在收音机等常用家电中可以经常看见它的身影。9012三极管在此作为开关量环节,起到了放大电流的作用,与固态继电器结合,从而实现了开关的作用。
此次选用的固态继电器是百特公司的产品,该型号的固态继电器是直流输入控制,交流过零导通,过零关断输出型无触点继电器。它常用与控制电路的导通和断开,是控制一般家用电器,如电动机、白炽灯的首选器件。
12
VCCDC+13AC+t加热电阻DC-24AC-9012图3-8 开关量控制环节
3.4 原理图的绘制设计
EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
此次原理图的设计主要包括键盘显示器电路设计、看门狗,温度采集电路设计。 绘制原理图步骤:
①新建原理图,设定图纸为A4。 ②放置元器件,合理调整它们的位置。 ③绘制各个元器件之间的连线。 ④进行ERC电检查。
⑤把各个元件依次编号和封装。 ⑥生成网络表。 ⑦进行原理图打印。
13
4 软件设计
硬件与软件是单片机应用开发系统的两个重要组成部分,本设计为了充分体现装置的智能化以及减小硬件电路的体积,软件部分设计的重要性就显得尤为突出了,所以软件设计工作在整个设计中是非常重要的、其工作量也是比较大的。
在拟订软件总体设计方案时,由于实际单片机控制系统的功能复杂、信息量大和程序较长,这就需要选择合理的切合实际的程序结构设计方法。常用的设计方法有三种:1、模块化的程序设计;2、自顶向下逐步求精程序设计;3、结构化程序设计。在本设计中采用第一种方法,及模块化程序设计,它的设计思路是把一个复杂应用程序整体功能规划成若干相对独立的程序模块,各模块可以单独设计、编程、调试,然后把功能相关的模块通过连接程序连在一起调试,最后各模块在主程序控制下进行总体调试,最终成为可完成设计要求,具有使用价值的程序[11]。
4.1 主程序设计
程序设计采用模块化设计,控制时序采用时间触发的时间片轮询调度法,1s为一个控制周期,分为20个时间片,每个时间片为50ms,将所有的任务分配在各时间片完成,主程序仅完成初始化,然后进入休眠状态。
50ms定时采用89C52内部定时器0,工作在方式1,由于晶振为12MHz,1个机器周期为1微秒,所以T1预装初始值=65536-50000=15536=3CB0H。X5045看门狗定时器周期设置为200ms,写入状态寄存器常数STATUS_REG=20H
[12]
。
4.1.1 主程序和中断程序流程图
主程序主要完成系统的初始化功能流程图如图4-1(a)所示,其中包括内部变量清零、看门狗定时器初始化、键盘/显示芯片初始化、时钟芯片初始化,完成初始化功能后,系统进入休眠状态,可减少功耗和提高抗干扰能力,由各种中断唤醒,执行完中断服务程序后,重新进入休眠状态,系统的各任务在T0中断服务程序中执行,中断服务程序流程图如图4-1(b)所示。
14
中断唤LOOP 休眠 HD7279初始化 X5045初始化 启动 中断服务程序定时器常数重装 SYS_CLK+ 1→SYS_CLK 内部变量及定时器初始化 N SYS_CLK=10? Y 采样 键处理模块 DS18B20初始化 显示模块 DS1302初始化 看门狗定时器“喂狗” 中断服务程序返回 4-1(b)中断服务程序流4-1(a)主程序流图 4.1.2 变量和常量说明
相关的主要变量和常量分配,采用的地址分配如下表4.1~4.3所示:
表4.1 片内RAM主要变量分配伪指令表
符号 SET_STA SYS_C LK DR0-DR7 LEFT 伪指令 DATA DATA DATA DATA DATA 地址或常量 30H 32H 32H 40H-47H 33H 15
意 义 表示测量状态指针,每按键一次加“1”,切换要显示的参数值 表示系统时钟,其取值范围是 0-19,完成时间片分配 LED显示单元缓冲区 左移键闪烁位置的标志