欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 全自動洗衣機控制器設計的單片機代碼 [打印本頁]

作者: kemal    時間: 2018-6-24 23:28
標題: 全自動洗衣機控制器設計的單片機代碼
基于單片機的洗衣機控制器
采用兩位數碼管顯示洗衣時間,采用驅動芯片控制電機轉動

全自動洗衣機課程設計

    基于51單片機,C語言實現。
基本要求

模擬全自動洗衣機工作過程。以電機替代洗衣機電機。顯示洗衣機工作的狀態(進水、浸泡、洗衣、脫水、結束)。顯示工作剩余時間(洗衣程序可自定義,時間精度:秒)。
洗衣時交替正、反轉。

擴展要求

洗衣和脫水時電機轉速不同。增加水位傳感器輸入。故障報警。增加聲音提示。其它自定義功能。
設計用Preteus仿真:


仿真圖如下:

  1. #include<reg51.h>
  2. //****************************//
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. //*******************************//
  6. //***************************//
  7. sbit mo_r = P3^2;          //電機右控制線
  8. sbit mo_l = P3^3;                //電機左控制線

  9. //****************************//
  10. sbit key_menu = P3^4; // 菜單按鍵
  11. sbit key_on = P3^5;          // 開始按鍵
  12. sbit key_off = P3^6; //         結束按鍵
  13. sbit key_se = P3^7;         //         菜單選擇按鍵

  14. //***************************//
  15. sbit led_in = P0^0;                //        進水指示燈
  16. sbit led_xi = P0^1;           //  洗衣指示燈
  17. sbit led_pao = P0^2;        //        泡洗指示燈
  18. sbit led_xx = P0^3;           //  脫水指示燈
  19. sbit led_out = P0^4;  //   出水指示燈
  20. sbit led_over = P0^5;  // 洗衣結束指示燈
  21. sbit led_work = P0^6;  // 電機工作指示燈
  22. sbit led_wring = P0^7;         //        報警指示燈

  23. sbit other = P3^1;         //         脫水電源控制開關
  24. sbit anther = P3^0;         //        洗衣電源控制開關

  25. //******************************//
  26. uchar code num[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  27.                                                                    //
  28. //*****************************//
  29. char sec = 0;                  //  時間秒
  30. char min = 0;                   // 時間分
  31. uchar count=0;                  //  中斷計數
  32. uchar flag0=0;                  //  洗衣機工作狀態標志
  33. uchar flag1=0;                  //  進水次數標志
  34. uchar flag2=0;                  //  出水次數標志
  35. uchar flag3=0;                 //          泡洗次數標志
  36. uchar err =0;           //        報警標志
  37. uchar quan = 0;//正反轉計數  
  38. //**********************************//
  39. //         函數聲明
  40. //*************************************//
  41. void delay();//        延時函數
  42. void in();        //          進水子程序
  43. void out();         //          出水子程序
  44. void over();  //  結束子程序
  45. void xi();         //          洗衣子程序
  46. void pao();        //         泡衣子程序
  47. void xx(); //        脫水子程序
  48. void on(); //  工作on處理子程序
  49. void se(); //  顯示菜單選擇
  50. void SEG_display();         //顯示時間子程序
  51. void key_scan();   //  按鍵掃描子程序

  52. //*****************************//
  53. //     延時函數
  54. //****************************//
  55. void delay(uint i)
  56. {
  57.         uint x,y;
  58.         for(x=i;x>0;x--)
  59.          for(y=120;y>0;y--);
  60. }

  61. //******************************//
  62. //           工作on處理子程序
  63. //********************************//
  64. void on()
  65. {
  66.         TMOD=0x01;
  67.         TH0=(65536-50000)/256;
  68.         TL0=(65536-50000)%256;
  69.         EA=1;
  70.         ET0=1;
  71.         TR0=1;

  72.         P0 = 0xff;
  73.         if(flag0 == 0)
  74.             in();
  75.         if(flag0 == 1)
  76.             xi();
  77.         if(flag0 == 2)
  78.             pao();
  79.         if(flag0 == 3)
  80.             xx();
  81.         if(flag0 == 4)
  82.             out();
  83.                
  84. }

  85. //*******************************//
  86. //                 結束子程序
  87. //*********************************//
  88. void over()
  89. {        other=0;
  90.         anther=0;
  91.         P0 = 0xff;
  92.         mo_r=0;
  93.         mo_l=0;
  94.         led_over = 0;
  95.         EA=0;

  96. }

  97. //*********************************//
  98. //           進水子程序
  99. //*********************************//
  100. void in()
  101. {        anther=0;
  102.         other=0;
  103.         P0 = 0xff;
  104.         led_in = 0;
  105.         flag1++;
  106.         mo_r = 0;
  107.         mo_l = 0;
  108.         min = 0;
  109.         sec = 8;
  110. }
  111. //*********************************//
  112. //                洗衣子程序
  113. //*********************************//
  114. void xi()
  115. {         anther=1;
  116.          other=0;
  117.      P0 = 0xff;
  118.          led_work = 0;
  119.          led_xi = 0;
  120.          mo_r = 1;
  121.          mo_l = 0;
  122.          min = 1;
  123.          sec = 36;
  124.          quan = 0;
  125. }
  126. //*********************************//
  127. //           泡衣子程序
  128. //*********************************//
  129. void pao()
  130. {        
  131.     anther=1;
  132.         other=0;
  133.         P0 = 0xff;
  134.         led_pao = 0;
  135.         led_work = 0;
  136.         flag3++;
  137.         mo_r = 1;
  138.         mo_l = 0;
  139.         min = 1;
  140.         sec = 35;
  141.         quan = 0;
  142. }
  143. //*********************************//
  144. //                脫水子程序
  145. //*********************************//
  146. void xx()
  147. {        other=1;
  148.         anther=0;
  149.         P0 = 0xff;
  150.         led_xx = 0;
  151.         mo_r = 0;
  152.         mo_l = 1;
  153.         min = 0;
  154.         sec = 50;
  155. }
  156. //*********************************//
  157. //                 出水子程序
  158. //*********************************//
  159. void out()
  160. {        anther=0;
  161.         other=0;
  162.         P0 = 0xff;
  163.         led_out = 0;
  164.         flag2++;
  165.         mo_r = 0;
  166.         mo_l = 0;
  167.         min = 0;
  168.         sec = 5;
  169. }
  170. //*********************************//
  171. //           顯示菜單選擇
  172. //*********************************//
  173. void se()
  174. {
  175.         P0 = 0xff;
  176.         if(flag0 >= 5)
  177.                 flag0 = 0;
  178.         if(flag0 == 0)
  179.         {
  180.                 led_in = 0;
  181.         }
  182.         if(flag0 == 1)
  183.         {
  184.                 led_xi=0;
  185.         }
  186.         if(flag0 == 2)
  187.         {
  188.                 led_pao=0;
  189.         }
  190.         if(flag0 == 3)
  191.         {
  192.                 led_xx=0;
  193.         }
  194.         if(flag0 == 4)
  195.         {
  196.                 led_out=0;
  197.         }
  198. }
  199. //********************************//
  200. //           菜單處理子程序
  201. //**********************************//
  202. void menu()
  203. {        
  204.     min = 0;
  205.         sec = 0;
  206.         mo_r=0;
  207.         mo_l=0;
  208.         SEG_display();

  209.            while(1)
  210.         {
  211.            if(key_on == 0)
  212.                 {
  213.                         delay(5);
  214.                         if(key_on == 0)
  215.                         {
  216.                                 while(!key_on);
  217.                                 on();
  218.                                 break;
  219.                         }
  220.                 }
  221. //**************************//
  222.                 if(key_off == 0)
  223.                 {
  224.                         delay(5);
  225.                         if(key_off == 0)
  226.                         {
  227.                                 while(!key_off);
  228.                                 over();
  229.                                 break;
  230.                         }
  231.                 }
  232. //****************************//
  233.                 if(key_se == 0)
  234.                 {
  235.                         delay(5);
  236.                         if(key_se == 0)
  237.                         {
  238.                                 while(!key_se);
  239.                                 flag0++;
  240.                                 se();
  241.                         }
  242.                 }                                
  243.         }
  244. }
  245. //*********************************//
  246. //                   按鍵掃描子程序
  247. //*********************************//
  248. void key_scan()
  249. {
  250.         if(key_menu == 0)
  251.         {
  252.                 delay(5);
  253.                 if(key_menu == 0)
  254.                 {
  255.                         while(!key_menu);
  256.                         menu();
  257.                 }
  258.         }
  259. //********************************//
  260.         if(key_on == 0)
  261.         {
  262.                 delay(5);
  263.                 if(key_on == 0)
  264.                 {
  265.                         while(!key_on);
  266.                         on();
  267.                 }
  268.         }
  269. //*********************************//
  270.         if(key_off == 0)
  271.         {
  272.                 delay(5);
  273.                 if(key_off == 0)
  274.                 {
  275.                         while(!key_off);
  276.                         over();
  277.                 }
  278.         }
  279. }
  280. //*******************************//
  281. //        顯示子程序
  282. //*********************************//
  283. void SEG_display()
  284. {
  285.         P1=0x01;
  286.         P2 = num[min/10];
  287.         delay(10);
  288.         P1 = 0x02;
  289.         P2 = num[min%10];
  290.         delay(10);
  291.         P1 = 0x04;
  292.         P2 = num[sec/10];
  293.         delay(10);
  294.         P1 = 0x08;
  295.         P2 = num[sec%10];
  296.         delay(10);
  297. }
  298. //*********************************//
  299. //       主函數
  300. //*********************************//
  301. void main()
  302. {
  303.         led_in=0;
  304.         anther=0;
  305.         other=0;
  306.         while(1)
  307.         {
  308.                
  309.                 SEG_display();
  310.                 key_scan();
  311.         }
  312. }
  313. //**********************************//
  314. //            定時器0中斷處理程序
  315. //**********************************//
  316. void timer0() interrupt 1
  317. {
  318.         TH0=(65536-50000)/256;
  319.         TL0=(65536-50000)%256;
  320.         count++;
  321.     if(count==20)
  322.         {        
  323.                  count = 0;
  324.                 sec--;
  325.                 if((flag0==1)||(flag0==2))
  326.                 {
  327.                     quan++;
  328.                         switch(quan)
  329.                          {
  330.                                  case 1:mo_r=1;mo_l=0;break;
  331.                                 case 10:mo_r=0;mo_l=0;break;
  332.                                 case 15:mo_r=0;mo_l=1;break;
  333.                                 case 25:mo_r=0;mo_l=0;break;
  334.                                 default:;
  335.                          }

  336.                         if(quan==30)
  337.                         {
  338.                            quan=0;
  339.                         }

  340.                 }
  341.          //**********************************//
  342.                 if((sec == 0)&&(min != 0))
  343.                 {
  344.                   min--;
  345.                   sec = 59;
  346.                  }
  347.           //**********************************//
  348.                 if((sec<0)&&(min==0)&&(flag0==0))         //進水結束
  349.                 {         
  350.                      switch(flag1)
  351.                          {
  352.                                  case 1:flag0=1;xi();break;
  353.                                 case 2:flag0=2;pao();break;
  354.                                 case 3:flag0=2;pao();break;
  355.                                 case 4:flag0=2;pao();break;
  356.                                 default: err=1;led_wring = 0;
  357.                          }
  358.                 }
  359.          //**********************************//
  360.                 if((sec<0)&&(min==0)&&(flag0==1))   //洗衣結束
  361.                 {         
  362.                      flag0 = 4;
  363.                          out();
  364.                 }
  365.          //**********************************//
  366.                 if((sec<0)&&(min==0)&&(flag0==2))   //泡衣結束
  367.                 {         
  368.                      switch(flag3)
  369.                          {
  370.                                  case 1:flag0=4;out();break;
  371.                                 case 2:flag0=4;out();break;
  372.                                 case 3:flag0=4;out();break;
  373.                                 default: err=1;led_wring = 0;
  374.                          }
  375.                 }
  376.          //**********************************//
  377.                 if((sec<0)&&(min==0)&&(flag0==4))         //出水結束
  378.                 {        
  379.                         switch(flag2)
  380.                          {
  381.                                  case 1:flag0=0;in();break;
  382.                                 case 2:flag0=0;in();break;
  383.                                 case 3:flag0=0;in();break;
  384.                                 case 4:flag0=3;xx();break;

  385.                                 default: err= 1;led_wring = 0;
  386.                          }
  387.                 }
  388.          //***********************************//
  389.                 if((sec<0)&&(min==0)&&(flag0==3))
  390.                 {         sec = 0;
  391.                          over();
  392.                 }

  393.         }
  394. }
復制代碼
介于篇幅所限,詳細內容見附件

洗衣機控制器.zip

77.99 KB, 下載次數: 288, 下載積分: 黑幣 -5

詳細內容


作者: kemal    時間: 2018-6-24 23:29
了解一下
作者: 一二一    時間: 2018-7-7 16:46
有仿真源文件嗎?
作者: 星條旗永不落    時間: 2018-12-27 21:59
感謝分享 課設正用到
作者: s12345800    時間: 2019-5-30 16:29
求仿真源文件啊
作者: 小喬很帥    時間: 2019-6-2 11:29
大佬大佬
作者: 初夏江南    時間: 2019-12-9 08:59
感謝分享,學習了!
作者: haply    時間: 2019-12-23 10:22
各位大佬 壓縮包里都包含哪些資料
作者: zx9330    時間: 2020-2-2 15:50
家里有一臺非自動洗衣機在改造,希望能用得上
作者: 北京朱工    時間: 2020-4-10 16:32
你能開發了嗎,可與我聯系
作者: allen98    時間: 2020-5-9 10:34
感謝技術員的分享
作者: 浮生物語FSWY    時間: 2020-6-6 13:43
圖里面顯示綠色數字的圓形電壓表在ISIS中怎么搜?
作者: 都是混的。    時間: 2020-6-17 21:34
樓主,能發個網盤嗎?




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1