找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2202|回复: 10
打印 上一主题 下一主题
收起左侧

单片机洗衣机控制系统程序设计 麻烦大佬帮帮忙找找错误

[复制链接]
跳转到指定楼层
楼主
ID:501862 发表于 2019-4-18 15:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、洗衣机控制系统设计
设计内容:
1、用直流电机的转速表征三种不同洗衣方式,弱洗、强洗、漂洗;
2、用三个独立按键设置待洗衣物的不同洗涤方式:
丝质衣服:漂洗定时3秒
棉质衣服:弱洗2秒;强洗5秒;漂洗3秒;
化纤衣服:强洗4秒;漂洗2秒;3,用按键自行调整洗涤方式,即自行调整弱洗,强洗,漂洗的定时时间4、定时时间到,光报警提示。(20分)

经过2个星期逼着自己学习c51单片机,就是我以前发的那个洗衣机的然后写了这个程序,无奈啊,想让大家帮帮忙改一改啥的,写的不好,就别喷了

然后我们学校实验室比较简陋,好像是电动机只能用什么AD还是DA吧,好像不让用P3口好像,然后我也不会写电动机这一块了,写的比较垃圾,洗衣时间算的也不咋明白,帮帮忙,救救孩子吧undefined
这个就是我的程序了
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. //****************************//
  5. sbit key_mianzhi=P1^4;  // 棉质按键
  6. sbit key_on=P1^5;        // 开始按键
  7. sbit key_off=P1^6;   // 结束按键
  8. sbit key_sizhi=P1^7;     // 丝质按键
  9. sbit key_huaxian=P1^1;  // 化纤按键
  10. //***************************//
  11. sbit led_wring=P0^7; //     报警指示灯
  12. //******************************//
  13. uchar codenum[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  14. //*****************************//
  15. char sec=0;            //  时间秒
  16. char min=0;           //  时间分
  17. uchar count=0;            //  中断计数
  18. uchar flag0=0;             //  洗衣机工作状态标志
  19. uchar flag1=0;             //  piaoxi标志
  20. uchar flag2=0;             //  qiangxi标志
  21. uchar flag3=0;             //  ruoxi标志
  22. uchar err=0;        //  报警标志
  23. //**********************************//
  24. void delay(); //  延时函数
  25. void over();  //  结束子程序
  26. void piaoxi();         //  票子程序
  27. void ruoxi();   // 弱子程序
  28. void qiangxi();    //  强子程序
  29. void on();    //  工作on处理子程序
  30. void se();    //  显示菜单选择
  31. void SEG_display();   //  显示时间子程序
  32. void key_scan();     //  按键扫描子程序
  33. **************************************
  34. void delay(uint i)
  35. {
  36.        uintx,y;
  37.        for(x=i;x>0;x--)
  38.         for(y=120;y>0;y--);
  39. }   
  40. //*********工作on处理子程序**********//
  41. void on()
  42. {
  43.        TMOD=0x01;
  44.        TH0=(65536-50000)/256;
  45.        TL0=(65536-50000)%256;
  46.        EA=1;
  47.        ET0=1;
  48.        TR0=1;
  49.    P0 = 0xff;
  50.     if(flag0==0)
  51.            in();
  52.        if(flag0==1)
  53.            qiangxi();
  54.        if(flag0==2)
  55.            piaoxi();
  56.        if(flag0==3)
  57.            ruoxi();
  58.        if(flag0==4)
  59.       out();
  60.       
  61. }
  62. //********结束子程序*********//
  63. void over()
  64. {     other=0;
  65.        anther=0;
  66.        P0=0xff;
  67.        mo_r=0;
  68.        mo_l=0;
  69.        led_over=0;
  70.        EA=0;
  71. }  
  72. //**********进水子程序**********//
  73. voidin()
  74. {     anther=0;
  75.        other=0;
  76.        P0=0xff;
  77.        led_in=0;
  78.        flag1++;
  79.        mo_r=0;
  80.        mo_l=0;
  81.        min=0;
  82.        sec=8;
  83. }
  84. //**********漂洗子程序**********//
  85. void piaoxi()
  86. {     anther=1;
  87.         other=0;
  88.     P0=0xff;
  89.         mo_r=1;
  90.         mo_l=1;
  91.         min=0;
  92.         sec=10;                          
  93.         quan=0;
  94. }
  95. //        
  96. //********强洗程序********//
  97. void piaoxi()
  98. {     
  99.    anther=1;
  100.        other=0;
  101.        P0=0xff;
  102.        mo_r=1;
  103.        mo_l=0;
  104.        min=1;
  105.        sec=10;
  106.       
  107. }
  108. //*********弱洗子程序********//
  109. void ruoxi()
  110. {     
  111. other=1;
  112.        anther=0;
  113.        P0=0xff;
  114.        mo_r=1;
  115.        mo_l=0;
  116.        sec=5;
  117. }     
  118. //*********漂洗子程序********//
  119. void piaoxi()
  120. {     
  121. other=1;
  122.        anther=0;
  123.        P0=0xff;
  124.        mo_r=1;
  125. sec=5;
  126.        mo_l=1;
  127.        sec=5;
  128. }     
  129. //*********按键扫描子程序*********//
  130. void key_scan()
  131. {
  132.        if(key_menu==0)
  133.        {
  134.               delay(5);
  135.               if(key_menu==0)
  136.               {
  137.                      while(!key_menu);
  138.                      menu();
  139.               }
  140.        }
  141. //********************************//
  142.        if(key_on==0)
  143.        {
  144.               delay(5);
  145.               if(key_on==0)
  146.               {
  147.                      while(!key_on);
  148.                      on();
  149.               }
  150.        }
  151. //*********************************//
  152.        if(key_off==0)
  153.        {
  154.               delay(5);
  155.               if(key_off==0)
  156.               {
  157.                      while(!key_off);
  158.                      over();
  159.               }
  160.        }
  161. }
  162. //*********显示子程序**********//
  163. void SEG_display()
  164. {
  165.        P1=0x01;
  166.        P2=num[min/10];
  167.        delay(10);
  168.        P1=0x02;
  169.        P2=num[min%10];
  170.        delay(10);
  171.        P1=0x04;
  172.        P2=num[sec/10];
  173.        delay(10);
  174.        P1=0x08;
  175.        P2=num[sec%10];
  176.        delay(10);
  177. }
  178. //*********主函数**********//
  179. void main()
  180. {
  181.        led_in=0;
  182.        anther=0;
  183.        other=0;
  184.        while(1)
  185.        {
  186.               SEG_display();
  187.               key_scan();
  188.        }
  189. }   
  190. //*****定时器0中断处理程序*****//
  191. void timer0() interrupt 1
  192. {
  193.        TH0=(65536-50000)/256;
  194.        TL0=(65536-50000)%256;
  195.        count++;
  196.    if(count==20)
  197.        {     
  198.              count=0;
  199.               sec--;
  200.               if((flag0==1)||(flag0==2))
  201.               {
  202.                   quan++;
  203.                      switch(quan)
  204.                       {
  205.                            case  1:mo_r=1;mo_l=0;break;
  206.                             case10:mo_r=0;mo_l=0;break;
  207.                             case15:mo_r=0;mo_l=1;break;
  208.                             case25:mo_r=0;mo_l=0;break;
  209.                             default:;
  210.                       }
  211.                      if(quan==30)
  212.                      {
  213.                         quan=0;
  214.                      }
  215.               }
  216.         //**********************************//
  217.               if((sec==0)&&(min!= 0))
  218.               {
  219.                 min--;
  220.                 sec=59;
  221.                }
  222.       
  223.         //**********************************//
  224.               if((sec<0)&&(min==0)&&(flag0==1))   //洗衣结束
  225.               {      
  226.                    flag0=4;
  227.                       out();
  228.               }
  229.         //**********************************//
  230.               if((sec<0)&&(min==0)&&(flag0==2))   //泡衣结束
  231.               {      
  232.                    switch(flag3)
  233.                       {
  234.                            case1:flag0=4;out();break;
  235.                             case2:flag0=4;out();break;
  236.                             case3:flag0=4;out();break;
  237.                             default:err=1;led_wring = 0;
  238.                       }
  239.               }
  240.         //**********************************//
  241.               if((sec<0)&&(min==0)&&(flag0==4))   //出水结束
  242.               {     
  243.                      switch(flag2)
  244.                       {
  245.                            case1:flag0=0;in();break;
  246.                             case2:flag0=0;in();break;
  247.                             case3:flag0=0;in();break;
  248.                             case4:flag0=3;xx();break;
  249.                             default:err=1;led_wring=0;
  250.                       }
  251.               }
  252.         //***********************************//
  253.               if((sec<0)&&(min==0)&&(flag0==3))
  254.               {      sec=0;
  255.                       over();
  256.               }
  257.     }
  258. }
复制代码


程序问题挺多的,希望大家帮帮忙。谢谢大家了

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:158375 发表于 2019-4-19 13:31 | 只看该作者
你可以用简单的方法来检验你自己写的程序:即用不同颜色的LED灯,来代表弱洗、强洗、漂洗。
回复

使用道具 举报

板凳
ID:516544 发表于 2019-4-19 17:09 | 只看该作者
我感觉写的没有毛病,让程序跑试试啊。
回复

使用道具 举报

地板
ID:425268 发表于 2019-4-19 19:49 | 只看该作者
这东西用PLC很简单吧   单片机不懂
回复

使用道具 举报

5#
ID:501862 发表于 2019-4-21 14:05 | 只看该作者
qq873434846 发表于 2019-4-19 17:09
我感觉写的没有毛病,让程序跑试试啊。

全是错的     80多个错误
回复

使用道具 举报

6#
ID:501862 发表于 2019-4-21 14:05 | 只看该作者
moqiyaa 发表于 2019-4-19 19:49
这东西用PLC很简单吧   单片机不懂

没学啊
回复

使用道具 举报

7#
ID:501862 发表于 2019-4-21 14:06 | 只看该作者
笨笨兔 发表于 2019-4-19 13:31
你可以用简单的方法来检验你自己写的程序:即用不同颜色的LED灯,来代表弱洗、强洗、漂洗。

写程序都很费劲了
回复

使用道具 举报

8#
ID:111517 发表于 2019-4-21 21:14 | 只看该作者
楼主最好先自己找下问题或者错误,然后再问下,这样子大家比较容易懂些,你就这么直接贴代码上来大家也不知道你要找什么问题
回复

使用道具 举报

9#
ID:471632 发表于 2019-4-21 22:21 | 只看该作者
我印象中全自动洗衣机洗涤模式与转速无关,仅仅与电机通断时间、电机的正反有关吧!
回复

使用道具 举报

10#
ID:501862 发表于 2019-4-22 18:06 | 只看该作者
沧浪 发表于 2019-4-21 21:14
楼主最好先自己找下问题或者错误,然后再问下,这样子大家比较容易懂些,你就这么直接贴代码上来大家也不知 ...

因为我基本不会啥,就学了2个星期。写的能知道那是错误,我知道我的全是错的。
回复

使用道具 举报

11#
ID:110606 发表于 2019-4-23 15:38 | 只看该作者
改的差不多了吗?给你个建议哈,你中断里面东西太多了,这些也会影响你程序定时时间,最好放到while中去判断定时时间,如果你改着费劲,我建议你一个模块一个模块做,不然错误真的不太好弄
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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