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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

簡單洗衣機控制基于單片機

[復制鏈接]
跳轉到指定樓層
樓主
本帖最后由 席成 于 2018-6-12 08:58 編輯

洗衣機內容
    設自動洗衣機的控制要求是:啟動后先開啟進水閥進水,水位到達設定值后關閉,然后波輪按正轉5秒、反轉5秒,正、反轉之間停3秒的規律不斷循環轉動,直至達到設定時間停止,之后打開排水閥放水,水放完后洗衣桶旋轉脫水,1分鐘后停止并關閉排水閥,洗衣過程結束。要求水位設置不少于高、中、低三檔,洗衣時間在3——12分鐘范圍內可調,以1分鐘為單位,排水時間定為1分鐘。運動執行器用指示燈模擬,水位用開關模擬,試設計該洗衣機的控制電路。
  洗衣機要求:
1. 畫出控制系統的框圖,說明系統方案設計的思路、理由或依據;
2. 選擇、確定組成控制系統的各個單元,并闡述選擇確定的原則或依據;
3. 畫出完整的電氣原理圖,介紹整體電路的工作原理、性能或特點;
4. 如采用單片機控制,給出單片機程序的流程圖和清單,說明程序的工作原理。
5. 制作實物電路,驗證設計、制作是否正確。
  完整程序:
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar gewei,shiwei;
uchar xiyitime,num3;
uchar shuiweizhi,shuiwei;
uint num1,num2;
sbit wei1=P1^0;
sbit wei2=P1^1;
sbit wei3=P1^2;
sbit wei4=P1^3;
sbit shuiwei0=P1^4;        //
sbit shuiwei1=P1^5; //低水位
sbit shuiwei2=P1^6;        //中水位
sbit shuiwei3=P1^7; // 高水位
sbit shezhi_key=P2^0;
sbit qidong_key=P2^1;
//sbit xiyi_key=P2^0;
sbit up_key=P2^2;
sbit down_key=P2^3;
sbit shuifa=P2^4;
sbit paishuifa=P2^5;
sbit zhengzhuang=P2^6;
sbit fanzhuang=P2^7;
sbit tuoshui=P3^6;
sbit zhishiled=P3^7;
//此表為 LED 的字模, 共陰數碼管 0-9  -
unsigned char code segtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e}; //段碼控制
unsigned char code segtab1[]={0x40,0x4F,0x24,0x30,0x19,0x12,
0x02,0x78,0x00,0x10};  //共陰0-9帶小數點編碼
//延時X毫秒函數11.0592Mhz
void delay_xms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
   for(j=110;j>0;j--);
}
//延時X秒函數
void delay_s(uint xs)
{
uint x;
for(x=xs;x>0;x--)
   delay_xms(1000);
}
//延時X分鐘函數
void delay_min(uint xmin)
{
uint m,n;
for(m=xmin;m>0;m--)
   for(n=60;n>0;n--)
     delay_s(1);
}
//取操作數的個十位
void chuli(uint num)
{
  gewei=num%10;
  shiwei=(num/10)%10;
}
//按鍵掃描函數
void keysaomiao()
{
uchar jianzhi;
if(shezhi_key==0)
   {
     delay_xms(10);
         if(!shezhi_key)
          {
            jianzhi++;
                if(jianzhi>2)
                  jianzhi=1;
            while(!shezhi_key);
          }
   }
  if(jianzhi==1)        //水位設置
   {
         if(up_key==0)
           {
             delay_xms(10);
             if(up_key==0)
               {
                     shuiwei++;
                     if(shuiwei>3)
                       {
                         shuiwei=0;
                       }
                     while(!up_key);
                  }
           }
         if(down_key==0)
           {
             delay_xms(10);
             if(down_key==0)
               {
                     if(shuiwei<=0)
                       {
                         shuiwei=3;
                       }
                     shuiwei--;
                     while(!down_key);
                   }
          }
         chuli(shuiwei);
     P0=segtab[gewei];
     wei1=0;
     delay_xms(5);
     wei1=1;  
     P0=segtab[shiwei];
     wei2=0;
     delay_xms(5);
     wei2=1;
         P0=0xFE;
     wei3=0;
     delay_xms(5);
     wei3=1;
     P0=0x9C;
     wei4=0;
     delay_xms(5);
     wei4=1;
   }
if(jianzhi==2)
   {
     if(up_key==0)
       {
         delay_xms(10);
             if(up_key==0)
               {         
             xiyitime++;
                 if(xiyitime>12)
                   {
                     xiyitime=3;                 
                   }                          
                 while(!up_key);
           }
       }
     if(down_key==0)
       {
         delay_xms(10);
             if(down_key==0)
               {          
             xiyitime--;
             if(xiyitime<3)
                   {
                 xiyitime=12;                  
                       }
                 while(!down_key);
           }
      }
     chuli(xiyitime);
     P0=segtab[gewei];
     wei1=0;
     delay_xms(5);
     wei1=1;  
     P0=segtab[shiwei];
     wei2=0;
     delay_xms(5);
     wei2=1;
         P0=0xF7;
     wei3=0;
     delay_xms(5);
     wei3=1;
     P0=0xA3;
     wei4=0;
     delay_xms(5);
     wei4=1;
   }
}
//水位檢測子函數
void shuiweijiance()
{
  if(shuiwei0==0)
    {
          delay_xms(10);
          if(shuiwei0==0)
            {
                  shuiweizhi=0;
                  while(!shuiwei0);
                }
        }
  if(shuiwei1==0)
    {
          delay_xms(10);
          if(shuiwei1==0)
            {
                  shuiweizhi=1;
                  while(!shuiwei1);
                }
        }
  if(shuiwei2==0)
    {
          delay_xms(10);
          if(shuiwei2==0)
            {
                  shuiweizhi=2;
                  while(!shuiwei2);
                }
        }
  if(shuiwei3==0)
    {
          delay_xms(10);
          if(shuiwei3==0)
            {
                  shuiweizhi=3;
                  while(!shuiwei3);
                }
        }
}
//初始化函數
void init()
{
   num2=60;
   num3=4;
   shuiweizhi=0;
   xiyitime=3;
   TMOD=0x01;
   //TH0=(65536-45872)/256;//11.0592M晶振
   //TL0=(65536-45872)%256;
   TH0 = 0xB1;//12M晶振
   TL0 = 0xE0;
   EA=1;
   ET0=1;
}
/************主函數**********************/
void main()
{
  uint i,j;
  init();
  P0=0xbf;
  wei1=0;
  wei2=0;
  wei3=0;
  wei4=0;
  while(qidong_key)
     {
       keysaomiao();//水位和洗衣時間設置
         }
   num3=xiyitime-1;
   if(qidong_key==0)
       {
             delay_xms(10);
             if(qidong_key==0)//啟動鍵按下
              {                                                                                                             
            shuifa=0; //開進水閥進水
                    while(shuiwei!=shuiweizhi)//檢測是否到達設定水位
                      {
                                shuiweijiance();
                                chuli(shuiweizhi);
                                P0=segtab[gewei];
                                wei1=0;
                                delay_xms(5);
                wei1=1;
                                P0=segtab[shiwei];
                                wei2=0;
                                delay_xms(5);
                wei2=1;
                                delay_xms(5);
                                chuli(shuiwei);
                                P0=segtab[gewei];
                wei3=0;
                delay_xms(5);
                wei3=1;  
                P0=segtab[shiwei];
                wei4=0;
                delay_xms(5);
                wei4=1;
                          }
                        while(i<100)
                          {
                            i++;
                                shuiweijiance();
                                chuli(shuiweizhi);
                                P0=segtab[gewei];
                                wei1=0;
                                delay_xms(5);
                wei1=1;
                                P0=segtab[shiwei];
                                wei2=0;
                                delay_xms(5);
                wei2=1;
                                delay_xms(5);
                                chuli(shuiwei);
                                P0=segtab[gewei];
                wei3=0;
                delay_xms(5);
                wei3=1;  
                P0=segtab[shiwei];
                wei4=0;
                delay_xms(5);
                wei4=1;                            
                          }
                        delay_s(1);                                                         
                        while(j<300)
                          {
                                j++;
                                chuli(shuiwei);                                 
                                P0=segtab[gewei];
                                wei1=0;
                                delay_xms(5);
                                wei1=1;
                                P0=segtab[shiwei];
                                wei2=0;
                                delay_xms(5);
                                wei2=1;
                                chuli(xiyitime);
                                P0=segtab[gewei];
                                wei3=0;
                            delay_xms(5);
                                wei3=1;
                                P0=segtab[shiwei];                                 
                                wei4=0;
                                delay_xms(5);                                 
                                wei4=1;                                                                                                
                           }
                        shuifa=1;
                        zhishiled=0;                       
                    TR0=1;
                    while(!num3==0)
                      {
                            if(num2>=59)
                                  zhengzhuang=0;
                            if(num2==55)
                          zhengzhuang=1;
                                if(num2==52)
                                  fanzhuang=0;
                                if(num2==46)
                                  fanzhuang=1;
                                if(num2==42)
                                  zhengzhuang=0;
                                if(num2==35)
                                  zhengzhuang=1;
                                if(num2==30)
                                  fanzhuang=0;
                                if(num2==23)
                                  fanzhuang=1;
                                if(num2==19)
                                  zhengzhuang=0;
                                if(num2==13)
                                  zhengzhuang=1;
                                if(num2==9)
                                  fanzhuang=0;
                                if(num2==3)
                                  fanzhuang=1;
                      }
                   TR0=0;
                   zhengzhuang=1;
                   fanzhuang=1;
               paishuifa=0;
               while(1)
                {
                          if(shuiwei0==0)
                        delay_xms(10);
                      if(shuiwei0==0)
                       {
                                 P0=0xbf;
                                   wei1=0;
                                   wei2=0;
                                    wei3=0;
                                   wei4=0;
                             tuoshui=0;
                             delay_min(1);
                             tuoshui=1;
                             paishuifa=1;
                                 P0=0;
                                 delay_s(2);
                                 zhishiled=1;
                                 break;
                            }
                   }
            }
          }  
}       
void zhongduangT0() interrupt 1
{
   //TH0=(65536-45872)/256;//11.0592M晶振
   //TL0=(65536-45872)%256;
   TH0 = 0xB1;//12M晶振
   TL0 = 0xE0;
   num1++;
   if(num1>=50)
    {                            
          num2--;
          num1=0;
          if(num2<=0)
            {                  
                  num2=59;
                  num3--;
                  if(num3==0)
                    {
                          TR0=0;
                        }
                }
    }
         chuli(num2);
         wei1=0;
         P0=segtab[gewei];                                 
         delay_xms(4);
         wei1=1;
         wei2=0;
         P0=segtab[shiwei];                            
         delay_xms(4);
     wei2=1;
         chuli(num3);
         wei3=0;
         P0=segtab1[gewei];                                 
         delay_xms(4);
         wei3=1;
         wei4=0;
         P0=segtab[shiwei];
     delay_xms(4);
         wei4=1;
}

圖片1.png (20.84 KB, 下載次數: 64)

流程圖

流程圖

簡單洗衣機控制基于單片機.doc

1.12 MB, 下載次數: 63, 下載積分: 黑幣 -5

文件

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费亚洲一区二区 | 国产精品日本一区二区在线播放 | 美女视频网站久久 | 午夜影院在线观看版 | 国产精品久久久久久久久久久久冷 | 国产 欧美 日韩 一区 | 精品国产乱码久久久久久闺蜜 | 久久久在线视频 | 日本中出视频 | 国产目拍亚洲精品99久久精品 | 国产一区二区美女 | 性色网站 | 蜜臀网 | 成人在线免费视频观看 | 久久精品国产久精国产 | 精品一区国产 | 国产精品五月天 | av中文字幕在线 | 国产中文字幕在线观看 | 国产精品 亚洲一区 | 亚洲一区二区三区免费在线 | 91porn成人精品| 91精品久久久久久久久久 | 亚洲色图婷婷 | 激情网站在线观看 | 国产欧美一区二区三区久久手机版 | 国产免费一区二区 | 国产精品一区二区电影 | 激情五月综合 | av国产精品毛片一区二区小说 | www.狠狠操 | 五月激情婷婷在线 | 日韩手机在线看片 | 亚洲激情一区二区三区 | 亚洲精品国产第一综合99久久 | 午夜视频网站 | 亚洲福利av | 中文字幕一区二区三区四区五区 | 久热久热 | 婷婷成人在线 | 精品一区二区三区四区在线 |