社区导航

 

搜索
查看: 1400|回复: 4

[讨论] 大家帮帮忙看看这个程序

[复制链接]

18

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2019-4-18 15:35 | 显示全部楼层 |阅读模式
经过2个星期逼着自己学习c51,写了老师的课设,就是我以前发的那个洗衣机的然后写了这个程序,无奈啊,想让大家帮帮忙改一改啥的,写的不好,就别喷了 200332ox8gqa0ms1jrbppd.jpg.thumb.jpg
然后我们学校实验室比较简陋,好像是电动机只能用什么AD还是DA吧,好像不让用P3口好像,然后我也不会写电动机这一块了,写的比较垃圾,洗衣时间算的也不咋明白,帮帮忙,救救孩子吧。
这个就是我的程序了
#include
#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();
              }
    }
}
程序问题挺多的,希望大家帮帮忙。谢谢大家了
来源:EEWorld 单片机板块,转载请附上链接


回复

使用道具 举报

18

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2019-4-18 15:35 | 显示全部楼层
大家帮帮忙,让我过了吧


回复

使用道具 举报

9

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2019-4-18 17:34 | 显示全部楼层
你这是什么电机啊,直流要有检测速度的传感器,才好控制速度,控制电机得有驱动,步进电机是个不错的选择


回复

使用道具 举报

18

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2019-4-18 18:34 来自手机 | 显示全部楼层
psw的好像,我也不晓得


回复

使用道具 举报

18

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2019-4-18 18:51 来自手机 | 显示全部楼层
不进步进电机


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /3 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-8-22 20:04 , Processed in 0.162530 second(s), 17 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表