基于89C51的全自动洗衣机控制系统 程序Word文档格式.docx
《基于89C51的全自动洗衣机控制系统 程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于89C51的全自动洗衣机控制系统 程序Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
#defineT_PiaoXi_110//4min*60s
#defineT_PiaoXi_210//2min*60s
#defineT_TuoShui10//2min*60s
/**********************电机控制宏定义********************/
#defineZHENGZHUAN0
#defineSTOP1
#defineFANZHUAN2
#defineZhengZhuan();
PIN_Motor_A=0;
PIN_Motor_B=1;
#defineStop();
PIN_Motor_A=1;
#defineFanZhuan();
PIN_Motor_A=1;
PIN_Motor_B=0;
/*******************暂停、继续控制宏定义*****************/
#defineZanTing();
ET0=0;
ET1=0;
Stop();
#defineJiXu();
ET0=1;
ET1=1;
/*************************管脚定义***********************/
//都是低有效,因LED是灌电流,而PNP也是低电平时导通
sbitLED_BiaoZhun=P1^0;
//标准程序显示灯
sbitLED_JingJi=P1^1;
//经济程序显示灯
sbitLED_DanDu=P1^2;
//单独程序显示灯
sbitLED_PaiShui=P1^3;
//排水程序显示灯
sbitLED_QiangXi=P1^4;
//强洗状态灯
sbitLED_RuoXi=P1^5;
//弱洗状态灯
sbitLED_XiDi=P1^6;
//洗涤状态灯
sbitLED_PiaoXi=P1^7;
//漂洗状态灯
sbitLED_TuoShui=P2^0;
//脱水状态灯
sbitPIN_BaoJing=P2^1;
//报警喇叭
sbitPIN_JinShui=P2^2;
//进水控制
sbitPIN_PaiShui=P2^3;
//排谁控制
sbitPIN_Motor_A=P2^4;
//电机脚A
sbitPIN_Motor_B=P2^5;
//电机脚B
sbitK_SEL_ChengXu=P3^0;
//选择程序键
sbitK_SEL_QiangRuo=P3^1;
//选择强弱键
sbitp32=P3^2;
//
sbitp33=P3^3;
sbitSW_ShuiWei=P3^6;
//水位开关
sbitSW_AnQuan=P3^7;
//安全开关
/************************函数申明***********************/
voidProgramme_PaiShui(void);
/*************************数据定义***********************/
ucharflag_SEL_ChengXu;
//默认为标准程序,
bitflag_SEl_QiangRuo;
//默认为强洗,1为弱洗
bitflag_Run;
//运行标志,1为运行
//bitflag_ZanTing;
//暂停标志,1为暂停
bitflag_JinShui;
//进水标志,1为进水
bitflag_PaiShui;
//排水标志,1为排水
bitflag_XiDi;
//置洗涤标志
bitflag_PiaoXi;
//置漂洗标志
bitflag_TuoShui;
//脱水标志
bitflag_BaoJing;
//报警标志
uchar_50ms;
//每50ms加一次的变量
uints;
//秒
uintT_S;
//定时总时间
ucharT_Motor;
//电机控制时间
/*************************延时程序*********************/
voidDelay_10ms(uintT1)
{uintt1,t2;
for(t1=0;
t1<
T1;
t1++)
for(t2=0;
t2<
1250;
t2++);
//10ms
}
/**********************管脚初始化程序******************/
voidPin_Init(void)
{LED_BiaoZhun=0;
//默认为标准程序,灯亮
LED_JingJi=1;
//经济程序显示灯,灭
LED_DanDu=1;
//单独程序显示灯,灭
LED_PaiShui=1;
//排水程序显示灯,灭
LED_QiangXi=0;
//默认为强洗状态,灯亮
LED_RuoXi=1;
//弱洗状态灯,灭
LED_XiDi=1;
//洗涤状态灯,运行后灯亮
LED_PiaoXi=1;
//漂洗状态灯,运行后灯亮
LED_TuoShui=1;
//脱水状态灯,运行后灯亮
PIN_BaoJing=1;
//报警喇叭,不叫
PIN_JinShui=1;
//进水控制,关
PIN_PaiShui=1;
//排谁控制,关
PIN_Motor_A=1;
//电机脚A,不走
PIN_Motor_B=1;
//电机脚B,不走
/********************中断初始化程序********************/
voidExInt_Init(void)
{IT0=1;
EX0=1;
IT1=1;
EX1=1;
/*******************定时器0初始化程序******************/
voidTimer0_Init(void)//其中没ET0是为以后控制暂停用的
{TMOD=TMOD|0X01;
//定时方式1
TH0=0X3C;
//50ms
TL0=0XB0;
TR0=1;
_50ms=0;
s=0;
/*******************定时器1初始化程序******************/
voidTimer1_Init(void)//其中没ET1是为以后控制暂停用的
{TMOD=TMOD|0X10;
TH1=0X3C;
TL1=0XB0;
/********************电机初始化程序********************/
voidT_Motor_Ctl(uchart1,uchart2,uchart3)
{if(!
flag_SEl_QiangRuo)//强洗
T_Motor=t1;
if(flag_SEl_QiangRuo)//弱洗
T_Motor=t2;
if(flag_TuoShui)//脱水
T_Motor=t3;
voidMotor_Init(void)
{ZhengZhuan();
T_Motor_Ctl(4,3,5);
/**********************解除报警************************/
voidNo_BaoJing(void)
{flag_BaoJing=0;
//置报警标志
PIN_BaoJing=1;
//报警喇叭
//进水、排水已没时间限制了
/**************外部中断0程序为运行或者暂停*************/
voidint0(void)interrupt0
{
if(!
p32)
{Delay_10ms
(1);
//延时10ms左右,去抖动
if(!
{if(!
flag_Run)
flag_Run=1;
//置运行标志
elseif(flag_BaoJing)
No_BaoJing();
else
{staticbitflag_ZanTing;
flag_ZanTing=~flag_ZanTing;
if(flag_ZanTing)
ZanTing();
if(!
flag_ZanTing)//这里用else,编译出错。
?
JiXu();
}//endelse
}//endif(!
p32)2
}//endif(!
p32)1
/**********************报警程序************************/
voidBaoJing(void)
{flag_BaoJing=1;
PIN_BaoJing=0;
TR0=0;
/*******************时间到处理程序*********************/
voidOk_Timer(void)
{s=0;