图6 DS18B20接线图
2.3 键盘电路的设计
键盘设计可以用独立式键盘或者是矩阵式键盘,各有优缺点。用独立式键盘设计简单,编程简单,但是需要在CPU不断的扫描查询端口状态,这就需要单片机检查键盘是否有按下,另外它占用的IO端口较多,在单片机数据端口较少时,是不易采用此种接法。矩阵式键盘占用的端口较少,但是接线复杂,编程较难,在单片机端口较少时,易采用这种接线方式。CPU查询外设时可以采用中断方式或者扫描方式,中断方式下,CPU利用率高,还能够处理其他的工作,查询方式下,CPU大量的时间都浪费在对端口状态的查询。但是本文的单片机按键较少,占用的端口只有三个,所以用采用独立式键盘设计较好。采用的是查询方式,因为中断方式下编程较难,由于时间能力有限,所以用这种方式。
按键有三个:温度设定键、温度加、温度减
电源用5V供电即可,端口分别与单片机的P1.2\P1.3\P1.4连接
按键电路如图7所示。
图7 按键电路图
2.4 LCD显示电路及报警电路的设计
采用的液晶显示器型号为LCD1602,它能够显示字符、数字等可以显示两行,每行之间有间隔。其管脚有VSS电源地、VCC电源正极、V0对比度(接地时对比度高,接电源时对比度低)、RS寄存器选择、RW读写控制、E使能端、D0-D7数据输入端口[6,7]。
LCD1602中有很多字符,与数码管相比,其有很大的优势,且使用方便,若要显示字符等可以用程序设计达到目的。数据端口分别与单片机的P0.0-P0.7相连接,RS\RW\E分别于单片机的P2.0\P2.1P2.2相连接,由温度传感器输入的数字量经单片机处理,输出到液晶显示器上显示。它显示测量的温度、报警温度、键盘输入的设定温度,按两行显示,如图8所示。
图8 液晶显示模块
图中需要加上拉电阻,用5V电源供电,RP1是排阻。为了使显示清晰,VDD接电源地,这样就能清楚的显示字符和温度。
当测量的水温高于65℃时,单片机会向端口输出一个信号,经放大器放大后能够驱动蜂鸣器报警,(由于仿真时蜂鸣器不响,不容易看出结果变化,所以在蜂鸣器与接地之间加一个黄色的LED灯显示)。此时电加热模块停止工作,温度低于设定值时电加热模块开始加热工作,(由于是弱点控制强电,所以本文采用的是用LED来代替电阻加热信号)。温度在设定到65℃之间时,电加热不工作。报警电路的输入端与单片机的P2.5连接,加热电路与单片机的P2.4相连,电加热用绿色的LED代替。在LED接线时应注意不能接反了,它是有正负之分的。其中加热模块的灯需要加上拉电阻驱动,否则灯不会太亮。报警电路和加热电路如图9所示。
图9 报警电路和加热电路
2.5 系统总体硬件电路图
图10 系统原理图
热水器开始工作时,首先测量水的温度,并且将其结果通过单片机处理后,经LCD显示出来。这时如果有按键按下,设定想要加热的温度时,则就处理键盘输入值,若输入的数值大于测量的温度时,就启动加热,若输入值小于测量时,则不加热。若温度大于65℃时,这时就停止加热,蜂鸣器开始一直响,直到温度在65℃以下,才停止。LCD上显示两行字符,其中第一屏是当前水的实际温度,第二屏是报警温度,第三是设定的温度,并且第二行都显示当前水温。其中设定的温度可以通过三个按键设定(有加减按键,没按一次,加或减1度)。系统总体电路图如图10所示。
3. 系统软件设计
3.1 按键程序设计
图11 按键扫描流程图 AT89S52单片机智能热水器控制系统的设计+源代码+电路图(3):http://www.751com.cn/zidonghua/lunwen_1498.html