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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3980|回復(fù): 0
收起左側(cè)

基于單片機(jī)的洗衣機(jī)的proteus仿真和源碼

[復(fù)制鏈接]
ID:321836 發(fā)表于 2018-5-29 09:52 | 顯示全部樓層 |閱讀模式
實(shí)現(xiàn)洗衣機(jī)常用功能,C源代碼+Proteus仿真,可以在此設(shè)計(jì)基礎(chǔ)上適當(dāng)增減功能,實(shí)現(xiàn)洗衣機(jī)的控制!
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. //按鍵引腳
  3. sbit key_1 = P1^4;
  4. sbit key_2 = P1^5;
  5. sbit key_3 = P1^6;
  6. sbit key_4 = P1^7;

  7. //電機(jī)引腳
  8. sbit b_1 = P1^0;
  9. sbit b_2 = P1^1;
  10. sbit b_3 = P1^2;
  11. sbit b_4 = P1^3;

  12. sbit BEEP = P2^0;
  13. sbit led_1 = P2^1;
  14. sbit led_2 = P2^2;
  15. sbit led_3 = P2^3;
  16. sbit led_4 = P2^4;

  17. sbit w_1 = P2^6;//位選引腳
  18. sbit w_2 = P2^7; //位選引腳

  19. sbit power_1 = P3^6; //加水
  20. sbit power_2 = P3^7; //脫水
  21. int count = 0;
  22. char flag=0;        //當(dāng)前層
  23. char number=0;
  24. char bit_1 = 0;//位選
  25. char bit_2 = 0;//位選

  26. int time = 0;
  27. int time_1 = 1*60; //12分鐘 洗滌時(shí)間
  28. int time_2 = 1*60; //6分鐘 漂洗時(shí)間
  29. int time_3 = 20; //3分鐘 脫水時(shí)間

  30. char start = 0; //報(bào)警標(biāo)量
  31. //int time_4 = 12*60; //12分鐘 洗滌時(shí)間
  32. //數(shù)碼管a--f
  33. unsigned char dis[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};        //數(shù)碼管引腳定義 0123456789 -
  34. void Delay10ms(unsigned char d)   //誤差 0us
  35. {
  36.     unsigned char a, b,c;
  37.                 //正傳按鍵按下
  38.                  if(key_1==0)
  39.                  {
  40.                          while(key_1==0);  //等待正傳按鍵抬起
  41.                         flag = 1;          //狀態(tài)標(biāo)量
  42.                  }
  43.                  if(key_2==0)
  44.                  {
  45.                          while(key_2==0);
  46.                         flag = 2;
  47.                  }
  48.                  if(key_3==0)
  49.                  {
  50.                          while(key_3==0);
  51.                         flag = 0;
  52.                  }
  53.         //--c已經(jīng)在傳遞過來的時(shí)候已經(jīng)賦值了,所以在for語句第一句就不用賦值了--//
  54.     for (c=d;c>0;c--)
  55.         {
  56.                 for (b=38;b>0;b--)
  57.                 {
  58.                         for (a=130;a>0;a--);
  59.                 }         
  60.         }      
  61. }
  62. //電機(jī)正轉(zhuǎn)                 A-B-C-D循環(huán)
  63. void dianji_z(unsigned char time)
  64. {
  65.         b_1 = 1;
  66.         b_2 = 0;
  67.         b_3 = 0;
  68.         b_4 = 0;
  69.         Delay10ms(time);
  70.         b_1 = 0;
  71.         b_2 = 1;
  72.         b_3 = 0;
  73.         b_4 = 0;
  74.         Delay10ms(time);
  75.         b_1 = 0;
  76.         b_2 = 0;
  77.         b_3 = 1;
  78.         b_4 = 0;
  79.         Delay10ms(time);
  80.         b_1 = 0;
  81.         b_2 = 0;
  82.         b_3 = 0;
  83.         b_4 = 1;
  84.         Delay10ms(time);
  85. }
  86. //電機(jī)反轉(zhuǎn)                 A-B-C-D循環(huán)
  87. void dianji_f(unsigned char time)
  88. {
  89.         b_1 = 0;
  90.         b_2 = 0;
  91.         b_3 = 0;
  92.         b_4 = 1;
  93.         Delay10ms(time);
  94.         b_1 = 0;
  95.         b_2 = 0;
  96.         b_3 = 1;
  97.         b_4 = 0;
  98.         Delay10ms(time);
  99.         b_1 = 0;
  100.         b_2 = 1;
  101.         b_3 = 0;
  102.         b_4 = 0;
  103.         Delay10ms(time);
  104.         b_1 = 1;
  105.         b_2 = 0;
  106.         b_3 = 0;
  107.         b_4 = 0;
  108.         Delay10ms(time);
  109. }
  110. //洗滌模式 漂洗模式
  111. void xidi()
  112. {
  113.         int  i; //用于for循環(huán)變量
  114.         for(i=0;i<10;i++)        //正轉(zhuǎn)10s
  115.                 dianji_z(25); //1S
  116.         for(i=0;i<5;i++)        //反轉(zhuǎn)5s
  117.                 Delay10ms(100); //1S
  118.         for(i=0;i<10;i++)        //反轉(zhuǎn)10s
  119.                 dianji_f(25); //1S
  120.         for(i=0;i<5;i++)        //反轉(zhuǎn)5s
  121.                 Delay10ms(100); //1S
  122. }

  123. void main(void)
  124. {
  125.         int  i; //用于for循環(huán)變量
  126.            TMOD = 0X01;           //設(shè)置定時(shí)器T0  16位
  127.         EA = 1;                           //打開中斷
  128.         ET0 = 1;                   //打開TO定時(shí)器
  129.         TR0 = 1;                   //關(guān)閉中斷
  130.         TH0 = (65536-5000)/256;
  131.         TL0 = (65536-5000)%256;
  132.                                                                           
  133.         BEEP = 0;//蜂鳴器 不響
  134.         led_1 = led_2 = led_3 = led_4 = 0; //指示燈 全滅

  135.         while(1)
  136.         {
  137.                  //開始檢測
  138.                   if(key_1==0)
  139.                  {
  140.                          while(key_1==0);
  141.                         power_2 = 1; //脫水關(guān)
  142.                         power_1 = 0;  //加水
  143.                         start = 1;
  144.                         //檢測到水位
  145.                         if(key_4==0)
  146.                         {
  147.                                 while(key_4==0); //水位加滿
  148.                                 power_1 = 1;  //停止加水
  149.                         }

  150.                         for(i=0;i<3;i++)  //洗滌 漂洗 三次
  151.                         {
  152.                                 //洗滌模式
  153.                                 time = time_1;
  154.                                 led_1 = 1;
  155.                                 led_2 = led_3 = 0;
  156.                                 for(;;)
  157.                                 {
  158.                                         xidi();
  159.                                         if(time==0)
  160.                                                 break;
  161.                                 }
  162.                                 //漂洗模式
  163.                                 time = time_2;
  164.                                 led_2 = 1;
  165.                                 led_1 = led_3 = 0;
  166.                                 for(;;)
  167.                                 {
  168.                                         xidi();
  169.                                         if(time==0)
  170.                                         break;
  171.                                 }
  172.                         }
  173.                         led_1 = led_2 = 0;
  174.                         led_3 =        1;
  175.                         power_2 = 0; //啟動脫水
  176.                         power_1 = 1;  //不加水
  177.                         time = time_3;
  178.                         for(;;)
  179.                         {
  180.                                 if(time==0)
  181.                                         break;
  182.                                  Delay10ms(10);                   //延時(shí)100ms       
  183.                         }
  184.                         led_3 =        0;
  185.                         start = 0;
  186.                  }
  187.                  Delay10ms(10);                   //延時(shí)100ms               
  188.         }
  189. }


  190. //中斷函數(shù)
  191. void delay1s(void) interrupt 1
  192. {
  193.         TH0 = (65536-5000)/256;                           //5ms產(chǎn)生一次中斷  用于數(shù)碼管動態(tài)掃描
  194.         TL0 = (65536-5000)%256;                           //5ms產(chǎn)生一次中斷  用于數(shù)碼管動態(tài)掃描
  195.         count++;

  196.         if(count>=200)                           //1S時(shí)間變小
  197.         {
  198.                  count = 0;

  199.                 if(time>0)
  200.                         time--;

  201.                 if(time>60)         //顯示分鐘
  202.                 {
  203.                         bit_1 = (time/60)/10;
  204.                         bit_2 = (time/60)%10;
  205.                 }
  206.                 else if(time<60) //顯示秒
  207.                 {
  208.                         bit_1 = (time%60)/10;
  209.                         bit_2 = (time%60)%10;
  210.                 }
  211.         }
  212.         w_1 = w_2 = 0;
  213.         switch(count % 2)
  214.         {
  215.                 case 0:                                          //數(shù)碼管1位                                                               
  216.                        
  217.                                 w_1 = 1;
  218.                                 w_2 = 0;       
  219.                                 P0 = dis[bit_1];               
  220.                                 break;
  221.                 case 1:                                          //數(shù)碼管1位                                                               
  222.                                 w_1 = 0;
  223.                                 w_2 = 1;       
  224.                                 P0 = dis[bit_2];               
  225.                                 break;       
  226.         }

  227.         //檢測蓋子打開 報(bào)警
  228.         if((key_3==0)&&(start==1))
  229.         {
  230.                 led_4 = 1;  //報(bào)警指示燈
  231.                 BEEP = 1; //報(bào)警
  232.         }
  233.         else
  234.         {
  235.                 led_4 = 0;  //報(bào)警指示燈 不亮
  236.                 BEEP = 0; //不報(bào)警       
  237.         }
  238. }
復(fù)制代碼
0.png

所有資料51hei提供下載:

Exam1.rar (189.32 KB, 下載次數(shù): 125)


回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产大片黄色 | 亚洲天堂色 | 国产精品一区视频 | 久久久久国产精品 | 成人在线视频免费观看 | 精品国产一区二区三区久久影院 | 波多野结衣精品在线 | 久久久久国产一区二区三区 | 亚洲图片视频一区 | 黄色一级在线播放 | 国产精品久久久久无码av | 欧美精品一区二区蜜桃 | 日本三级电影免费观看 | 91精品国产一区二区三区 | 在线视频中文字幕 | 欧美精品乱码99久久影院 | 91视频观看 | 亚洲福利| 午夜精品一区二区三区免费视频 | 美女爽到呻吟久久久久 | 97久久精品午夜一区二区 | 欧美成人a∨高清免费观看 欧美日韩中 | 亚洲视频二区 | 久久国产精品免费 | 日韩影院在线观看 | 日韩中文在线视频 | 精品婷婷| 天天爱天天操 | 在线观看av中文字幕 | 欧美日韩亚洲视频 | 国产精品欧美大片 | 作爱视频免费观看 | 精品一区二区免费视频 | 成人一级毛片 | 国产精品视频专区 | 久久夜夜| 欧美精选一区二区 | 视频一区二区三区中文字幕 | 免费av手机在线观看 | 久久激情视频 | 久久久久国产 |