基于單片機(jī)的洗衣機(jī)設(shè)計
《基于單片機(jī)的洗衣機(jī)設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《基于單片機(jī)的洗衣機(jī)設(shè)計(20頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 范文范例參考 單片機(jī)原理及系統(tǒng)課程設(shè)計 評語: 考勤10分 守紀(jì)10分 過程30分 設(shè)計報告30分 答辯20分 總成績(100分) 專 業(yè): 自動控制 班 級: 姓 名: 學(xué) 號: 指導(dǎo)教師: 蘭州交
2、通大學(xué)自動化與電氣工程學(xué)院 2014 年 1 月 12 日 基于AT89C51單片機(jī)的全自動洗衣機(jī)設(shè)計 1 設(shè)計目的及要求 1.1設(shè)計目的 洗衣機(jī)已成為人們?nèi)粘I钪斜夭豢缮俚囊徊糠?,但是傳統(tǒng)的基于繼電器的控制,已不能滿足人們對洗衣機(jī)的要求。因此設(shè)計了基于單片機(jī)的洗衣機(jī)控制電路系統(tǒng),由單片機(jī)控制實現(xiàn)洗衣機(jī)的各項功能。單片機(jī)的體積小,控制功能靈活,因此,設(shè)計出基于單片機(jī)的全自動洗衣機(jī)控制電路系統(tǒng)具有很強(qiáng)的實用性。由于個人能力有限,所設(shè)計的洗衣機(jī)比前沿科技產(chǎn)品要差很遠(yuǎn)。所以這次課程設(shè)計的主要目的在于通過親手操作,查找資料,培養(yǎng)自己的分析設(shè)計能力,把這學(xué)期課程中零散的知識進(jìn)行整合,將理
3、論的知識聯(lián)系到實際的生活中,在實例中深入理解一些理論知識,并從中有所收獲。 1.2設(shè)計要求 模擬全自動洗衣機(jī)工作過程。以電機(jī)替代洗衣機(jī)電機(jī)。顯示洗衣機(jī)工作的狀態(tài)(進(jìn)水、浸泡、洗衣、脫水、結(jié)束)。顯示工作剩余時間(洗衣程序可自定義,時間精度:秒)。洗衣時交替正、反轉(zhuǎn)。 2 設(shè)計方案及原理 2.1設(shè)計方案 利用AT89C51單片機(jī)的P0,P1,P2,P3串行口的輸入輸出功能,控制數(shù)碼管、電動機(jī)、發(fā)光二極管的工作狀態(tài),進(jìn)而模擬洗衣機(jī)的基本工作過程。 洗衣機(jī)的主要工作過程是:進(jìn)水—洗滌—漂洗—換水—漂洗—換水—漂洗—換水—脫水—結(jié)束。上述工作過程中,包含三個過程:洗滌過程、漂洗過程、脫水過
4、程。 (1) 洗滌過程:放好待洗物,啟動開關(guān),進(jìn)水閥通電,向洗衣機(jī)供水,供水結(jié)束后,洗滌電動機(jī)接通電源,通過電機(jī)不停的正轉(zhuǎn)、反轉(zhuǎn),形成洗滌水對洗滌物產(chǎn)生強(qiáng)烈的翻滾作用;同時衣物之間、衣物與四周桶壁之間產(chǎn)生互相摩擦和撞擊力,達(dá)到洗滌衣物的目的。 (2) 漂洗過程:漂洗的目的在于清除衣物上的洗滌液,因此,漂洗過程與洗滌過程的電機(jī)動作是完全相同的。 (3) 脫水過程:漂洗過程結(jié)束后,電動機(jī)停止轉(zhuǎn)動,排水閥通電,打開排水閥門排水。當(dāng)排水到一定程度,滿足安全條件時,脫水電動機(jī)接通,電機(jī)帶動脫水桶高速旋轉(zhuǎn),利用離心力把衣服上的水從桶壁的小眼里甩出。 全部洗衣工作完成后,結(jié)束指示的LED燈點亮,表示
5、衣物已經(jīng)洗好,洗衣機(jī)就會自動停止工作。 2.2 設(shè)計原理 系統(tǒng)設(shè)計包括晶振和復(fù)位模塊,電機(jī)驅(qū)動模塊,LED顯示模塊,按鍵控制模塊以及數(shù)碼管顯示模塊五部分。利用AT89C51單片機(jī)芯片,芯片左排引腳外接晶振和復(fù)位電路,通過74LS245鎖存器連接至數(shù)碼管,控制數(shù)碼管穩(wěn)定顯示。右排引腳外接電機(jī)驅(qū)動電路和各開關(guān)以及LED燈。通過人工按壓相應(yīng)的開關(guān),接通電機(jī)驅(qū)動電路相應(yīng)的接線端子,實現(xiàn)電機(jī)正反轉(zhuǎn)以及LED顯示。總體設(shè)計原理框圖如圖1所示。 圖1 系統(tǒng)原理框圖 通過對開關(guān)的操作實現(xiàn)選擇想要進(jìn)行的任何操作。當(dāng)選擇好模式后進(jìn)入該模式。該模式的參數(shù)已裝入在單片機(jī)中,在單片機(jī)中程序的控制下進(jìn)行工
6、作。 程序?qū)崿F(xiàn)的主要功能是洗滌,漂洗和脫水的控制。其中洗滌時間設(shè)初值為136s,由于洗衣過程中電機(jī)要不停的正反轉(zhuǎn),所以用P3.2和P3.3控制。通過流經(jīng)電機(jī)兩端電平的高低控制電流的流向,從而改變電機(jī)的轉(zhuǎn)向,實現(xiàn)正反轉(zhuǎn)。漂洗過程和洗滌過程較為相似,由于漂洗要多次進(jìn)行,所以用進(jìn)水次數(shù)標(biāo)志位flag1控制,當(dāng)flag1為2,3,4時為漂洗過程。脫水過程是在出水次數(shù)flag2的控制下進(jìn)行。當(dāng)flag2為4時脫水,當(dāng)脫水時間到達(dá)0后,脫水結(jié)束,洗衣結(jié)束。上述三個過程中電機(jī)工作利用晶體管組成的驅(qū)動電路進(jìn)行驅(qū)動。 3 硬件設(shè)計 3.1主要元器件 在本設(shè)計中主要使用了以下元器件:AT89C51單片機(jī)芯
7、片、74LS245芯片 、晶體振蕩器、數(shù)碼管、發(fā)光二極管、直流電動機(jī)、三極管。 3.2 硬件連接圖 該設(shè)計主要應(yīng)用80C51單片機(jī),外接一些必要的擴(kuò)展電路,構(gòu)成系統(tǒng)電路原理圖,如圖2所示。 圖2 硬件連接圖 3.3 系統(tǒng)設(shè)計原理 該設(shè)計采用模塊化的方法,系統(tǒng)原理圖分為五個模塊,分別為晶振和復(fù)位模塊,電機(jī)驅(qū)動模塊,LED顯示模塊,按鍵控制模塊以及數(shù)碼管顯示模塊。 晶振和復(fù)位模塊主要通過51單片機(jī)的內(nèi)部振蕩方式,產(chǎn)生原始的時鐘頻率。電機(jī)驅(qū)動模塊主要包含電阻、三極管放大器和一個電機(jī),通過與51單片機(jī)的P3.0-P3.3引腳連接,用于驅(qū)動相應(yīng)的洗衣、漂洗和脫水程序。LED顯示模塊主
8、要通過與51單片機(jī)的P0口8個引腳連接,當(dāng)按下相應(yīng)按鍵時,對應(yīng)的LED指示燈點亮,實現(xiàn)對洗衣機(jī)控制過程的指示。按鍵控制模塊,其連接于P3口部分引腳上,實現(xiàn)對洗衣過程的選擇及控制。數(shù)碼管顯示模塊,其直接與單片機(jī)的P2口相連。 4 軟件設(shè)計 4.1 主程序流程圖 按下K1鍵,洗衣機(jī)進(jìn)入待命狀態(tài);當(dāng)按下K2鍵后,洗衣機(jī)才進(jìn)入工作狀態(tài)。其主程序及流程圖見附錄2.1。 4.2 洗滌過程流程圖 電機(jī)正反轉(zhuǎn)均為15s,程序及流程圖見附錄2.2。 4.3 漂洗過程流程圖 漂洗前先打開排水閥排水5s。然后啟動電動機(jī)漂洗,一次漂洗結(jié)束后,接著判斷漂洗次數(shù)即flag3的值,若flag3 為3則漂洗結(jié)束
9、,若flag3不為3,則再次執(zhí)行漂洗操作,進(jìn)入下一循環(huán)。程序及流程圖見附錄2.3。 5 系統(tǒng)仿真及實際調(diào)試 系統(tǒng)仿真結(jié)果圖如圖3所示。 圖3 系統(tǒng)仿真結(jié)果圖 6 總結(jié) 經(jīng)過一個學(xué)期的時間完成了基于單片機(jī)的洗衣機(jī)控制系統(tǒng)的設(shè)計,本系統(tǒng)是基于單片機(jī)及其接口技術(shù)、計算機(jī)技術(shù)、微電子技術(shù)綜合應(yīng)用的設(shè)計。實現(xiàn)了對洗衣機(jī)整個洗衣過程的控制包括用戶參數(shù)輸入、洗衣、脫水和結(jié)束演奏四個階段。控制系統(tǒng)主要由電源電路、控制電路兩大模塊構(gòu)成。電源電路為控制電路提供穩(wěn)定的5V直流電壓,為電動機(jī)提供電;控制電路負(fù)責(zé)控制洗衣機(jī)的工作過程,主要由AT89C51單片機(jī)、四位共陽數(shù)碼管、按鍵、LED指示燈、電動
10、機(jī)、進(jìn)水排水電磁閥組成。在系統(tǒng)設(shè)計中查閱了大量相關(guān)的中文和外文資料以及各芯片的廠家技術(shù)資料手冊借鑒了很多前人成熟的經(jīng)驗。 對于以上之粗淺體會進(jìn)一步的總結(jié)和提高,需要有更多的社會實踐來提供,我也相信在不久的將來踏入社會,類似這樣的設(shè)計絕不在少數(shù),只要我們努力學(xué)習(xí)、勇于實踐、勤學(xué)好問我們就會懂得以前不明白或不懂的道理,就會很快地成長和成熟起來。我也相信憑著我自強(qiáng)不息勇于拼搏的精神一定能夠很快的適應(yīng)類似設(shè)計的需要,適應(yīng)這個多變的社會,充分發(fā)揮長處朝我們的方向不斷前進(jìn)前進(jìn)再前進(jìn)! 參考文獻(xiàn) [1] 王思明,張金敏,茍軍年等 單片機(jī)原理及應(yīng)用系統(tǒng)設(shè)計[M] 科學(xué)出版社 2012:176-189
11、[2] 譚浩強(qiáng) C程序設(shè)計(第四版) [M] 清華大學(xué)出版社 2010:36-60
附錄
附錄一
源程序
#include
12、=P3^4; // 菜單按鍵 sbit key_on=P3^5; // 開始按鍵 sbit key_off=P3^6; // 結(jié)束按鍵 sbit key_se=P3^7; // 菜單選擇按鍵 //***************************// sbit led_in=P0^0; // 進(jìn)水指示燈 sbit led_xi=P0^1; // 洗衣指示燈 sbit led_pao=P0^2; // 泡洗指示燈 sbit led_xx=P0^3; // 脫水指示燈 sbit led_out=P0^4; // 出水指示燈 s
13、bit led_over=P0^5; // 洗衣結(jié)束指示燈 sbit led_work=P0^6; // 電機(jī)工作指示燈 sbit other=P3^1; // 脫水電源控制開關(guān) sbit anther=P3^0; // 洗衣電源控制開關(guān) //******************************// uchar code num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //*****************************// char sec=0; //
14、 時間秒 char min=0; // 時間分 uchar count=0; // 中斷計數(shù) uchar flag0=0; // 洗衣機(jī)工作狀態(tài)標(biāo)志 uchar flag1=0; // 進(jìn)水次數(shù)標(biāo)志 uchar flag2=0; // 出水次數(shù)標(biāo)志 uchar flag3=0; // 泡洗次數(shù)標(biāo)志 uchar quan=0; // 正反轉(zhuǎn)計數(shù) //**********************************// void delay(); // 延時函數(shù) void in(); // 進(jìn)水子程序
15、 void out(); // 出水子程序 void over(); // 結(jié)束子程序 void xi(); // 洗衣子程序 void pao(); // 泡衣子程序 void xx(); // 脫水子程序 void on(); // 工作on處理子程序 void se(); // 顯示菜單選擇 void SEG_display(); // 顯示時間子程序 void key_scan(); // 按鍵掃描子程序 void delay(uint i) { uint x,y; for(x=i;x>0;x--
16、) 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) xi(); if(flag0==2) pao(); if(flag0==3)
17、 xx(); 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)水子程序 //*********************************// void in() { anther=0; other=0; P0=0xff; led_in=0; fl
18、ag1++; mo_r=0; mo_l=0; min=0; sec=8; } // 洗衣子程序 //*********************************// void xi() { anther=1; other=0; P0=0xff; led_work=0; led_xi=0; mo_r=1; mo_l=0; min=1; sec=36; quan=0; } // 泡衣子程序 //*********************************// void pao()
19、{ anther=1; other=0; P0=0xff; led_pao=0; led_work=0; flag3++; mo_r=1; mo_l=0; min=1; sec=35; quan=0; } // 脫水子程序 //*********************************// void xx() { other=1; anther=0; P0=0xff; led_xx=0; mo_r=0; mo_l=1; min=0; sec=50; } // 出水子程序 //*****
20、****************************// void out() { anther=0; other=0; P0=0xff; led_out=0; flag2++; mo_r=0; mo_l=0; min=0; sec=5; } // 顯示菜單選擇 //*********************************// void se() { P0=0xff; if(flag0 >= 5) flag0=0; if(flag0==0) { led_in=0; } if(flag0==1
21、) { led_xi=0; } if(flag0==2) { led_pao=0; } if(flag0==3) { led_xx=0; } if(flag0==4) { led_out=0; } } // 菜單處理子程序 //**********************************// void menu() { min=0; sec=0; mo_r=0; mo_l=0; SEG_display(); while(1) { if(key_on
22、==0) { delay(5); if(key_on==0) { while(!key_on); on(); break; } } //**************************// if(key_off==0) { delay(5); if(key_off==0) { while(!key_off); over(); break; } } //****************************// if(key_s
23、e==0) { delay(5); if(key_se==0) { while(!key_se); flag0++; se(); } } } } // 按鍵掃描子程序 //*********************************// void key_scan() { if(key_menu==0) { delay(5); if(key_menu==0) { while(!key_menu); menu(); } } //**
24、******************************// 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(); } } } // 顯示子程序 //*******************
25、**************// 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
26、=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))
27、{ quan++; switch(quan) { case 1:mo_r=1;mo_l=0;break; case 10:mo_r=0;mo_l=0;break; case 15:mo_r=0;mo_l=1;break; case 25:mo_r=0;mo_l=0;break; default:; } if(quan==30) { quan=0; } } //**********************************// if((se
28、c==0)&&(min != 0)) { min--; sec=59; } //**********************************// if((sec<0)&&(min==0)&&(flag0==0)) //進(jìn)水結(jié)束 { switch(flag1) { case 1:flag0=1;xi();break; case 2:flag0=2;pao();break; case 3:flag0=2;pao();break; case 4:flag0=2;pa
29、o();break; } } //**********************************// if((sec<0)&&(min==0)&&(flag0==1)) //洗衣結(jié)束 { flag0=4; out(); } //**********************************// if((sec<0)&&(min==0)&&(flag0==2)) //泡衣結(jié)束 { switch(flag3) { case 1:flag0=4;out
30、();break; case 2:flag0=4;out();break; case 3:flag0=4;out();break; } } //**********************************// if((sec<0)&&(min==0)&&(flag0==4)) //出水結(jié)束 { switch(flag2) { case 1:flag0=0;in();break; case 2:flag0=0;in();break; case 3:flag0=0;in();brea
31、k; case 4:flag0=3;xx();break; } } //***********************************// if((sec<0)&&(min==0)&&(flag0==3)) { sec=0; over(); } } } 附錄2 附錄2.1主程序 void main() { led_in=0; anther=0; other=0; while(1) { SEG_display(); key_scan(); } } // 定
32、時器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;
33、 case 10:mo_r=0;mo_l=0;break; case 15:mo_r=0;mo_l=1;break; case 25:mo_r=0;mo_l=0;break; default:; } if(quan==30) { quan=0; } } //**********************************// if((sec==0)&&(min != 0)) { min--; sec=59; } //******************
34、****************// if((sec<0)&&(min==0)&&(flag0==0)) //進(jìn)水結(jié)束 { switch(flag1) { case 1:flag0=1;xi();break; case 2:flag0=2;pao();break; case 3:flag0=2;pao();break; case 4:flag0=2;pao();break; } } //**********************************// if((sec<0)&
35、&(min==0)&&(flag0==1)) //洗衣結(jié)束 { flag0=4; out(); } //**********************************// if((sec<0)&&(min==0)&&(flag0==2)) //泡衣結(jié)束 { switch(flag3) { case 1:flag0=4;out();break; case 2:flag0=4;out();break; case 3:flag0=4;out();break;
36、 } } //**********************************// if((sec<0)&&(min==0)&&(flag0==4)) //出水結(jié)束 { switch(flag2) { case 1:flag0=0;in();break; case 2:flag0=0;in();break; case 3:flag0=0;in();break; case 4:flag0=3;xx();break; } } //***************************
37、********// if((sec<0)&&(min==0)&&(flag0==3)) { sec=0; over(); } } } 附錄圖2.1 主程序流程圖 2.2洗滌過程程序 void xi() { anther=1; other=0; P0=0xff; led_work=0; led_xi=0; mo_r=1; mo_l=0; min=0; sec=30; quan=0; } 附錄圖2.2 洗滌程序流程圖 2.3 漂洗子程序 void pao() { anther=1; other=0; P0=0xff; led_pao=0; led_work=0; flag3++; mo_r=1; mo_l=0; min=0; sec=10; quan=0; } 附錄圖2.3 漂洗程序流程圖 WORD格式整理
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。