找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机控制的洗衣机程序

[复制链接]
跳转到指定楼层
楼主
ID:276416 发表于 2018-11-30 17:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
void delay_s(unsigned int t);
void delay_ms(unsigned int t);
void UART_Init(void);
void Speech(unsigned char*text,unsigned char length);
void init_lcd(void);
void ch_disp_any(unsigned char line,unsigned char row,unsigned char num,unsigned char chn);
#define led P0
sbit g=P1^0;
sbit z=P1^1;
sbit d=P1^2;
sbit chengxv=P1^3;
sbit shuiwei=P1^4;
sbit qiting=P1^5;
sbit jinshui=P1^6;
sbit chushui=P1^7;
sbit forward=P2^0;
sbit backward=P2^1;
sbit xidi=P2^2;
sbit piaoxo=P2^3;
sbit tuoshui=P2^4;
sbit gai=P2^5;
unsigned char water,mode;
void JS()
{
  ch_disp_any(2,6,4,"进水");
  jinshui=0;
  switch(water)
  {
   case 0:while(g||z||d);break;
   case 1:while(z||d);break;
   case 2:while(d);break;
   default:break;
  }
  delay_ms(2);jinshui=1;
}
void BZ()
{
ch_disp_any(3,6,8,"正在进行");
xidi=0;
JS();
ch_disp_any(2,6,4,"整转");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反转");backward=1;delay_s(4);backward=0;delay_ms(500);
ch_disp_any(2,6,4,"整转");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反转");backward=1;delay_s(4);backward=0;
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
xidi=1;
piaoxi=0;
ch_disp_any(2,6,4,"整转");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反转");backward=1;delay_s(4);backward=0;delay_ms(500);
ch_disp_any(2,6,4,"整转");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反转");backward=1;delay_s(4);backward=0;
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
piaoxi=1;
tuoshui=0;
ch_disp_any(2,6,4,"整转");forward=1;delay_s(4);forward=0;
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
tuoshui=1;
}
void JJ()
{
ch_disp_any(3,6,8,"正在进行");
xidi=0;
JS();
ch_disp_any(2,6,4,"整转");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反转");backward=1;delay_s(4);backward=0;delay_ms(500);
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
xidi=1;
piaoxi=0;
ch_disp_any(2,6,4,"整转");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反转");backward=1;delay_s(4);backward=0;delay_ms(500);
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
piaoxi=1;
tuoshui=0;
ch_disp_any(2,6,4,"整转");forward=1;delay_s(4);forward=0;
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
tuoshui=1;
}
void DX()
{
ch_disp_any(3,6,8,"正在进行");
xidi=0;
JS();
ch_disp_any(2,6,4,"整转");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反转");backward=1;delay_s(4);backward=0;delay_ms(500);
ch_disp_any(2,6,4,"整转");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反转");backward=1;delay_s(4);backward=0;
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
xidi=1;
piaoxi=0;
ch_disp_any(2,6,4,"整转");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反转");backward=1;delay_s(4);backward=0;delay_ms(500);
ch_disp_any(2,6,4,"整转");forward=1;delay_s(4);forward=0;delay_ms(500);
ch_disp_any(2,6,4,"反转");backward=1;delay_s(4);backward=0;
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
piaoxi=1;
tuoshui=0;
ch_disp_any(2,6,4,"整转");forward=1;delay_s(4);forward=0;
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
tuoshui=1;
}
void PS()
{
tuoshui=0;
ch_disp_any(2,6,4,"整转");forward=1;delay_s(4);forward=0;
ch_disp_any(2,6,4,"出水");chushui=0;delay_s(2);chushui=1;
tuoshui=1;
}
void main()
{
  UART_Init();
  init_lcd();
  forward=0;
  backward=0;
  led=0xee;
  ch_disp_any(1,1,16,"洗衣方式:标准     ");
  ch_disp_any(2,1,16,"洗衣状态:         ");
  ch_disp_any(3,1,16,"运行状态:         ");
  while(1)
  {
   while(chengxv&&shuiwei&&qiting);
delay_ms(50);
if(chengxv==0)
{
  mode++;
  if(mode>3) mode=0;
  if(mode==0) {ch_disp_any(1,6,4,"标准");led=(led|0x0f)&0xfe;}
  if(mode==1) {ch_disp_any(1,6,4,"经济");led=(led|0x0f)&0xfd;}
  if(mode==2) {ch_disp_any(1,6,4,"单洗");led=(led|0x0f)&0xfb;}
  if(mode==3) {ch_disp_any(1,6,4,"排水");led=(led|0x0f)&0xf7;}
}
if(shuiwei==0)
{
  water++;
  if(water==3) water=0;
  if(water==0) led=(led|0xf0)&0xef;
  if(water==1) led=(led|0xf0)&0xdf;
  if(water==2) led=(led|0xf0)&0xbf;
}
if(qiting==0)
{
   if(gai==0)
   {
    ch_disp_any(4,1,10,"请关机盖!");
    Speech("请关机盖",8);
    while(gai==1);
   }
   ch_disp_any(4,1,16,"              ");
   switch(mode)
   {
    case 0:BZ();break;
    case 1:JJ();break;
    case 2:DX();break;
    case 3:PS();break;
    default:break;
   }
   ch_disp_any(3,6,4,"停止");
}
  }
}


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

使用道具 举报

沙发
ID:1 发表于 2018-11-30 17:21 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

板凳
ID:402717 发表于 2018-12-7 15:15 | 只看该作者
定义 sbit piaoxo=P2^3 时与程序里的 piaoxi 不一致。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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