基于单片机的洗衣机控制电路设计毕业设计论文 下载本文

南昌大学共青学院毕业设计(论文) 附录A 源程序

LED_XiDi = 1; LED_PiaoXi = 1; LED_TuoShui = 1; PIN_BaoJing = 1; PIN_JinShui = 1; PIN_PaiShui = 1; PIN_Motor_A = 1; PIN_Motor_B = 1; }

/********************中断初始化程序********************/ void ExInt_Init(void) { IT0 = 1; EX0 = 1; IT1 = 1; EX1 = 1; }

/*******************定时器0初始化程序******************/ void Timer0_Init(void) { TMOD = TMOD | 0X01; TH0 = 0X3C; TL0 = 0XB0; TR0 = 1; _50ms = 0; s = 0; }

/*******************定时器1初始化程序******************/ void Timer1_Init(void) { TMOD = TMOD | 0X10; TH1 = 0X3C; TL1 = 0XB0; }

/********************电机初始化程序********************/ void T_Motor_Ctl(uchar t1,uchar t2,uchar t3) { if(!flag_SEl_QiangRuo) T_Motor = t1;

if(flag_SEl_QiangRuo) T_Motor = t2; if(flag_TuoShui) T_Motor = t3; }

/********************电机初始化程序********************/ void Motor_Init(void) { ZhengZhuan();

T_Motor_Ctl(4,3,5);

35

南昌大学共青学院毕业设计(论文) 附录A 源程序

}

/**********************解除报警************************/ void No_BaoJing(void) { flag_BaoJing= 0; PIN_BaoJing = 1; TR1 = 0; }

/*******外部中断0程序为运行、解除报警或者暂停***********/ void int0(void) interrupt 0 {

if(!p32)

{ Delay_10ms(1); if(!p32)

{ if(!flag_Run)

flag_Run = 1; else if(flag_BaoJing) No_BaoJing(); else if(flag_Ok)

{ static bit flag_ZanTing;

flag_ZanTing = ~flag_ZanTing; if(flag_ZanTing) {ZanTing();}

else {JiXu();} } } } }

/**********************报警程序************************/ void BaoJing(void)

{ flag_BaoJing= 1; TR0 = 0; TR1 = 1; }

/*******************时间到处理程序*********************/ void Ok_Timer(void) { s = 0;

if(flag_JinShui || flag_PaiShui) { BaoJing(); } else

{ flag_XiDi = 0; flag_PiaoXi = 0; flag_TuoShui= 0;

36

南昌大学共青学院毕业设计(论文) 附录A 源程序

Stop(); } }

/********************电机控制程序**********************/ void Motor(void)

{ static uchar s_Motor; s_Motor++;

if(s_Motor==T_Motor) { static uchar Motors; s_Motor = 0; Motors++;

if(Motors==3) Motors = 0; switch(Motors)

{ case ZHENGZHUAN : ZhengZhuan();

T_Motor_Ctl(4,3,5); break; case STOP : Stop();

T_Motor_Ctl(1,1,2); break;

case FANZHUAN : FanZhuan();

T_Motor_Ctl(4,3,5); break; default : break; } } }

/*******************定时器0中断程序********************/ void Timer0(void) interrupt 1 {

TR0 = 0; TH0 = 0X3C; TL0 = 0XB0; TR0 = 1; _50ms++;

if(_50ms == 20) { _50ms = 0; s++;

if(s == T_S) Ok_Timer(); if(flag_XiDi || flag_PiaoXi || flag_TuoShui) Motor(); } }

37

南昌大学共青学院毕业设计(论文) 附录A 源程序

/**********外部中断1程序为水位到或者盖开处理***********/ void int1(void) interrupt 2 { if(!p33)

{ Delay_10ms(1); if(!p33) { } } }

/************定时器1中断程序作为闪烁及报警**************/ void Timer1(void) interrupt 3 { static uchar _50ms; TR1 = 0; TH1 = 0X3C; TL1 = 0XB0; TR1 = 1; _50ms++;

if(_50ms == 14) { _50ms = 0;

if(flag_XiDi) LED_XiDi = ~LED_XiDi; if(flag_PiaoXi) LED_PiaoXi = ~LED_PiaoXi; if(flag_TuoShui) LED_TuoShui = ~LED_TuoShui; if(flag_BaoJing)

PIN_BaoJing = ~PIN_BaoJing; } }

/**********************程序选择程序********************/ void SEL_ChengXU(void)

{ if(!K_SEL_ChengXu) { Delay_10ms(1); if(!K_SEL_ChengXu)

{ while(!K_SEL_ChengXu); flag_SEL_ChengXu++; if(flag_SEL_ChengXu==5) flag_SEL_ChengXu = 0; switch(flag_SEL_ChengXu)

{ case BIAOZHUN : LED_BiaoZhun= 0; LED_JingJi = 1; LED_DanDu = 1;

LED_PaiShui = 1;

38