豆浆机控制电路工作过程大致是:上电-水位检测-水位合适开始加热-加热5分钟-开始打浆(打15秒,停15秒,共4次)-继续加热10分钟(溢出检测到时暂时停止加热)-完成全部工作。 
 电路见下图,单片机输入有水位检测,溢出检测,输出有电机控制、加热控制、工作指示、报警蜂鸣器控制。工作过程中指示灯闪烁,完成全部工作时常亮,蜂鸣器响。当水位检测失败时为防止干烧,停止加热和打浆,蜂鸣器报警。 
 水位检测和溢出检测的公共端是加热管的外壳,水位检测是温度探头外壳或电机外壳,溢出检测有专用电极。 

 用单片机设计的豆浆机控制电路的程序 
//******************************************************************** 
 //豆浆机控制器,工作过程:加热5分钟,打浆4次,(17秒打、19秒停),继续加热15分钟。 
//在8位单片机P89LPC901上测试通过 
//输入:液位 
//输出:电机、加热器、指示灯、蜂鸣器 
//编写日期:2008.10.04 
 //更新日期:2008.10.05 
 //******************************************************************** 
 #include //单片机头文件 
unsigned char data MOTS; //状态, 
unsigned char data HETS; //状态 
unsigned long data Num1; //计数1 
 unsigned int data Num2; //计数2 
 sbit LED=P0^4; //发光二极管 
sbit BUZ=P0^5; //蜂鸣器 
sbit MOT=P3^0; //搅拌机 
sbit HET=P3^1; //加热器 
sbit HIG=P1^5; //高位 
sbit LOW=P1^2; //低位 
//-------------------------------------------------------------------- 
//io_init:初始化IO子程序 
//-------------------------------------------------------------------- 
void io_init(void) 
 { 
 P0M1=0x00; //P0推挽 
P0M2=0x30; 
 P1M1=0xFF; //P1仅为输入 
P1M2=0x00; 
 P3M1=0x00; //P3推挽 
P3M2=0x03; 
 } 
 //------------------------------------------------------------------- 
 //TIMER_init:初始化定时器 
//------------------------------------------------------------------- 
void TIMER_init(void) 
 { 
 TMOD=0x11; //定时器0和1配置为模式1 
 TAMOD=0x00; 
 // ET0=1; //允许定时器0中断 
TH1=0x6F; //10ms,根据波特率和单片机计算出 
TL1=0xFE; 
 ET1=1; //允许定时器1中断 
// TR1=1; //打开定时器1 
 } 
 //------------------------------------------------------------------ 
 //main:主函数 
//------------------------------------------------------------------ 
void main(void) 
 { 
 MOT=0; 
 HET=0; 
 MOTS=0; 
 HETS=0; 
 BUZ=1; 
 P1=0xFF; 
 io_init(); //端口初始化 
TIMER_init(); 
 EA=1; 
 while(LOW==1); //有水检测,防止干烧 
LED=0; 
 if(HIG) 
 { 
 HETS=1; //水位不超,开始工作,LED闪 
TR1=1; 
 } 
 while(1) //循环检测 
{ 
if(LOW) //水烧干,停止工作,LED常亮 
{ 
HETS=0; 
 MOTS=0; 
 LED=0; 
 TR1=0; 
 BUZ=0; 
 } 
 if(MOTS==1) MOT=1; //到打浆时间,电机工作 
else MOT=0; 
 if(HETS==1 && HIG==1) HET=1; //加热时间,没有溢出就加热,有溢出停 
else HET=0; 
 } 
 } 
 //------------------------------------------------------------------- 
 //Timer1Int:定时中断子程序,用于显示输出及按键延时计时,1ms 
 //------------------------------------------------------------------- 
 void Timer1Int(void) interrupt 3 
 { 
 TH1=0x6F; //10ms,根据波特率和单片机计算出 
TL1=0xFE; 
 Num1++; //超时计数 
Num2++; //超时计数 
if(Num2>50) //闪烁,工作指示 
{ 
LED=!LED; 
 Num2=0; 
 } 
 if((Num1>30000 && Num133600 && Num137200 && Num140800 && Num131800 && Num135400 && Num139000 && Num130100 && Num133700 && Num137300 && Num140900 && Num1 
 if(Num1>90000) 
 { 
 LED=0; //时间到15分钟,全部停止 
HETS=0; 
 TR1=0; 
 BUZ=0; 
 } 
 }