找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14983|回复: 37
收起左侧

DIY双缸洗衣机改自动(没自动脱水),洗工作服真干净

  [复制链接]
ID:70481 发表于 2014-12-17 02:07 | 显示全部楼层 |阅读模式
本帖最后由 xiaoyao 于 2014-12-17 02:09 编辑

把单位的坏双缸洗衣机改成自动进水,洗涤,出水,循环5次,洗工作服真干净,手动脱水就可以了,继电器用了12v和220v两种,220v继电器一定要互锁,否则单片机死机会烧电机,强电部分要远离单片机,开始有进水电磁阀电源线从单片机上面经过洗到一半死机,改了就好了。程序是在杜洋的基础上修改的
洗衣机c程序.rar (40.42 KB, 下载次数: 204)

评分

参与人数 2黑币 +15 收起 理由
tieq1952 + 10 很给力!
stream800 + 5 很给力!

查看全部评分

回复

使用道具 举报

ID:70481 发表于 2014-12-17 02:08 | 显示全部楼层
程序预览:

  1. ///////////////////////洗衣机控制器程序////////////////////////////////
  2. /*****************************************************************************/
  3. //初始定义
  4. //宏定义
  5. #include <REG52.h>
  6. #define  uchar unsigned char//语法定义
  7. #define  uint  unsigned int //
  8. //引脚定义//
  9. sbit        led                =        P0 ^6;//LED指示灯(蓝) __
  10. sbit        beep        =        P0 ^ 1;//扬声器 __
  11. sbit        j1                =        P2 ^ 5;//继电器k1
  12. sbit        j2                =        P2 ^ 4;//继电器k2
  13. sbit        r1                =        P0 ^0;//键盘a
  14. sbit        r2                =        P0 ^1;//键盘b
  15. sbit        r3                =        P0 ^2;//键盘c
  16. sbit        r4                =        P0 ^3;//键盘d
  17. sbit    jins =        P2^3;  //进水电磁阀
  18. sbit        chus =   P2^2;  //出水电磁阀

  19. //寄存器定义//
  20. uchar        time=0,force=0,config=0;jstime=0;//定义时间、强度和设置变量,进水时间
  21. uchar        t0_con,t0_con1,t0_con2;//T0计时器内部累加
  22. uchar        led_con;//用于LED指示的标记       
  23. uchar        keys;//定义键盘输入值
  24. /*****************************************************************************/
  25. //延时程序//
  26. void delay(uint a){//延时限制在1 < a < 65535 ms//
  27.         unsigned char i;
  28.         while( --a != 0){
  29.                 for(i = 0; i < 125; i++);
  30.         }
  31. }
  32. /*****************************************************************************/
  33. //LED指示灯驱动程序//
  34. void led_on(void){//LED长亮,不工作时状态//
  35.         led                =        0;
  36.         led_con        =        0;       
  37. }
  38. void led_1s(void){//LED每秒闪烁,用于定时等待状态//
  39.         led_con        =        1;       
  40. }
  41. void led_50ms(void){//LED每50ms闪烁,用于电机运行中//
  42.         led_con        =        2;       
  43. }

  44. //void led_off(void){//LED关//
  45. //        led                =        1;       
  46. //}
  47. /*****************************************************************************/
  48. //扬声器驱动程序//
  49. void beep_off(void){//beep不响,无键值//
  50.         beep        =        1;       
  51. }
  52. void beep_on(void){//beep长响//
  53.         beep        =        0;       
  54. }
  55. void beep_s1(void){//beep单响一声//
  56.         beep_on();
  57.         delay(500);
  58.         beep_off();       
  59. }
  60. void beep_s2(void){//beep连响2声//
  61.         beep_s1();
  62.         delay(100);
  63.         beep_s1();       
  64. }
  65. void beep_2s(void){//beep2秒长响,洗衣开始//
  66.         beep_on();
  67.         delay(1000);
  68.         beep_off();                       
  69. }
  70. void beep_call(void){//beep长响8声,洗衣结束//
  71.         uchar i;
  72.         for(i = 0; i < 5; i++){
  73.                 beep_2s();
  74.                 delay(250);
  75.                
  76.         }                       
  77. }
  78. /*****************************************************************************/
  79. //键值处理程序(扫描)//
  80. void key_init(void){//键盘初始化程序//
  81.         keys        =        0;
  82. }
  83. void key_rxd(void){//键盘处理程序//
  84.         key_init();
  85.        
  86.                 delay(10);//延时去干扰
  87.                 {
  88.                         if(r1 == 0 && r2 == r3 == r4 == 1){keys = 1;}//查找键值并放入寄存器
  89.                         if(r2 == 0 && r1 == r3 == r4 == 1){keys = 2;}
  90.                         if(r3 == 0 && r1 == r2 == r4 == 1){keys = 3;}
  91.                         if(r4 == 0 && r1 == r2 == r3 == 1){keys = 4;}
  92.                        
  93.                 }
  94.         }


  95. /*****************************************************************************/
  96. //继电器控制程序//
  97. void jj_off(void){//继电器关,不工作//
  98.         j1        =        1;
  99.         j2        =        1;
  100.         delay(800);
  101.         delay(800);
  102.         delay(400);
  103. }
  104. void j1_on(void){//继电器1开,正转//
  105.         j1        =        1;
  106.         j2        =        0;
  107. }
  108. void j2_on(void){//继电器2开,反转//
  109.         j1        =        0;
  110.         j2        =        1;
  111. }
  112. void jj_run(uchar i){//继电器关,不工作//
  113.         uchar        a;
  114.         j1_on();
  115.         a        =        i;
  116.         while(a > 0) {
  117.                 delay(800);//基数是1s
  118.                 a--;
  119.         }
  120.         jj_off();
  121.         j2_on();
  122.         a        =        i;
  123.         while(a > 0) {
  124.                 delay(800);//基数是1s
  125.                 a--;
  126.         }
  127.         jj_off();               
  128. }
  129. /*****************************************************************************/
  130. //时间发生程序(计数器中断T0)//
  131. void t0_init (void) {//T0定时器初始化//
  132.         TH0                =        0x3c;//载入初值 50ms(12MHZ)
  133.         TL0                =        0xb0;
  134.         TMOD        =        0x01;//定时计数器0工作方式1
  135.         ET0                =        1;//开定时器中断
  136.         TR0                =        1;//启动定时器
  137.         EA                =        1;//开总中断
  138.         t0_con        =        20;//1s
  139.         t0_con1        =        0;
  140.         t0_con2        =        0;//
  141. }
  142. void t0 (void) interrupt 1 using 1{//定时器中断处理程序//
  143.         TH0                =        0x3c;//载入初值
  144.         TL0                =        0xb0;
  145.         t0_con--;//到50ms计数减1
  146.         if(led_con == 2){//使用50ms闪烁的LED
  147.                 led        =        ~led;
  148.         }
  149.         if(t0_con <= 0){//到1s的处理
  150.                 t0_con        =        20;
  151.                 if(led_con == 1){//使用1s闪烁的LED
  152.                         led        =        ~led;}
  153.                        
  154.                 t0_con1++;
  155.        
  156.                 if(t0_con1 >= 60){//到1分钟的处理
  157.                         t0_con1        =        0;
  158.                         t0_con2++;//到1分钟计数加1
  159.                 }                                                       
  160.         }                       
  161.   }
  162. /*****************************************************************************/
  163. //洗涤程序//
  164. void washing (void){//洗涤程序
  165.         led_50ms();//洗衣时的LED状态
  166.         jj_run(force);//根据强度运行
  167.         key_rxd();
  168.         if(keys == 2){//运行时按B键复位
  169.                 uchar        b;
  170.                 b        =        t0_con2;//等待时将时间值寄存
  171.                 led_1s();//等待状态
  172.                 beep_s1();//响1声
  173.                 while(keys != 1){key_rxd();}//再按A继续
  174.                 t0_con2        =        b;//放回时间值
  175.                 beep_s1();//响1声
  176.                
  177.         }
  178.         if(keys == 4){t0_con2 = 250;}//运行时按D键复位

  179.        
  180.                                
  181. }

  182. void wait (uchar u){//3分钟的初洗和浸泡时间//
  183.         beep_2s();//长响1声
  184.         t0_init ();//计时器重新开始工作
  185.         while(t0_con2 <= 3){//开始洗衣
  186.                 washing();//开始洗涤
  187.         }
  188.         t0_init ();//计时器重新开始工作
  189.         while(t0_con2 <= u){//延时N分钟
  190.                 led_1s();//每秒闪一次,表示定时状态
  191.         }
  192. }

  193. void wash (void){//正式洗衣程序//
  194.         beep_s2();//长响1声
  195.         t0_init ();//计时器重新开始工作
  196.         while(time        >=        t0_con2){//开始洗衣
  197.                 washing();
  198.         }
  199. }
  200. /***********************************************************************/

  201. void js(void){//        进水时间
  202.        
  203.         beep_s2();
  204.         jins = 0;  //进水开

  205.         t0_init ();//计时器重新开始工作//
  206.         while(jstime >= t0_con2);//延时       
  207.         jins = 1;//进水关
  208.        
  209.         }
  210.        
  211. /*************************************************************************/
  212. void cs(void)//出水2分钟
  213.         {
  214.                 led_1s();
  215.                 chus= 0;
  216.                 t0_init();
  217.                 while(t0_con2 <= 2);
  218.                 chus= 1;
  219.         }       
  220. /*****************************************************************************/
  221. //开机初始化程序//
  222. void init (void){
  223.         jj_off();
  224.         led_on();//LED长亮,等待键入
  225.         beep_2s();//       
  226.         key_init();
  227.         jins=1;
  228.         chus=1;       
  229. }
  230. /*****************************************************************************/
  231. //主程序//
  232. void main (void)
  233. {
  234.    
  235. while(1){//大循环,当洗衣结束后重新开始//
  236.         init ();//开机初始化
  237.         while(keys == 0){key_rxd();} //        设置进水时间//
  238.                 beep_s2();
  239.                 jstime = keys;
  240.                 key_init();
  241.        
  242.         while(keys == 0){key_rxd();}//设置强度//
  243.         beep_s1();//响1声
  244.         force        =        keys;
  245.         key_init();
  246.         while(keys == 0){key_rxd();}//设置时间//
  247.         beep_s2();//响2声
  248.         time        =        (keys*5);
  249.         key_init();
  250.         while(keys == 0){key_rxd();}//设置方式//
  251.         beep_2s();//长响1声
  252.         config        =        keys;
  253.         key_init();
  254.                


  255.          js();
  256.        
  257.         if(config == 1){//3分钟初洗+延时浸泡15分钟 (A键)
  258.                 wait (15);       
  259.         }
  260.         if(config == 2){//3分钟初洗+延时浸泡30分钟 (B键)
  261.                 wait (30);               
  262.         }
  263.         if(config == 3){//延时浸泡15分钟 (C键)
  264.                 t0_init ();//
  265.                 while(t0_con2        <=        15){//延时15分钟
  266.                         led_1s();//每秒闪一次,表示定时状态
  267.                 }               
  268.         }
  269.        
  270.         wash ();//开始洗涤
  271.                 cs();
  272.                 delay(1000);
  273.                 js();
  274.         wash ();
  275.                 cs();
  276.                         delay(1000);
  277.                 js();
  278.         wash ();
  279.                 cs();
  280.                   delay(1000);
  281.                 js();
  282.         wash ();
  283.                 delay(1000);
  284.                 cs();       
  285.         beep_call();//洗衣结束音
  286.        
  287. }             
  288. }

  289. /******************************************************************************
  290.                        

  291. 洗衣机使用说明--设置说明


  292. 冷启动或复位后顺序按四次键,其功能设置如下:

  293. NO.1 进水时间设置
  294. ---------------------------------------------
  295.         A:1分钟
  296.         B:2分钟
  297.         C:3分钟
  298.         D:4分钟

  299. NO.2 强度设置
  300. ---------------------------------------------
  301.         A:柔和
  302.         B:低
  303.         C:中
  304.         D:高
  305.                        
  306. NO.3 洗涤时间设置
  307. ---------------------------------------------
  308.         A:5分钟
  309.         B:10分钟
  310.         C:15分钟
  311.         D:20分钟
  312.                           
  313. NO.4 方式设置
  314. ---------------------------------------------
  315.         A:3分钟初洗-->15分钟浸泡-->洗涤-->结束
  316.         B:3分钟初洗-->30分钟浸泡-->洗涤-->结束
  317.         C:15分钟浸泡-->洗涤-->结束
  318.         D:洗涤-->结束
  319.                           
  320. =============================================

  321. 洗涤时的操作
  322. ---------------------------------------------
  323.         长按 B 键:暂停洗涤
  324.         长按 A 键:继续洗涤(暂停时有效)
  325.         长按 D 键:结束并复位程序
  326.        
  327.                         提示音说明
  328. ---------------------------------------------
  329.         短鸣1次:强度设置完成
  330.         短鸣2次:时间设置完成
  331.         长鸣1次:冷启动/方式设置完成/开始洗涤
  332.         长鸣6次:洗涤结束

  333.                            指示灯说明
  334. ---------------------------------------------
  335.         长亮:冷启动/等待输入/洗涤结束
  336.         慢闪(每秒):浸泡
  337.         快闪(每1/4秒):洗涤
  338.                                                                    
  339. ******************************************************************************/
复制代码
回复

使用道具 举报

ID:72179 发表于 2015-1-13 23:54 | 显示全部楼层
很好的资料
回复

使用道具 举报

ID:72179 发表于 2015-1-13 23:55 | 显示全部楼层
好好好
回复

使用道具 举报

ID:72179 发表于 2015-1-13 23:55 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:72179 发表于 2015-1-13 23:55 | 显示全部楼层
学习了
回复

使用道具 举报

ID:72063 发表于 2015-1-14 00:44 | 显示全部楼层
好好学习,天天向上。
回复

使用道具 举报

ID:60706 发表于 2015-1-15 09:34 | 显示全部楼层
好好学习,天天向上。
回复

使用道具 举报

ID:60706 发表于 2015-1-15 09:34 | 显示全部楼层
好好学习,天天向上。
回复

使用道具 举报

ID:72053 发表于 2015-1-22 16:24 | 显示全部楼层
十几天基督教很简单
回复

使用道具 举报

ID:72611 发表于 2015-1-23 15:14 | 显示全部楼层
厉害呀
回复

使用道具 举报

ID:72722 发表于 2015-1-24 12:27 | 显示全部楼层
led_50ms();//洗衣时的LED状态
        jj_run(force);//根据强度运行
        key_rxd();
这一段是不是如果运行正反转一次后按键才会得到相应?是否响应时间有点长啊?
本人初学,请教了
回复

使用道具 举报

ID:72778 发表于 2015-1-25 22:03 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:69254 发表于 2015-2-23 10:41 | 显示全部楼层

好好学习,天天向上。
回复

使用道具 举报

ID:73868 发表于 2015-3-9 11:04 | 显示全部楼层
亲,冒昧的问一句,
1、电路图上P 0^3口没有画上蜂鸣器电路
2、可不可以把PCB制板图发上来
3、应该在电路图上画上甩干电机的开启按钮和控制电路和C程序里面加上甩干电机的控制程序
4、我希望进水电磁阀和脱水电磁阀可以和洗涤程序分开控制,那样就可以在好多洗衣机上安装了
希望我的意见您可以参考一下
回复

使用道具 举报

ID:77329 发表于 2015-4-26 17:14 来自手机 | 显示全部楼层
应用与实际,学习了
回复

使用道具 举报

ID:77779 发表于 2015-4-26 19:55 来自手机 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:79544 发表于 2015-7-23 15:17 | 显示全部楼层
学了就要用到现实生活中,赞
回复

使用道具 举报

ID:89072 发表于 2015-8-29 23:46 | 显示全部楼层
这个可以有 呵呵
回复

使用道具 举报

ID:100404 发表于 2015-12-24 22:24 | 显示全部楼层
非常好的资料,学习学习!!!
回复

使用道具 举报

ID:107465 发表于 2016-3-5 18:26 | 显示全部楼层
参考一下 也想搞一个
回复

使用道具 举报

ID:83018 发表于 2016-5-2 10:22 | 显示全部楼层
不错不错
回复

使用道具 举报

ID:127478 发表于 2016-6-21 20:28 | 显示全部楼层
O(∩_∩)O谢谢楼主,正准备改装半自动洗衣机,手动放水开启又放水麻烦。
回复

使用道具 举报

ID:50881 发表于 2016-6-22 08:29 | 显示全部楼层
谢谢分享!!!!
回复

使用道具 举报

ID:200439 发表于 2017-5-13 21:51 来自手机 | 显示全部楼层
感谢你的分享 支持
回复

使用道具 举报

ID:200076 发表于 2017-5-14 21:25 | 显示全部楼层
不错,好好学习一下
回复

使用道具 举报

ID:72649 发表于 2017-5-16 18:42 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:146874 发表于 2017-9-20 19:04 | 显示全部楼层
不错,谢谢楼主的分享,值得学习
回复

使用道具 举报

ID:325351 发表于 2018-5-8 19:31 来自手机 | 显示全部楼层
谢谢老师
回复

使用道具 举报

ID:253767 发表于 2018-5-9 06:28 | 显示全部楼层
太好了,这就是活学活用
回复

使用道具 举报

ID:297159 发表于 2018-5-9 22:05 | 显示全部楼层
很6.虽然没看懂
回复

使用道具 举报

ID:350119 发表于 2018-6-14 09:13 | 显示全部楼层
有没有人 求解看的不是很懂
回复

使用道具 举报

ID:353798 发表于 2018-6-19 10:11 | 显示全部楼层
给力呀支持下
回复

使用道具 举报

ID:48813 发表于 2020-12-16 16:50 | 显示全部楼层
感谢楼主的分享。收藏、值得学习
回复

使用道具 举报

ID:851329 发表于 2020-12-16 18:58 | 显示全部楼层
强啊,楼主。

回复

使用道具 举报

ID:357153 发表于 2020-12-28 11:26 | 显示全部楼层
感谢楼主的分享。收藏、值得学习
回复

使用道具 举报

ID:897089 发表于 2021-3-27 21:27 | 显示全部楼层
这个想法不错升级改造一下
回复

使用道具 举报

ID:897089 发表于 2021-3-27 21:29 | 显示全部楼层
循环五次是不是太费水了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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