#include

#define uchar unsigned char

#define uint unsigned int

sbit mo_r = P3^2;     //电机右控制线

sbit mo_l = P3^3;     //电机左控制线

sbit key_menu = P3^4; // 菜单按键

sbit key_on = P3^5;   // 开始按键

sbit key_off = P3^6;  //   结束按键

sbit key_se = P3^7;   //  菜单选择按键

sbit led_in = P2^0;   // 进水指示灯

sbit led_xi = P2^1;   //  洗衣指示灯

sbit led_pao = P2^2;  // 泡洗指示灯

sbit led_xx = P2^3;   //  脱水指示灯

sbit led_out = P2^4;  //   出水指示灯

sbit led_over = P2^5; // 洗衣结束指示灯

sbit led_work = P2^6; // 电机工作指示灯

sbit led_wring = P2^7;// 报警指示灯

sbit other = P3^1;    //  脱水电源控制开关

sbit anther = P3^0;  // 洗衣电源控制开关

uchar  code  num[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;    //  进水次数标志

uchar flag2=0;    //  出水次数标志

uchar flag3=0;    //   泡洗次数标志

uchar err =0;    // 报警标志

uchar quan = 0;//正反转计数

//  函数声明 //

void in(); //   进水子程序

void out();  //   出水子程序

void over();  //  结束子程序

void xi();  //   洗衣子程序

void pao(); //  泡衣子程序

void xx(); // 脱水子程序

void on(); //  工作on处理子程序

void se(); //  显示菜单选择

void SEG_display();  //显示时间子程序

void key_scan();   //  按键扫描子程序

//     延时函数  //

void mDelay(unsigned int Delay) //延时程序

{

unsigned int i;

for(;Delay>0;Delay--)

{       for(i=0; i<54; i++)  ;

}

}

//    工作on处理子程序 //

void on()

{   TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;  ET0=1;  TR0=1;

P2 = 0xff;

if(flag0 == 0)      in();

if(flag0 == 1)      xi();

if(flag0 == 2)      pao();

if(flag0 == 3)      xx();

if(flag0 == 4)      out();

}

//    结束子程序 //

void over()

{ other=0;  anther=0;  P2 = 0xff;

mo_r=0;  mo_l=0;  led_over = 0;  EA=0;   }

//    进水子程序  //*********************************//

void in()

{ anther=0;  other=0;  P2 = 0xff;  led_in = 0;  flag1++;

mo_r = 0;  mo_l = 0;  min = 0;  sec = 8;  }

//   洗衣子程序//

void xi()

{  anther=1;    other=0;

P0 = 0xff;   led_work = 0;    led_xi = 0;

mo_r = 1;   mo_l = 0;   min = 1;

sec = 36;   quan = 0;  }

//    泡衣子程序 //

void pao()

{

anther=1;  other=0;  P2 = 0xff;  led_pao = 0;  led_work = 0;

flag3++;  mo_r = 1;  mo_l = 0;  min = 1;  sec = 35;   quan = 0;

}

//   脱水子程序  //*********************************//

void xx()

{ other=1;  anther=0;  P2 = 0xff;  led_xx = 0;  mo_r = 0;  mo_l = 1;  min = 0;  sec = 50;  }

//    出水子程序 //*********************************//

void out()

{ anther=0;  other=0;  P2 = 0xff;   led_out = 0;

flag2++;  mo_r = 0;  mo_l = 0;  min = 0;  sec = 5;  }

//    显示菜单选择 //

void se()

{  P2 = 0xff;  if(flag0 >= 5)    flag0 = 0;

if(flag0 == 0)  {   led_in = 0;   }

if(flag0 == 1)  {   led_xi=0;     }

if(flag0 == 2)  {   led_pao=0;    }

if(flag0 == 3)  {   led_xx=0;     }

if(flag0 == 4)  {   led_out=0;    }

}

//    菜单处理子程序 //

void menu()

{      min = 0;  sec = 0;  mo_r=0;   mo_l=0;

SEG_display();

while(1)

{      if(key_on == 0)

{ mDelay(5);

if(key_on == 0)

{  while(!key_on);

on(); break;

}

}

if(key_off == 0)

{ mDelay(5);

if(key_off == 0)

{  while(!key_off);

over(); break;

}

}

if(key_se == 0)

{ mDelay(5);

if(key_se == 0)

{ while(!key_se);

flag0++;  se();

}

}

}

}

//      按键扫描子程序//

void key_scan()

{    if(key_menu == 0)

{  mDelay(5);

if(key_menu == 0)

{ while(!key_menu); menu();

}

}

if(key_on == 0)

{  mDelay(5);

if(key_on == 0)

{ while(!key_on); on();

}

}

if(key_off == 0)

{  mDelay(5);

if(key_off == 0)

{ while(!key_off); over();

}

}

}

// 显示子程序 //

void SEG_display()

{  P1=0x01;  P0 = num[min/10]; mDelay(10);

P1=0x02;  P0 = num[min%10]; mDelay(10);

P1=0x04;  P0 = num[sec/10]; mDelay(10);

P1=0x08;  P0 = num[sec%10]; mDelay(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;

case 10:mo_r=0;mo_l=0;break;

case 15:mo_r=0;mo_l=1;break;

case 25: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==0))  //进水结束

{  switch(flag1)

{ case 1:flag0=1;xi();break;

case 2:flag0=2;pao();break;

case 3:flag0=2;pao();break;

case 4:flag0=2;pao();break;

default: err=1;led_wring = 0;

}

}

if((sec<0)&&(min==0)&&(flag0==1))   //洗衣结束

{  flag0 = 4; out();  }

if((sec<0)&&(min==0)&&(flag0==2))   //泡衣结束

{  switch(flag3)

{ case 1:flag0=4;out();break;

case 2:flag0=4;out();break;

case 3:flag0=4;out();break;

default: err=1;led_wring = 0;

}

}

if((sec<0)&&(min==0)&&(flag0==4))  //出水结束

{  switch(flag2)

{ case 1:flag0=0;in();break;

case 2:flag0=0;in();break;

case 3:flag0=0;in();break;

case 4:flag0=3;xx();break;

default: err= 1;led_wring = 0;

}

}

if((sec<0)&&(min==0)&&(flag0==3))

{  sec = 0;     over(); }

}

}

全自动洗衣机单片机c语言程序,全自动洗衣机单片机程序相关推荐

  1. 51单片机蜂鸣器演奏《小苹果》C语言程序,51单片机C语言蜂鸣器发声生日快乐播放程序...

    <51单片机C语言蜂鸣器发声生日快乐播放程序>由会员分享,可在线阅读,更多相关<51单片机C语言蜂鸣器发声生日快乐播放程序(4页珍藏版)>请在人人文库网上搜索. 1.按键发音/ ...

  2. led的c语言程序,单片机C语言LED灯点亮程序完全版

    <单片机C语言LED灯点亮程序完全版>由会员分享,可在线阅读,更多相关<单片机C语言LED灯点亮程序完全版(7页珍藏版)>请在人人文库网上搜索. 1.1例子1第二个灯亮#inc ...

  3. 基于单片机c语言的豆浆机,基于单片机的全自动豆浆机控制系统设计.doc

    论文题目: 基于单片机的全自动豆浆机控制系统设计 摘 要 全自动豆浆机基本工作过程是将事先泡好的大豆放入豆浆机内,并加入适量冷水后将电热管通电加热至80°C,粉碎电机通电工作.进行磨豆浆期间断续工作三 ...

  4. 单片机c语言小灯闪烁,单片机c语言闪烁灯程序.doc

    单片机c语言闪烁灯程序 1. 闪烁灯 1. 实验任务 如图4.1.1 所示:在P1.0 端口上接一个发光二极管L1,使L1 在不停地一亮 灭,一亮一灭的时间间隔为0.2 秒. 2. 电路原理图 图4. ...

  5. 单片机c语言编程教学大纲,《单片机C语言编程》教学大纲

    <单片机C语言编程>教学大纲 课程代码:000002336 课程英文名称:Microcontroller C Programming Language 课程总学时:24 讲课:16 实验: ...

  6. pic单片机c语言存储器定义,PIC单片机C语言程序设计1 7.PDF

    PIC单片机C语言程序设计1 7 学电子跟我来FOLLOW ME PIC 单片机C 语言程序设计(1) ◆ 丁锦滔 编者按:为了帮助具有PI C 单片机汇编语言知识的技术人员或工程师,快速掌握利用C ...

  7. 单片机c语言 i%3c%3c1,单片机C语言作业及上机习题及答案

    <单片机C语言作业及上机习题及答案>由会员分享,可在线阅读,更多相关<单片机C语言作业及上机习题及答案(37页珍藏版)>请在人人文库网上搜索. 1.第一次课熟悉winTC编译环 ...

  8. 单片机c语言模块化实例程序设计,单片机C语言模块化设计

    原标题:单片机C语言模块化设计 keil中实现 模块化编程.doc 在使用 KEIL 的时候,我们习惯上在一个.c 的文件中把自己要写的东西按照 自己思路的顺序进行顺序书写.这样是很普遍的写法,当程序 ...

  9. 杜洋单片机C语言编程组成,8051单片机C语言编程模板

    c语言 本文由fan159147贡献 doc文档可能在WAP端浏览体验不佳.建议您优先选择TXT,或下载源文件到本机查看. <8051 单片机 C 语言编程模板> 杜洋 2009.7 [程 ...

  10. 51单片机c语言试题及答案,单片机C语言期末考试题..

    单片机C语言期末考试题..,单片机的c语言应用程序设计,单片机c语言编程,51单片机c语言程序100例,单片机c语言,单片机c语言编程思想,c语言开发单片机,c语言单片机程序,新概念51单片机c语言教 ...

最新文章

  1. proxmox超融合集群用户授权
  2. Scala类的继承,抽象类定义,接口定义
  3. spring拦截器-过滤器的区别
  4. 计算机关机电路,实用电脑电源关机全断电电路
  5. 两化融合:唐山探路重工业城市智慧转型
  6. BZOJ3529: [Sdoi2014]数表(莫比乌斯反演,离线)
  7. mysql中的转换类型数据类型_mysql数据类型转换
  8. 【鱼眼镜头8】张正友畸变公式;鱼眼的畸变公式需要使用入射角
  9. mysql索引使用b_mysql索引的数据结构,为什么用b+树
  10. asp绑定gridview属性_《ASP.ENT Core与RESTful API开发实战》(第3章)中
  11. 在手机上运行 Python,这款工具比 QPython 还好用~
  12. H5 前端JS添加水印
  13. python 提取字幕_使用Python从zimuku下载字幕
  14. 计算机系统原理之程序是怎么运行的
  15. 【已解决】Spring容器中找不到ServletWebServerFactory类出现的异常
  16. 保姆式教学:用Tableau制作盒须图(箱线图)
  17. 安装taro踩到小坑
  18. 公农历转换和获取二十四节气算法
  19. 商务本Surface Laptop2用固态U盘安装Ubuntu18.04全教程(补充篇)
  20. 电子化工作方式:方便保存,提高效率

热门文章

  1. 微信JSSDK分享页面自定义当前链接最简单示例
  2. python顺序执行 toggle_编写脚本在Python中运行多个脚本
  3. vue2 怎么用vite_vue3vite简介
  4. 下载matlab安装包太慢_MATLAB 2020a商业数学中文版软件下载安装教程
  5. 一根火柴可以将一瓶大可乐吊起来吗?
  6. 哪个男孩不想拥有这种牌面?
  7. 程序员与代码的几种关系,每种都会被我们鄙视
  8. 趣读:程序员泪流满面的20个瞬间!
  9. 竞赛发布|100万奖金寻DT时代“最强大脑”!
  10. lua loadstring传递参数_lua学习之函数篇