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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機全自動洗衣機控制程序及原理圖等制作資料

  [復制鏈接]
跳轉到指定樓層
樓主
1、利用MCS-51內部定時器定時,實現倒計時的時間控和顯示;
2、能按鍵調整洗衣機洗滌類型;
3、正反轉控制,到時間蜂鳴器報警;

制作成功的全自動洗衣機實物圖:


單片機原理圖:

系統C語言程序:
  1. #include <REG51.H>
  2. #define  uchar unsigned char   //類型定義,方便書寫
  3. #define   uint unsigned int
  4. uchar code roundz[] ={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};   //步進電機正轉控制數組
  5. uchar code roundf[] ={0x08,0x0C,0x04,0x06,0x02,0x03,0x01,0x09};   //步進電機反轉控制數組
  6. uchar code disptab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽極LED顯示器顯示碼
  7. sbit beep=P2^7;
  8. sbit baiwei=P2^0;
  9. sbit shiwei=P2^1;
  10. sbit gewei=P2^2;          //數碼管位選
  11. uint num,sec;      
  12. #define K1 0x06
  13. #define K20x5
  14. #define K3 0x3   //按鍵碼,分別檢測三個按鍵是否有按下
  15. sbit in_water=P3^3;           
  16. sbit out_water=P3^4;
  17. sbit LED_bz=P3^5;
  18. sbit LED_qr=P3^6;
  19. sbit LED_sg=P3^7;        //5個LED燈,分別為進水,出水,標準,輕柔和甩干
  20. //**************基本延遲函數************************************************
  21. void delay(uint dcnt)  // 延遲時間為dcntms
  22. {
  23.     uint i,j;   
  24.     for(i=dcnt;i>0;i--)
  25.         for(j=120;j>0;j--);
  26. }
  27. //************定時器0控制倒計時*****************************************
  28. void count_down() interrupt 1
  29. {
  30.     int count ;
  31.     TH0=(65536-50000)/256;
  32.     TL0=(65536-50000)%256;   //定時器0每50ms產生一次中斷;
  33.     count ++;
  34.     if(count == 20)          //每50*20=1s sec的值減1
  35.     {
  36.         count =0;
  37.         sec--;
  38.         if(sec==0)         //計時結束時,關閉總中斷,電機停止轉動。
  39.         {
  40.             EA=0;
  41.             P0=0xff;
  42.             P1=0xff;
  43.             P2=0xff;
  44.             P3=0xff;
  45.             while(1);
  46.         }           
  47.     }   
  48. }
  49. //***************倒計時的數碼管顯示程序*******************************
  50. void display()  interrupt 3         //利用定時器1來進行數碼管顯示
  51. {
  52.   TH1=(65536-5000)/256;               //每5ms掃描一次
  53.   TL1=(65536-5000)%256;
  54.     num=(num%3);   
  55.     P0=0xff;  //消影   
  56.     switch(num)
  57.     {      
  58.         case 0:
  59.             P0=disptab[sec/100];
  60.             baiwei=1;   shiwei=0;gewei=0;
  61.             break;
  62.         case 1:
  63.             P0=disptab[(sec/10)%10];
  64.             baiwei=0; shiwei=1;  gewei=0;      
  65.             break;
  66.         case 2:
  67.             P0=disptab[sec%10];
  68.              baiwei=0;  shiwei=0; gewei=1;         
  69.             break;
  70.         default:break;
  71.     }
  72.     num++;
  73. }
  74. //************************步進電機正轉控制函數******************************
  75. void RotateWise(uinttime,uchar stepcnt)           //time為轉一步時間,stepcnt為圈數
  76. {
  77.     uchar i ,j;
  78.     for(i=0;i<stepcnt;i++)
  79.     {
  80.         for(j=0;j<8;j++)
  81.         {
  82.             P1= roundz[j] ;
  83.             delay (time);             //更改delay里數值可改變轉速,轉一圈時間為time*8 ms
  84.         }
  85.     }
  86. }
  87. //***********************步進電機反轉控制函數****************************
  88. void ContraRotate(uinttime,uchar stepcnt)  //time為轉一步時間,stepcnt為圈數
  89. {
  90.     uchar i ,j;
  91.     for(i=0;i<stepcnt;i++)
  92.     {
  93.         for(j=0;j<8;j++)
  94.         {
  95.             P1= roundf[j] ;          //更改delay里數值可改變轉速,轉一圈時間為time*8 ms
  96.             delay (time);
  97.         }
  98.     }
  99. }
  100. //**************************洗滌子程序****************************************
  101. void xidi()                  
  102. {
  103.     uint i;
  104.     in_water = 0;         
  105.     delay(9000);           //開水閥,進水9s
  106.     in_water = 1;          //關水閥
  107.     delay(1000);
  108.     for(i=10;i>0;i--)      //轉動十次
  109.     {
  110.     RotateWise(50,10) ;  //正轉10圈,轉速為50ms*8
  111.     delay(1000);             //停止一秒
  112.     ContraRotate(50,10) ;    //反轉10圈,轉速為50ms*8
  113.     delay(1000);
  114.     }   
  115. }
  116. //**************************漂洗子程序****************************************
  117. void piaoxi()
  118. {
  119.     uint i;
  120.     in_water = 0;         
  121.     delay(9000);           //開水閥,進水9s
  122.     in_water = 1;          //關水閥
  123.     delay(1000);
  124.     for(i=5;i>0;i--)       //轉動五次
  125.     {
  126.     RotateWise(100,10) ;     //正轉10圈,轉速為100ms*8
  127.     delay(1000);             //停止一秒
  128.     ContraRotate(100,10) ;   //反轉10圈,轉速為100ms*8
  129.     delay(1000);
  130.     }
  131. }
  132. //*********************脫水子程序*******************************************
  133. void tuoshui()
  134. {
  135.     uint i;
  136.     out_water = 0;        //打開排水閥
  137.     delay(9000);          //排水9s
  138.     for(i=10;i>0;i--)      //轉動十次
  139.     {
  140.     RotateWise(50,10) ;  //正轉10圈,轉速為50ms*8  
  141.     }
  142.     beep=0;
  143.     delay(1000);         //蜂鳴器警報
  144.     beep=1;
  145.     out_water =1 ;       //甩干完畢,關閉水閥
  146. }
  147. //********************標準模式************************************************
  148. void biaozhun()
  149. {   sec=360;             //設定倒計時數目
  150.     LED_bz = 0;         //點亮“標準”LED燈
  151.     xidi();              //洗滌
  152.     piaoxi();
  153.     piaoxi();            //2次漂洗
  154.     tuoshui();           //脫水
  155.     LED_bz=1;            //熄滅LED燈
  156. }
  157. //*********************輕揉模式********************************************
  158. void qingrou()
  159. {   sec=250;           //設定倒計時數目
  160.     LED_qr = 0;        //點亮“輕揉”LED燈
  161.     piaoxi();         
  162.     piaoxi();         //2次漂洗
  163.     tuoshui();        //脫水
  164.     LED_qr = 1;       //熄滅LED燈
  165. }
  166. //**********************甩干模式********************************************
  167. void shuaigan()
  168. {   
  169.     sec=50;              //設定倒計時數目
  170.     LED_sg = 0;          //點亮“甩干”LED燈
  171.     tuoshui();            //脫水
  172.     LED_sg = 1;          //熄滅LED燈
  173. }
  174. //********************鍵盤掃描程序****************************************
  175. uchar scankey()
  176. {
  177.     int key;
  178.     if((P3&0x07)== 0x07)
  179.     return(0xff);               //消抖
  180.     delay(30);
  181.     if((P3&0x07)== 0x07)
  182.     return(0xff);
  183.     key = P3&0x07;
  184.     while ((P3&0x07)!=0x07);    //當有按鍵按下的時候,返回key值,判斷哪個按鍵被按下
  185.     return key;
  186. }
  187. //******************主函數************************************************
  188. void main()
  189. {
  190.     TMOD|=0x11;  //定時器0和定時器1模式  工作方式1
  191.     TH0=(65536-50000)/256;  
  192.     TL0=(65536-50000)%256;  //定時0器寄存器裝初值,每50ms產生一次中斷
  193.     EA=0;                   //關總中斷
  194.     ET0=1;                  //開定時器0中斷
  195.     TH1=(65536-5000)/256;   //定時器1寄存器裝初值,沒5ms產生一次中斷
  196.     TL1=(65536-5000)%256;
  197.     ET1=1;                //打開定時器1中斷
  198.     TR0=1;  
  199.     TR1=1;              //打開定時器0和定時器1
  200.     while(1)
  201.     {      
  202.        uchar key = scankey();
  203.        if (key == K1)
  204.       {     
  205.         EA=1;              //開總中斷[em12]
  206.         biaozhun();
  207.       }     
  208.        if (key == K2)
  209.       {   
  210.        EA=1;
  211.        qingrou();
  212.       }
  213.        if (key == K3)
  214.       {   
  215.        EA=1;
  216.        shuaigan();

  217.       }     }   }  
復制代碼

全部資料下載地址:
main.doc (5.74 KB, 下載次數: 74)

評分

參與人數 1黑幣 +5 收起 理由
LY1259045520 + 5 贊一個!

查看全部評分

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

使用道具 舉報

沙發
ID:221420 發表于 2017-8-1 00:05 | 只看該作者
謝謝分享!
回復

使用道具 舉報

板凳
ID:89286 發表于 2017-8-1 04:38 | 只看該作者
thanks for sharing
回復

使用道具 舉報

地板
ID:222834 發表于 2017-8-1 09:27 | 只看該作者
贊個!!
回復

使用道具 舉報

5#
ID:142320 發表于 2017-8-1 14:46 | 只看該作者
項目是好,但你定時器里面用while死循環,我是第一次看到,而且程序中的時間用了大量的DELAY來實現,非常不合理的設計
回復

使用道具 舉報

6#
ID:130345 發表于 2017-8-3 17:51 | 只看該作者
謝謝樓主
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 狠狠av | 高清一区二区视频 | 99亚洲视频 | 国产伦一区二区三区久久 | 91视频三区 | 欧美亚洲成人网 | 粉嫩粉嫩芽的虎白女18在线视频 | 国产一区二区三区免费视频 | 久久高潮| 秋霞在线一区二区 | 欧美黑人一区二区三区 | 精品国产乱码久久久久久中文 | 国产精品毛片av | 国产激情视频网站 | 欧美日韩精品一区 | 欧美电影免费观看高清 | 一区二区三区精品视频 | 国产欧美精品在线 | 免费观看黄a一级视频 | 欧美亚洲国语精品一区二区 | 亚洲视频免费一区 | 精品一区电影 | 国产精品久久久久久一区二区三区 | 欧美激情一区 | 午夜久草 | 免费成人在线网站 | 国产精品一区久久久久 | 亚洲一区二区三区在线播放 | 蜜桃av人人夜夜澡人人爽 | 色综合色综合色综合 | 亚洲最色网站 | 在线观看av网站永久 | 九色91视频| 中文天堂在线一区 | 成人不卡| 久久亚洲欧美日韩精品专区 | 亚洲高清av | 午夜私人影院 | 成人精品一区二区三区四区 | 亚洲人成人一区二区在线观看 | 国产精品一区二区日韩 |