C语言的洗衣机程序

合集下载

基于89C51的全自动洗衣机控制系统 程序

基于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课程设计全——自动洗衣机梯形图华东交通大学理工学院机电工程分院电气控制与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全自动洗衣机程序设计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;//开电机
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;
}
}
}}。

相关文档
最新文档