毕业设计(论文)-基于单片机的智能饮水机的设计 联系客服

发布时间 : 星期三 文章毕业设计(论文)-基于单片机的智能饮水机的设计更新完毕开始阅读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