307 基于单片机自动饮料混合机控制系统设计【毕设课设】

系统工作描述:
1.整个系统由一个12V的电源供电(无需设计电源,只是提醒您Vcc是12V),(因为蠕动泵-直流电机的额定电压是12V),需要一个“调压模块”将12V转换成5V为额定电压是5V的电子元件供电。 2.需要有一个“开机按键”,可以是2脚/4脚的轻触按键,或者摆臂开关等。
3.按下“开机按键”后,液晶显示屏(LCD)显示语句“Good day, please press any key to start”。

4.按下薄膜键盘上的任意一个按键后,液晶显示屏(LCD)显示语句“A. Menu B.DIY”。以下是可能发生的2种情况:

若此时按下薄膜键盘上的“A”按键,液晶显示屏(LCD)显示语句“A.Apple Soda B.Lemon Soda”。

若此时按下薄膜键盘上的“B”按键,液晶显示屏(LCD)显示语句“Please type the ratio (in order of apple juice: lemon juice: soda)”。

5.(接事件4.中“按下薄膜键盘的A按键”)以下是可能发生的2种情况:

若此时按下薄膜键盘上的“A”按键,液晶显示屏(LCD)显示语句“Your apple soda is coming soon...”; 1号泵以额定电压12V工作13秒,3号泵以额定电压12V工作13秒。(两个泵最好能同时开始工作)

若此时按下薄膜键盘上的“B”按键,液晶显示屏(LCD)显示语句“Your lemon soda is coming soon...”; 2号泵以额定电压12V工作6.5秒,3号泵以额定电压12V工作19.5秒。(两个泵最好能同时开始工作)

6.(接事件4.中“按下薄膜键盘的B按键”)

此时若按下薄膜键盘上“0”-“9”中任意一个数字,液晶显示屏(LCD)显示语句“X:”,其中X是刚才按下的数字。

(接事件6.中按过一次键盘)此时若按下薄膜键盘上“0”-“9”中任意一个数字,液晶显示屏(LCD)显示语句“X:Y:”,其中X是第一次按下的数字,Y是刚才按下的数字。若刚刚按下的数字使得X+Y>10,则液晶显示屏(LCD)仍然显示语句“X:”。

(接事件6.中按过两次键盘)此时若按下薄膜键盘上“0”-“9”中任意一个数字,液晶显示屏(LCD)显示语句“X:Y:Z”,其中X是第一次按下的数字,Y是第二次按下的数字,Z是第三次按下的数字。若刚刚按下的数字使得X+Y+Z>10,则液晶显示屏(LCD)仍然显示语句“X:Y:”。

(接事件6.中按过三次键盘)此时若按下薄膜键盘上的“*“按键,做以下两件事情:第一,1号泵以额定电压12V工作秒,2号泵以额定电压12V工作秒,3号泵以额定电压12V工作秒(三个泵最好能同时开始工作)其中X是第一次按下的数字,Y是第二次按下的数字,Z是第三次按下的数字。第二,液晶显示屏(LCD)显示语句“Your drink is coming soon...”。

7.(接事件6中泵开始工作后)当三个泵都停止工作后,液晶显示屏(LCD)显示语句“Awesome! Your drink is ready!” ,该语句持续5秒后,液晶显示屏(LCD)显示语句“Thank you!”,该语句持续5秒后,该系统“重置”(回到刚开机的样子),即液晶显示屏(LCD)显示语句“Good day, please press any key to start.”,然后系统依照步骤4-7工作。

8.在开机状态下,若再次按下“开机按键”,该系统关闭/关机。

物料清单:
*芯片:stc89c52。数量:1
*蠕动泵-直流电机:额定电压12V,最高流速460毫升/分钟。可以简单地理解为一个直流电机,有正负两极,由直流电机驱动芯片控制。数量:3 直流   *电机驱动芯片:L293D。数量:2
*液晶显示(LCD):HD44780。数量:1

*4*4 薄膜键盘:HC543。数量:1

*薄膜电阻、电容:任意数值。数量:若干

完整版 电路图和程序代码 下载地址

https://pan.baidu.com/s/1VNF8dNVbhYRFVaBYAWz1aw?pwd=8888

部分代码展示

#include "lcd1602.h"
#include "key.h"
#include "timer.h"

#define A 1

#define Menu 1
#define DIY 2

u8 key_value,MenuClass=1,Menu_DIY,x,y,z,temp;
bit preS = 0,bSelect;
void main()
{
	P2 &= ~0x07;//初始状态,3个电机都停

	LCD1602_Init();
	LCD1602_ShowString(0,0,"    Good day");Delay1000ms();
	LCD1602_ShowString(0,0,"please press any");
	LCD1602_ShowString(0,1,"key to start");
	
//	LCD1602_ShowIntNum(8,0,te_Alarm_Val);	
//	LCD1602_ShowIntNum(12,0,AD_Alarm_Val);	
//	LCD1602_ShowChar(15,0,'t');
	while(1)
	{
		key_value=key_read();
		if(preS)
		{
			if(key_value)
			{			
				switch(key_value)
				{
					case 1://D
						break;
					
					case 2://C
						break;
					
					case 3://B
						if(MenuClass == 1)//一级菜单,就是第一次选择
						{
							LCD1602_ShowString(0,0,"Please type the ");
							LCD1602_ShowString(0,1,"ratio:  A:L:S   ");
							Menu_DIY = DIY;//选择DIY
							MenuClass = 2;//一级菜单操作完毕,之后的操作为二级菜单
						}
						else
						{
							if((MenuClass == 2) && (Menu_DIY == Menu))//如果一级菜单选择Menu,再次按B(lemon soda)
							{
									LCD1602_ShowString(0,0,"Your lemon soda ");
									LCD1602_ShowString(0,1,"is coming soon..");
									timer_Init();
									P2 |= 0x06;//2,3电机转
									while(timer0_counter < 130);//定时器单次定时时间为50ms,130次为6.5s,
																						 //使用while语句,在操作完成之前,其他操作无效(即soda做完之前,任何操作都无效)
									P2 &= ~0x02;///2电机停
									while(timer0_counter < 390);//定时器单次定时时间为50ms,390次为19.5s,
									P2 &= ~0x04;///3电机停
									LCD1602_ShowString(0,0,"Awesome! Your   ");
									LCD1602_ShowString(0,1,"drink is ready! ");
									Delay5000ms();
									LCD1602_ShowString(0,0,"   Thank you!   ");
									LCD1602_ShowString(0,1,"                ");
									Delay5000ms();
									LCD1602_ShowString(0,0,"please press any");
									LCD1602_ShowString(0,1,"key to start    ");
									MenuClass = 1;preS = 0;Menu_DIY = 0;
							}
						}
						break;
					
					case 4://A
						if(MenuClass == 1)//一级菜单,就是第一次选择
						{
							LCD1602_ShowString(0,0,"A.Apple Soda    ");
							LCD1602_ShowString(0,1,"B.Lemon Soda    ");
							Menu_DIY = Menu;//选择Menu
							MenuClass = 2;一级菜单操作完毕,之后的操作为二级菜单

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值