发布时间 : 星期三 文章毕业设计(论文)-基于单片机的智能饮水机的设计更新完毕开始阅读17509bbc168884868662d60a
河南理工大学万方科技学院本科毕业论文
3 智能饮水机的软件设计
3.1 系统分配方式
在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件更为重要。
在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、标度变换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以控制其工作。
为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。所谓“模块”,实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。
模块程序设计法的主要优点是:
(1)单个模块比起一个完整的程序易编写及调试;
(2)模块可以共存,一个模块可以被多个任务在不同条件下调用; (3)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。
本系统软件采用模块化结构,由主程序、温度检测程序、显示子程序、延时程序和其他相关程序等组成。
3.2 主程序设计
程序的初始化主要包括三个环节:
(1)实现各种设置堆栈指针、定时器/计数器0初始化、以及开中断、定时器/计数器启动;
(2)实现LED显示当前水温并能显示预设的水温;
25
河南理工大学万方科技学院本科毕业论文
(3)不断的进行按键扫描,判断是否有按键按下,如没有按键按下,则返回显示;如有按键按下,则根据所按键实现相应的操作。
人机对话功能键设置如下:
(1)“出水”键:控制其出水和停止出水; (2)“加热”键:控制其加热和停止加热; (3)“锁定”键:用于锁定其他所有按键;
(4)“切换”键:用于将显示器切换至温度设定界面并开始设定温度;
(5)“设置温度”键:以5℃为间隔在0℃至100℃之间以递增方式设定水温。
主程序如下:
void main() {
T=100; while(1) {
Lock_key(); if(Lock==0) keyscan(); if(flag2==0) temp_display(); if(flag2==1)
SEG_display(T,0);
if(temp>=T*10) {Temp_led=0;Hot=1;Hot_led=1;} if(temp< T*10) Temp_led=1;
if(temp>=1000){Beep=0;Hot=1;Hot_led=1;} if(temp<1000) Beep=1; } }
26
河南理工大学万方科技学院本科毕业论文
主程序程序框图如图3-1所示: 图3-1 主程序框图 按键扫描,判断是否有键按下 N Y 按“出水”键,电机转动 按“加热”键,加热 按“锁定”键,其他键无效 按“切换”键,切换至调温 按“设置温度”键,进行温度设置 延时 Y Y 显示 变量定义 芯片初始化 开始 按键扫描,判断是否有键按下 N 27
河南理工大学万方科技学院本科毕业论文
3.3 各模块程序设计
3.3.1 温度检测程序设计
温度检测运用DS18B20芯片,因为其功能全面且精度高,完全可以满足设计要求,它将检测到的水温送给单片机,再由单片机输出给显示电路将实时水温显示出来。其程序流程图如下:
开始 DS18B20初始化 读一个字节 写一个字节 读取温度 显示温度
图3-2 温度检测程序流程图
其程序段如下:
void init_ds18b20() {
uchar x=0;
DQ = 1; //DQ复位 delay_us(10); //稍做延时 DQ = 0; //单片机将DQ拉低 delay_us(100); //精确延时 大于 480us
28