基于AT89S52单片机的温度控制系统
引 言
在激光倍频晶体温度匹配中,有时需要很高的工作温度。晶体升温过程中,温度过快变化会导致晶体出现破裂,因此在开机过程中需要操作人员不断手动控制激光器晶体的温度。为了避免这样繁锁的工作,我们以单片机AT89S52为核心制作了一套自动控制升降温系统,有效的保证了晶体温度在安全的速率下变化。由于热敏电阻的非线性关系,一般的控温仪正常控温范围有限。在对热敏电阻和恒流源的特性进行分析后,将恒流源做了适当的改进,扩展了控温仪的控制范围,使其在较宽的温度范围内也具有较高的精度。
1 硬件系统设计
控制系统电路的核心器件是Atmel公司生产的AT89S52单片机。它是一种低功耗、低电压、高性能的8位单片机,片内带有一个8KB的flash可编程、可擦除、只读存储器;它采用的工艺是Atmel公司的高密度非易失存储器技术,而且其输出引脚和指令系统都与MCS-51兼容。价格低廉、性能可靠、抗干扰能力强。因此广泛应用于工业控制和嵌入式系统中。
图1为该系统的结构框图,为了节省成本和体积,我们采用多路选择开关CD4051和模数转换器AD7705协同工作组成多路数据采集系统。
CD4051是NS公司生产的数控模拟开关,可控制最大输入范围约为士15V左右的模拟电压,由输入的3位地址码决定八个通道中哪一个通道开通;选通通道具有非常低的输入阻抗,约为80Ω,关闭的通道具有很低的漏电流,每一路约为10pA左右,处于工作状态时功耗大约为1μW,是一款性能十分优良的数控模拟开关。AD7705是一款16位串行模数转换芯片,功耗非常低,在3V供电电压和1MHz的主频下,消耗功率小于1mW,供电电流小于8μA,转换精度高,可达±0.003%,无误码。MAX541是由美信公司生产的串行输入数模转换器件,无需校准,功耗不超过l.5mW。AT24C02是Atmel公司生产的EEPROM器件,存储容量256字节,可擦写次数达100万次,主要用来存储设定温度。PCF8574由Philips公司生产,它可将I2C串行输入的数据转换为8路并行输出,用于器件的I/O口扩展。本系统中,将其8位输出口直接连接在LCD12864的8位数据输入口中。LCD12864是点阵型液晶,驱动方便,经编码后显示内容多样化。系统的输入模块采用中断扫描的4×4矩阵键盘,相比定时扫描方式,提高了MCU的使用效率。
2 系统流程图
图2为系统的流程图,上电后先对系统进行初始化,然后进入while(1)循环语句,此循环体中包含两个while语句,分别为while(state)和while(!state)。程序根据位变量state的值选择进入温度设定状态还是系统运行状态。在初始化的过程中将state的值设为1,因此刚开机系统进入运行状态。运行状态下,系统不断通过CD4051和AD7705联合采集热敏电阻两端的电压值,然后与设定电压值对比,并通过MAX541定时输出自动升温电压值,让系统严格地在规定时间内升到指定温度。在循环的过程中还需要不断地判断bit变量kd的值,此变量为全局变量,由键盘中断程序置1,同时键盘中断程序还返回按键扫描值key,该值用来确定按下哪一个键。显然从流程图中可以看出,当kd为0时,程序跳过按键程序模块,当kd为1时程序先判断key值,然后运行相对应的按键功能程序。我们将某一键设为状态切换键,当按下此键时执行程序state=!state,这样就实现了状态的切换。在进入设定状态后,MAX541的输出停止改变。同时光标不断闪烁,提示使用者输入温度设定值。光标闪烁程序和MAX541定时改变输出值的程序都是采用定时器中断来实现的。因为两种功能处于不同的状态,同时为了避免中断过多造成系统不稳定,通过利用state变量的值和if语句,有效地将两种功能用一个定时器来实现。进入定时中断程序后,当state值为1时,即系统处于运行状态时,执行定时改变MAX541输出值的功能。当state的值为0时,即系统处于设定状态时,执行光标闪烁的功能。
相关文章
- 2022-01-06基于us/OS-Ⅱ操作系统的断路器控制器研制
- 2021-11-01基于CC2430的无线传感器网络节点设计
- 2024-01-21电容式微加速度计的闭环检测技术研究
- 2022-03-06调度自动化系统容灾备份策略揭示
- 2022-09-27振子框架式微机械陀螺的有限元模拟
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。