一、洗衣機(jī)控制系統(tǒng)設(shè)計
設(shè)計內(nèi)容:
1、用直流電機(jī)的轉(zhuǎn)速表征三種不同洗衣方式,弱洗、強(qiáng)洗、漂洗;
2、用三個獨(dú)立按鍵設(shè)置待洗衣物的不同洗滌方式:
絲質(zhì)衣服:漂洗定時3秒
棉質(zhì)衣服:弱洗2秒;強(qiáng)洗5秒;漂洗3秒;
化纖衣服:強(qiáng)洗4秒;漂洗2秒;3,用按鍵自行調(diào)整洗滌方式,即自行調(diào)整弱洗,強(qiáng)洗,漂洗的定時時間4、定時時間到,光報警提示。(20分)
經(jīng)過2個星期逼著自己學(xué)習(xí)c51單片機(jī),就是我以前發(fā)的那個洗衣機(jī)的然后寫了這個程序,無奈啊,想讓大家?guī)蛶兔Ω囊桓纳兜�,寫的不好,就別噴了 
然后我們學(xué)校實(shí)驗(yàn)室比較簡陋,好像是電動機(jī)只能用什么AD還是DA吧,好像不讓用P3口好像,然后我也不會寫電動機(jī)這一塊了,寫的比較垃圾,洗衣時間算的也不咋明白,幫幫忙,救救孩子吧。undefined
這個就是我的程序了
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- //****************************//
- sbit key_mianzhi=P1^4; // 棉質(zhì)按鍵
- sbit key_on=P1^5; // 開始按鍵
- sbit key_off=P1^6; // 結(jié)束按鍵
- sbit key_sizhi=P1^7; // 絲質(zhì)按鍵
- sbit key_huaxian=P1^1; // 化纖按鍵
- //***************************//
- sbit led_wring=P0^7; // 報警指示燈
- //******************************//
- uchar codenum[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- //*****************************//
- char sec=0; // 時間秒
- char min=0; // 時間分
- uchar count=0; // 中斷計數(shù)
- uchar flag0=0; // 洗衣機(jī)工作狀態(tài)標(biāo)志
- uchar flag1=0; // piaoxi標(biāo)志
- uchar flag2=0; // qiangxi標(biāo)志
- uchar flag3=0; // ruoxi標(biāo)志
- uchar err=0; // 報警標(biāo)志
- //**********************************//
- void delay(); // 延時函數(shù)
- void over(); // 結(jié)束子程序
- void piaoxi(); // 票子程序
- void ruoxi(); // 弱子程序
- void qiangxi(); // 強(qiáng)子程序
- void on(); // 工作on處理子程序
- void se(); // 顯示菜單選擇
- void SEG_display(); // 顯示時間子程序
- void key_scan(); // 按鍵掃描子程序
- **************************************
- void delay(uint i)
- {
- uintx,y;
- for(x=i;x>0;x--)
- for(y=120;y>0;y--);
- }
- //*********工作on處理子程序**********//
- void on()
- {
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- P0 = 0xff;
- if(flag0==0)
- in();
- if(flag0==1)
- qiangxi();
- if(flag0==2)
- piaoxi();
- if(flag0==3)
- ruoxi();
- if(flag0==4)
- out();
-
- }
- //********結(jié)束子程序*********//
- void over()
- { other=0;
- anther=0;
- P0=0xff;
- mo_r=0;
- mo_l=0;
- led_over=0;
- EA=0;
- }
- //**********進(jìn)水子程序**********//
- voidin()
- { anther=0;
- other=0;
- P0=0xff;
- led_in=0;
- flag1++;
- mo_r=0;
- mo_l=0;
- min=0;
- sec=8;
- }
- //**********漂洗子程序**********//
- void piaoxi()
- { anther=1;
- other=0;
- P0=0xff;
- mo_r=1;
- mo_l=1;
- min=0;
- sec=10;
- quan=0;
- }
- //
- //********強(qiáng)洗程序********//
- void piaoxi()
- {
- anther=1;
- other=0;
- P0=0xff;
- mo_r=1;
- mo_l=0;
- min=1;
- sec=10;
-
- }
- //*********弱洗子程序********//
- void ruoxi()
- {
- other=1;
- anther=0;
- P0=0xff;
- mo_r=1;
- mo_l=0;
- sec=5;
- }
- //*********漂洗子程序********//
- void piaoxi()
- {
- other=1;
- anther=0;
- P0=0xff;
- mo_r=1;
- sec=5;
- mo_l=1;
- sec=5;
- }
- //*********按鍵掃描子程序*********//
- void key_scan()
- {
- if(key_menu==0)
- {
- delay(5);
- if(key_menu==0)
- {
- while(!key_menu);
- menu();
- }
- }
- //********************************//
- if(key_on==0)
- {
- delay(5);
- if(key_on==0)
- {
- while(!key_on);
- on();
- }
- }
- //*********************************//
- if(key_off==0)
- {
- delay(5);
- if(key_off==0)
- {
- while(!key_off);
- over();
- }
- }
- }
- //*********顯示子程序**********//
- void SEG_display()
- {
- P1=0x01;
- P2=num[min/10];
- delay(10);
- P1=0x02;
- P2=num[min%10];
- delay(10);
- P1=0x04;
- P2=num[sec/10];
- delay(10);
- P1=0x08;
- P2=num[sec%10];
- delay(10);
- }
- //*********主函數(shù)**********//
- void main()
- {
- led_in=0;
- anther=0;
- other=0;
- while(1)
- {
- SEG_display();
- key_scan();
- }
- }
- //*****定時器0中斷處理程序*****//
- void timer0() interrupt 1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- count++;
- if(count==20)
- {
- count=0;
- sec--;
- if((flag0==1)||(flag0==2))
- {
- quan++;
- switch(quan)
- {
- case 1:mo_r=1;mo_l=0;break;
- case10:mo_r=0;mo_l=0;break;
- case15:mo_r=0;mo_l=1;break;
- case25:mo_r=0;mo_l=0;break;
- default:;
- }
- if(quan==30)
- {
- quan=0;
- }
- }
- //**********************************//
- if((sec==0)&&(min!= 0))
- {
- min--;
- sec=59;
- }
-
- //**********************************//
- if((sec<0)&&(min==0)&&(flag0==1)) //洗衣結(jié)束
- {
- flag0=4;
- out();
- }
- //**********************************//
- if((sec<0)&&(min==0)&&(flag0==2)) //泡衣結(jié)束
- {
- switch(flag3)
- {
- case1:flag0=4;out();break;
- case2:flag0=4;out();break;
- case3:flag0=4;out();break;
- default:err=1;led_wring = 0;
- }
- }
- //**********************************//
- if((sec<0)&&(min==0)&&(flag0==4)) //出水結(jié)束
- {
- switch(flag2)
- {
- case1:flag0=0;in();break;
- case2:flag0=0;in();break;
- case3:flag0=0;in();break;
- case4:flag0=3;xx();break;
- default:err=1;led_wring=0;
- }
- }
- //***********************************//
- if((sec<0)&&(min==0)&&(flag0==3))
- { sec=0;
- over();
- }
- }
- }
復(fù)制代碼
程序問題挺多的,希望大家?guī)蛶兔�。謝謝大家了
|