C语言的洗衣机程序
基于89C51的全自动洗衣机控制系统 程序
/***************************头文件***********************/ #include <reg51.h>/************************数据类型宏定义******************/ #define uchar unsigned char#define uint unsigned int/***********************使能、禁止宏定义*****************/ #define Enable(); EA=1;#define Disable();EA=0;/********************程序选择功能标志宏定义**************/ #define BIAOZHUN 0#define JINGJI 1#define DANDU 2#define PAISHUI 3/********************强弱选择功能标志宏定义**************/ #define QIANGXI 0#define RUOXI 1/*******************进水、排水时间限制宏定义*************/ #define T_JinShui 10 //4min*60s#define T_PaiShui 10 //1min*60s#define T_XiDi 10 //6min*60s#define T_PiaoXi_1 10 //4min*60s#define T_PiaoXi_2 10 //2min*60s#define T_TuoShui 10 //2min*60s/**********************电机控制宏定义********************/ #define ZHENGZHUAN 0#define STOP 1#define FANZHUAN 2#define ZhengZhuan(); PIN_Motor_A = 0; PIN_Motor_B = 1; #define Stop(); PIN_Motor_A = 1; PIN_Motor_B = 1; #define FanZhuan(); PIN_Motor_A = 1; PIN_Motor_B = 0; /*******************暂停、继续控制宏定义*****************/ #define ZanTing(); ET0 = 0; ET1 = 0; Stop();#define JiXu(); ET0 = 1; ET1 = 1;/*************************管脚定义***********************/ //都是低有效,因LED是灌电流,而PNP也是低电平时导通sbit LED_BiaoZhun = P1^0; //标准程序显示灯sbit LED_JingJi = P1^1; //经济程序显示灯sbit LED_DanDu = P1^2; //单独程序显示灯sbit LED_PaiShui = P1^3; //排水程序显示灯sbit LED_QiangXi = P1^4; //强洗状态灯sbit LED_RuoXi = P1^5; //弱洗状态灯sbit LED_XiDi = P1^6; //洗涤状态灯sbit LED_PiaoXi = P1^7; //漂洗状态灯sbit LED_TuoShui = P2^0; //脱水状态灯sbit PIN_BaoJing = P2^1; //报警喇叭sbit PIN_JinShui = P2^2; //进水控制sbit PIN_PaiShui = P2^3; //排谁控制sbit PIN_Motor_A = P2^4; //电机脚Asbit PIN_Motor_B = P2^5; //电机脚Bsbit K_SEL_ChengXu = P3^0; //选择程序键sbit K_SEL_QiangRuo = P3^1; //选择强弱键sbit p32 = P3^2; //sbit p33 = P3^3; //sbit SW_ShuiWei = P3^6; //水位开关sbit SW_AnQuan = P3^7; //安全开关/************************函数申明***********************/ void Programme_PaiShui(void);/*************************数据定义***********************/ uchar flag_SEL_ChengXu; //默认为标准程序,bit flag_SEl_QiangRuo; //默认为强洗,1为弱洗bit flag_Run; //运行标志,1为运行//bit flag_ZanTing; //暂停标志,1为暂停bit flag_JinShui; //进水标志,1为进水bit flag_PaiShui; //排水标志,1为排水bit flag_XiDi; //置洗涤标志bit flag_PiaoXi; //置漂洗标志bit flag_TuoShui; //脱水标志bit flag_BaoJing; //报警标志uchar _50ms; //每50ms加一次的变量uint s; //秒uint T_S; //定时总时间uchar T_Motor; //电机控制时间/*************************延时程序*********************/ void Delay_10ms(uint T1){ uint t1,t2;for(t1=0;t1<T1;t1++)for(t2=0;t2<1250;t2++);//10ms}/**********************管脚初始化程序******************/ void Pin_Init(void){ LED_BiaoZhun = 0; //默认为标准程序,灯亮LED_JingJi = 1; //经济程序显示灯,灭LED_DanDu = 1; //单独程序显示灯,灭LED_PaiShui = 1; //排水程序显示灯,灭LED_QiangXi = 0; //默认为强洗状态,灯亮LED_RuoXi = 1; //弱洗状态灯,灭LED_XiDi = 1; //洗涤状态灯,运行后灯亮LED_PiaoXi = 1; //漂洗状态灯,运行后灯亮LED_TuoShui = 1; //脱水状态灯,运行后灯亮PIN_BaoJing = 1; //报警喇叭,不叫PIN_JinShui = 1; //进水控制,关PIN_PaiShui = 1; //排谁控制,关PIN_Motor_A = 1; //电机脚A,不走PIN_Motor_B = 1; //电机脚B,不走}/********************中断初始化程序********************/void ExInt_Init(void){ IT0 = 1;EX0 = 1;IT1 = 1;EX1 = 1;}/*******************定时器0初始化程序******************/void Timer0_Init(void) //其中没ET0是为以后控制暂停用的{ TMOD = TMOD | 0X01; //定时方式1TH0 = 0X3C; //50msTL0 = 0XB0;TR0 = 1;_50ms = 0;s = 0;}/*******************定时器1初始化程序******************/void Timer1_Init(void) //其中没ET1是为以后控制暂停用的{ TMOD = TMOD | 0X10; //定时方式1TH1 = 0X3C; //50msTL1 = 0XB0;}/********************电机初始化程序********************/void T_Motor_Ctl(uchar t1,uchar t2,uchar t3){ if(!flag_SEl_QiangRuo)//强洗T_Motor = t1;if(flag_SEl_QiangRuo)//弱洗T_Motor = t2;if(flag_TuoShui)//脱水T_Motor = t3;}/********************电机初始化程序********************/void Motor_Init(void){ ZhengZhuan();T_Motor_Ctl(4,3,5);}/**********************解除报警************************/void No_BaoJing(void){ flag_BaoJing= 0; //置报警标志PIN_BaoJing = 1; //报警喇叭//进水、排水已没时间限制了}/**************外部中断0程序为运行或者暂停*************/void int0(void) interrupt 0{if(!p32){ Delay_10ms(1); //延时10ms左右,去抖动if(!p32){ if(!flag_Run)flag_Run = 1; //置运行标志else if(flag_BaoJing)No_BaoJing();else{ static bit flag_ZanTing;flag_ZanTing = ~flag_ZanTing;if(flag_ZanTing)ZanTing();if(!flag_ZanTing) // 这里用else,编译出错。
全自动洗衣机控制程序编程流程图
1、拔插头时,应抓紧插头然后拔出,请勿用力拉
扯电源线。
2、勿使用50℃以上的热水。
3、不能洗涤带有汽油、煤油、酒精或桶内。
5、不要用洗衣服、桶长期储水,不要让重物压在
机盖上,不要让发热源靠近或放在洗衣机上,因容易造成洗衣机变形和引起火灾。
6、洗涤物放入前应检查有无异物,避免带有硬币、
开电源常规检查洗衣机
洗衣机内加水、洗涤剂
分类放入洗涤被服
调节设置参数,冲洗10分钟后排水。
加水、加洗涤剂,预洗20分钟后排水
加水、加洗涤剂,进行精洗30分钟后排水。
加水、加消毒剂浸泡30分钟(浓度:2000mg/L二溴海因)
按“漂洗”键,换水漂洗3次,每次10分钟
按“脱水”键(冬季烘干后晾晒)
报警显示“洗涤结束”
2 3电机持续运转时间15秒,脱水时排水,时间到报警结束。
3 1电机持续运转时间10秒,脱水时排水,时间到报警结束。
6)数码管控制
序号名称显示要求说明
1目标板数码管采用倒计时方式显示电机正反转运行时间,单位秒。虚拟数码管倒计时为0时,洗衣程序完成,报警结束。
2虚拟数码管采用倒计时方式显示洗衣剩余时间,单位分。
3二清洗涤后排水,再进水,执行1次清洗,清洗时间1分钟,正反转安洗涤选择程序执行,清洗完成后排水,再重复执行一遍清洗程序。
5)脱水时间
序号名称功能要求说明
1 5电机持续运转时间20秒,脱水时排水,时间到报警结束。脱水时间选择按键循环选择,对应指示灯亮,洗涤时对应指示灯闪烁,闪烁周期2秒,占空比50%。虚拟面板与目标板指示灯同步显示。
2标准电机正转15秒,反转15秒。
3/4水位时启动,对应模拟量0.75V。
3轻柔电机正转10秒,反转10秒。
基于单片机的洗衣机程序
#include<reg52.h>void delay(unsigned int z); //延时z毫秒子函数void init(); //初始化子函数char keyscan(); //键盘按键扫描子函数void key1_down(); //key1键响应子函数void key2_down(); //key2键响应子函数void key3_down(); //key3键响应子函数void key4_down(); //key4键响应子函数void clock1(); //洗涤环节时钟void clock2(); //漂洗环节时钟void clock3(); //甩干环节时钟sbit key1=P1^4;sbit key2=P1^5;sbit key3=P1^6;sbit key4=P1^7;sbit light1=P2^0;sbit light2=P2^1;sbit light3=P2^2;sbit light4=P2^3;sbit d1=P0^5;sbit d2=P0^6;sbit d3=P0^7;unsigned char xidi=3,piaoxi=3,shuaigan=3;char second=0;unsigned char count=0;void main() //主函数{init();while(1){char x;x=keyscan();switch(x){Case0:case 1: key1_down();break;case 2: key2_down();break;case 3: key3_down();break;case 4: key4_down();break;}}}void init() //初始化:开中断,设定时器0初值{TMOD=0x01;TH0=0x3c; //T0寄存器高8位TL0=0xb0; //T0寄存器低8位EA=1; //开CPU中断ET0=1; //允许T0计数溢出中断TR0=0; //计数器0内部计数停止}void delay(unsigned int z) //延时z毫秒子函数{unsigned int x,y;for(x=z;x>0;x--)for(y=342;y>0;y--);}char keyscan() //键盘按键扫描子函数{unsigned char z=0;if(key1==0){delay(5); //防抖动,即当按键被按下的时间超过5毫秒时才if(key1==0) //认为该按键起作用{light1=0; //此时P2.0口对应的LED灯亮,表明对该按键进行了操作while(key1==0); //手离开按键,表示按键完毕z=1;light1=1; //此时P2.0口对应的LED灯灭}return z;}if(key2==0){delay(5);if(key2==0){light2=0; //此时P2.1口对应的LED灯亮while(key2==0);light2=1; //此时P2.1口对应的LED灯灭z=2;}return z;}if(key3==0){delay(5);if(key3==0){light3=0; //此时P2.2口对应的LED灯亮while(key3==0);light3=1; //此时P2.2口对应的LED灯灭z=3;}return z;}if(key4==0){delay(5);if(key4==0){light4=0; //此时P2.3口对应的LED灯亮while(key4==0);light4=1; //此时P2.3口对应的LED灯灭z=4;}return z;}return z;}void timer0() interrupt 1 //定时器0中断函数{TH0=0x3c; //计数个数X和计数初值N的关系为:X=65536-NTL0=0xb0; //这里即有TH0=(65536-50000)/256,TL0=(65536-50000)%256 count++; //这样就将初值转化成了16进制数} //定时器0为每50ms溢出一次,每溢出一次,全局变量count+1void clock1() //clock1、clock2、clock3与定时器配合起计时作用{if(count==20){ //当count=20,则经过一秒,如此计时count=0;if(second==0){second=59;xidi--;}elsesecond--;}}void clock2(){if(count==20){count=0;if(second==0){second=59;piaoxi--;}elsesecond--;}}void clock3(){if(count==20){count=0;if(second==0){second=59;shuaigan--;}elsesecond--;}}void key1_down() //说明各环节的时间已经选定好,按下Key键,洗衣机开{ //始工作TR0=1; //计数器0内部计数启动while(1){if(xidi>0||xidi==0&&second>0) //洗涤中{d1=0; //此时P0.5口对应的LED灯亮clock1();}else if(piaoxi>0||piaoxi==0&&second>0) //洗涤完毕,漂洗中{d2=0; //此时P0.6口对应的LED灯亮clock2();}else if(shuaigan>0||shuaigan==0&&second>0) //洗涤漂洗完毕,甩干中{d3=0; //此时P0.7口对应的LED灯亮clock3();}else //工作完成{TR0=0;d1=1; //此时P0.5口对应的LED灯灭d2=1; //此时P0.6口对应的LED灯灭d3=1; //此时P0.7口对应的LED灯灭}}}void key2_down() //key2、key3、key4只能在洗衣机开始工作前按{ //下,这样才会有效if(xidi==3) //设定洗涤时间xidi=4;else if(xidi==4)xidi=5;elsexidi=3;}void key3_down() //设定漂洗时间{if(piaoxi==3)piaoxi=4;else if(piaoxi==4)piaoxi=5;elsepiaoxi=3;}void key4_down() //设定甩干时间{if(shuaigan==3)shuaigan=4;else if(shuaigan==4)shuaigan=5;elseshuaigan=3;}。
PLC课程设计全——自动洗衣机梯形图
PLC课程设计全——自动洗衣机梯形图华东交通大学理工学院机电工程分院电气控制与PLC课程设计题目: 全自动洗衣机梯形图控制系统设计院系名称:机电工程学院专业班级: 09机械电子工程学生姓名:学号:指导教师: xx设计地点: xxx设计时间: xxxx目录1 引言 01.1 系统背景描述 01.2 系统控制要求 (1)2. 系统设计方案 (2)2.1 系统功能描述 (2)2.2 方案的论证 (4)2.3确定控制方案 (5)3 硬件电路设计 (6)3.1 PLC选型 (6)3.2 水位传感器的选择 (6)3.3 接触器的选择 (7)3.4 继电器的选择 (7)3.5 进水阀的选择 (7)3.6 排水阀的选择 (8)3.7 电动机的选择 (8)3.8 I/O点分配 (10)3.9 I/O接线图 (11)4软件设计 (12)4.1 控制方案 (12)4.2 全自动洗衣机控制程序流程图 (13)4.3全自动洗衣机步进梯形图 (14)4.4 中间变量的记录 (16)4.5 系统调试 (17)设计心得 (18)参考文献 (19)附录指令表视图 (20)1 引言1.1 系统背景描述从古到今,洗衣服都是一项难于逃避的家务劳动,而在洗衣机出现以前,对于许多人而言,它并不像田园诗描绘的那样充满乐趣,手搓、棒击、冲刷、甩打……这些不断重复的简单的体力劳动,留给人的感受常常是:辛苦劳累。
1874年,“手洗时代”受到了前所未有的挑战——有人发明了木制手摇洗衣机。
发明者是美国人比尔·布莱克斯。
布莱克斯的洗衣机构造极为简单,是在木筒里装上6块叶片,用手柄和齿轮传动,使衣服在筒内翻转,从而达到“净衣”的目的。
这套装置的问世,让那些为提高生活效率而冥思苦想的人士大受启发,洗衣机的改进过程开始大大加快。
1880年,美国又出现了蒸汽洗衣机,蒸汽动力开始取代人力。
之后,水力洗衣机、内燃机洗衣机也相继出现。
到1911年,美国试制成功世界上第一台电动洗衣机。
PLC全自动洗衣机程序设计
PLC全自动洗衣机程序设计PLC全自动洗衣机程序设计1. 简介PLC全自动洗衣机程序设计是一种基于可编程逻辑控制器(PLC)的洗衣机控制系统。
该程序设计旨在实现洗衣机的全自动化操作,包括洗衣、漂洗、脱水等各种功能。
2. 硬件设计2.1 PLC选择在设计该全自动洗衣机程序时,我们选择了一款功能强大、可靠性高的PLC作为控制器。
该PLC具备足够的输入输出接口,以满足洗衣机的各种控制需求。
2.2 传感器选择为了实现洗衣机的自动化操作,我们需要选择适合的传感器来监测洗衣机内部的状态。
常用的传感器包括温度传感器、水位传感器、压力传感器等。
2.3 电机控制洗衣机中的电机用于驱动洗涤筒和脱水筒的旋转。
我们需要选择适当的电机并设计合适的电路来控制电机的转速和转向。
3. 软件设计3.1 洗衣程序设计洗衣机的洗衣程序包括几个主要的步骤,如水位控制、加热控制、搅拌控制等。
我们可以通过PLC编程实现这些步骤的控制。
例如,我们可以设置水位传感器监测水位,当水位达到一定高度时停止进水;我们可以通过温度传感器监测水温,控制加热器的开关等。
3.2 漂洗程序设计漂洗程序是洗衣机中的一个重要步骤,用于将洗涤剂从衣物中洗去。
漂洗程序的控制可以通过PLC编程实现。
通过设置水位传感器和搅拌控制,我们可以在洗衣过程中进行多次漂洗,确保洗涤剂完全被洗去。
3.3 脱水程序设计脱水程序用于将衣物中的水分尽可能地去除。
通过PLC的编程,我们可以设置电机的转速和时间,实现脱水功能。
4.PLC全自动洗衣机程序设计是一个复杂的系统工程,需要充分考虑硬件和软件的设计。
通过合理选择PLC和传感器,以及正确编写程序逻辑,我们可以实现一个功能完善、可靠性高的全自动洗衣机控制系统。
单片机课程设计 洗衣机控制器
上海电力学院16位单片机大作业实验报告实验名称:洗衣机控制器专业:通信工程姓名:班级:学号:一、设计目的运用C 语言,深入了解MC9S12XS128单片机的知识,根据题目的要求进行软硬件的设计和调试,从而加深对于本课程知识点的理解,掌握了如何使用CodeWarrior 来整合各种驱动模块,再通过算法实现硬件上的运行。
二、功能描述最终运行程序实现的的功能为:通过对于CodeWarrior 软件的操作,编写代码,最终实现freescale MC9S12XS128单片机简单控制洗衣机洗衣功能。
按自己的要求将实验箱连线,通电后,LCD 显示屏上面上排显示可以设定的时间,下排显示倒计时的时间,通过键盘输入设定的时间,开始计时,LED 显示灯(绿灯亮起)。
设置好固定的洗衣时间后,开始执行“洗衣”,倒计时完成后,即“洗衣”完成,在LCD 显示屏上面显示“洗衣”的时间到,即时间到00:00,LED 所有灯亮。
三.实验设备1.PC 机一台2.S12嵌入式开发系统 一台3.连接导线 若干 4.小键盘一个四.模块(一)定时模块定时器实现溢出中断接线图PTA0 PTA1 PTA2 PTA3 PTA4 PTA5 PTA6 PTA7PTA 口(KEY1-8)Vcc导线接插点(二)LED 指示灯模块0x55:绿灯亮 0xFF :全部灯亮 (三)LCD 显示模块表7-1 HD44780引脚信号管脚号 符号 电平方向引脚含义说明1 Vss 电源地2 Vdd 电源(+5V)3 V0 液晶驱动电源(0~5V )4 RS H/L 输入 寄存器选择;1-数据寄存器 0-指令寄存器5 R/W H/L 输入 读写操作选择:1-读操作 0-写操作 6E H/L H →L 输入使能信号:R/W =0,E 下降沿有效 R/W =1,E=1有效7~10DB0~DB3 三态8位数据总线的低4位,若与MCU 进行4位传送时,此4位不用11~14 DB4~DB7 三态 8位数据总线的高4位,若与MCU 进行4位传送时,只用此4位15~16E1~E2输入上下两行使能信号,只用于一些特殊型号(四)键盘输入模块 键盘接线原理图:实验箱提供一个16键键盘,用于键盘中断信号的输入。
第1章_C语言概述(C语言程序设计)
通过以上例子可以看出: 通过以上例子可以看出: 1. C程序是由函数构成的。每个程序由一个或多个函数组成, 程序是由函数构成的。每个程序由一个或多个函数组成, 程序是由函数构成的 其中必须有且仅有一个主函数main( )。 有且仅有一个主函数 其中必须有且仅有一个主函数 。 2. 一个可执行的 语言程序总是从 一个可执行的C语言程序总是从main函数开始执行,而不 函数开始执行, 语言程序总是从 函数开始执行 论其在整个程序中的位置如何。 论其在整个程序中的位置如何。 3. C对输入输出实行函数化。 对输入输出实行函数化。 对输入输出实行函数化 4. C程序书写格式自由,一行内可以写几个语句,一个语句 程序书写格式自由,一行内可以写几个语句, 程序书写格式自由 也可以分写在多行上。 也可以分写在多行上。 5. 可用 可用/*……*/对C程序中的任何部分作注释,注释可以写在 对 程序中的任何部分作注释 程序中的任何部分作注释, 程序的任何位置上, 也可不在同一行上。 程序的任何位置上,“/*”与“*/”也可不在同一行上。 与 也可不在同一行上 6. 在C语言中,大小写字母是有区别的。( 语言习惯用小 语言中, 。(C语言习惯用小 语言中 大小写字母是有区别的。( 写字母) 写字母)
主函数
main( ) { int x, y, z; printf(“Please input two integers:\n”) ; scanf(“%d%d” , &x, &y); z = add_xy(x, y); printf(“%d %d %d.”, x, y, z); }
西南林学院计科系
第 1章 概述
西南林学院计科系
第 1章 概述
将汇编源程序翻译为目标程序(机器语言)的过程称 为汇编 汇编。 汇编 连接的原因是由于在目标程序中还可能要调用一些 连接 标准程序库中的标准子程序或其他自定义函数等,由于 这些程序还没有连接成一个整体,因此,需通过“连接 程序”将目标程序和有关的程序库组合成一个完整的 “可执行程序”。
的单片机全自动洗衣机设计方案(北理工)
全自动洗衣机课程设计基于51单片机,C语言实现。
基本要求模拟全自动洗衣机工作过程。
以电机替代洗衣机电机。
显示洗衣机工作的状态<进水、浸泡、洗衣、脱水、结束)。
显示工作剩余时间<洗衣程序可自定义,时间精度:秒)。
洗衣时交替正、反转。
扩展要求洗衣和脱水时电机转速不同。
增加水位传感器输入。
故障报警。
增加声音提示。
其它自定义功能。
设计用Preteus仿真:仿真图如下:C文件函数代码:#include<reg51.h>//****************************//#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 = P0^0。
// 进水指示灯sbit led_xi = P0^1。
// 洗衣指示灯sbit led_pao = P0^2。
// 泡洗指示灯sbit led_xx = P0^3。
// 脱水指示灯sbit led_out = P0^4。
// 出水指示灯sbit led_over = P0^5。
// 洗衣结束指示灯sbit led_work = P0^6。
// 电机工作指示灯sbit led_wring = P0^7。
基于的51单片机全自动洗衣机设计(优.选)
全自动洗衣机课程设计基于51单片机,C语言实现。
基本要求模拟全自动洗衣机工作过程。
以电机替代洗衣机电机。
显示洗衣机工作的状态(进水、浸泡、洗衣、脱水、结束)。
显示工作剩余时间(洗衣程序可自定义,时间精度:秒)。
洗衣时交替正、反转。
扩展要求洗衣和脱水时电机转速不同。
增加水位传感器输入。
故障报警。
增加声音提示。
其它自定义功能。
设计用Preteus仿真:仿真图如下:C文件函数代码:#include<reg51.h>//****************************//#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 = P0^0; // 进水指示灯sbit led_xi = P0^1; // 洗衣指示灯sbit led_pao = P0^2; // 泡洗指示灯sbit led_xx = P0^3; // 脱水指示灯sbit led_out = P0^4; // 出水指示灯sbit led_over = P0^5; // 洗衣结束指示灯sbit led_work = P0^6; // 电机工作指示灯sbit led_wring = P0^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 delay();// 延时函数void in(); // 进水子程序void out(); // 出水子程序void over(); // 结束子程序void xi(); // 洗衣子程序void pao(); // 泡衣子程序void xx(); // 脱水子程序void on(); // 工作on处理子程序void se(); // 显示菜单选择void SEG_display(); //显示时间子程序void key_scan(); // 按键扫描子程序//*****************************//// 延时函数//****************************//void delay(uint i){uint x,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)xi();if(flag0 == 2)pao();if(flag0 == 3)xx();if(flag0 == 4)out();}//*******************************// // 结束子程序//*********************************// void over(){ other=0;anther=0;P0 = 0xff;mo_r=0;mo_l=0;led_over = 0;EA=0;}//*********************************//// 进水子程序//*********************************// void in(){ anther=0;other=0;P0 = 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;P0 = 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;P0 = 0xff;led_xx = 0;mo_r = 0;mo_l = 1;min = 0;sec = 50;}//*********************************// // 出水子程序//*********************************// void out(){ anther=0;other=0;P0 = 0xff;led_out = 0;flag2++;mo_r = 0;mo_l = 0;min = 0;sec = 5;}//*********************************// // 显示菜单选择//*********************************// void se(){P0 = 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){delay(5);if(key_on == 0){while(!key_on);on();break;}}//**************************// if(key_off == 0){delay(5);if(key_off == 0){while(!key_off);over();break;}}//****************************//if(key_se == 0){delay(5);if(key_se == 0){while(!key_se);flag0++;se();}}}}//*********************************// // 按键扫描子程序//*********************************// 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;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();}}}最新文件---------------- 仅供参考--------------------已改成word文本--------------------- 方便更改。
控制电机的c语言程序
//水位5
if(shuiman==1&&sw5==0&&sw4==1&&sw3==1&&sw2==1&&sw1==1)//当唯一的闭合一个传感器单元:水位5时发生
{
P0=table[5];//显示水位深度:5
}
//水位4
if(shuiman==1&&sw5==1&&sw4==0&&sw3==1&&sw2==1&&sw1==1)//当唯一的闭合一个传感器单元:水位4时发生
#include<reg51.h>
//定义一个数组,使数码管显示的数字和数组元素的下标相等
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
sbit shuiman=P1^0;//水满
sbit sw5=P1^1;//水位5
{
P0=table[2];//显示水位深度:2
}
//水位低
if(shuiman==1&&sw5==1&&sw4==1&&sw3==1&&sw2==1&&sw1==0)//当唯一的闭合一个传感器单元:水位1时发生
{
dianji=0;//开电机
state=0;//电机工作指示灯打开
P0=table[1];//显示水位深度:1
}
//手工上水
if(shougong==0)//当按手工上水按钮时发生
{
dianji=0;//开电机
全自动洗衣机PLC编程设计
e e 0003 e e e e e e e e e 0004 e e e e e e e e 0005
DN
2S延迟 T4:0
DN
TT
T4:0 1.0 2 0
DN
EN
停止按钮 I:0
0
循环计时 T4:5
2S延迟 T4:0
正转 30S/TT T4:1
TT
T4:5 1.0 320 0
DN
EN
DN
T4:5 DN
停止按钮 I:0
0 Bul.1762
TT
T4:1 1.0 30< 0<
DN
EN
Page 1
Sunday, April 10, 2016 - 16:13:31
0006
正转 30S/TT T4:1
LAD 2 -
1 Bul.1762 T4:6
2 Bul.1762
中水位 I:0
6 Bul.1762
7 Bul.1762
DN
进水阀 O:0
3 Bul.1762
1 Bul.1762
低水位 I:0
4 Bul.1762
进水阀 O:0
低水位检测 I:0
8 Bul.1762
清洗计数 C5:0
DN
启动按钮 I:0
1 Bul.1762
停止按钮 I:0 排空检测 I:0
0012
T4:9 1.0 2< 0<
DN
EN
0013
T4:5 DN
0 Bul.1762
5 Bul.1762
排水 O:0
PLC全自动洗衣机程序设计
PLC全自动洗衣机程序设计PLC全自动洗衣机程序设计1. 引言PLC(可编程逻辑控制器)是一种常用于自动化控制系统中的工控设备,广泛应用于各行各业。
本文将介绍如何进行PLC全自动洗衣机的程序设计,以实现洗衣机的自动化运行。
基于PLC的洗衣机程序设计可以提高生产效率、节约资源,也能够提升洗衣机的智能化水平。
2. PLC全自动洗衣机的工作原理PLC全自动洗衣机的工作原理包括以下几个步骤:- 步骤1:用户选择洗衣模式和洗衣时间等参数。
- 步骤2:用户放入衣物,并关闭洗衣机的门。
- 步骤3:PLC根据用户选择的参数,控制洗衣机的加热、水位、转速等。
- 步骤4:洗衣机开始工作,根据设定的程序依次进行水洗、漂洗、脱水等操作。
- 步骤5:洗衣机完成工作,发出提示音,等待用户取出洗好的衣物。
3. PLC全自动洗衣机程序设计流程根据洗衣机的工作原理,我们可以设计出以下的PLC全自动洗衣机程序:3.1 程序初始化程序初始化主要包括以下内容:- PLC系统与洗衣机的连接和通信检测。
- 初始化各个传感器,如温度传感器、水位传感器等。
- 检测洗衣机的状态,确保门已关闭,并将状态设置为“待机”。
3.2 用户输入参数用户通过操作洗衣机的控制面板,输入洗衣模式、洗衣时间等参数。
PLC需要读取这些参数,并进行验证和显示。
3.3 洗衣机工作控制根据用户输入的参数,PLC需要控制洗衣机的各个组件进行相应的工作控制,包括:- 控制加热器的启停,根据用户选择的洗衣模式和温度要求来调节加热器的工作状态。
- 控制水泵的启停,根据用户选择的洗衣模式和水位要求来调节水泵的工作状态。
- 控制电机的转速,根据用户选择的洗衣模式和转速要求来调节电机的转速。
- 监测洗衣机的状态,如水位、温度、转速等,确保工作在正常范围内。
3.4 工作结束处理当洗衣机完成工作后,PLC需要进行相应的处理,包括:- 发出提示音,提醒用户取出洗好的衣物。
- 将洗衣机的状态设置为“待机”,等待下一次操作。
全自动洗衣机PLC课程设计
深入了解PLC编程
在进行课程设计前,应充分学习PLC编程知识,熟悉各种指令和编程方法,为设计打下基础。
注重细节处理
在编程过程中,应注重细节处理,如合理安排输入输出点、优化程序结构等,以提高程序的稳定性和效率。
加强团队协作
课程设计涉及多个方面,需要团队成员分工协作、密切配合,共同完成设计任务。
随着人工智能技术的不断发展,未来的全自动洗衣机将更加智能化,能够实现自动识别衣物类型、自动添加洗涤剂、自动优化洗衣程序等功能。
掌握PLC编程技术
利用PLC技术实现对全自动洗衣机的自动化控制,包括水位控制、洗涤时间控制、漂洗次数控制等。
实现全自动洗衣机的自动化控制
通过实际动手操作,培养学生的实践能力和解决问题的能力,提高学生的综合素质。
培养学生的实践能力
完成全自动洗衣机的PLC控制程序设计
根据洗衣机的功能需求,编写相应的PLC控制程序,实现全自动洗衣机的各项功能。
智能化发展
环保意识的提高将促使全自动洗衣机向更加环保的方向发展,如采用更高效的电机、使用环保型洗涤剂等。
绿色环保
互联网技术的普及将为全自动洗衣机带来新的发展机遇,如实现远程操控、故障诊断、数据分析等功能,为用户提供更加便捷的服务。
互联网+
THANKS
感谢您的观看。
01
通过PLC编程,成功实现了全自动洗衣机的进水、洗涤、漂洗、排水、脱水等基本功能,且运行稳定可靠。
优化洗衣流程
02
根据衣物类型和脏污程度,设计了多种洗衣程序,用户可根据需求选择合适的程序,提高了洗衣的针对性和效率。
人机交互界面友好
03
设计了简洁明了的操作界面,用户可轻松选择洗衣程序、设定洗衣参数,并实时显示洗衣状态,提升了用户体验。
全自动洗衣机汇编程序框图和清单
全自动洗衣机程序设计思路概括1 在洗衣机接电的情况下有电源指示灯亮(硬件已经实现)2 打开单片机电源开关单片机开始复位程序开始执行3 打开进水阀进水,用高水位开关判断水量是否到达水位上限4 扫描键盘等用户选择工作模式然后跳转到相应的子程序执行5进入洗衣过程自动洗衣时间12分钟6当洗衣好后出水阀放水放完水后进水阀打开7进入漂洗阶段漂洗指示灯亮漂洗三次每次两分钟8漂洗完毕,程序设置进入脱水阶段,默认强洗正转模式9脱水3分钟后程序结束警报全自动洗衣机单片机程序流程图全自动洗衣机单片机汇编程序清单;程序开始执行,按“开始”键,单片机复位,由硬件实现“开始指示灯”亮ORG0000HMOVX DPTR #BFFFN1: MOV P0 #11111110B ;开始放水MOV C, P1.4JC N1 ;高水位开关,水位未达继续进水,水位到达,停止进水MOV P0 #11101111B ;停止放水,放水完毕报警ACALL DELAY4 ;延时4s,;扫描键盘,判断是否有按键,无按键返回,有按键转到相应按键子程序L1: MOV P0 #11111111B ;将P0口置1MOVX DPTR #3FFF ;选通键盘驱动器,便于读入键盘数据MOVX A@DPTR ;读入键盘数据MOV R0, A;暂存A值ORL A#11111110B ;判断是否为“强洗/正转”按键JZ IN1MOV A R0 ;取A值ORL A, #11111101B ;判断是否为“弱洗/正转”按键JZ IN2MOV A R0ORZ A#11111011B :判断是否为“弱洗/正转”按键JZ IN3MOV A R0ORL A, #11110111B :判断是否为“弱洗/反转”按键JZ IN4;相应按键的子程序IN1:ACALL DELAY2 ;延时等待键盘抖动过去CLR P1.2 ;强洗CLR P1.0 ;正转ACALL DELAY720 ;分钟延时程序,洗涤CPL P1.2CPL P1.0RETIN2:ACALL DELAY2 ;延时等待键盘抖动过去CLR P1.3 ;弱洗CLR P1.0 ;正转ACALL DELAY720 ;分钟延时程序,洗涤CPL P1.0CPL P1.3RETIN3:ACALL DELAY2 ;延时等待键盘抖动过去CLR P1.2 ;强洗CLR P1.1 ;反转ACALL DELAY720 ;分钟延时程序,洗涤CPL P1.2CPL P1.1RETIN4:ACALL DELAY2 ;延时等待键盘抖动过去CLR P1.3CLR P1.1ACALL DELAY720 ;分钟延时程序,洗涤CPL P1.3CPL P1.1RET;洗涤完成,报警,进入漂洗阶段,漂洗指示灯MOVX DPTR #BFFFMOV P0 #11101111B ;洗衣完成警报ACALL DELAY4 ;4s警报延时MOV P0 #11111011B ;漂洗指示灯亮N2:MOV P0 #11111001B ;放出洗涤污水MOV C , P1.5JC N2MOV R0 #02HPX:CLR P1.0CLR P1.3 ;默认弱洗为弱洗正转ACALL DELAY180 ;3分钟延时CPL P1.0CPL P1.3N3:MOV P0 #11111001B ;出水MOV C P1.5 ;低水位开关,水低停止出水,水未低继续出水JC N3DJNZ R0, PX;漂洗完成,开始自动脱水,默认为强洗正转,时间是6分钟SET P1.0 ;正转SET P1.2 ;强洗MOV P0 #11110111B ;脱水指示灯亮MOV P0 #11110101B ;打开出水阀ACALL DELAY480 ;延时6分钟CLR P1.0CLR P1.2MOV P0 #11100101B ;警报ACALL DELAY4 ;延时4sMOV P0 #1111111B ;关闭警报和脱水指示灯;相应延时程序DELAY720: MOV R7 #2DELAY480: MOV R6 #2DELAY180:MOV R5 #45DELAY4:MOV R4 #2DELAY2: MOV R3 #10D2: MOV R2 #100D1: MOV R1 #200NOPNOPNOPNOPNOPNOPNOPNOPDJNZ R1, D1DJNZ R2, D2DJNZ R3, DELAY2DJNZ R4, DELAY4DJNZ R5, DELAY480DJNZ R6,DELAY720。
洗衣机c语言程序
{
ID++;
if(ID==6)
{
ID=0;
void delay02s(void)
{
unsigned char i;
for(i=200;i>0;i--)
{
delay1ms();
}
}
void main(void)
unsigned char ID;
unsigned char keye;
unsigned char ready;
unsigned char uwtime;
unsigned char hwtime;
unsigned char count;
unsigned char mstcnt;
unsigned char i,j;
sbit full=P2^5;
sbit empty=P2^6;
unsigned char temp;
unsigned char startok;
P0_5=0;
P0_6=0;
P0_7=0;
P2=0;
startok=0;
ID=0;
keye=1;
ready=0;
uwtime=0;
dispbuf[1]=utime/10;
P0_5=1;
P0_6=0;
P0_7=0;
delay02s();
0x7d,0x07,0x7f,0x6f,0x00};
unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
C洗衣机流程图语言编辑
进一步了解8051单片机.
熟悉单片机控制系统开发流程。
深入学习计算机汇编语言的编程方法。
对计算机的工作原理有进一步的认识。
增强个人动手能力.
第二章硬件和软件的设计方法
在进行系统设计前,我们必须知道所设计的项目要完成什么任务,达到什么样的要求,并根据所完成的任务和要求来选择相应的硬件设备和软件编程方法。在设计前我们先了解一下洗衣机的工作过程和单片机的工作原理,确立算法模型,再选择相应的软件编程语言
基于单片机的洗衣机控制系统设计
罗远强 指导老师:吴宇
摘要
单片机是计算机家庭的一个重要分支,它具有体积小、价格低、面向控制的特点,适用于各种工业控制、仪器仪表装置,在人类生产和生活的各个领域都有极为广泛应用。
本洗衣机控制系统,采用目前常用的89C51单片机,用汇编语言的编程方法,完成对洗衣机洗衣全过程的自动控制,并采用LED数码显示洗衣过程代码和洗衣剩余时间,洗衣完成后能自动报警。使全自动洗衣机的使用更加简单、直观和方便。本设计取材容易,结构简洁,易于制作,具有一定的实用价值。
三大功能中的漂洗实际上是由洗涤和脱水功能组成的,如一次标准洗涤过程(过程代码)中,漂洗功能包括了时间均为2分钟的脱水、洗涤、脱水、洗涤。因此,在编写控制程序实现三大功能时只需编写洗涤和脱水功能的代码,然后作为子程序调用即可。
完成一次洗衣过程所需的动作有:
(1)进水动作进行洗涤时,盛水桶内的水量必须到水位设定要求。而水位的高低可以通过调节水位开关来实现.洗衣机的进水和水位判断是由水位开关和进水阀的开合来进行控制的。当桶内没有水或水量达不到设定水位时,单片机程序将控制进水阀闭合,开始注水;当桶内的水位达到设定水位时。水位开关受压闭合;程序就可进入下一步(洗涤)处理。若打开进水阀后20分钟内不能进水,则将出错报警,用户只能关闭洗衣机电源进行相关检查后方能重新开机。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机控制洗衣机C程序设计
#include<at89x52.h>
#define waterin P1_6
#define waterout P1_5
#define swim P1_7
bit flag;
char Count,t,waterinflag,wateroutflag,swimflag; // 用于中断程序的计数
unsigned char second;
void Timeinit(void)
{
//秒表初始化
Count=0; t=0; second=0; flag=0;
// 开定时器1,设定为工作方式2, 让定时中断时自动加载定时的初值 IE=0x8a; //允许中断,选中T0,T1中断
TMOD=0x21; //定时器0,使用TR0启动方式,选中工作方式1,定时器1,使用TR1启动方式,工作方式2 TH1=0x06; //设置定时初值
256-250=6 (250us,要实现10ms就要40次)
TL1=0x06;
TR1=1;
}
//用T1定时的秒表中断程序,工作方式2
void Miao(void) interrupt 3
{
Count++;
if(Count==40){
Count=0;
t++; //百分秒
if(t==100){
flag=1;
t=0;
if(second==10) second=0;
else second++;
}
}
}
void Initcover() { //盖子的中断程序
EA=1;
ET1=0;
EX1=1;
}
void coverinterrupt() interrupt 2 { waterin=1;
waterout=1;
swim=1;
while (P3_3==0) ;
waterin=waterinflag;
waterout=wateroutflag;
swim=swimflag;
}
main()
{
//洗衣机工作过程
int i=0;
Initcover();
waterout=1;
wateroutflag=1;
swim=1;
swimflag=1;
P3_2=1;
if (P1_0==1) {
waterin=0;
waterinflag=0;
while(P3_2==1) {
waterin=1;
waterinflag=1;
for (i=0;i<10;i++) {
Timeinit();
while (second!=10) {
swim=0;
swimflag=0;
if(flag) {
flag=0;
P1=~(second*2);
waterin=waterinflag;
waterout=wateroutflag;
swim=swimflag;
}
}
P1=0xff;
waterin=waterinflag;
waterout=wateroutflag;
swim=swimflag;
Timeinit();
while (second!=3) {
swim=1;
swimflag=1;
if(flag) {
flag=0;
P1=~(second*2);
waterin=waterinflag;
waterout=wateroutflag;
swim=swimflag;
}
}
}
Timeinit();
while (second!=10 ) {
waterout=0;
wateroutflag=0;
if(flag) {
flag=0;
P1=~(second*2);
waterin=waterinflag;
waterout=wateroutflag;
swim=swimflag;
}
}
waterout=1;
wateroutflag=1;
}
}
}}。