#include<reg52.h>
void delay_s(unsigned int t);
void delay_ms(unsigned int t);
void UART_Init(void);
void Speech(unsigned char*text,unsigned char length);
void init_lcd(void);
void ch_disp_any(unsigned char line,unsigned char row,unsigned char num,unsigned char chn);
#define led P0
sbit g=P1^0;
sbit z=P1^1;
sbit d=P1^2;
sbit chengxv=P1^3;
sbit shuiwei=P1^4;
sbit qiting=P1^5;
sbit jinshui=P1^6;
sbit chushui=P1^7;
sbit forward=P2^0;
sbit backward=P2^1;
sbit xidi=P2^2;
sbit piaoxo=P2^3;
sbit tuoshui=P2^4;
sbit gai=P2^5;
unsigned char water,mode;
void JS()
{
ch_disp_any(2,6,4,"進水");
jinshui=0;
switch(water)
{
case 0:while(g||z||d);break;
case 1:while(z||d);break;
case 2:while(d);break;
default:break;
}
delay_ms(2);jinshui=1;
}
void BZ()
{
ch_disp_any(3,6,8,"正在進行");
xidi=0;
JS();
ch_disp_any(2,6,4,"整轉");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反轉");backward=1;delay_s(4);backward=0;delay_ms(500);
ch_disp_any(2,6,4,"整轉");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反轉");backward=1;delay_s(4);backward=0;
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
xidi=1;
piaoxi=0;
ch_disp_any(2,6,4,"整轉");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反轉");backward=1;delay_s(4);backward=0;delay_ms(500);
ch_disp_any(2,6,4,"整轉");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反轉");backward=1;delay_s(4);backward=0;
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
piaoxi=1;
tuoshui=0;
ch_disp_any(2,6,4,"整轉");forward=1;delay_s(4);forward=0;
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
tuoshui=1;
}
void JJ()
{
ch_disp_any(3,6,8,"正在進行");
xidi=0;
JS();
ch_disp_any(2,6,4,"整轉");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反轉");backward=1;delay_s(4);backward=0;delay_ms(500);
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
xidi=1;
piaoxi=0;
ch_disp_any(2,6,4,"整轉");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反轉");backward=1;delay_s(4);backward=0;delay_ms(500);
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
piaoxi=1;
tuoshui=0;
ch_disp_any(2,6,4,"整轉");forward=1;delay_s(4);forward=0;
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
tuoshui=1;
}
void DX()
{
ch_disp_any(3,6,8,"正在進行");
xidi=0;
JS();
ch_disp_any(2,6,4,"整轉");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反轉");backward=1;delay_s(4);backward=0;delay_ms(500);
ch_disp_any(2,6,4,"整轉");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反轉");backward=1;delay_s(4);backward=0;
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
xidi=1;
piaoxi=0;
ch_disp_any(2,6,4,"整轉");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反轉");backward=1;delay_s(4);backward=0;delay_ms(500);
ch_disp_any(2,6,4,"整轉");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反轉");backward=1;delay_s(4);backward=0;
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
piaoxi=1;
tuoshui=0;
ch_disp_any(2,6,4,"整轉");forward=1;delay_s(4);forward=0;
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
tuoshui=1;
}
void PS()
{
tuoshui=0;
ch_disp_any(2,6,4,"整轉");forward=1;delay_s(4);forward=0;
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
tuoshui=1;
}
void main()
{
UART_Init();
init_lcd();
forward=0;
backward=0;
led=0xee;
ch_disp_any(1,1,16,"洗衣方式:標準 ");
ch_disp_any(2,1,16,"洗衣狀態: ");
ch_disp_any(3,1,16,"運行狀態: ");
while(1)
{
while(chengxv&&shuiwei&&qiting);
delay_ms(50);
if(chengxv==0)
{
mode++;
if(mode>3) mode=0;
if(mode==0) {ch_disp_any(1,6,4,"標準");led=(led|0x0f)&0xfe;}
if(mode==1) {ch_disp_any(1,6,4,"經濟");led=(led|0x0f)&0xfd;}
if(mode==2) {ch_disp_any(1,6,4,"單洗");led=(led|0x0f)&0xfb;}
if(mode==3) {ch_disp_any(1,6,4,"排水");led=(led|0x0f)&0xf7;}
}
if(shuiwei==0)
{
water++;
if(water==3) water=0;
if(water==0) led=(led|0xf0)&0xef;
if(water==1) led=(led|0xf0)&0xdf;
if(water==2) led=(led|0xf0)&0xbf;
}
if(qiting==0)
{
if(gai==0)
{
ch_disp_any(4,1,10,"請關機蓋!");
Speech("請關機蓋",8);
while(gai==1);
}
ch_disp_any(4,1,16," ");
switch(mode)
{
case 0:BZ();break;
case 1:JJ();break;
case 2:DX();break;
case 3:PS();break;
default:break;
}
ch_disp_any(3,6,4,"停止");
}
}
}
|