久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5719|回復: 0
打印 上一主題 下一主題
收起左側

用單片機控制洗衣機的設計報告 含源碼與實物制作

[復制鏈接]
跳轉到指定樓層
樓主
ID:276641 發表于 2018-6-12 17:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  • 用單片機控制洗衣機
  • 項目名稱洗衣機控制
  • 項目內容及要求;
內容
    設自動洗衣機的控制要求是:啟動后先開啟進水閥進水,水位到達設定值后關閉,然后波輪按正轉5秒、反轉5秒,正、反轉之間停3秒的規律不斷循環轉動,直至達到設定時間停止,之后打開排水閥放水,水放完后洗衣桶旋轉脫水,1分鐘后停止并關閉排水閥,洗衣過程結束。要求水位設置不少于高、中、低三檔,洗衣時間在3——12分鐘范圍內可調,以1分鐘為單位,排水時間定為1分鐘。運動執行器用指示燈模擬,水位用開關模擬,試設計該洗衣機的控制電路。
要求
  • 畫出控制系統的框圖,說明系統方案設計的思路、理由或依據;
  • 選擇、確定組成控制系統的各個單元,并闡述選擇確定的原則或依據;
  • 畫出完整的電氣原理圖,介紹整體電路的工作原理、性能或特點;
  • 如采用單片機控制,給出單片機程序的流程圖和清單,說明程序的工作原理。
  • 制作實物電路,驗證設計、制作是否正確。
  • 題目分析及設計思路;(弄清楚要完成設計的技術要點、關鍵是什么,有哪些需要注意的事項,可以采用哪些方法和手段,有哪些可用的方案或電路形式,等等。)

   要完成本項目設計的技術要點是對洗衣機的整個運行流程深刻理解之后,再用程序將他表現出來,說以關鍵就在于程序的編寫。需要注意的是運動執行器是用指示燈模擬,水位用開關模擬,還要求水位設置不少于高、中、低三檔,洗衣時間在3——12分鐘范圍內可調所以大概就要用到6個發光二極管和8個復位按鍵,因此就要對整個流程控制的邏輯順序有個很好的設計。對于程序的編寫可以采用單片機或PLC(就目前所學而言),而對于這樣一個簡單的小程序就采用單片機即可。

  • 方案設計說明;(在充分調研、思考的基礎上確定電路方案并說明理由。畫出電路的系統框圖,說明系統框圖的原理。)

一開始看到這個題目我就打算使用單片機來完成本設計,因為單片機使用方便,只需一個最小系統即可,在宿舍就可完成對程序的編寫和修改,而PLC價格昂貴且不能隨時可用。就本項目采用單片機而言需要一個單片機最小系統,思維數碼管及驅動,一組LED和按鍵。

系統框圖

通過對八個按鍵的操作,可對水位設置,洗衣時間設置,開始洗衣,水位確定。四位數碼管可顯示水位的設置值,洗衣時間設置值,還有洗衣時間計時等。六個LED有兩個表示洗衣機波輪的正反轉,兩個進水和排水,一個脫水,一個洗衣指示燈。通過編寫程序實現單片機對按鍵,四位數碼管和發光二極管的控制。

系統流程圖:



  • 單元設計說明;(按項目的具體要求撰寫,沒有可不寫。)
   單片機最小系統:
   系統框圖:
  最小系統電路圖:
  • 完整電路原理分析;(按項目的具體要求撰寫)
   通過單片機掃描水位設置按鍵和洗衣時間設置按鍵來設置水位和洗衣時間在四位數碼管上顯示設置的值和計時時間。進水閥指示燈亮表示進水閥已打開,正轉和反轉指示燈亮表示洗衣機波輪的正轉和反轉。脫水閥亮表示脫水閥已打開可以排水。
  • 制作、調試情況;(如實介紹,重點介紹制作、調試過程中遇到的問題和解決問題的方法)

在制作,調試中遇到了許多大大小小的問題,在這選一些較為重要的寫出。

  • 在焊接完單片機最小系統進行調試時指示燈不會亮,也不能下載程序,經過幾番檢查發現指示燈正負接反,單片機引腳焊點有虛焊點。
  • 編寫好程序進行調試時,四位數碼管不能正常顯示,經檢查發現共陽的數碼管使用了共陰的數碼管編碼。
  • 在調試程序中,發現四位數碼管顯示較暗且有閃爍,經多次調試,將數碼管顯示程序寫在定時器中斷函數里,發現結果好多了。
  • 在測試程序中發現按鍵不起作用,檢查了程序和硬件電路發現按鍵連接的是地,而程序寫的高電平接通。改了下程序結果就出來了。
  • 實訓成果;(如實介紹實訓成果的情況)
八個按鍵從左到右的作用:按鍵1水位設置和洗衣時間設置切換選擇,按鍵2和按鍵3是加減數值,按鍵4是啟動,按鍵5按鍵6按鍵7按鍵8是表示水位的零水位和高中低水位。
  • 心得體會:

通過本次實訓,收獲頗多,感覺自己有進步了一點,許多東西只用大腦去想是不行的,理論可行但實際可不可行就不知道,這就需要實際動手操作了才知道,一開始看了這個項目覺得很簡單,隨便編寫個程序就可以了,但實際坐下來就沒有那么簡單了,首先硬件電路焊接就出現許多問題,跟別說編寫和調試程序就用了一個多星期。不過實際做出來,感覺還是挺好的。這也讓我進一步了解了單片機的使用,掌握了一些運動控制的思路與方法。

  • 附件:完整程序
  1. #include <reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar gewei,shiwei;
  5. uchar xiyitime,num3;
  6. uchar shuiweizhi,shuiwei;
  7. uint num1,num2;
  8. sbit wei1=P1^0;
  9. sbit wei2=P1^1;
  10. sbit wei3=P1^2;
  11. sbit wei4=P1^3;
  12. sbit shuiwei0=P1^4;              //
  13. sbit shuiwei1=P1^5; //低水位
  14. sbit shuiwei2=P1^6;              //中水位
  15. sbit shuiwei3=P1^7; // 高水位
  16. sbit shezhi_key=P2^0;
  17. sbit qidong_key=P2^1;
  18. //sbit xiyi_key=P2^0;
  19. sbit up_key=P2^2;
  20. sbit down_key=P2^3;
  21. sbit shuifa=P2^4;
  22. sbit paishuifa=P2^5;
  23. sbit zhengzhuang=P2^6;
  24. sbit fanzhuang=P2^7;
  25. sbit tuoshui=P3^6;
  26. sbit zhishiled=P3^7;
  27. //此表為 LED 的字模, 共陰數碼管 0-9  -
  28. unsigned char code segtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,
  29. 0xc6,0xa1,0x86,0x8e}; //段碼控制
  30. unsigned char code segtab1[]={0x40,0x4F,0x24,0x30,0x19,0x12,
  31. 0x02,0x78,0x00,0x10};  //共陰0-9帶小數點編碼
  32. //延時X毫秒函數11.0592Mhz時
  33. void delay_xms(uint xms)
  34. {
  35. uint i,j;
  36. for(i=xms;i>0;i--)
  37.    for(j=110;j>0;j--);
  38. }
  39. //延時X秒函數
  40. void delay_s(uint xs)
  41. {
  42. uint x;
  43. for(x=xs;x>0;x--)
  44.    delay_xms(1000);
  45. }
  46. //延時X分鐘函數
  47. void delay_min(uint xmin)
  48. {
  49. uint m,n;
  50. for(m=xmin;m>0;m--)
  51.    for(n=60;n>0;n--)
  52.      delay_s(1);
  53. }
  54. //取操作數的個十位
  55. void chuli(uint num)
  56. {
  57.   gewei=num%10;
  58.   shiwei=(num/10)%10;
  59. }
  60. //按鍵掃描函數
  61. void keysaomiao()
  62. {
  63. uchar jianzhi;
  64. if(shezhi_key==0)
  65.    {
  66.      delay_xms(10);
  67.               if(!shezhi_key)
  68.                 {
  69.                   jianzhi++;
  70.                             if(jianzhi>2)
  71.                               jianzhi=1;
  72.                   while(!shezhi_key);
  73.                 }
  74.    }
  75.   if(jianzhi==1)              //水位設置
  76.    {
  77.               if(up_key==0)
  78.                  {
  79.                    delay_xms(10);
  80.                    if(up_key==0)
  81.                      {
  82.                                  shuiwei++;
  83.                                  if(shuiwei>3)
  84.                                    {
  85.                                      shuiwei=0;
  86.                                    }
  87.                                  while(!up_key);
  88.                               }
  89.                  }
  90.               if(down_key==0)
  91.                  {
  92.                    delay_xms(10);
  93.                    if(down_key==0)
  94.                      {
  95.                                  if(shuiwei<=0)
  96.                                    {
  97.                                      shuiwei=3;
  98.                                    }
  99.                                  shuiwei--;
  100.                                  while(!down_key);
  101.                                }
  102.                 }
  103.               chuli(shuiwei);
  104.      P0=segtab[gewei];
  105.      wei1=0;
  106.      delay_xms(5);
  107.      wei1=1;
  108.      P0=segtab[shiwei];
  109.      wei2=0;
  110.      delay_xms(5);
  111.      wei2=1;
  112.               P0=0xFE;
  113.      wei3=0;
  114.      delay_xms(5);
  115.      wei3=1;
  116.      P0=0x9C;
  117.      wei4=0;
  118.      delay_xms(5);
  119.      wei4=1;
  120.    }
  121. if(jianzhi==2)
  122.    {
  123.      if(up_key==0)
  124.        {
  125.          delay_xms(10);
  126.                    if(up_key==0)
  127.                      {            
  128.              xiyitime++;
  129.                        if(xiyitime>12)
  130.                          {
  131.                            xiyitime=3;                           
  132.                          }                                            
  133.                        while(!up_key);
  134.            }
  135.        }
  136.      if(down_key==0)
  137.        {
  138.          delay_xms(10);
  139.                    if(down_key==0)
  140.                      {              
  141.              xiyitime--;
  142.              if(xiyitime<3)
  143.                          {
  144.                  xiyitime=12;                             
  145.                                    }
  146.                        while(!down_key);
  147.            }
  148.       }
  149.      chuli(xiyitime);
  150.      P0=segtab[gewei];
  151.      wei1=0;
  152.      delay_xms(5);
  153.      wei1=1;
  154.      P0=segtab[shiwei];
  155.      wei2=0;
  156.      delay_xms(5);
  157.      wei2=1;
  158.               P0=0xF7;
  159.      wei3=0;
  160.      delay_xms(5);
  161.      wei3=1;
  162.      P0=0xA3;
  163.      wei4=0;
  164.      delay_xms(5);
  165.      wei4=1;
  166.    }
  167. }
  168. //水位檢測子函數
  169. void shuiweijiance()
  170. {
  171.   if(shuiwei0==0)
  172.     {
  173.                 delay_xms(10);
  174.                 if(shuiwei0==0)
  175.                   {
  176.                               shuiweizhi=0;
  177.                               while(!shuiwei0);
  178.                             }
  179.               }
  180.   if(shuiwei1==0)
  181.     {
  182.                 delay_xms(10);
  183.                 if(shuiwei1==0)
  184.                   {
  185.                               shuiweizhi=1;
  186.                               while(!shuiwei1);
  187.                             }
  188.               }
  189.   if(shuiwei2==0)
  190.     {
  191.                 delay_xms(10);
  192.                 if(shuiwei2==0)
  193.                   {
  194.                               shuiweizhi=2;
  195.                               while(!shuiwei2);
  196.                             }
  197.               }
  198.   if(shuiwei3==0)
  199.     {
  200.                 delay_xms(10);
  201.                 if(shuiwei3==0)
  202.                   {
  203.                               shuiweizhi=3;
  204.                               while(!shuiwei3);
  205.                             }
  206.               }
  207. }
  208. //初始化函數
  209. void init()
  210. {
  211.    num2=60;
  212.    num3=4;
  213.    shuiweizhi=0;
  214.    xiyitime=3;
  215.    TMOD=0x01;
  216.    //TH0=(65536-45872)/256;//11.0592M晶振
  217.    //TL0=(65536-45872)%256;
  218.    TH0 = 0xB1;//12M晶振
  219.    TL0 = 0xE0;
  220.    EA=1;
  221.    ET0=1;
  222. }
  223. /************主函數**********************/
  224. void main()
  225. {
  226.   uint i,j;
  227.   init();
  228.   P0=0xbf;
  229.   wei1=0;
  230.   wei2=0;
  231.   wei3=0;
  232.   wei4=0;
  233.   while(qidong_key)
  234.      {
  235.        keysaomiao();//水位和洗衣時間設置
  236.               }
  237.    num3=xiyitime-1;
  238.    if(qidong_key==0)
  239.        {
  240.                    delay_xms(10);
  241.                    if(qidong_key==0)//啟動鍵按下
  242.                     {                                                                                                                                                                                         
  243.             shuifa=0; //開進水閥進水
  244.                                 while(shuiwei!=shuiweizhi)//檢測是否到達設定水位
  245.                                   {
  246.                                                         shuiweijiance();
  247.                                                         chuli(shuiweizhi);
  248.                                                         P0=segtab[gewei];
  249.                                                         wei1=0;
  250.                                                         delay_xms(5);
  251.                 wei1=1;
  252.                                                         P0=segtab[shiwei];
  253.                                                         wei2=0;
  254.                                                         delay_xms(5);
  255.                 wei2=1;
  256.                                                         delay_xms(5);
  257.                                                         chuli(shuiwei);
  258.                                                         P0=segtab[gewei];
  259.                 wei3=0;
  260.                 delay_xms(5);
  261.                 wei3=1;
  262.                 P0=segtab[shiwei];
  263.                 wei4=0;
  264.                 delay_xms(5);
  265.                 wei4=1;
  266.                                             }
  267.                                           while(i<100)
  268.                                             {
  269.                                               i++;
  270.                                                         shuiweijiance();
  271.                                                         chuli(shuiweizhi);
  272.                                                         P0=segtab[gewei];
  273.                                                         wei1=0;
  274.                                                         delay_xms(5);
  275.                 wei1=1;
  276.                                                         P0=segtab[shiwei];
  277.                                                         wei2=0;
  278.                                                         delay_xms(5);
  279.                 wei2=1;
  280.                                                         delay_xms(5);
  281.                                                         chuli(shuiwei);
  282.                                                         P0=segtab[gewei];
  283.                 wei3=0;
  284.                 delay_xms(5);
  285.                 wei3=1;
  286.                 P0=segtab[shiwei];
  287.                 wei4=0;
  288.                 delay_xms(5);
  289.                 wei4=1;                                             
  290.                                             }
  291.                                           delay_s(1);                                                                                                
  292.                                           while(j<300)
  293.                                             {
  294.                                                         j++;
  295.                                                         chuli(shuiwei);                                                         
  296.                                                         P0=segtab[gewei];
  297.                                                         wei1=0;
  298.                                                         delay_xms(5);
  299.                                                         wei1=1;
  300.                                                         P0=segtab[shiwei];
  301.                                                         wei2=0;
  302.                                                         delay_xms(5);
  303.                                                         wei2=1;
  304.                                                         chuli(xiyitime);
  305.                                                         P0=segtab[gewei];
  306.                                                         wei3=0;
  307.                                               delay_xms(5);
  308.                                                         wei3=1;
  309.                                                         P0=segtab[shiwei];                                                      
  310.                                                         wei4=0;
  311.                                                         delay_xms(5);                                                      
  312.                                                         wei4=1;                                                                                                                                                               
  313.                                              }
  314.                                           shuifa=1;
  315.                                           zhishiled=0;                                         
  316.                                 TR0=1;
  317.                                 while(!num3==0)
  318.                                   {
  319.                                               if(num2>=59)
  320.                                                           zhengzhuang=0;
  321.                                               if(num2==55)
  322.                                       zhengzhuang=1;
  323.                                                         if(num2==52)
  324.                                                           fanzhuang=0;
  325.                                                         if(num2==46)
  326.                                                           fanzhuang=1;
  327.                                                         if(num2==42)
  328.                                                           zhengzhuang=0;
  329.                                                         if(num2==35)
  330.                                                           zhengzhuang=1;
  331.                                                         if(num2==30)
  332.                                                           fanzhuang=0;
  333.                                                         if(num2==23)
  334.                                                           fanzhuang=1;
  335.                                                         if(num2==19)
  336.                                                           zhengzhuang=0;
  337.                                                         if(num2==13)
  338.                                                           zhengzhuang=1;
  339.                                                         if(num2==9)
  340.                                                           fanzhuang=0;
  341.                                                         if(num2==3)
  342.                                                           fanzhuang=1;
  343.                                   }
  344.                                TR0=0;
  345.                                zhengzhuang=1;
  346.                                fanzhuang=1;
  347.                      paishuifa=0;
  348.                      while(1)
  349.                       {
  350.                                             if(shuiwei0==0)
  351.                                     delay_xms(10);
  352.                                   if(shuiwei0==0)
  353.                                    {
  354.                                                         P0=0xbf;
  355.                                                           wei1=0;
  356.                                                           wei2=0;
  357.                                                           wei3=0;
  358.                                                           wei4=0;
  359.                                                tuoshui=0;
  360.                                                delay_min(1);
  361.                                                tuoshui=1;
  362.                                                paishuifa=1;
  363.                                                         P0=0;
  364.                                                         delay_s(2);
  365.                                                         zhishiled=1;
  366.                                                         break;
  367.                                              }
  368. ……………………

  369. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

完整的Word格式文檔51黑下載地址:
http://www.zg4o1577.cn/bbs/dpj-122928-1.html


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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲综合国产精品 | 韩国理论电影在线 | 成人av一区二区亚洲精 | 91传媒在线观看 | 999久久久久久久 | 国产一区 在线视频 | 国产精品毛片无码 | 国内精品视频在线观看 | 亚洲成人中文字幕 | 午夜一区二区三区在线观看 | 在线视频 欧美日韩 | 龙珠z国语版在线观看 | 秋霞a级毛片在线看 | 在线观看a视频 | 黑人精品欧美一区二区蜜桃 | 亚洲国产成人av好男人在线观看 | 中文一区 | 丝袜 亚洲 欧美 日韩 综合 | 欧美一级全黄 | 黄色a视频 | 成人欧美一区二区三区视频xxx | 欧美日韩亚洲系列 | 激情欧美一区二区三区中文字幕 | 在线婷婷 | 亚洲欧洲中文 | 亚洲欧美中文日韩在线v日本 | 有码在线| 在线免费观看视频黄 | 超碰美女在线 | 91精品国产91久久久久久密臀 | 中文字幕一区二区三区乱码在线 | 激情五月综合 | 91pron在线 | 中文字幕一区二区三区在线观看 | 成人久久18免费网站 | www.国产精品 | 亚洲一区国产精品 | 在线视频91 | 久草资源网站 | 精品在线 | 国产精品亚洲二区 |