我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的 TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连 接,第15脚和单片机的20脚连接。 串口通讯的硬件电路如图2.16所示。
图 2-17 串口硬件连接
18
2.7 总电路图
图 2-18 总电路
19
3程序设计
3.1总程序
本系统的主要功能是实现对环境内部温度的采集,根据采集温度来调整加热电路工作占空比,使得环境内部温度达到设定的温度值。在温度控制算法上采用的是是PID(比例-积分-微分)算法,它是一种闭环输出控制模型,在后面会具介绍。总程序的主要有几个部分组成,显示程序,键盘扫描程序,温度读取程序,pid计算程序,中断程序。程序框图如下
开始
图 3-1 总程序流程图
初始化 温度采集显示 串口传输 键盘检测 设定温度 PID温度控制 输出 20
3.2 温度设定和显示程序
设定温度的调节用的是同时从矩阵键盘中分离出来3个独立按键分别实现 功能键,增大,减小从矩阵键盘中分离出独立按键,将RD管脚用软件置低,然后依次检测“T0,T1,RD,WR”这时就不需要再做矩阵键盘的检测了,通过判断功能键按下的次数来确定调节设定温度的高低。只要当P3.4-P3.7中任意一管脚的电平检测为低电平,就可以立即判断是哪个键被按下
只有当功能键被检测到按下时,关闭中断,TR0=0然后再根据其他按键实现相应增大或减小的功能。
当检测到温度设定键(SET键)被按下时,单片机关闭所有中断,进入温度设定子程序,把设定的温度显示到数码管上,在当检测到SET键松开时,打开中断,跳出设定子程序,设定结束并返回到实时的温度显示。
数码管是通过位选语段选信号共同控制显示,首先打开U1锁存 P0口送出段选信号,关闭U1锁存,再打开U2锁存 P0口送出数码管1的位选信号,关闭锁存。重复上述步骤可以轮流点亮1-6位数码管。由于显示单个数码管只要2-3ms加上人眼的视觉暂留,是数码管看起来是持续发亮。
增大 PLUS 减小 MINUS 设置 SET
图3-2独立键盘
21
程序流程图
图 3-3键盘输入作流程图
22
开始 初始化 显示实时温度 检测SET按下否 否 关闭中断,显示设定温度 PLUS键按下否 否 是MINUS键按下否 减小设定温度并显示 是 增大设定温度 并显示 否 否 检测SET键松开 是