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

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

QQ登錄

只需一步,快速開(kāi)始

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

全自動(dòng)洗衣機(jī)控制器設(shè)計(jì)的單片機(jī)代碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:358079 發(fā)表于 2018-6-24 23:28 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
基于單片機(jī)的洗衣機(jī)控制器
采用兩位數(shù)碼管顯示洗衣時(shí)間,采用驅(qū)動(dòng)芯片控制電機(jī)轉(zhuǎn)動(dòng)

全自動(dòng)洗衣機(jī)課程設(shè)計(jì)

    基于51單片機(jī),C語(yǔ)言實(shí)現(xiàn)。
基本要求

模擬全自動(dòng)洗衣機(jī)工作過(guò)程。以電機(jī)替代洗衣機(jī)電機(jī)。顯示洗衣機(jī)工作的狀態(tài)(進(jìn)水、浸泡、洗衣、脫水、結(jié)束)。顯示工作剩余時(shí)間(洗衣程序可自定義,時(shí)間精度:秒)。
洗衣時(shí)交替正、反轉(zhuǎn)。

擴(kuò)展要求

洗衣和脫水時(shí)電機(jī)轉(zhuǎn)速不同。增加水位傳感器輸入。故障報(bào)警。增加聲音提示。其它自定義功能。
設(shè)計(jì)用Preteus仿真:


仿真圖如下:

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

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

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

  14. //***************************//
  15. sbit led_in = P0^0;                //        進(jìn)水指示燈
  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;  // 洗衣結(jié)束指示燈
  21. sbit led_work = P0^6;  // 電機(jī)工作指示燈
  22. sbit led_wring = P0^7;         //        報(bào)警指示燈

  23. sbit other = P3^1;         //         脫水電源控制開(kāi)關(guān)
  24. sbit anther = P3^0;         //        洗衣電源控制開(kāi)關(guān)

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

  52. //*****************************//
  53. //     延時(shí)函數(shù)
  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. //                 結(jié)束子程序
  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. //           進(jìn)水子程序
  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. //       主函數(shù)
  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. //            定時(shí)器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))         //進(jìn)水結(jié)束
  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))   //洗衣結(jié)束
  361.                 {         
  362.                      flag0 = 4;
  363.                          out();
  364.                 }
  365.          //**********************************//
  366.                 if((sec<0)&&(min==0)&&(flag0==2))   //泡衣結(jié)束
  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))         //出水結(jié)束
  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. }
復(fù)制代碼
介于篇幅所限,詳細(xì)內(nèi)容見(jiàn)附件

洗衣機(jī)控制器.zip

77.99 KB, 下載次數(shù): 288, 下載積分: 黑幣 -5

詳細(xì)內(nèi)容

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏11 分享淘帖 頂3 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:358079 發(fā)表于 2018-6-24 23:29 | 只看該作者
了解一下
回復(fù)

使用道具 舉報(bào)

板凳
ID:365546 發(fā)表于 2018-7-7 16:46 | 只看該作者
有仿真源文件嗎?
回復(fù)

使用道具 舉報(bào)

地板
ID:63679 發(fā)表于 2018-12-27 21:59 | 只看該作者
感謝分享 課設(shè)正用到
回復(fù)

使用道具 舉報(bào)

5#
ID:551167 發(fā)表于 2019-5-30 16:29 | 只看該作者
求仿真源文件啊
回復(fù)

使用道具 舉報(bào)

6#
ID:552908 發(fā)表于 2019-6-2 11:29 | 只看該作者
大佬大佬
回復(fù)

使用道具 舉報(bào)

7#
ID:657280 發(fā)表于 2019-12-9 08:59 | 只看該作者
感謝分享,學(xué)習(xí)了!
回復(fù)

使用道具 舉報(bào)

8#
ID:671012 發(fā)表于 2019-12-23 10:22 | 只看該作者
各位大佬 壓縮包里都包含哪些資料
回復(fù)

使用道具 舉報(bào)

9#
ID:327070 發(fā)表于 2020-2-2 15:50 | 只看該作者
家里有一臺(tái)非自動(dòng)洗衣機(jī)在改造,希望能用得上
回復(fù)

使用道具 舉報(bào)

10#
ID:725187 發(fā)表于 2020-4-10 16:32 | 只看該作者
你能開(kāi)發(fā)了嗎,可與我聯(lián)系
回復(fù)

使用道具 舉報(bào)

11#
ID:668601 發(fā)表于 2020-5-9 10:34 | 只看該作者
感謝技術(shù)員的分享
回復(fù)

使用道具 舉報(bào)

12#
ID:769582 發(fā)表于 2020-6-6 13:43 | 只看該作者
圖里面顯示綠色數(shù)字的圓形電壓表在ISIS中怎么搜?
回復(fù)

使用道具 舉報(bào)

13#
ID:782307 發(fā)表于 2020-6-17 21:34 | 只看該作者
樓主,能發(fā)個(gè)網(wǎng)盤嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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