打印

洗衣机课设,请大家帮帮忙改改错,谢谢

[复制链接]
1260|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
624624624|  楼主 | 2019-4-18 15:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
经过2个星期逼着自己学习c51,写了老师的课设,就是我以前发的那个洗衣机的然后写了这个程序,无奈啊,想让大家帮帮忙改一改啥的,写的不好,就别喷了  
然后我们学校实验室比较简陋,好像是电动机只能用什么AD还是DA吧,好像不让用P3口好像,然后我也不会写电动机这一块了,写的比较垃圾,洗衣时间算的也不咋明白,帮帮忙,救救孩子吧。
一、洗衣机控制系统设计

设计内容:

1、用直流电机的转速表征三种不同洗衣方式,弱洗、强洗、漂洗;

2、用三个独立按键设置待洗衣物的不同洗涤方式:(40分)

丝质衣服:漂洗定时3秒

棉质衣服:弱洗2秒;强洗5秒;漂洗3秒;

化纤衣服:强洗4秒;漂洗2秒;
3,用按键自行调整洗涤方式,即自行调整弱洗,强洗,漂洗的定时时间
4、定时时间到,光报警提示。(20分)

这个就是我的程序了
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
//****************************//
sbit key_mianzhi=P1^4;  // 棉质按键
sbit key_on=P1^5;        // 开始按键
sbit key_off=P1^6;   // 结束按键
sbit key_sizhi=P1^7;     // 丝质按键
sbit key_huaxian=P1^1;  // 化纤按键
//***************************//
sbit led_wring=P0^7; //     报警指示灯
//******************************//
uchar codenum[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//*****************************//
char sec=0;            //  时间秒
char min=0;           //  时间分
uchar count=0;            //  中断计数
uchar flag0=0;             //  洗衣机工作状态标志
uchar flag1=0;             //  piaoxi标志
uchar flag2=0;             //  qiangxi标志
uchar flag3=0;             //  ruoxi标志
uchar err=0;        //  报警标志
//**********************************//
void delay(); //  延时函数
void over();  //  结束子程序
void piaoxi();         //  票子程序
void ruoxi();   // 弱子程序
void qiangxi();    //  强子程序
void on();    //  工作on处理子程序
void se();    //  显示菜单选择
void SEG_display();   //  显示时间子程序
void key_scan();     //  按键扫描子程序
**************************************
void delay(uint i)
{
       uintx,y;
       for(x=i;x>0;x--)
        for(y=120;y>0;y--);
}   
//*********工作on处理子程序**********//
void on()
{
       TMOD=0x01;
       TH0=(65536-50000)/256;
       TL0=(65536-50000)%256;
       EA=1;
       ET0=1;
       TR0=1;
   P0 = 0xff;
    if(flag0==0)
           in();
       if(flag0==1)
           qiangxi();
       if(flag0==2)
           piaoxi();
       if(flag0==3)
           ruoxi();
       if(flag0==4)
      out();
      
}
//********结束子程序*********//
void over()
{     other=0;
       anther=0;
       P0=0xff;
       mo_r=0;
       mo_l=0;
       led_over=0;
       EA=0;
}  
//**********进水子程序**********//
voidin()
{     anther=0;
       other=0;
       P0=0xff;
       led_in=0;
       flag1++;
       mo_r=0;
       mo_l=0;
       min=0;
       sec=8;
}
//**********漂洗子程序**********//
void piaoxi()
{     anther=1;
        other=0;
    P0=0xff;
        mo_r=1;
        mo_l=1;
        min=0;
        sec=10;                          
        quan=0;
}
//        
//********强洗程序********//
void piaoxi()
{     
   anther=1;
       other=0;
       P0=0xff;
       mo_r=1;
       mo_l=0;
       min=1;
       sec=10;
      
}
//*********弱洗子程序********//
void ruoxi()
{     
other=1;
       anther=0;
       P0=0xff;
       mo_r=1;
       mo_l=0;
       sec=5;
}     
//*********漂洗子程序********//
void piaoxi()
{     
other=1;
       anther=0;
       P0=0xff;
       mo_r=1;
sec=5;
       mo_l=1;
       sec=5;
}     
//*********按键扫描子程序*********//
void key_scan()
{
       if(key_menu==0)
       {
              delay(5);
              if(key_menu==0)
              {
                     while(!key_menu);
                     menu();
              }
       }
//********************************//
       if(key_on==0)
       {
              delay(5);
              if(key_on==0)
              {
                     while(!key_on);
                     on();
              }
       }
//*********************************//
       if(key_off==0)
       {
              delay(5);
              if(key_off==0)
              {
                     while(!key_off);
                     over();
              }
       }
}
//*********显示子程序**********//
void SEG_display()
{
       P1=0x01;
       P2=num[min/10];
       delay(10);
       P1=0x02;
       P2=num[min%10];
       delay(10);
       P1=0x04;
       P2=num[sec/10];
       delay(10);
       P1=0x08;
       P2=num[sec%10];
       delay(10);
}
//*********主函数**********//
void main()
{
       led_in=0;
       anther=0;
       other=0;
       while(1)
       {
              SEG_display();
              key_scan();
       }
}   
//*****定时器0中断处理程序*****//
void timer0() interrupt 1
{
       TH0=(65536-50000)/256;
       TL0=(65536-50000)%256;
       count++;
   if(count==20)
       {     
             count=0;
              sec--;
              if((flag0==1)||(flag0==2))
              {
                  quan++;
                     switch(quan)
                      {
                           case  1:mo_r=1;mo_l=0;break;
                            case10:mo_r=0;mo_l=0;break;
                            case15:mo_r=0;mo_l=1;break;
                            case25:mo_r=0;mo_l=0;break;
                            default:;
                      }
                     if(quan==30)
                     {
                        quan=0;
                     }
              }
        //**********************************//
              if((sec==0)&&(min!= 0))
              {
                min--;
                sec=59;
               }
      
        //**********************************//
              if((sec<0)&&(min==0)&&(flag0==1))   //洗衣结束
              {      
                   flag0=4;
                      out();
              }
        //**********************************//
              if((sec<0)&&(min==0)&&(flag0==2))   //泡衣结束
              {      
                   switch(flag3)
                      {
                           case1:flag0=4;out();break;
                            case2:flag0=4;out();break;
                            case3:flag0=4;out();break;
                            default:err=1;led_wring = 0;
                      }
              }
        //**********************************//
              if((sec<0)&&(min==0)&&(flag0==4))   //出水结束
              {     
                     switch(flag2)
                      {
                           case1:flag0=0;in();break;
                            case2:flag0=0;in();break;
                            case3:flag0=0;in();break;
                            case4:flag0=3;xx();break;
                            default:err=1;led_wring=0;
                      }
              }
        //***********************************//
              if((sec<0)&&(min==0)&&(flag0==3))
              {      sec=0;
                      over();
              }
    }
}
程序问题挺多的,希望大家帮帮忙。谢谢大家了

使用特权

评论回复

相关帖子

沙发
dirtwillfly| | 2019-4-18 20:59 | 只看该作者
大家都很忙,那么长的代码,没人会读完的,更不论修改了。
楼主有什么具体,不妨发出来,大家给你想办法。

使用特权

评论回复
板凳
hobbye501| | 2019-4-19 08:43 | 只看该作者
程序就算了吧 贴出来 那么长也不会有人去看  思路可以分享讨论一下

使用特权

评论回复
地板
逆天凡凡| | 2019-4-19 10:07 | 只看该作者
有点看不懂  不过还是感谢分享

使用特权

评论回复
5
知世| | 2019-6-13 10:48 | 只看该作者
您好,请问您有这个实验的电路图吗,可以分享一下吗?谢谢

使用特权

评论回复
6
莫家良| | 2019-6-14 16:11 | 只看该作者
学习学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

3

帖子

1

粉丝