|
全自動(dòng)洗衣機(jī)
單片機(jī)源程序如下:
- #include <reg51.h> /*地址頭文件*/
- #include <absacc.h> /*絕對地址訪問頭文件*/
- #include <math.h> /*數(shù)學(xué)庫函數(shù)*/
- #include <intrins.h> /*內(nèi)部函數(shù)庫*/
- #define IN0 XBYTE[0x2030] /* 0809通道0地址 */
- #define w_c_add XBYTE[0x2070] /* lcd寫命令字地址 */
- #define w_d_add XBYTE[0x2071] /* lcd寫數(shù)據(jù)地址 */
- #define r_s_add XBYTE[0x2072] /* lcd讀狀態(tài)字地址 */
- #define r_d_add XBYTE[0x2073] /* lcd讀數(shù)據(jù)地址 */
- #define c8279 XBYTE [0x2021] /* 8279命令/狀態(tài)口的地址 */
- #define d8279 XBYTE [0x2020] /* 8279數(shù)據(jù)口地址 */
- unsigned char water_level;/*水位*/
- unsigned char wash_power;/*洗滌強(qiáng)度*/
- unsigned char wash_power1;
- unsigned char piao_time;/*漂洗次數(shù)*/
- unsigned char m;
-
- unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
- 0x77,0x7c,0x39,0x5e,0x79,0x71}; /* 字型表 */
- unsigned char code TAB1[8] = {0x10,0x30,0x20,0x60,0x40,0xC0,0x80,0x90};//電機(jī)正轉(zhuǎn)
- unsigned char code TAB2[8] = {0x90,0x80,0xC0,0x40,0x60,0x20,0x30,0x10};//電機(jī)反轉(zhuǎn)
- unsigned char bdata status; /* 可位尋址片內(nèi)數(shù)據(jù)存儲(chǔ)器,允許位與字節(jié)混合訪問 */
- sbit busy=status^7; /*“忙”線的第7位*/
- sbit clflag=ACC^7; /*8279查詢位*/
- unsigned char key;
- unsigned char keyflag=0;
- unsigned char Min;
- unsigned char Sec;
- unsigned char TimeEnd=0;
- unsigned char ZTime;
- sbit Speaker=P3^6; /*蜂鳴器*/
- sbit Led=P3^0; /*Led小燈*/
- sbit Led1=P3^1; /*Led小燈*/
- void alarm(unsigned int t);
- void delay(unsigned int t);
- void delay1(unsigned char n);
- void DaoJiShi();
- void TimeSelect();
-
- void lcd_num(unsigned char i,unsigned char j,unsigned char num);
- void lcd_string(unsigned char i,unsigned char j,unsigned char *s);
- void lcd_clr(); /*LCD清除程序*/
- void init_lcd(); /*LCD初始化*/
- void lcd_busy(void); /*LCD忙狀態(tài)檢測函數(shù) */
- void init_8279(void);
- unsigned char adc0809();
- void play0809(unsigned char m,unsigned char n);
-
- void MotorChoose();
- void MotorChoose1();
-
-
- void ZdCanShu();
- void PxTimes();
- void XdPower();
- void ShuiWei();
- void ShangShui();
- void QinPao();
- void TuoShui();
- void XiDi();
- void ShuaiGan();
- void PiaoXi();
-
- /*******************************************************************************
- 主函數(shù)
- *******************************************************************************/
- void main()
- { unsigned char j;
- init_lcd();
- init_8279();
-
-
- while(key!=0x0f); /*按f開啟洗衣機(jī)*/
- alarm(2);
- keyflag=0;
- lcd_string(1,1,"****************");
- lcd_busy();
- lcd_string(2,1,"歡迎使用洗衣機(jī)");
- lcd_busy();
- lcd_string(3,1,"按任意鍵繼續(xù)");
- lcd_busy();
- lcd_string(4,1,"****************");
- while(keyflag!=1);
- alarm(2);
- keyflag=0;
- lcd_clr();
- lcd_busy();
- lcd_string(2,3,"開始工作!");
- delay(5);
- lcd_busy();
- lcd_string(2,1,"請選擇使用模式");
- delay(5);
- lcd_clr();
-
-
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"0 - 全自動(dòng)模式");
- lcd_string(2,1,"1 - 浸泡");
- lcd_string(2,5,"2 - 洗滌");
- lcd_string(3,1,"3 - 漂洗");
- lcd_string(3,5,"4 - 甩干");
- while(1!=keyflag);
- alarm(2);
- keyflag=0;
- lcd_clr();
-
- switch(key)
- {
- case 0:
- { ZdCanShu();
- /*********************上水**************************/
-
- lcd_busy();
- lcd_string(4,1,"請按確認(rèn)鍵");
- while(key!=0x0e); /*按e確認(rèn)*/
- alarm(1);
- keyflag=0;
-
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"上水中");
- ShangShui();
- delay(5);
- /*******************浸泡***************************/
- QinPao();
- delay(2);
- /*********************洗滌**************************/
- XiDi();
- delay(2);
- /*********************脫水**************************/
- TuoShui();
- delay(2);
- /*********************漂洗**************************/
- PiaoXi();
- delay(2);
- /*********************甩干**************************/
- ShuaiGan();
- delay(2);
-
- break;
- }
- case 1:
- { ShuiWei();
- /*********************上水**************************/
-
- lcd_busy();
- lcd_string(3,1,"請按確認(rèn)鍵");
- while(key!=0x0e); /*按e確認(rèn)*/
- alarm(1);
- keyflag=0;
-
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"上水中");
- ShangShui();
- delay(5);
-
- /*******************浸泡***************************/
- QinPao();
- break;
- }
- case 2:
- { ShuiWei();
- XdPower();
- /*********************上水**************************/
-
- lcd_busy();
- lcd_string(3,1,"請按確認(rèn)鍵");
- while(key!=0x0e); /*按e確認(rèn)*/
- alarm(1);
- keyflag=0;
-
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"上水中");
- ShangShui();
- delay(5);
- /*********************洗滌**************************/
- XiDi();
- delay(2);
- /*********************脫水**************************/
- TuoShui();
- delay(2);
- break;
-
- }
- case 3:
-
- { ShuiWei();
- PxTimes();
- lcd_busy();
- lcd_string(3,1,"請按確認(rèn)鍵");
- while(key!=0x0e); /*按e確認(rèn)*/
- alarm(1);
- keyflag=0;
- /*********************漂洗**************************/
- PiaoXi();
- delay(2);
- break;
- }
-
- case 4:
- {/*********************甩干**************************/
- lcd_clr();
- lcd_busy();
- lcd_string(2,1,"請按確認(rèn)鍵");
- while(key!=0x0e);
- alarm(1);
- keyflag=0;
- ShuaiGan();
- delay(2);
- break;
- }
-
- default:break;
- }
-
- lcd_clr();
- while(j<5)
- {
- alarm(2);
- delay(2);
- lcd_busy();
- lcd_string(2,3,"工作結(jié)束!");
- j++;
- }
-
- lcd_clr();
- while(1);
-
- }
- /*******************************************************************************
- 函數(shù)名:delay
- 函數(shù)功能:延時(shí)函數(shù)
- *******************************************************************************/
- void delay(unsigned int t)
- {
- unsigned int i,j;
- for(i=0;i<t;i++)
- {
- for(j=0;j<30000;j++);
- }
- }
- /*******************************************************************************
- 函數(shù)名:delay1
- 函數(shù)功能:延時(shí)xms函數(shù)
- *******************************************************************************/
- void delay1(unsigned char t)
- { unsigned int i,j;
- for(i=0;i<t;i++)
- {
- for(j=0;j<60;j++);
- }
-
- }
- /*******************************************************************************
- 函數(shù)名:init_8279
- 函數(shù)功能:8279初始化函數(shù)
- *******************************************************************************/
- void init_8279(void)
- {
- c8279=0xd1; /* 清除顯示 */
- do {ACC=c8279;} /* 讀8279狀態(tài)寄存器 */
- while(clflag==1); /* 讀狀態(tài)字,等待清除結(jié)束*/
- c8279=0x00; /* 8字符顯示左入口 */
- c8279=0x23; /* 12分頻 */
- EA=1;
- EX0=1;
- }
- /*******************************************************************************
- 函數(shù)名:INT0_SERVICE
- 函數(shù)功能:外中斷0服務(wù)函數(shù)(讀鍵值)
- *******************************************************************************/
- void INT0_SERVICE(void) interrupt 0 using 2
- {
- unsigned char i;
- EA=0;
- c8279=0x40; /*讀fifo ram命令*/
- i=d8279;
- i=i&0x0f; /*取鍵值低4位*/
- key=i; /*返回鍵值*/
-
- keyflag=1;
- c8279=0x80;
- d8279=table[key];
-
- EA=1;
- }
- /*******************************************************************************
- 函數(shù)名:init_lcd
- 函數(shù)功能:LCD初始化函數(shù)
- *******************************************************************************/
- void init_lcd() /*LCD初始化*/
- {
- lcd_busy();
- w_c_add=0x30; /* 功能設(shè)置:8位數(shù)據(jù) */
- lcd_busy();
- w_c_add=0x0C; /* 顯示狀態(tài):整體顯示,游
- 標(biāo)位置無效*/
- lcd_busy();
- w_c_add=0x01; /* 清除顯示:將DDRAM填滿
- “20H”*/
- lcd_busy();
- w_c_add=0x02; /* 地址歸位:設(shè)定DDRAM地址計(jì)數(shù)器
- 到“00” */
-
- }
- /*******************************************************************************
- 函數(shù)名:lcd_busy
- 函數(shù)功能:LCD檢測忙函數(shù)
- *******************************************************************************/
- void lcd_busy(void) /*LCD忙狀態(tài)檢測函數(shù) */
- {
- do
- {
- status=r_s_add; /* 讀狀態(tài)字地址的第7位 */
- }
- while(busy);
- }
- /*******************************************************************************
- 函數(shù)名:lcd_clr
- 函數(shù)功能:LCD清屏函數(shù)
- *******************************************************************************/
- void lcd_clr() /*LCD清除程序*/
- {
-
- lcd_busy();
- w_c_add=0x01; /* 清除顯示:將DDRAM填滿“20H”*/
- }
- /*******************************************************************************
- 函數(shù)名:lcd_string
- 函數(shù)功能:LCD字符串顯示
- *******************************************************************************/
- void lcd_string(unsigned char i,unsigned char j,unsigned char *s)
- { unsigned char m;
- switch(i)
- {case 1:m=0x80;break;
- case 2:m=0x90;break;
- case 3:m=0x88;break;
- case 4:m=0x98;break;
- default:break;
- }
- w_c_add=m+j-0x01;
-
- for(;*s!='\0';s++)
- {
- lcd_busy();
- w_d_add=*s;
- }
- }
- /*******************************************************************************
- 函數(shù)名:lcd_num
- 函數(shù)功能:LCD字符串顯示
- *******************************************************************************/
- void lcd_num(unsigned char i,unsigned char j,unsigned char num) /*顯示一個(gè)數(shù)字*/
- { unsigned char m;
- switch(i)
- {case 1:m=0x80;break;
- case 2:m=0x90;break;
- case 3:m=0x88;break;
- case 4:m=0x98;break;
- default:break;
- }
- w_c_add=m+j-0x01;
- lcd_busy();
- w_d_add=0x30+num; /*0~9分別對應(yīng)0x30~0x39*/
- }
- /*******************************************************************************
- 函數(shù)名:alarm
- 函數(shù)功能:報(bào)警函數(shù)
- *******************************************************************************/
- void alarm(unsigned int m)
- { Led=0;
- Led1=0;
- Speaker=0;
- delay(m); /*延時(shí)*/
- Speaker=1;
- Led=1;
- Led1=1;
- }
- /*******************************************************************************
- 函數(shù)名:ShuiWei
- 函數(shù)功能:水位選擇顯示
- *******************************************************************************/
- void ShuiWei()
- { lcd_clr();
- lcd_busy();
- lcd_string(1,1,"請選擇水位:");
- lcd_string(2,1,"1-一級(jí)");
- lcd_string(3,1,"2-二級(jí)");
- lcd_string(4,1,"3-三級(jí)");
- delay(8);
-
-
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"水位:");
- while(1!=keyflag);
- alarm(1);
- water_level=key; /*水位*/
-
- keyflag=0;
- switch(water_level)
- {
- case 1:{lcd_busy();lcd_string(1,6,"一級(jí)");delay(8);break;}
- case 2:{lcd_busy();lcd_string(1,6,"二級(jí)");delay(8);break;}
- case 3:{lcd_busy();lcd_string(1,6,"三級(jí)");delay(8);break;}
- default:break;
- }
- }
- /*******************************************************************************
- 函數(shù)名:XdPower
- 函數(shù)功能:洗滌強(qiáng)度選擇顯示
- *******************************************************************************/
- void XdPower()
- { lcd_clr();
- lcd_busy();
- lcd_string(1,1,"請選擇洗滌強(qiáng)度:");
- lcd_string(2,1,"1-強(qiáng)洗");
- lcd_string(2,5,"2-輕洗");
- lcd_string(3,1,"3-弱洗");
- lcd_string(3,5,"4-自動(dòng)");
- delay(8);
-
- lcd_clr();
- lcd_busy();
- lcd_string(2,1,"洗滌強(qiáng)度:");
-
- while(1!=keyflag);
- alarm(1);
- wash_power=key;/*洗滌強(qiáng)度*/
- keyflag=0;
-
- switch(wash_power)
- {
- case 1:{lcd_busy();lcd_string(2,6,"強(qiáng)洗");delay(8);break;}
- case 2:{lcd_busy();lcd_string(2,6,"輕洗");delay(8);break;}
- case 3:{lcd_busy();lcd_string(2,6,"弱洗");delay(8);break;}
- case 4:{lcd_busy();lcd_string(2,6,"自動(dòng)");delay(8);break;}
- default:break;
- }
- }
- /*******************************************************************************
- 函數(shù)名:PxTimes
- 函數(shù)功能:洗滌強(qiáng)度選擇顯示
- *******************************************************************************/
- void PxTimes()
- { lcd_clr();
- lcd_busy();
- lcd_string(1,1,"請選擇漂洗次數(shù):");
- lcd_string(2,1,"1-三次");
- lcd_string(3,1,"2-四次");
- lcd_string(4,1,"3-五次");
- delay(8);
-
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"漂洗次數(shù):");
-
- while(1!=keyflag);
- alarm(1);
- piao_time=key;/*漂洗次數(shù)*/
- keyflag=0;
- switch(piao_time)
- {
- case 1:{lcd_busy();lcd_string(1,6,"三次");delay(8);break;}
- case 2:{lcd_busy();lcd_string(1,6,"四次");delay(8);break;}
- case 3:{lcd_busy();lcd_string(1,6,"五次");delay(8);break;}
- default:break;
- }
- }
- /*******************************************************************************
- 函數(shù)名:ZdCanShu
- 函數(shù)功能:洗滌強(qiáng)度選擇顯示
- *******************************************************************************/
- void ZdCanShu()
- {
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"請選擇水位:");
- lcd_string(2,1,"1-一級(jí)");
- lcd_string(3,1,"2-二級(jí)");
- lcd_string(4,1,"3-三級(jí)");
- delay(8);
- while(1!=keyflag);
- alarm(1);
- water_level=key; /*水位*/
- keyflag=0;
-
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"請選擇洗滌強(qiáng)度:");
- lcd_string(2,1,"1-強(qiáng)洗");
- lcd_string(2,5,"2-輕洗");
- lcd_string(3,1,"3-弱洗");
- lcd_string(3,5,"4-自動(dòng)");
- delay(8);
- while(1!=keyflag);
- alarm(1);
- wash_power=key;/*洗滌強(qiáng)度*/
- keyflag=0;
-
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"請選擇漂洗次數(shù):");
- lcd_string(2,1,"1-三次");
- lcd_string(3,1,"2-四次");
- lcd_string(4,1,"3-五次");
- delay(8);
- while(1!=keyflag);
- piao_time=key;/*漂洗次數(shù)*/
- alarm(1);
- keyflag=0;
-
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"水位:");
- lcd_busy();
- lcd_string(2,1,"洗滌強(qiáng)度:");
- lcd_busy();
- lcd_string(3,1,"漂洗次數(shù):");
-
-
- switch(water_level)
- {
- case 1:{lcd_busy();lcd_string(1,6,"一級(jí)");delay(8);break;}
- case 2:{lcd_busy();lcd_string(1,6,"二級(jí)");delay(8);break;}
- case 3:{lcd_busy();lcd_string(1,6,"三級(jí)");delay(8);break;}
- default:break;
- }
-
-
- switch(wash_power)
- {
- case 1:{lcd_busy();lcd_string(2,6,"強(qiáng)洗");delay(8);break;}
- case 2:{lcd_busy();lcd_string(2,6,"輕洗");delay(8);break;}
- case 3:{lcd_busy();lcd_string(2,6,"弱洗");delay(8);break;}
- case 4:{lcd_busy();lcd_string(2,6,"自動(dòng)");delay(8);break;}
- default:break;
- }
-
-
- switch( piao_time)
- {
- case 1:{lcd_busy();lcd_string(3,6,"三次");delay(8);break;}
- case 2:{lcd_busy();lcd_string(3,6,"四次");delay(8);break;}
- case 3:{lcd_busy();lcd_string(3,6,"五次");delay(8);break;}
- default:break;
- }
-
-
-
-
- }
- /*******************************************************************************
- 函數(shù)名:TimeSelect
- 函數(shù)功能:根據(jù)條件選擇洗滌時(shí)間
- *******************************************************************************/
- void TimeSelect()
- {
- switch(wash_power1)
- {
- case 1:{Sec=10; Min=0;break;}
- case 2:{Sec=15; Min=0;break;}
- case 3:{Sec=20; Min=0;break;}
- default:break;
- }
-
-
- }
- /*******************************************************************************
- 函數(shù)名:DaoJiShi
- 函數(shù)功能:定時(shí)器0 50ms定時(shí),用于倒計(jì)時(shí)計(jì)時(shí)
- *******************************************************************************/
- void DaoJiShi()
- {
- TMOD=0x11;
- TH0=(65536-46080)/256;// 由于晶振為11.0592,故所記次數(shù)應(yīng)為46080,計(jì)時(shí)器每隔50000微秒發(fā)起一次中斷。
- TL0=(65536-46080)%256;
- ET0=1;
- EA=1;TR0=1;
- TimeEnd=0;
- }
- /*******************************************************************************
- 函數(shù)名:Time0
- 函數(shù)功能:定時(shí)器0中斷處理程序,用于倒計(jì)時(shí)計(jì)時(shí)
- *******************************************************************************/
- void Time0() interrupt 1 using 2
- {
-
- int t[4];
-
- EA=0;
- TH0=(65536-46080)/256;
- TL0=(65536-46080)%256;
-
- t[0]=Sec/10;
- t[1]=Sec%10;
- t[2]=Min/10;
- t[3]=Min%10;
-
- lcd_busy();
- lcd_num(3,1,t[2]);
- lcd_busy();
- lcd_num(3,2,t[3]);
- lcd_busy();
- lcd_num(3,3,10);
- lcd_busy();
- lcd_num(3,4,t[0]);
- lcd_busy();
- lcd_num(3,5,t[1]);
-
-
-
- if(TimeEnd==0)
- {
- m++;
-
- if(m>=20)
- { m=0;
- Sec--;
- }
- if(Sec==0&&Min!=0)
- {
- Sec=59;
- Min--;
- }
- if(Sec==0&&Min==0)
- { ET0=0;
- TimeEnd=1;
- t[0]=Sec/10;
- t[1]=Sec%10;
- t[2]=Min/10;
- t[3]=Min%10;
-
- lcd_busy();
- lcd_num(3,1,t[2]);
- lcd_busy();
- lcd_num(3,2,t[3]);
- lcd_busy();
- lcd_num(3,3,10);
- lcd_busy();
- lcd_num(3,4,t[0]);
- lcd_busy();
- lcd_num(3,5,t[1]);
- lcd_busy();
-
-
- }
- }
-
- EA=1;
- }
- /*******************************************************************************
- 函數(shù)名:MotorChoose
- 函數(shù)功能:步進(jìn)機(jī)強(qiáng)度選擇模塊
- *******************************************************************************/
- void MotorChoose()
- { unsigned char j,i,time;
-
- switch(wash_power1)
- {
- case 1:{ time=25;lcd_busy();lcd_string(1,6,": 強(qiáng)洗");break;} /*用來控制轉(zhuǎn)速*/
- case 2:{ time=30;lcd_busy();lcd_string(1,6,": 輕洗");break;}
- case 3:{ time=35;lcd_busy();lcd_string(1,6,": 弱洗");break;}
- default:break;
- }
- ZTime=Min*60+Sec;
- if(ZTime!=0)
- { for(j=0;j<=15;j++)
- {
- for(i=0;i<9;i++)
- {
- P1 = TAB1[i];
- delay1(time);
-
- }
- }
- // }
-
- /* ZTime=Min*60+Sec;
- if(ZTime!=0)*/
- for(j=0;j<=15;j++)
- {
- for(i=0;i<9;i++)
- {
- P1 = TAB2[i];
- delay1(time);
- }
- }
- }
- }
-
-
- /*******************************************************************************
- 函數(shù)名:MotorChoose1
- 函數(shù)功能:步進(jìn)機(jī)強(qiáng)度選擇模塊
- *******************************************************************************/
- void MotorChoose1()
- { unsigned char j,i,time;
- time=28;
- switch(piao_time)
- {
- case 1:{ lcd_busy();lcd_string(1,6,": 三次");break;} /*用來控制轉(zhuǎn)速*/
- case 2:{ lcd_busy();lcd_string(1,6,": 四次");break;}
- case 3:{ lcd_busy();lcd_string(1,6,": 五次");break;}
- default:break;
- }
- ZTime=Min*60+Sec;
- if(ZTime!=0)
- { for(j=0;j<=15;j++)
- {
- for(i=0;i<9;i++)
- {
- P1 = TAB1[i];
- delay1(time);
-
- }
- }
- //}
-
- /* ZTime=Min*60+Sec;
- if(ZTime!=0)*/
- for(j=0;j<=15;j++)
- {
- for(i=0;i<9;i++)
- {
- P1 = TAB2[i];
- delay1(time);
- }
- }
-
- }
- }
- /*******************************************************************************
- 函數(shù)名:adc0809
- 函數(shù)功能:AD轉(zhuǎn)換函數(shù)
- *******************************************************************************/
- unsigned char adc0809()
- {
- IN0=0;
- delay(1);
- return(IN0); /*返回值,即轉(zhuǎn)換后的數(shù)據(jù)*/
- }
- /*******************************************************************************
- 函數(shù)名:0809play
- 功能:顯示AD轉(zhuǎn)換后的值
- *******************************************************************************/
- void play0809(unsigned char m,unsigned char n)
- { unsigned char t[3];
- unsigned char temp;
- temp=adc0809();
-
- t[0]=temp/100;
- temp=temp%100;
- t[1]=temp/10;
- t[2]=temp%10;
-
- lcd_busy();
- lcd_num(m,n,t[0]); /*顯示百位數(shù)字*/
-
- lcd_busy();
- lcd_num(m,n+1,t[1]); /*顯示十位數(shù)字*/
-
- lcd_busy();
- lcd_num(m,n+2,t[2]); /*顯示個(gè)位數(shù)字*/
-
- }
- /*******************************************************************************
- 函數(shù)名:ShangShui
- 函數(shù)功能:上水模塊
- *******************************************************************************/
- void ShangShui()
- { unsigned char f_flag;
- f_flag=0;
- while(f_flag==0)
- {
- lcd_busy();
- lcd_string(2,1,"水位高度:");
- play0809(3,4);
- delay(1);
- switch(water_level)
- {
- case 3:{if(adc0809()>=200){alarm(3);f_flag=1;}
- break;}
- case 2:{if(adc0809()>=80) {alarm(3);f_flag=1;}
- break;}
- case 1:{if(adc0809()>=30) {alarm(3);f_flag=1;}
- break;}
- }
- delay(2);
- }
- }
- /*******************************************************************************
- 函數(shù)名:TuoShui
- 函數(shù)功能:脫水模塊
- *******************************************************************************/
- void TuoShui()
- {
- unsigned char i,time;
- Min=0;Sec=5;time=18;
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"脫水中");
- lcd_busy();
- lcd_string(2,1,"剩余時(shí)間:");
- DaoJiShi();
- ZTime=Min*60+Sec;
- while(ZTime!=0)
- { ZTime=Min*60+Sec;
- for(i=0;i<9;i++)
- {
- P1 = TAB1[i];
- delay1(time);
-
- }
- }
-
- }
- /*******************************************************************************
- 函數(shù)名:ShuaiGan
- 函數(shù)功能:甩干模塊
- *******************************************************************************/
- void ShuaiGan()
- {
- unsigned char i,time;
- Min=0;Sec=10;time=12;
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"甩干中");
- lcd_busy();
- lcd_string(2,1,"剩余時(shí)間:");
- DaoJiShi();
- ZTime=Min*60+Sec;
- while(ZTime!=0)
- { ZTime=Min*60+Sec;
- for(i=0;i<9;i++)
- {
- P1 = TAB1[i];
- delay1(time);
-
- }
- }
-
- }
- /*******************************************************************************
- 函數(shù)名:QinPao
- 函數(shù)功能:浸泡模塊
- *******************************************************************************/
- void QinPao()
- {
- Sec=5;Min=0;TimeEnd=0;
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"浸泡中");
- lcd_string(2,1,"剩余時(shí)間:");
-
- TMOD=0x11;
- TH0=(65536-46080)/256;// 由于晶振為11.0592,故所記次數(shù)應(yīng)為46080,計(jì)時(shí)器每隔50000微秒發(fā)起一中斷。
- TL0=(65536-46080)%256;//46080的來歷,為50000*11.0592/12
- ET0=1;
- TR0=1;
-
- while(ET0==1);
- }
- /*******************************************************************************
- 函數(shù)名:XiDi
- 函數(shù)功能:洗滌模塊
- *******************************************************************************/
- void XiDi()
- { unsigned char i;
- wash_power1=wash_power;
-
- switch(wash_power)
- {case 1:
- case 2:
- case 3:{
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"洗滌中");
- lcd_busy();
- lcd_string(2,1,"剩余時(shí)間:");
- TimeSelect();
- DaoJiShi();
- ZTime=Min*60+Sec;
- while(ZTime!=0)
- { ZTime=Min*60+Sec;
- MotorChoose();
- }
- break;
- }
- case 4:
- { for(i=1;i<4;i++)
- { lcd_clr();
- lcd_busy();
- lcd_string(1,1,"洗滌中");
- lcd_busy();
- lcd_string(2,1,"剩余時(shí)間:");
- wash_power1=i;
- TimeSelect();
- DaoJiShi();
- ZTime=Min*60+Sec;
- while(ZTime!=0)
- { ZTime=Min*60+Sec;
- MotorChoose();
- }
- }
- break;
- }
- default:break;
- }
-
- }
-
- /*******************************************************************************
- 函數(shù)名:PiaoXi
- 函數(shù)功能:漂洗模塊
- *******************************************************************************/
- void PiaoXi()
- { unsigned char i;
- switch(piao_time)
- { case 1:{
- for(i=0;i<3;i++)
- { /*********************上水**************************/
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"上水中");
- ShangShui();
- delay(5);
-
-
- /*********************漂洗**************************/
- Sec=10;Min=0;
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"漂洗中");
- lcd_busy();
- lcd_string(2,1,"剩余時(shí)間:");
- DaoJiShi();
- ZTime=Min*60+Sec;
- while(ZTime!=0)
- { ZTime=Min*60+Sec;
- MotorChoose1();
- }
-
- delay(2);
- /*********************脫水**************************/
- TuoShui();
- delay(2);
- }
- break;
- }
-
- case 2:{
- for(i=0;i<4;i++)
- { /*********************上水**************************/
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"上水中");
- ShangShui();
- delay(5);
-
-
- /*********************漂洗**************************/
- Sec=10;Min=0;
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"漂洗中");
- lcd_busy();
- lcd_string(2,1,"剩余時(shí)間:");
- DaoJiShi();
- ZTime=Min*60+Sec;
- while(ZTime!=0)
- { ZTime=Min*60+Sec;
- MotorChoose1();
- }
-
- delay(2);
- /*********************脫水**************************/
- TuoShui();
- delay(2);
- }
- break;
- }
-
- case 3:{
- for(i=0;i<5;i++)
- { /*********************上水**************************/
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"上水中");
- ShangShui();
- delay(5);
-
-
- /*********************漂洗**************************/
- Sec=10;Min=0;
- lcd_clr();
- lcd_busy();
- lcd_string(1,1,"漂洗中");
- lcd_busy();
- lcd_string(2,1,"剩余時(shí)間:");
- DaoJiShi();
- ZTime=Min*60+Sec;
- while(ZTime!=0)
- { ZTime=Min*60+Sec;
- MotorChoose1();
- }
-
- delay(2);
- /*********************脫水**************************/
- TuoShui();
- delay(2);
- }
- break;
- }
- default:break;
- }
-
- }
復(fù)制代碼
所有資料51hei提供下載:
47432zhang.zip
(46.32 KB, 下載次數(shù): 30)
2018-12-5 15:41 上傳
點(diǎn)擊文件名下載附件
洗衣機(jī) 下載積分: 黑幣 -5
|
|