基于的51单片机全自动洗衣机设计

合集下载

基于单片机的全自动洗衣机控制系统毕业设计论文

基于单片机的全自动洗衣机控制系统毕业设计论文

基于单片机的全自动洗衣机控制系统毕业设计论文基于单片机的洗衣机控制系统设计摘要单片机是计算机家庭的一个重要分支,它具有体积小、价格低、面向控制的特点,适用于各种工业控制、仪器仪表装置,在人类生产和生活的各个领域都有极为广泛应用。

本洗衣机控制系统,采用目前常用的89C51单片机,用汇编语言的编程方法,完成对洗衣机洗衣全过程的自动控制,并采用LED数码显示洗衣过程代码和洗衣剩余时间,洗衣完成后能自动报警。

使全自动洗衣机的使用更加简单、直观和方便。

本设计取材容易,结构简洁,易于制作,具有一定的实用价值。

关键字:单片机、汇编语言、动态扫描目录绪论1.1 设计目标1.2 设计意义第二章硬件和软件的设计方法 2.1 洗衣机的工作过程2.2 全自动洗衣机控制系统硬件的选择 2.3 单片机编程软件的选用第二章全自动洗衣机控制系统的设计原理 3.1 控制系统方框图3.2 控制板电路原理(附整机原理图) 3.3 控制功能及过程第四章洗衣机控制系统的软件系统4.1 洗衣机控制系统软件的编程思路 4.2 主程序及子程序流程图 4.2 洗衣机控制系统的源程序参考文献附录 AT89C51技术手册MCS-51系列单片机指令系统表第一章第一章:绪论在生产和生活的各个领域中,凡是有自动控制要求的地方都会有单片机的出现。

单片机的应用有利于产品的小型化、多功能化和智能化,而且抗干扰能力强,可在各种恶劣的环境下可靠地工作,成本也较低。

所以单片机的应用已极为广泛,它在工业自动化、工业测控、智能仪器仪表、家用电器、信息与通信、军事装备等方面都在发挥着“微电脑控制”的作用。

1.1 设计目标用51系列单片机89C51控制全自动洗衣机的运行,使其能自动地完成进水、洗涤、漂洗、脱水等功能。

不同的衣物,洗涤、漂洗、脱水和洗衣电机正反转所用的时间不同,要求设计能够实现过程选择,并在LED显示屏上显示过程代码。

在运行的时候能显示完成整个过程的剩余时间。

基于单片机的全自动洗衣机控制系统设计

基于单片机的全自动洗衣机控制系统设计

基于单片机的全自动洗衣机控制系统设计
本文基于单片机技术,设计了一种全自动洗衣机控制系统。

该系
统采用了微控制器作为主控芯片,利用多种传感器对洗衣机的运行状
态进行监控和反馈,并采用液晶显示屏和按键操作界面,实现了对洗
衣机的全面控制和调节。

首先,本文介绍了洗衣机控制系统的设计原则和功能要求。

针对
用户需求,系统应该具备自动化操作、清洗效果稳定、耗能低等特点。

为达到这些要求,设计人员利用已有的电子和机械技术,创新性地将
控制系统进行了完善和优化,使其在技术和应用水平上均能满足用户
的需求。

其次,本文阐述了洗衣机控制系统的硬件实现方案。

主要涵盖了
微控制器的选型、传感器的选择与应用、负载驱动模块的设计等方面,全面展示了整个控制系统的结构和工作原理。

接着介绍了系统关键部
件的详细设计方案,包括自动化程序的设计、数据采集与处理的方法、通信协议的制定等,为系统的良好运行提供了坚实的技术保障。

最后,本文对系统的实验结果进行了分析和评测。

从洗衣机的功耗、清洗效果、安全性、用户友好性等多个维度对系统进行了考核和
评估,并得出了较为准确和权威的测试结论。

结果表明,本文设计的
洗衣机控制系统在自动化程度、清洗效果、耗能等方面均优于传统洗
衣机,可以达到用户期望的高度。

综上所述,本文基于单片机技术,设计了一种全自动洗衣机控制
系统。

具备自动化操作、清洗效果稳定、耗能低等特点,具有广阔的
应用前景和市场潜力。

本文的成果对洗衣机的自动化控制技术和应用
研究具有一定的启发和参考价值。

基于51单片机的智能洗衣控制系统设计

基于51单片机的智能洗衣控制系统设计

基于51单片机的智能洗衣控制系统设计1. 引言智能家居技术的发展为我们的生活带来了诸多便利,其中智能洗衣控制系统是其中的一项重要应用。

本文旨在基于51单片机设计一种智能洗衣控制系统,通过对洗衣机的控制和监测,提高洗衣质量和用户体验。

2. 智能洗衣控制系统设计原理2.1 51单片机介绍51单片机是一种常用的微控制器,具有体积小、功耗低、易于编程等特点。

在本设计中,我们选择51单片机作为主要的控制器。

2.2 智能洗衣系统功能需求智能洗衣系统应具备以下功能需求:2.2.1 温度控制:根据用户设定的温度要求,自动调节水温。

2.2.2 洗涤程序选择:根据用户选择不同类型的布料和污渍程度,自动调节洗涤程序。

2.2.3 水位监测:通过传感器实时监测水位情况,并根据需要自动添加或排放水量。

2.2.4 电机驱动:通过电机驱动实现转筒运转、排放水等功能。

...3 实验结果与分析在实际实验中,我们成功地实现了基于51单片机的智能洗衣控制系统,并进行了多组洗衣实验。

通过对洗衣机的控制和监测,系统能够根据用户设定的要求进行智能化的洗涤操作,并在完成后自动停止。

4 总结与展望通过本次研究,我们成功地设计并实现了一种基于51单片机的智能洗衣控制系统。

该系统具备温度控制、洗涤程序选择、水位监测和电机驱动等功能,能够提高洗衣质量和用户体验。

然而,目前该系统还存在一些局限性,如对于特殊布料和污渍处理不够精细等。

未来工作可以进一步优化系统设计,并结合更多的传感器和算法来提高智能化程度。

5 致谢本次研究得到了指导教师的悉心指导与帮助,在此向他们表示诚挚的感谢。

同时也感谢参与本研究工作并提供支持与帮助的各位同学们。

6 附录附录中包含了本次研究中使用到的关键代码、电路图、数据表格等详细信息,以供读者参考。

通过对基于51单片机的智能洗衣控制系统的设计,本文详细介绍了系统的原理、功能需求、硬件设计和软件设计等方面。

通过实验验证了系统的可行性,并对实验结果进行了分析。

基于单片机的智能全自动洗衣机模拟控制系统设计

基于单片机的智能全自动洗衣机模拟控制系统设计
[关键词]STC89C51 单片机 ;洗衣机模拟控制系统 ;全自动 [中图分类号]TN911-4 ;G434 [文献标志码]A [文章编号]2095–6487(2021)04–0021–03
Design of Intelligent Automatic Washing Machine Simulation Control System Based on Single Chip Microcomputer
工作。
VCC
S2 与 P3.4 口相连,S3 与 P3.5 口相连,S6 与 P3.6 口相连,S5
D1
D2
D3
D4
D5
LED
LED
LED
LED
LED
口与 P3.7 口相连,S6 与 P3.0 口相连。按键按下时,输入端 I/0 口 的电平状态为低电平。
R1
R2
R3
R4
R5
2.2k
2.2k
2.2k
2.2k
一个低水位检测,一个高水位检测 ;当进水时高水位检测到 有水,代表进水完毕进行下一步,当排水时,低水位检测没有水, 代表排水结束。高水位传感器与 P1.4 相连,低水位传感器与 P1.7 相连。水位传感器的作用是用于检测高低水位,包括比较器模块 和自制的水导电万能板。其中比较器模块由 LM339 芯片集成电路 组成。水导电万能板是利用水的导电性形成回路,形成电压检测 水位。比较器模块则是通过比较两个输入电压,高于参考电压则 输出高电平,水位实现了检测,每个比较器都有两个输入端和一 个输出端。 2.5 按键控制电路
2.2k
系统整体硬件电路如图 6 所示,主要包括 STC89C51 单片机 主要控制模块,步进电机驱动芯片 L298N 控制模块,显示电路模 块,按键控制模块,出水、进水电路模块,蜂鸣器报警电路模块

基于AT89C51单片机全自动洗衣机的仿真设计

基于AT89C51单片机全自动洗衣机的仿真设计
科技 论 坛
・9 ・
基于 A T 8 9 C 5 1单片机全 自动洗衣机 的仿真设计
杨 雷
( 辽 宁机 电职业技术 学院, 辽宁 丹东 1 1 8 0 0 2 ) C 5 1 单片机设计全 自动洗衣机 , 洗衣机具 有标准洗衣 、 经济洗 衣、 单独 洗衣 以及排 水四种洗 衣工作程序 , 强
结束语 3 . 1整体设计 。按照洗衣机 的功能要求设计硬件 电路 控制 器 本文从 功能要 求 、 硬件设计 、 软件设计 以 及P r o t u e s 仿真 四个 方 T 8 9 C 5 1 作为控制核心 的洗 衣机控制系统 。该 系 采用 A T 8 9 C 5 1 单 片机 , 外部 电路有 电源部分 、 状态 显示部 分 、 输出 面描述 了一个 以 A 统具有硬件简单 、 成本低廉 、 使 用方便 、 可靠性 高等特点 。 控 制部分 、 输入控制部分 、 功能选择部分 。主要组成部 件有单片机 、 发 光二极管 、 三极管 、 电动机 、 电磁 阀以及蜂鸣器等 。 参考文献 3 . 2 电源 电路 。 2 2 0伏交 流电先经过变压器降压 , 再 由四只二极 【 l 】 张婧武, 周灵彬. 单片机 系统 的 P R O T E U S 设 计与仿真[ M 】 . 北京: 电 2 0 0 9 : 1 — 2 , 1 7 8 — 1 7 9 . 管 组成 的桥 式整流 电路进 行整流 , 得到脉 动的直流 电 , 之后 由滤波 子 工 业 出版 社 , 电容进行滤波 , 得到较为平滑 的直 流电 , 最后 由 W7 8 0 5三端集成稳 [ 2 】 隋清江等. 基于 P R O EU T S的 L C D 1 6 0 2 接 口设计与仿真[ J 】 . 微计 算 压块进行稳 压 , 得到 5 V直流 电, 用来 给单 片机等进行供 电。 机信 息, 2 0 1 0 , 7 — 1 : 1 7 1 — 1 7 2 . 3 . 3状态显示 电路 。单片机 P I . 0 一 P I . 7 、 P 2 . 0这九个端 口分别与 f 3 1 赵林 惠. 单片机应 用技 术【 M 1 . 北 京: 北 京科 学出版社, 2 0 0 8 . 4 ] 崔光 照. 单 片机 原理与接 口技 术[ M】 匕 京: 北京 邮电大 学 出版社 , 发 光二极管 的负极连接 , 发光二极 管 的正极 与电源连接 , 组 成状态 [

基于单片机的自动洗衣机设计

基于单片机的自动洗衣机设计

1引言随着经济科技的发展,生活中家用电器的功能也越来越丰富,洗衣机作为人们日常生活中必不可少的家用电器,也不断的需要进一步提升其便利性。

但是传统的仅由继电器控制的普通洗衣机,只能手动进行单一的洗衣功能转换,大大的浪费了洗衣所需的时间和精力,给使用者带来了很大的不便。

为了提升洗衣机使用的便利性,采用单片机来作为控制器,可以实现灵活多变的控制方式,能够很好的满足人们对洗衣机功能的要求。

作为一个微控制器,单片机最大的特点就是物美价廉,因而被广泛应用在各种数字系统中。

本文通过使用STC89C51单片机作为控制器,设计一款可以完成自动洗衣流程的洗衣机控制电路,该电路操作简单,功能灵活,具有很大的实用性。

通过对基于单片机的控制电路的制作进行深刻钻研,可以使我们对单片机有更加深刻的见解,同时也为将来的工作与学习打下一定基础。

1.1研究背景及现状1. 洗衣机的分类普通洗衣机:具备洗涤,排水,脱水功能,每一功能均需手动操作。

半自动洗衣机:具有洗涤,排水,脱水功能,不同于普通洗衣机的是洗涤与脱水功能相互独立,洗衣机一边是进行洗衣的,而另一边是进行脱水甩干的。

全自动洗衣机:在启动电源后选择相应模式即可自动实现所设定的全部功能,期间无需任何手动操作。

2.全自动洗衣机在国内外的现状及水平欧美发达国家的科学技术水平相对较高,对家用电器的性能指标也在不断提高,目前最先进的洗衣机可以做到智能控制洗衣的全过程,只需将衣物放入洗衣机,洗衣机就可以自己选择洗衣的水位,洗涤剂的用量,洗衣的时间,并能最大限度的减小对衣物的损伤。

我国的洗衣机制造业起步较晚,但由于引进了国外的先进技术,国产洗衣机的生产水平已逐步提高,缩短了与发达国家的差距。

目前全自动智能洗衣机正向着大容量,健康化,节能化,高度自动化和微型化发展【1】。

这就要求设计师在设计洗衣机时能要有更优秀和创新的思路方法,从而实现用户的各种需求,提高洗衣机的便利性。

孟娇娇等人利用51单片机为基础,设计出全自动洗衣机的控制系统,实现对洗衣机各项功能的优化【2】。

基于的51单片机全自动洗衣机设计(优.选)

基于的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文本--------------------- 方便更改。

单片机课程设计---单片机控制全自动洗衣机

单片机课程设计---单片机控制全自动洗衣机

教育部直属国家“211工程”重点建设高校单片机原理课程设计报告指导教师:王宪学生学号:0702100229学生姓名:王侠学生班级:通信1002一、设计目标用51系列单片机控制全自动洗衣机的运行,使其能自动地完成进水、洗涤、漂洗、脱水等功能。

采用LED和数码显示管显示洗衣机所处在的模式和水位,所处的的洗衣状态,水温,以及完成洗衣的剩余时间。

实现不同模式下水位的选择一共三种模式(标准,轻柔,快洗),四种水位,当洗衣机启动后,上水电磁阀打开注水,当水到达设定的限位时,上水电磁阀断电,注水过程停止,启动电机全自动控制洗衣操作,整个过程的进行按时间控制,时间自定,软件编程使用汇编语言。

洗衣机功能要求二、洗衣机的硬件设计本系统实现了对洗衣机整个洗衣过程的控制,包括用户参数输入、洗衣、漂洗、排水和脱水等阶段。

控制系统主要由电源电路、单片机控制系统和外部硬件电路构成。

电源采用三端集成固定稳压器7805提供+5V电源,单片机控制系统负责控制洗衣机的工作过程,主要由AT89S51单片机、2位共阳数码管、按键、蜂鸣器、LED指示灯组成;外部硬件电路有继电器、三极管、电动机、进水电磁阀、排水电磁阀组成。

2.1 按键洗衣机面板上有4个按钮:1K1为启动键,K2用于模拟洗衣机的盖板打开,K3用于快速洗衣方式;当脱水时,模拟盖板合闭,K4用于脱水。

2.2 洗衣程序洗衣机的主要工作程序是:洗涤——脱水——漂洗——脱水——漂洗——脱水。

(1)洗涤过程:放好待洗物,启动开关,进水阀通电,向洗衣机供水,当供水达到预定水位时,水位开关接通,进水阀断电关闭,停止供水。

洗涤电动机接通电源,带动波轮(或桶)旋转,产生各种形式的水流搅动衣物进行洗涤。

通过电动不停的正转、停、反转、反复循环,形成洗涤水对洗涤物产生强烈的翻滚作用。

同时,衣物之间、衣物与四周桶壁之间产生互相摩擦和撞击力,以次达到洗涤衣物的目的。

(2)漂洗过程:漂洗的目的在于清除衣物上的洗涤液,因此,漂洗过程与洗涤过程的电器动作是完全相同的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

全自动洗衣机课程设计基于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();}}}。

相关文档
最新文档