找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5630|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

小白求助!關(guān)于單片機(jī)洗衣機(jī)控制系統(tǒng)的設(shè)計(jì)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:155285 發(fā)表于 2016-12-17 19:00 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
小白剛學(xué)單片機(jī)不久 碰到了老師布置這個(gè)題目 感覺毫無頭緒。。 再此求教各位大神!

洗衣機(jī)控制系統(tǒng)設(shè)計(jì)
設(shè)計(jì)內(nèi)容:
1、 用直流電機(jī)的轉(zhuǎn)速表征三種不同洗衣方式,弱洗、強(qiáng)洗、漂洗;(20分)
2、 實(shí)現(xiàn)最長(zhǎng)10分鐘定時(shí);(20分)
3、 用三個(gè)獨(dú)立按鍵設(shè)置待洗衣物的不同洗滌方式: 40分)
絲質(zhì)衣服: 漂洗 定時(shí)3分鐘
棉質(zhì)衣服:弱洗 2分鐘;強(qiáng)洗 5分鐘;漂洗 3分鐘;
化纖衣服: 強(qiáng)洗 4分鐘;漂洗 2分鐘;
4、 定時(shí)時(shí)間到,蜂鳴器報(bào)警提示。(20分)





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:155507 發(fā)表于 2016-12-18 22:22 | 只看該作者
  1. // 基于單片機(jī)的洗衣機(jī)的控制系統(tǒng)設(shè)計(jì)

  2. /*
  3. 1洗衣機(jī)的功能及設(shè)計(jì)   
  4. 1.1洗衣機(jī)功能要求      洗衣機(jī)的主要工作程序是:洗滌——脫水——漂洗——脫水——漂洗——脫水。上述工作程序中,包含三個(gè)過程,洗滌過程、漂洗過程、脫水過程。
  5.         (1)洗滌過程:放好待洗物,啟動(dòng)開關(guān),進(jìn)水閥通電,向洗衣機(jī)供水,當(dāng)供水達(dá)到預(yù)定水位時(shí),水位開關(guān)接通,進(jìn)水閥斷電關(guān)閉,停止供水。洗滌電動(dòng)機(jī)接通電源,帶動(dòng)波輪(或桶)旋轉(zhuǎn),產(chǎn)生各種形式的水流攪動(dòng)衣物進(jìn)行洗滌。通過電動(dòng)不停的正轉(zhuǎn)、停、反轉(zhuǎn)、反復(fù)循環(huán),形成洗滌水對(duì)洗滌物產(chǎn)生強(qiáng)烈的翻滾作用。同時(shí),衣物之間、衣物與四周桶壁之間產(chǎn)生互相摩擦和撞擊力,以次達(dá)到洗滌衣物的目的。      (2)漂洗過程:漂洗的目的在于清除衣物上的洗滌液,因此,漂洗過程與洗滌過程的電器動(dòng)作是完全相同的。
  6.         (3)脫水過程:洗滌或漂洗后,需要對(duì)衣物進(jìn)行脫水以便晾干,節(jié)省水資源,所以脫水是洗衣過程中必不可少的環(huán)節(jié)。洗滌或漂洗過程結(jié)束后,電動(dòng)機(jī)停止轉(zhuǎn)動(dòng),排水閥通電,打開排水閥門排水。當(dāng)水位低到一定程度時(shí),滿足安全條件,脫水電動(dòng)機(jī)接通,電機(jī)帶動(dòng)脫水桶高速旋轉(zhuǎn),利用離心力把衣服上的水從桶壁的小眼里甩出。全部洗衣工作完成后,由蜂鳴器發(fā)出音響,表示衣物已洗干凈。   
  7. 1.2洗衣機(jī)硬件電路設(shè)計(jì)  
  8.         1.2.1 洗衣機(jī)總體設(shè)計(jì)框圖     
  9.         橢圓型表示指示燈:從上到下依次為強(qiáng)洗、弱洗、洗滌次數(shù)、洗衣定時(shí)、脫水定時(shí)、洗衣剩余時(shí)間、脫水剩余時(shí)間。  電動(dòng)機(jī)正轉(zhuǎn)為強(qiáng)洗,正反交替轉(zhuǎn)動(dòng)設(shè)定為弱洗,初始設(shè)定的狀態(tài)為強(qiáng)洗,若要選擇弱洗模式需按下增加按鍵,再次按下選擇按鍵,則表示洗滌次數(shù)的指示燈被點(diǎn)亮,選擇增加或減少按鍵對(duì)時(shí)間進(jìn)行加減。然后對(duì)脫水時(shí)間設(shè)定,最后按下啟動(dòng)鍵,洗衣機(jī)開始工作。

  10. 1.2.3硬件電路的主要模塊  
  11.         根據(jù)洗衣機(jī)的基本功能,硬件電路設(shè)計(jì)需要考慮:水流強(qiáng)度的問題、洗滌、漂洗、脫水時(shí)間設(shè)定長(zhǎng)短的問題、工作時(shí)間或剩余時(shí)間的顯示、工作過程中的暫停、啟動(dòng)、復(fù)位、洗完后的報(bào)警等問題。  采用5l系列單片機(jī)作為控制核心,主要包括功能設(shè)置及控制電路、洗衣機(jī)狀態(tài)顯示及輸出控制電路。主要組成部件有:?jiǎn)纹瑱C(jī)、74LSl38譯碼器、ULN2003、指示燈、數(shù)碼管、電動(dòng)機(jī)、蜂鳴器以及按鍵等。

  12.         (1)功能設(shè)置及控制電路  
  13.         ①暫停鍵K0,接P3.3,用外部中斷1實(shí)現(xiàn)工作過程的暫停,根據(jù)人的需要可以進(jìn)行手工洗滌;  ②水位開關(guān)K1,接P1.O,水位到位時(shí),K1閉合。在進(jìn)水期間,系統(tǒng)不斷檢測(cè)K1,當(dāng)檢測(cè)到K1閉合就停止進(jìn)水;  ③按鍵K2,接P1.6,作為工作過程中的啟動(dòng)鍵;
  14.         ④按鍵K3是洗衣強(qiáng)度選擇鍵,接P3.4,每按一次代表一種強(qiáng)度。分別是標(biāo)準(zhǔn)、弱洗、強(qiáng)洗和自編,由4個(gè)指示燈進(jìn)行顯示;  ⑤按鍵K4,接P3.5,對(duì)洗衣時(shí)間進(jìn)行設(shè)置,并用數(shù)碼管LEDl和LED2顯示:  
  15.         ⑥按鍵K5,接P3.6,對(duì)漂洗、脫水次數(shù)進(jìn)行設(shè)置,并用數(shù)碼管LEDI顯示;
  16.         ⑦壓電蜂鳴器接P1.7,作為洗衣時(shí)間到以及故障發(fā)生的報(bào)警器。
  17.         (2)洗衣機(jī)狀態(tài)顯示        74LSl38譯碼器為3—8譯碼器,選用它可以解決I/0口線數(shù)量不足問題。從控制要求可知,洗衣機(jī)的工作模式以及工作程序必須有7中不同的顯示加以區(qū)別。74LSl38譯碼器的輸入端C、B、A分別接P1.3、P1.4、P1.5,輸出端分別與7個(gè)發(fā)光二極管DO--D6的陰極相連,發(fā)光二極管陽極接電源。輸出端YO控制D0“弱洗”指示燈:Y1控制D1“標(biāo)準(zhǔn)洗”指示燈,Y2控制D2“強(qiáng)洗”指示燈,Y3控制D3“自編”指示燈,Y4控制D4“洗衣”指示燈,Y5控制D5“漂洗”指 示燈,Y6控制D6“脫水”指示燈
  18.         (3)輸出控制電路  輸出控制電路由觸發(fā)器電路和相應(yīng)的雙向晶閘管組成?刂齐姍C(jī)正反轉(zhuǎn)以及進(jìn)水閥和排水閥的開啟和關(guān)閉。通過觸發(fā)器電路和相應(yīng)的雙向晶閘管,電動(dòng)機(jī)的正轉(zhuǎn)和反轉(zhuǎn)用單片機(jī)P1.1和P1.2進(jìn)行控制;進(jìn)水電磁閥和排水電磁閥用單片機(jī)的P3.0和P3.1進(jìn)行控制

  19. 1.3洗衣機(jī)軟件系統(tǒng)設(shè)計(jì)
  20. 1.3.1主程序設(shè)計(jì)
  21.                 根據(jù)硬件設(shè)計(jì)要求,控制主程序流程圖如圖所示。洗衣機(jī)通電之后,單片機(jī)上電,首先進(jìn)行程序的初始化,包括定時(shí)器O、外部中斷O、外部中斷l(xiāng)的初始化,以及各參數(shù)初值的設(shè)定。默認(rèn)洗衣強(qiáng)度為“標(biāo)準(zhǔn)洗”,漂洗次數(shù)3次。然后掃描K2、K3、K4、K5鍵的狀態(tài),確定洗衣強(qiáng)度R2、洗衣時(shí)間R3和漂洗次數(shù)R4。洗衣機(jī)處于待命狀態(tài),控制指示燈顯示洗衣強(qiáng)度,液晶顯示預(yù)設(shè)洗衣時(shí)間。當(dāng)發(fā)現(xiàn)啟動(dòng)鍵K2按下,洗衣機(jī)從待命狀態(tài)進(jìn)入工作狀態(tài)。完成進(jìn)水——洗滌——脫水——漂洗的循環(huán)過程。當(dāng)洗衣結(jié)束時(shí),控制蜂鳴器發(fā)聲。



  22. */

  23. #include <reg51.h>   //各個(gè)引腳功能定義  
  24. sbit       key_move_stop  = P2^0;  //啟動(dòng)、暫停按鍵
  25. sbit key_wash_dehydration = P2^1;  //洗滌、脫水按鍵  
  26. sbit key_water_detection  = P3^2;  //水位檢測(cè)按鍵  外部中斷0
  27. sbit       key_cap_open   = P3^3;  //機(jī)蓋裝置按鍵  外部中斷1   
  28. sbit LED1 = P0^0;  //啟動(dòng)指示燈 sbit LED2 = P0^1;  //暫停指示燈
  29. sbit LED3 = P0^2;  //洗滌指示燈 sbit LED4 = P0^3;  //脫水指示燈
  30. sbit LED5 = P0^4;  //進(jìn)水閥指示燈 sbit LED6 = P0^5;  //排水閥指示燈
  31. sbit LED7 = P0^6;  //水位滿指示燈 sbit LED8 = P0^7;  //機(jī)蓋松指示燈   
  32. sbit LED9 = P2^7;  //報(bào)警指示燈

  33. sbit LS138A = P2^2;   //數(shù)碼管片選
  34. sbit LS138B = P2^3; sbit LS138C = P2^4;   
  35. sbit BEEP = P2^6;  //蜂鳴器報(bào)警   
  36. sbit PWM = P2^5;    //直流電動(dòng)機(jī)   

  37. //共陰數(shù)碼管 0-9  -  
  38. unsigned int code Disp_Tab[] =  
  39. {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};   

  40. unsigned int i=0,LedNumVal=0;   //數(shù)碼管計(jì)時(shí)  0-9 選擇
  41. unsigned int lednum = 0;  //定時(shí)器0 數(shù)碼管計(jì)時(shí)速率調(diào)控變量
  42. unsigned int  LedOut[3];        //數(shù)碼管計(jì)時(shí)存儲(chǔ)區(qū)   
  43. unsigned char key_s,key_v;   //按鍵掃描變量   
  44. static unsigned int m = 0;   //啟動(dòng)、暫停鍵計(jì)數(shù)變量
  45. static unsigned int movenum = 0; //暫停功能變量

  46. /***********************************************************/
  47. unsigned char scan_key()     //啟動(dòng)/暫停鍵;洗滌/脫水鍵掃描
  48. {  
  49.         unsigned char Key_s;  Key_s = 0x00;   
  50.         Key_s |= key_wash_dehydration;  Key_s <<= 1;  
  51.         Key_s |= key_move_stop;   
  52.         return Key_s;   
  53. }

  54. /************************************************************/
  55. void delay( unsigned int a)    //數(shù)碼掃描延時(shí)子程序
  56. {      
  57.         unsigned char b;     
  58.         for(; a > 0; a--)
  59.                 for(b = 200; b > 0; b--);
  60. }

  61. /**********************************************************/
  62. void delayms( unsigned char ms)  //按鍵消抖延時(shí)子程序
  63. {         
  64.         unsigned char k;  
  65.         while(ms--)  
  66.         {   
  67.                 for(k = 0; k < 120; k++);  
  68.         }
  69. }  

  70. /***********************************************************/
  71. void beep() {  
  72.         unsigned int n = 0;  
  73.         BEEP = 1;LED9 = 1;  
  74.         for(; n<6;n++)  
  75.         {   
  76.                 BEEP = 0;LED9 = 0;   
  77.                 delayms(3000);   
  78.                 BEEP = 1;LED9 = 1;   
  79.                 delayms(1000);   
  80.         }  
  81. }

  82. /*************************************************************/
  83. void led_display_zero()   //數(shù)碼管清零并直流電動(dòng)機(jī)停止 蜂鳴器響三下
  84. {                        
  85.         beep();  
  86.         PWM = 1;  
  87.         while(1)  
  88.         {   
  89.                 unsigned int i = 0;     
  90.                 unsigned int LedNumVal = 0;   
  91.                 PWM = 1;   
  92.                 if(key_wash_dehydration ==0) //洗滌后脫水按下鍵跳出   
  93.                 {     
  94.                         LED3 =1;   
  95.                         LED4 =0;
  96.                         LED6 =0;   break;     
  97.                 }   
  98.   
  99.                 LedOut[0]=Disp_Tab[LedNumVal%1000/100]|0x80;  //百位帶小數(shù)點(diǎn)
  100.                 LedOut[1]=Disp_Tab[LedNumVal%100/10];   //十位
  101.                 LedOut[2]=Disp_Tab[LedNumVal%10];             //個(gè)位  
  102.    
  103.                 for( i=0; i<3; i++)   
  104.                 {         
  105.                         P1= LedOut[i];           
  106.                         switch(i)              
  107.                         {         
  108.                         case 0:LS138A=1; LS138B=0; LS138C=0;  break;                  
  109.                         case 1:LS138A=0; LS138B=1; LS138C=0;  break;                        
  110.                         case 2:LS138A=0; LS138B=0; LS138C=1;  break;   
  111.                         default:break;         
  112.                         }   
  113.                         delay(10);     
  114.                         P1 = 0x00;   
  115.                 }   
  116.         }      
  117. }

  118. /*************************************************************/
  119. void led_display_over()   //數(shù)碼管清零并直流電動(dòng)機(jī)停止 蜂鳴器響三下
  120. {                        
  121.         beep();  
  122.         PWM = 1;  
  123.         while(1)  
  124.         {   
  125.                 unsigned int i = 0;     
  126.                 unsigned int Led = 0;        
  127.                 LED1 = 1; //啟動(dòng)指示燈   
  128.                 LED2 = 1; //暫停指示燈   
  129.                 LED3 = 1; //洗滌指示燈      
  130.                 LED4 = 1; //脫水指示燈     
  131.                 LED5 = 1; //進(jìn)水閥指示燈   
  132.                 LED6 = 1; //排水閥指示燈
  133.                 LED7 = 1; //水位滿指示燈   
  134.                 LED8 = 1; //機(jī)蓋松指示燈   
  135.                 LED9 = 1; //出水閥指示燈     
  136.                 if(key_move_stop ==0) //脫水后按下鍵跳出   
  137.                 {      
  138.                         LED1 = 0; //啟動(dòng)指示燈   
  139.                         LED2 = 1; //暫停指示燈      
  140.                         LED3 = 1; //洗滌指示燈   
  141.                         LED4 = 1; //脫水指示燈   
  142.                         LED5 = 0; //進(jìn)水閥指示燈   
  143.                         LED6 = 1; //排水閥指示燈   
  144.                         LED7 = 1; //水位滿指示燈   
  145.                         LED8 = 1; //機(jī)蓋松指示燈   
  146.                         LED9 = 1;  //報(bào)警指示燈   
  147.                         break;     
  148.                 }     
  149.                 LedOut[0]=Disp_Tab[Led%1000/100]|0x80;  //百位帶小數(shù)點(diǎn)      
  150.                 LedOut[1]=Disp_Tab[Led%100/10];   //十位        
  151.                 LedOut[2]=Disp_Tab[Led%10];      //個(gè)位      
  152.                 for( i=0; i<3; i++)   
  153.                 {         
  154.                         P1= LedOut[i];           
  155.                         switch(i)              
  156.                         {         
  157.                         case 0:LS138A=1; LS138B=0; LS138C=0;  break;                  
  158.                         case 1:LS138A=0; LS138B=1; LS138C=0;  break;                        
  159.                         case 2:LS138A=0; LS138B=0; LS138C=1;  break;   
  160.                         default:break;         
  161.                         }   
  162.                         delay(10);   
  163.                         P1 = 0x00;   
  164.                 }   
  165.         }     
  166. }  

  167. /*************************************************************/
  168. void cap_open()   //數(shù)碼管清零并直流電動(dòng)機(jī)停止 蜂鳴器響三下
  169. {                        
  170.         beep();       //需要復(fù)位跳出  
  171.         PWM = 1;
  172.         while(1)  
  173.         {   
  174.                 unsigned int i = 0;     
  175.                 unsigned int LedNum = 0;   
  176.                 LedOut[0]=Disp_Tab[LedNum%1000/100]|0x80;  //百位帶小數(shù)點(diǎn)      
  177.                 LedOut[1]=Disp_Tab[LedNum%100/10];   //十位        
  178.                 LedOut[2]=Disp_Tab[LedNum%10];       //個(gè)位      
  179.                 for( i=0; i<3; i++)   
  180.                 {         
  181.                         P1= LedOut[i];           
  182.                         switch(i)              
  183.                         {         
  184.                         case 0:LS138A=1; LS138B=0; LS138C=0;  break;                  
  185.                         case 1:LS138A=0; LS138B=1; LS138C=0;  break;                        
  186.                         case 2:LS138A=0; LS138B=0; LS138C=1;  break;   
  187.                         default:break;         
  188.                         }     
  189.                         delay(10);     
  190.                         P1 = 0x00;   
  191.                 }   
  192.         }  
  193. }   

  194. /************************************************************/   
  195. void led_display_move()            //數(shù)碼管計(jì)時(shí)并直流電動(dòng)機(jī)運(yùn)轉(zhuǎn)
  196. {  
  197.         while(1)  
  198.         {     
  199.                 PWM = 0;     
  200.                 if(LedNumVal == 101)        //計(jì)時(shí)到100時(shí)自動(dòng)清零并蜂鳴器響三下   
  201.                 {     
  202.                         LedNumVal = 0;     
  203.                         TR0 = 0;   
  204.                         break;      
  205.                 }         
  206.                 if(key_move_stop ==0)     
  207.                 {      
  208.                         movenum++;
  209.                         if(movenum%2==1)   
  210.                         {   
  211.                                 LED1 = 1; //啟動(dòng)指示燈   
  212.                                 LED2 = 0; //暫停指示燈   
  213.                                 TR0 = 0;  //關(guān)閉定時(shí)器0   
  214.                         }   
  215.                         else   
  216.                         {     
  217.                                 LED1 = 0;   
  218.                                 LED2 = 1;   
  219.                                 TR0 = 1; //開啟定時(shí)器0   
  220.                         }   
  221.                 }   
  222.                 while(key_move_stop ==0); //等待按鍵釋放   
  223.                 LedOut[0]=Disp_Tab[LedNumVal%1000/100]|0x80;  //百位帶小數(shù)點(diǎn)

  224.                 LedOut[1]=Disp_Tab[LedNumVal%100/10];     //十位      
  225.                 LedOut[2]=Disp_Tab[LedNumVal%10];             //個(gè)位      
  226.                 for( i=0; i<3; i++)   
  227.                 {         
  228.                         P1 = LedOut[i];         
  229.                         switch(i)            
  230.                         {           
  231.                         case 0:LS138A=1; LS138B=0; LS138C=0;  break;
  232.                         case 1:LS138A=0; LS138B=1; LS138C=0;  break;
  233.                         case 2:LS138A=0; LS138B=0; LS138C=1;  break;     
  234.                         default:break;      
  235.                         }      
  236.                         delay(10);   
  237.                         P1 = 0x00;   
  238.                 }   
  239.         }     
  240. }

  241. /***********************************************************/
  242. void move_stop_led()
  243. {
  244.         m++;  
  245.         if(m == 1)  
  246.         {      
  247.                 EX0=1;    //外部中斷0允許中斷 水位檢測(cè)   
  248.                 LED1 = 0; //啟動(dòng)指示燈   
  249.                 LED2 = 1; //暫停指示燈      
  250.                 LED3 = 1; //洗滌指示燈   
  251.                 LED4 = 1; //脫水指示燈   
  252.                 LED5 = 0; //進(jìn)水閥指示燈   
  253.                 LED6 = 1; //排水閥指示燈   
  254.                 LED7 = 1; //水位滿指示燈   
  255.                 LED8 = 1; //機(jī)蓋松指示燈   
  256.                 LED9 = 1;  //報(bào)警指示燈   
  257.         }  
  258.         else if((m>1)&&(m%2==1))  
  259.         {   
  260.                 LED1 = 0; //啟動(dòng)指示燈   
  261.                 LED2 = 1; //暫停指示燈   
  262.         }   else  
  263.         {     
  264.                 LED1 = 1;          //啟動(dòng)指示燈   
  265.                 LED2 = 0;          //暫停指示燈      
  266.                 TR0 = 0;           //停止定時(shí)器工作  
  267.         }
  268. }

  269. /**********************************************************/
  270. void wash_dehydration_led()
  271. {  
  272.         static  unsigned int j = 0;  
  273.         j++;  
  274.         if(j%2 == 1)      //啟動(dòng)并洗滌  
  275.         {         
  276.                 LED1 = 0; //啟動(dòng)指示燈   
  277.                 LED2 = 1; //暫停指示燈      
  278.                 LED3 = 0; //洗滌指示燈   
  279.                 LED4 = 1; //脫水指示燈   
  280.                 LED5 = 1; //進(jìn)水閥指示燈   
  281.                 LED6 = 1; //排水閥指示燈   
  282.                 LED7 = 1; //水位滿指示燈
  283.                 LED8 = 1; //機(jī)蓋松指示燈   
  284.                 LED9 = 1;  //報(bào)警指示燈   
  285.                 led_display_move();   
  286.                 led_display_zero();        
  287.         }  
  288.         else          //啟動(dòng)并脫水  
  289.         {   
  290.                 LED1 = 0; //啟動(dòng)指示燈   
  291.                 LED2 = 1; //暫停指示燈      
  292.                 LED3 = 1; //洗滌指示燈   
  293.                 LED4 = 0; //脫水指示燈   
  294.                 LED5 = 1; //進(jìn)水閥指示燈   
  295.                 LED6 = 0; //排水閥指示燈   
  296.                 LED7 = 1; //水位滿指示燈   
  297.                 LED8 = 1; //機(jī)蓋松指示燈   
  298.                 LED9 = 1;  //報(bào)警指示燈   
  299.                 led_display_move();   
  300.                 led_display_over();  
  301.         }
  302. }

  303. /*********************************************************/
  304. void proc_key(unsigned char key_v)
  305. {   
  306.         if((key_v & 0x01) == 0)  
  307.         {    move_stop_led();         
  308.         }     
  309.         else if((key_v & 0x02) == 0)  
  310.         {     if(m%2==1)   
  311.                 {      TR0 = 1;     //定時(shí)器0開始工作      
  312.                         wash_dehydration_led();      
  313.                 }   
  314.         }   
  315. }

  316. /*********************************************************/
  317. main() {        
  318.         IT0 = 1;  //外部中斷0 水位檢測(cè) 跳沿觸發(fā)方式  
  319.         EX0=0;    //不允許外部中斷0中斷   
  320.         IT1 = 1;  //外部中斷1 機(jī)蓋打開 跳沿觸發(fā)方式  
  321.         EX1 = 1;  //允許外部中斷1中斷   
  322.         TMOD = 0x01; //定時(shí)器0 定時(shí)模式 方式1  
  323.         ET0 = 1;     //允許定時(shí)器0中斷  
  324.         TR0 = 0;  //停止定時(shí)器工作   
  325.         TH0 = 0xDB;  
  326.         TL0 = 0xF0;  //10ms   EA=1;     
  327.         P0 = 0xff;  
  328.         key_v = 0x03;   
  329.         LS138A=0;
  330.         LS138B=0;
  331.         LS138C=0;     
  332.         while(1)   
  333.         {
  334.                 key_s = scan_key();   
  335.                 if(key_s != key_v)   
  336.                 {   
  337.                         delayms(10);   
  338.                         key_s = scan_key();   //啟動(dòng)/暫停鍵 洗滌/脫水鍵掃描   
  339.                         if(key_s != key_v)   
  340.                         {   
  341.                                 key_v = key_s;   
  342.                                 proc_key(key_v);      
  343.                                 delayms(30);                  
  344.                         }   
  345.                 }  
  346.         }
  347. }

  348. void  counter0(void) interrupt 0
  349. {        
  350.         EX0=0;     
  351.         LED7 = 0;      //水位滿     
  352.         LED5 = 1;    //進(jìn)水閥指示燈   
  353.         EX0=1;
  354. }   

  355. void time0(void) interrupt 1
  356. {  
  357.         lednum++;  
  358.         TR0 = 0;   
  359.         TH0 = 0xDB;    //10ms  
  360.         TL0 = 0xF0;   
  361.         if(lednum == 50)  
  362.         {   
  363.                 lednum = 0;   
  364.                 LedNumVal++;  
  365.         }   
  366.         TR0 = 1;  
  367. }   

  368. void  counter1(void) interrupt 2
  369. {        
  370.         EX1 = 0;      
  371.         LED1 = 1; //啟動(dòng)指示燈  
  372.         LED2 = 1; //暫停指示燈  
  373.         LED3 = 1; //洗滌指示燈   
  374.         LED4 = 1; //脫水指示燈   
  375.         LED5 = 1; //進(jìn)水閥指示燈   
  376.         LED6 = 1; //排水閥指示燈   
  377.         LED7 = 1; //水位滿指示燈   
  378.         LED8 = 1; //機(jī)蓋松指示燈   
  379.         cap_open();   
  380. }

復(fù)制代碼

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:561135 發(fā)表于 2019-6-13 09:20 來自手機(jī) | 只看該作者
樓主設(shè)計(jì)出來了嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:441292 發(fā)表于 2019-7-3 15:07 | 只看該作者
666樓主設(shè)計(jì)出來了嗎?
回復(fù)

使用道具 舉報(bào)

5#
ID:842796 發(fā)表于 2020-11-20 00:27 | 只看該作者

你好,你有proteus的圖嗎
回復(fù)

使用道具 舉報(bào)

6#
ID:278840 發(fā)表于 2020-11-20 09:25 | 只看該作者
找個(gè)電機(jī)驅(qū)動(dòng)ic,然后學(xué)會(huì)調(diào)速PWM控制,然后學(xué)習(xí)單片機(jī),定時(shí)器,按鍵輸入
回復(fù)

使用道具 舉報(bào)

7#
ID:180919 發(fā)表于 2020-11-20 09:42 | 只看該作者
不錯(cuò),占個(gè)位,抽空測(cè)試看看
回復(fù)

使用道具 舉報(bào)

8#
ID:857357 發(fā)表于 2020-12-9 12:38 | 只看該作者
樓主設(shè)計(jì)出來了嗎?求proteus圖
回復(fù)

使用道具 舉報(bào)

9#
ID:858663 發(fā)表于 2020-12-11 13:13 來自手機(jī) | 只看該作者
二樓難道不是答案么?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表