太原科技大学毕业设计(论文)
初始化1602入口设置显示模式设置光标寄存器移屏寄存器清屏显示位置设置子程序结束 图4.3 LCD1602初始化程序流程图
4.2.3 向LCD1602发送数据程序设计
通过上面的子程序调用,可以向LCD1602内部输入一个8位的地址,之后在调用一个写入数据的子函数,就可以完成在对应地址上写入一个字符。
4.3按键扫描程序设计
考虑到用户在进行按键操作时,按下及松开的瞬间都容易产生抖动现象,造成单次按键操作时按键端口电平多次跳变。采取按下按键延时判断或者中断法都可以克服按键的抖动与窄脉冲的干扰影响,采取硬件措施加以克服需要增加额外的元件,本设计采用软件措施完成去抖动和防干扰处理。[11]本设计采用定时中断扫描的方式进行按键检测,通过单片机的定时中断,每隔10ms扫描一次按键端口状态,按键检测过程中无需一直监视按键端口或执行额外的延时程序,节省了单片机的CPU资源和中断资源。按键扫描程序流程图如图所示。
17
太原科技大学毕业设计(论文)
按键扫描程序入口初始化N按键是否为0Y定时器延时按键是否为0Y返回标志位N子程序结束
图4.4 按键扫描程序流程图
4.4温度控制程序设计
温度传感器的信号传输,使用的是单总线的产生方法,通过芯片手册介绍的时序以及延时间隔,可以完成温度数据的采集。
4.4.1初始化DS18B20
首先要进行DS18B20芯片的初始化,通过芯片的初始化,可以设置本次需要传输温度的精度,以及温度值的转换的速度。下图为芯片的初始化时序图:
图4.5 DS18B20初始化时序图
18
太原科技大学毕业设计(论文)
DS18B20初始化数据线高电平延时500us数据线低电平延时750us数据线高电平N是否返回0Y子程序结束
图4.6 DS18B20初始化流程图
4.4.2读取DS18B20当前温度
硬件电路连接好以后,只需要按照下面过程操作即可读出温度数据。本设计中只对一个DS18B20进行控制。[12]本次选取的温度精度为11位,由于该芯片内部的存储器是八位的,所以需要分两次读取温度的数据。通过温度的一位运算,最终输出准确的温度值。温度转换流程图如图4.7所示。
4.5控制程序策略设计
整个热水气的控制系统主要分为三步来执行单片机内部的程序,首先利用温度传感器来采集外界的温度数值,接着通过单片机的程序判断是否达到温度的临界值,通过判断的结果来执行对热水器的加热装置的控制。这个三个步骤不断重复,使整个系统实现所需的控制目标。
19
太原科技大学毕业设计(论文)
读取温度值入口DS18B20复位跳过ROM匹配启动温度转换延时500us等待温度转换DS18B20复位跳过ROM匹配读取温度数据温度数据处理子程序结束
图4.7 读取DS18B20温度流程图
下面介绍各个按键的功能:
“功能键”用于切换数值项的可调状态。第一次按下定时器变为可调,再次按下温度上限变为可调,再次按下温度下限变为可调。此为一个循环,直至“确认键”按下,保存当前设置,跳出菜单。
“加键”和“减键”用来调整设定的时间和温度。当前状态为可调状态时每按一次“加键”和“减键”,被设置的数据值递增或递减。调整温度值时以1℃为调整单位,调整时
20
太原科技大学毕业设计(论文)
间时以1分钟为调整单位。
“确定键”用于推出当前的可调状态,保存当前设定数值并运行程序。
4.6本章小结
本章根据电路原理图进行软件设计,对各个子程序进行了相关的原理分析。其中,详细的介绍了控制策略程序、液晶显示屏LCD1602操作程序和读取DS18B20温度值程序。这样整个系统的设计部分就完成了。
21