內(nèi)容: 設(shè)自動洗衣機(jī)的控制要求是:啟動后先開啟進(jìn)水閥進(jìn)水,水位到達(dá)設(shè)定值后關(guān)閉,然后波輪按正轉(zhuǎn)5秒、反轉(zhuǎn)5秒,正、反轉(zhuǎn)之間停3秒的規(guī)律不斷循環(huán)轉(zhuǎn)動,直至達(dá)到設(shè)定時(shí)間停止,之后打開排水閥放水,水放完后洗衣桶旋轉(zhuǎn)脫水,1分鐘后停止并關(guān)閉排水閥,洗衣過程結(jié)束。要求水位設(shè)置不少于高、中、低三檔,洗衣時(shí)間在3——12分鐘范圍內(nèi)可調(diào),以1分鐘為單位,排水時(shí)間定為1分鐘。運(yùn)動執(zhí)行器用指示燈模擬,水位用開關(guān)模擬,試設(shè)計(jì)該洗衣機(jī)的控制電路。 要求: - 畫出控制系統(tǒng)的框圖,說明系統(tǒng)方案設(shè)計(jì)的思路、理由或依據(jù);
- 選擇、確定組成控制系統(tǒng)的各個(gè)單元,并闡述選擇確定的原則或依據(jù);
- 畫出完整的電氣原理圖,介紹整體電路的工作原理、性能或特點(diǎn);
- 如采用單片機(jī)控制,給出單片機(jī)程序的流程圖和清單,說明程序的工作原理。
- 制作實(shí)物電路,驗(yàn)證設(shè)計(jì)、制作是否正確。
- 題目分析及設(shè)計(jì)思路;(弄清楚要完成設(shè)計(jì)的技術(shù)要點(diǎn)、關(guān)鍵是什么,有哪些需要注意的事項(xiàng),可以采用哪些方法和手段,有哪些可用的方案或電路形式,等等。)
要完成本項(xiàng)目設(shè)計(jì)的技術(shù)要點(diǎn)是對洗衣機(jī)的整個(gè)運(yùn)行流程深刻理解之后,再用程序?qū)⑺憩F(xiàn)出來,說以關(guān)鍵就在于程序的編寫。需要注意的是運(yùn)動執(zhí)行器是用指示燈模擬,水位用開關(guān)模擬,還要求水位設(shè)置不少于高、中、低三檔,洗衣時(shí)間在3——12分鐘范圍內(nèi)可調(diào)所以大概就要用到6個(gè)發(fā)光二極管和8個(gè)復(fù)位按鍵,因此就要對整個(gè)流程控制的邏輯順序有個(gè)很好的設(shè)計(jì)。對于程序的編寫可以采用單片機(jī)或PLC(就目前所學(xué)而言),而對于這樣一個(gè)簡單的小程序就采用單片機(jī)即可。 - 方案設(shè)計(jì)說明;(在充分調(diào)研、思考的基礎(chǔ)上確定電路方案并說明理由。畫出電路的系統(tǒng)框圖,說明系統(tǒng)框圖的原理。)
一開始看到這個(gè)題目我就打算使用單片機(jī)來完成本設(shè)計(jì),因?yàn)閱纹瑱C(jī)使用方便,只需一個(gè)最小系統(tǒng)即可,在宿舍就可完成對程序的編寫和修改,而PLC價(jià)格昂貴且不能隨時(shí)可用。就本項(xiàng)目采用單片機(jī)而言需要一個(gè)單片機(jī)最小系統(tǒng),思維數(shù)碼管及驅(qū)動,一組LED和按鍵。 系統(tǒng)框圖: 通過對八個(gè)按鍵的操作,可對水位設(shè)置,洗衣時(shí)間設(shè)置,開始洗衣,水位確定。四位數(shù)碼管可顯示水位的設(shè)置值,洗衣時(shí)間設(shè)置值,還有洗衣時(shí)間計(jì)時(shí)等。六個(gè)LED有兩個(gè)表示洗衣機(jī)波輪的正反轉(zhuǎn),兩個(gè)進(jìn)水和排水,一個(gè)脫水,一個(gè)洗衣指示燈。通過編寫程序?qū)崿F(xiàn)單片機(jī)對按鍵,四位數(shù)碼管和發(fā)光二極管的控制。 系統(tǒng)流程圖:
- 單元設(shè)計(jì)說明;(按項(xiàng)目的具體要求撰寫,沒有可不寫。)
單片機(jī)最小系統(tǒng): 系統(tǒng)框圖: 最小系統(tǒng)電路圖: - 完整電路原理分析;(按項(xiàng)目的具體要求撰寫)
通過單片機(jī)掃描水位設(shè)置按鍵和洗衣時(shí)間設(shè)置按鍵來設(shè)置水位和洗衣時(shí)間在四位數(shù)碼管上顯示設(shè)置的值和計(jì)時(shí)時(shí)間。進(jìn)水閥指示燈亮表示進(jìn)水閥已打開,正轉(zhuǎn)和反轉(zhuǎn)指示燈亮表示洗衣機(jī)波輪的正轉(zhuǎn)和反轉(zhuǎn)。脫水閥亮表示脫水閥已打開可以排水。 - 制作、調(diào)試情況;(如實(shí)介紹,重點(diǎn)介紹制作、調(diào)試過程中遇到的問題和解決問題的方法)
在制作,調(diào)試中遇到了許多大大小小的問題,在這選一些較為重要的寫出。 - 在焊接完單片機(jī)最小系統(tǒng)進(jìn)行調(diào)試時(shí)指示燈不會亮,也不能下載程序,經(jīng)過幾番檢查發(fā)現(xiàn)指示燈正負(fù)接反,單片機(jī)引腳焊點(diǎn)有虛焊點(diǎn)。
- 編寫好程序進(jìn)行調(diào)試時(shí),四位數(shù)碼管不能正常顯示,經(jīng)檢查發(fā)現(xiàn)共陽的數(shù)碼管使用了共陰的數(shù)碼管編碼。
- 在調(diào)試程序中,發(fā)現(xiàn)四位數(shù)碼管顯示較暗且有閃爍,經(jīng)多次調(diào)試,將數(shù)碼管顯示程序?qū)懺诙〞r(shí)器中斷函數(shù)里,發(fā)現(xiàn)結(jié)果好多了。
- 在測試程序中發(fā)現(xiàn)按鍵不起作用,檢查了程序和硬件電路發(fā)現(xiàn)按鍵連接的是地,而程序?qū)懙母唠娖浇油。改了下程序結(jié)果就出來了。
- 實(shí)訓(xùn)成果;(如實(shí)介紹實(shí)訓(xùn)成果的情況)
八個(gè)按鍵從左到右的作用:按鍵1水位設(shè)置和洗衣時(shí)間設(shè)置切換選擇,按鍵2和按鍵3是加減數(shù)值,按鍵4是啟動,按鍵5按鍵6按鍵7按鍵8是表示水位的零水位和高中低水位。 通過本次實(shí)訓(xùn),收獲頗多,感覺自己有進(jìn)步了一點(diǎn),許多東西只用大腦去想是不行的,理論可行但實(shí)際可不可行就不知道,這就需要實(shí)際動手操作了才知道,一開始看了這個(gè)項(xiàng)目覺得很簡單,隨便編寫個(gè)程序就可以了,但實(shí)際坐下來就沒有那么簡單了,首先硬件電路焊接就出現(xiàn)許多問題,跟別說編寫和調(diào)試程序就用了一個(gè)多星期。不過實(shí)際做出來,感覺還是挺好的。這也讓我進(jìn)一步了解了單片機(jī)的使用,掌握了一些運(yùn)動控制的思路與方法。 - #include <reg51.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar gewei,shiwei;
- uchar xiyitime,num3;
- uchar shuiweizhi,shuiwei;
- uint num1,num2;
- sbit wei1=P1^0;
- sbit wei2=P1^1;
- sbit wei3=P1^2;
- sbit wei4=P1^3;
- sbit shuiwei0=P1^4; //
- sbit shuiwei1=P1^5; //低水位
- sbit shuiwei2=P1^6; //中水位
- sbit shuiwei3=P1^7; // 高水位
- sbit shezhi_key=P2^0;
- sbit qidong_key=P2^1;
- //sbit xiyi_key=P2^0;
- sbit up_key=P2^2;
- sbit down_key=P2^3;
- sbit shuifa=P2^4;
- sbit paishuifa=P2^5;
- sbit zhengzhuang=P2^6;
- sbit fanzhuang=P2^7;
- sbit tuoshui=P3^6;
- sbit zhishiled=P3^7;
- //此表為 LED 的字模, 共陰數(shù)碼管 0-9 -
- unsigned char code segtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,
- 0xc6,0xa1,0x86,0x8e}; //段碼控制
- unsigned char code segtab1[]={0x40,0x4F,0x24,0x30,0x19,0x12,
- 0x02,0x78,0x00,0x10}; //共陰0-9帶小數(shù)點(diǎn)編碼
- //延時(shí)X毫秒函數(shù)11.0592Mhz時(shí)
- void delay_xms(uint xms)
- {
- uint i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--);
- }
- //延時(shí)X秒函數(shù)
- void delay_s(uint xs)
- {
- uint x;
- for(x=xs;x>0;x--)
- delay_xms(1000);
- }
- //延時(shí)X分鐘函數(shù)
- void delay_min(uint xmin)
- {
- uint m,n;
- for(m=xmin;m>0;m--)
- for(n=60;n>0;n--)
- delay_s(1);
- }
- //取操作數(shù)的個(gè)十位
- void chuli(uint num)
- {
- gewei=num%10;
- shiwei=(num/10)%10;
- }
- //按鍵掃描函數(shù)
- void keysaomiao()
- {
- uchar jianzhi;
- if(shezhi_key==0)
- {
- delay_xms(10);
- if(!shezhi_key)
- {
- jianzhi++;
- if(jianzhi>2)
- jianzhi=1;
- while(!shezhi_key);
- }
- }
- if(jianzhi==1) //水位設(shè)置
- {
- if(up_key==0)
- {
- delay_xms(10);
- if(up_key==0)
- {
- shuiwei++;
- if(shuiwei>3)
- {
- shuiwei=0;
- }
- while(!up_key);
- }
- }
- if(down_key==0)
- {
- delay_xms(10);
- if(down_key==0)
- {
- if(shuiwei<=0)
- {
- shuiwei=3;
- }
- shuiwei--;
- while(!down_key);
- }
- }
- chuli(shuiwei);
- P0=segtab[gewei];
- wei1=0;
- delay_xms(5);
- wei1=1;
- P0=segtab[shiwei];
- wei2=0;
- delay_xms(5);
- wei2=1;
- P0=0xFE;
- wei3=0;
- delay_xms(5);
- wei3=1;
- P0=0x9C;
- wei4=0;
- delay_xms(5);
- wei4=1;
- }
- if(jianzhi==2)
- {
- if(up_key==0)
- {
- delay_xms(10);
- if(up_key==0)
- {
- xiyitime++;
- if(xiyitime>12)
- {
- xiyitime=3;
- }
- while(!up_key);
- }
- }
- if(down_key==0)
- {
- delay_xms(10);
- if(down_key==0)
- {
- xiyitime--;
- if(xiyitime<3)
- {
- xiyitime=12;
- }
- while(!down_key);
- }
- }
- chuli(xiyitime);
- P0=segtab[gewei];
- wei1=0;
- delay_xms(5);
- wei1=1;
- P0=segtab[shiwei];
- wei2=0;
- delay_xms(5);
- wei2=1;
- P0=0xF7;
- wei3=0;
- delay_xms(5);
- wei3=1;
- P0=0xA3;
- wei4=0;
- delay_xms(5);
- wei4=1;
- }
- }
- //水位檢測子函數(shù)
- void shuiweijiance()
- {
- if(shuiwei0==0)
- {
- delay_xms(10);
- if(shuiwei0==0)
- {
- shuiweizhi=0;
- while(!shuiwei0);
- }
- }
- if(shuiwei1==0)
- {
- delay_xms(10);
- if(shuiwei1==0)
- {
- shuiweizhi=1;
- while(!shuiwei1);
- }
- }
- if(shuiwei2==0)
- {
- delay_xms(10);
- if(shuiwei2==0)
- {
- shuiweizhi=2;
- while(!shuiwei2);
- }
- }
- if(shuiwei3==0)
- {
- delay_xms(10);
- if(shuiwei3==0)
- {
- shuiweizhi=3;
- while(!shuiwei3);
- }
- }
- }
- //初始化函數(shù)
- void init()
- {
- num2=60;
- num3=4;
- shuiweizhi=0;
- xiyitime=3;
- TMOD=0x01;
- //TH0=(65536-45872)/256;//11.0592M晶振
- //TL0=(65536-45872)%256;
- TH0 = 0xB1;//12M晶振
- TL0 = 0xE0;
- EA=1;
- ET0=1;
- }
- /************主函數(shù)**********************/
- void main()
- {
- uint i,j;
- init();
- P0=0xbf;
- wei1=0;
- wei2=0;
- wei3=0;
- wei4=0;
- while(qidong_key)
- {
- keysaomiao();//水位和洗衣時(shí)間設(shè)置
- }
- num3=xiyitime-1;
- if(qidong_key==0)
- {
- delay_xms(10);
- if(qidong_key==0)//啟動鍵按下
- {
- shuifa=0; //開進(jìn)水閥進(jìn)水
- while(shuiwei!=shuiweizhi)//檢測是否到達(dá)設(shè)定水位
- {
- shuiweijiance();
- chuli(shuiweizhi);
- P0=segtab[gewei];
- wei1=0;
- delay_xms(5);
- wei1=1;
- P0=segtab[shiwei];
- wei2=0;
- delay_xms(5);
- wei2=1;
- delay_xms(5);
- chuli(shuiwei);
- P0=segtab[gewei];
- wei3=0;
- delay_xms(5);
- wei3=1;
- P0=segtab[shiwei];
- wei4=0;
- delay_xms(5);
- wei4=1;
- }
- while(i<100)
- {
- i++;
- shuiweijiance();
- chuli(shuiweizhi);
- P0=segtab[gewei];
- wei1=0;
- delay_xms(5);
- wei1=1;
- P0=segtab[shiwei];
- wei2=0;
- delay_xms(5);
- wei2=1;
- delay_xms(5);
- chuli(shuiwei);
- P0=segtab[gewei];
- wei3=0;
- delay_xms(5);
- wei3=1;
- P0=segtab[shiwei];
- wei4=0;
- delay_xms(5);
- wei4=1;
- }
- delay_s(1);
- while(j<300)
- {
- j++;
- chuli(shuiwei);
- P0=segtab[gewei];
- wei1=0;
- delay_xms(5);
- wei1=1;
- P0=segtab[shiwei];
- wei2=0;
- delay_xms(5);
- wei2=1;
- chuli(xiyitime);
- P0=segtab[gewei];
- wei3=0;
- delay_xms(5);
- wei3=1;
- P0=segtab[shiwei];
- wei4=0;
- delay_xms(5);
- wei4=1;
- }
- shuifa=1;
- zhishiled=0;
- TR0=1;
- while(!num3==0)
- {
- if(num2>=59)
- zhengzhuang=0;
- if(num2==55)
- zhengzhuang=1;
- if(num2==52)
- fanzhuang=0;
- if(num2==46)
- fanzhuang=1;
- if(num2==42)
- zhengzhuang=0;
- if(num2==35)
- zhengzhuang=1;
- if(num2==30)
- fanzhuang=0;
- if(num2==23)
- fanzhuang=1;
- if(num2==19)
- zhengzhuang=0;
- if(num2==13)
- zhengzhuang=1;
- if(num2==9)
- fanzhuang=0;
- if(num2==3)
- fanzhuang=1;
- }
- TR0=0;
- zhengzhuang=1;
- fanzhuang=1;
- paishuifa=0;
- while(1)
- {
- if(shuiwei0==0)
- delay_xms(10);
- if(shuiwei0==0)
- {
- P0=0xbf;
- wei1=0;
- wei2=0;
- wei3=0;
- wei4=0;
- tuoshui=0;
- delay_min(1);
- tuoshui=1;
- paishuifa=1;
- P0=0;
- delay_s(2);
- zhishiled=1;
- break;
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
完整的Word格式文檔51黑下載地址:
http://www.torrancerestoration.com/bbs/dpj-122928-1.html
|