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

標題: 單片機全自動洗衣機控制程序及原理圖等制作資料 [打印本頁]

作者: Mr_zhang    時間: 2017-7-30 16:40
標題: 單片機全自動洗衣機控制程序及原理圖等制作資料
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)


作者: jiangjiaming    時間: 2017-8-1 00:05
謝謝分享!
作者: faridzled    時間: 2017-8-1 04:38
thanks for sharing
作者: danpianji80c51    時間: 2017-8-1 09:27
贊個。!
作者: gujp312365    時間: 2017-8-1 14:46
項目是好,但你定時器里面用while死循環,我是第一次看到,而且程序中的時間用了大量的DELAY來實現,非常不合理的設計
作者: 持勤補拙    時間: 2017-8-3 17:51
謝謝樓主




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 粉嫩粉嫩芽的虎白女18在线视频 | 国产不卡视频 | 欧美在线一区视频 | 久久久一二三 | 完全免费在线视频 | a黄视频 | 久久蜜桃av一区二区天堂 | 色综合天天天天做夜夜夜夜做 | 一本一道久久a久久精品蜜桃 | 久久成| 在线观看欧美一区 | 欧美一级免费看 | 精品一区二区三区四区外站 | 欧美日韩高清一区二区三区 | 九九九视频在线 | 色欧美综合 | av一二三区 | 综合另类| 久久狠狠 | 狠狠爱网址 | 久久久久国产一区二区三区 | 欧美亚洲国产日韩 | 国产免费一区二区 | 伊大人久久| 欧美二区三区 | 日韩视频一区二区三区 | 日韩中文字幕一区二区 | 99热在线播放 | 在线观看免费黄色片 | 欧美激情va永久在线播放 | 亚洲一区国产精品 | 精品日韩一区二区 | 免费三级网 | 久热久热 | 亚洲精品视频在线播放 | a级黄色片在线观看 | 免费网站国产 | 中文在线视频观看 | 成人久久久 | www.中文字幕.com | 亚洲一区精品视频 |