程序设计全自动豆浆机课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计名称:程序设计
题目:全自动豆浆机的设计
学期:2013-2014学年第二学期
专业:
班级:
姓名:
学号:
指导教师:
辽宁工程技术大学
课程设计成绩评定表
课程设计任务书
一、设计题目
全自动豆浆机的设计
二、设计任务
设计单片机控制下的全自动豆浆机,详细介绍其硬件和软件设计,并对各个功能模块做详细介绍。
三、设计计划
本设计共1周。
第1天:针对选题查资料,确定设计方案;
第2天:方案分析比较,电路原理设计,进行元器件及参数选择;
选用芯片参考:电源、稳压器、变压器。
第3天:编写主程序流程图和软件程序;
第4天:利用Multisim或PROTUES电路仿真,画电路原理图;
第5天:编写整理设计报告。
四、设计要求
1、绘制软件流程图并利用汇编语言编写软件程序;
2、绘制系统硬件原理图;
3、形成设计报告。
指导教师:
教研室主任:
2014年5月26 日
摘要
本设计是基于单片机AT89C51的全自动豆浆机控制器。在保持豆浆机原有打浆、文火加热等功能基础上还能实现以下功能:加热及磨浆, 水位检测及沸腾溢出检测, 报警, 主
动消泡等。通过控制器使加热和制浆同时进行,将现有的时间缩短一半。加热和磨浆也是分步进行的,也省去了一部分时间。通过各个子程序与主程序的相互联系,实现了豆浆机的各个功能。
关键字:省时;AT89C51;主动消泡
目录
1全自动豆浆机的功能分析 (1)
2控制系统的软件功能分析 (1)
2.1主程序框图 (2)
2.2 矩阵式键盘实现的模式选择框图 (3)
2.3 加热粉碎完成报警及液位控制模块框图 (4)
2.4 液位溢出或者过低报警框图 (4)
2.5显示程序框图 (5)
2.6定时程序框图 (6)
3全自动豆浆机控制系统主要程序 (7)
结论 (13)
参考文献 (14)
1全自动豆浆机的功能分析
豆浆机的控制系统以单片机AT89C51为控制核心,结合控制传感器,加热及磨浆电路,水位检测及沸腾溢出电路,报警电路,主动消泡装置的控制,达到只要启动豆浆机以后,所有的控制过程都实现完全自动化的目的。第一步为初始化程序,第二步为水位检测程序,
第三步为水加热程序,第四步为粉碎程序,第五步为烧煮豆浆程序,第六步为报警程序。
图1
2控制系统的软件功能分析
软件上就是对单片机的编程了,在编程前需要画出一个流程图,根据豆浆机控制系统的设计要求及目的,即插上电源按下按钮后,先对豆浆机进行水位检测,符合要求后加热管开始对水进行加热,这时加热管是以1500w的功率对水加热的。当水温达到80℃左右,启动磨浆电机开始磨浆,磨浆电机不间断的打浆,磨浆的同时对豆浆这时加热管改为750w 的功率工作。当豆浆研磨完毕时电动机停止运转,加热管改为400w的功率对豆浆进行加热。最后阶段使用350W对豆浆加热,由于加热的缘故会豆浆上溢,当豆浆沫接触到防溢电极时,暂停磨浆,启动主动消泡装置,进行消泡。这样直到豆浆加工完成,间歇30秒后发出声音信号。实际工作中,打浆的时候会有少量的豆浆溅到防溢电极上,这时就需要一个延时子程序对其进行延时使得豆浆机不会产生误操作。按照上述对高效省时的豆浆机控制系统的要求,完成豆浆机控制系统设计的流程图后,对单片机进行软件的编程来配合硬件的设计以至于完成整个豆浆机控制系统的设计。
2.1主程序框图
图2 2.2 矩阵式键盘实现的模式选择框图
图3
2.3 加热粉碎完成报警及液位控制模块框图
图4
2.4液位溢出或者过低报警框图
图5 2.5显示程序框图
图6 2.6定时程序框图
图7
3 全自动豆浆机控制系统主要程序void delay(uint z) //延时子函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//main:主函数
void main(void)
{ io_init(); //端口初始化
SP=0x5F;
MOT=0;
HET=0;
MOTS=0;
HETS=0;
P1=0xFF;
TIMER_init();
flag=0;
flag_buz=0;
EA=1;
while(LOW==1)BUZ=0; //有水检测,防止干烧while(KEY==1); //判键
delay(10);
while(KEY==1);
if(HIG)
{HETS=1; //水位不超,开始工作
LEDS=1;
TR1=1;
}
while(1) //循环检测
{ if(LOW) //水烧干,停止工作,LED灭{
HETS=0;
MOTS=0;
LEDS=0;
TR1=0;
BUZS=1;
}
if(MOTS==1) MOT=0; //到打浆时间,电机工作else MOT=1;
if(HETS==1) HET=0;
else HET=1;
if(LEDS==1) LED=0;
else LED=1;
if(BUZS==1) BUZ=0;
else BUZ=1;
if(flag_buz)
{
for(i=0;i<10;i++)
{
delay(1500);
BUZ=!BUZ;
}
}
//-------------------------------------------------------------------
//Timer1Int:定时中断子程序,用于显示输出及按键延时计时,1ms //-------------------------------------------------------------------
void Timer1Int(void) interrupt 3
{
TH1=0x3C; //定时1s
TL1=0xB0;
Num1++; //超时计数
if(Num1<=1800)
{
if(HIG==0)
delay(1000);
if(HIG==0)
{
HETS=0; //加热3分钟内碰防溢电极停止工作
MOTS=0;
TR1=0;
BUZ=0;
}
else
{HETS=1; //1500W 加热3分钟
MOTS=0;
}