分享

用单片机设计的豆浆机控制电路原理图 _ 工控PLC博客_工控人家园_电工论坛_电工学习网_防爆电气_...

 都市小电工 2016-05-13

豆浆机控制电路工作过程大致是:上电-水位检测-水位合适开始加热-加热5分钟-开始打浆(打15秒,停15秒,共4次)-继续加热10分钟(溢出检测到时暂时停止加热)-完成全部工作。

电路见下图,单片机输入有水位检测,溢出检测,输出有电机控制、加热控制、工作指示、报警蜂鸣器控制。工作过程中指示灯闪烁,完成全部工作时常亮,蜂鸣器响。当水位检测失败时为防止干烧,停止加热和打浆,蜂鸣器报警。

水位检测和溢出检测的公共端是加热管的外壳,水位检测是温度探头外壳或电机外壳,溢出检测有专用电极。

1

用单片机设计的豆浆机控制电路的程序

//********************************************************************

//豆浆机控制器,工作过程:加热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;

}

}

来源: 工控PLC博客_工控人家园_电工论坛_电工学习网_防爆电气_煤矿用电器论坛 (www.) (微信/QQ:503660666) 欢迎分享本文,转载请保留出处!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多