JAVA洗衣机仿真程序实验报告及代码
洗衣机模糊控制仿真实验报告

洗衣机模糊控制仿真实验报告一、实验目的本实验旨在通过对洗衣机运行过程的模糊控制仿真实验,帮助学生更好地了解模糊控制的基本原理和实现方法。
二、实验原理洗衣机模糊控制系统主要包括模糊控制器、模糊推理机和输出规则等三个部分。
模糊控制器是模糊系统的核心部分,其主要作用是将输入信号转化为模糊集,并将控制输出信号转化为真实输出信号。
模糊控制器的输入为洗衣机工作状态的一些参数,例如水位、温度等,输出为洗衣机运行状态的一些控制命令,例如加热、搅拌等。
模糊推理机是由一系列规则组成的系统,它负责根据输入的模糊集和一组先验规则,进行模糊推理,得到控制输出信号的模糊集,即模糊控制器的中间变量。
输出规则主要为控制输出信号的模糊集赋值,即将模糊集中各个元素映射到真实输出信号的取值范围内。
三、实验步骤1、建立洗衣机的模糊控制系统模型,包括模糊控制器、模糊推理机和输出规则等。
2、设置洗衣机的运行参数,例如水位、温度等,作为模糊控制器的输入。
3、根据洗衣机的运行状态,制定一组先验规则,作为模糊推理机的输入,并进行模糊推理。
4、根据模糊推理得到的控制输出信号的模糊集,进行输出规则的映射,得到洗衣机的真实控制命令。
5、根据洗衣机的控制命令,模拟洗衣机的工作流程。
6、对洗衣机的工作流程进行仿真实验,并记录实验结果。
四、实验结果分析经过多次实验,得到了洗衣机的模糊控制系统的优化参数,能够实现洗衣机的良好控制。
通过对实验结果的分析,可以发现,模糊控制系统可以有效地调节洗衣机的运行状态,使其在不同的工作状态下保持稳定且高效的运行。
同时,模糊控制系统也具有很强的适应性和鲁棒性,可以自适应地调节参数,应对各种不同的运行环境。
五、实验总结本实验通过模拟洗衣机的工作流程,对模糊控制系统的基本原理和实现方法进行了深入探究,能够有效地帮助学生掌握模糊控制系统的设计和应用方法。
同时,在实验过程中,也需要注意对实验数据和结论的分析和总结,以便更好地优化模糊控制系统的参数和性能,实现最佳控制效果。
洗衣机的java程序

/** To change this template, choose Tools | Templates* and open the template in the editor.*/package washer;import java.awt.BorderLayout;import java.awt.Container;import java.awt.MenuItem;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ButtonGroup;import javax.swing.JFrame;import javax.swing.JToggleButton;import javax.swing.JToolBar;/**** @author Administrator*/public class washer1 extends JFrame {JToggleButton[] button=new JToggleButton[7];//按钮组//washer1 washer0=new washer1();static washer wash=new washer(); //绘图面板public washer1(){super("洗衣机程序");String[] buttonName={"普通水流(默认为柔和水流,按下则切换为普通水流)","自动洗衣","暂停/启动","经济标准","洗涤","漂洗","脱水"};//按钮文字DrawShapeListener buttonListener=new DrawShapeListener(); //按钮事件JToolBar toolBar=new JToolBar();//实例化工具栏ButtonGroup buttonGroup=new ButtonGroup();//实例化按钮组for(int i=0;i<button.length;i++){button[i]=new JToggleButton(buttonName[i]);button[i].addActionListener(buttonListener);buttonGroup.add(button[i]);toolBar.add(button[i]);}Container container=getContentPane(); //得到窗口容器container.add(toolBar,BorderLayout.NORTH); //增加组件到容器上container.add(wash,BorderLayout.CENTER);setSize(1000,600); //设置窗口尺寸setVisible(true); //设置窗口为可视setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序}class DrawShapeListener implements ActionListener{ //按钮事件处理public void actionPerformed(ActionEvent e){for (int i=0;i<button.length;i++){if (e.getSource()==button[i]){ //判断来自于哪个按钮wash.drawflag(i); //绘制图形}}}}public static void main(String[] args){new washer1();}}//另一个类文件/** To change this template, choose Tools | Templates* and open the template in the editor.*/package washer;import java.applet.Applet;import java.awt.Color;import java.awt.Graphics;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;/**** @author Administrator*/public class washer extends Applet implements MouseListener{int washflag=-1;int flagwashingover=0;int flagwaterfull=0;int flagwaterout=0;int flagwaterout1=0;int flagonbotton=0;int flagRattler1=0;//washer washer=new washer();Color WasherInter=new Color(199,200,204);Color whiter=new Color(241,200,204);Color myGray=new Color(69,72,77);Color myLightgray=new Color(121,126,129);Color myLightergray=new Color(196,190,196);//Color gr128=new Color(128,128,128);public washer(){super(); //调用父类构造函数// this.setBackground(Color.white); //设置背景颜色//point[0]=new Point(-1,-1); //初始化变量//point[1]=new Point(-1,-1);addMouseListener(this); //增加鼠标事件}public void drawflag(int washki){this.washflag=washki;}public void mouseClicked(MouseEvent e) {repaint();}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {repaint();}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}/* public static void main(String[] args) {// TODO code application logic here}*/public void init() //Initialize{Color Bgcolor=new Color(154,135,247);setBackground(Bgcolor); //Make window background blacksetSize(1000,600); //Set window size}public void Washerbody(Graphics g)//洗衣机的机体{g.setColor(Color.white);//g.drawRoundRect(20,20,100,80,20,30);//g.setColor(Color.green);g.fillRoundRect(100,50,350,450,20,30);//洗衣机的矩形框架int RGBcolor=230;for(int i=0;i<7;i++){RGBcolor-=23;g.setColor(new Color(RGBcolor,RGBcolor,RGBcolor));g.drawRoundRect(100-i, 50-i, 350+2*i, 450+2*i, 20, 30);g.drawLine(100, 140+i, 450, 140+i);}//g.fillOval(150, 170, 250, 250);Color Oval=new Color(199,200,204);//洗衣机的圆形部分g.setColor(Oval);g.fillOval(150, 170, 250, 250);RGBcolor=69;for(int i=0;i<7;i++){RGBcolor+=23;g.setColor(new Color(RGBcolor,RGBcolor,RGBcolor));g.drawOval(150+i, 170+i, 250-2*i, 250-2*i);}g.setColor(Color.white);g.fillOval(190, 210, 170, 170);RGBcolor=69;for(int i=0;i<7;i++){RGBcolor+=23;g.setColor(new Color(RGBcolor,RGBcolor,RGBcolor));g.drawOval(190-i, 210-i, 170+2*i, 170+2*i);}g.setColor(new Color(199,200,204));g.fillRoundRect(115,100,65,25,10,10);g.setColor(Color.RED);g.drawString(" TCL", 110, 70);g.setColor(Color.BLACK);g.drawString("5.5 KG", 160, 90);RGBcolor=100;for(int i=0;i<5;i++){// RGBcolor-=23;g.setColor(new Color(RGBcolor,RGBcolor,RGBcolor));g.drawLine(190-i, 295+i, 275-i, 380+i);g.drawLine(275+i, 380+i, 360+i, 295+i);g.drawLine(190-i, 295-i, 275-i, 210-i);g.drawLine(275+i, 210-i, 360+i, 295-i);}g.setColor(Color.YELLOW);g.fillRoundRect(350,70,80,30,5,5);}public void Rattler(Graphics g){int R=20;int G=65;int B=205;/* double z = 0;int x,y;y=(int)Math.sin(z)*85;x=(int)Math.cos(z)*85;*/g.setColor(Color.BLACK);g.drawString("洗衣阶段", 360, 90);for(int i=0;i<85;i++){R+=1;G+=2;B-=2;g.setColor(new Color(R,G,B));g.drawLine(190+i , 295+i, 275, 295);// g.drawLine(380 +150/2, 150+ 190/2,150+380,190+150 -i);g.drawLine(275+i, 380-i,275, 295);g.drawLine(360-i,295-i,275,295);g.drawLine(275-i,210+i,275,295);for(int j=0;j<=12000000;j++);repaint();}R = 20; G= 5; B= 205;for(int i=0; i<85; i++){R +=1; G +=1; B -=1;g.setColor(new Color(R, G, B));g.drawLine(190+i , 295-i, 275, 295);// g.drawLine(380 +150/2, 150+ 190/2,150+380,190+150 -i);g.drawLine(275+i, 210+i,275, 295);g.drawLine(360-i,295+i,275,295);g.drawLine(275-i,380-i,275,295);for(int j=0;j<=12000000;j++);repaint();}}public void Rattler1(Graphics g){int R=20;int G=65;int B=205;/* double z = 0;int x,y;y=(int)Math.sin(z)*85;x=(int)Math.cos(z)*85;*/g.setColor(Color.BLACK);g.drawString("漂洗阶段", 360, 90);for(int i=0;i<85;i+=2){R+=1;G+=2;B-=2;g.setColor(new Color(R,G,B));g.drawLine(190+i , 295+i, 275, 295);// g.drawLine(380 +150/2, 150+ 190/2,150+380,190+150 -i);g.drawLine(275+i, 380-i,275, 295);g.drawLine(360-i,295-i,275,295);g.drawLine(275-i,210+i,275,295);for(int j=0;j<=12000000;j++);repaint();}R = 20; G= 5; B= 205;for(int i=0; i<85; i+=2){R +=1; G +=1; B -=1;g.setColor(new Color(R, G, B));g.drawLine(190+i , 295-i, 275, 295);// g.drawLine(380 +150/2, 150+ 190/2,150+380,190+150 -i);g.drawLine(275+i, 210+i,275, 295);g.drawLine(360-i,295+i,275,295);g.drawLine(275-i,380-i,275,295);for(int j=0;j<=12000000;j++);repaint();}}public void inWater(Graphics g){ g.setColor(Color.BLACK);g.drawString("加水阶段", 360, 90);g.setColor(Color.BLUE);//int RGBcolor=255;int i=0;for( i=0;i<85;i++){g.setColor(new Color(0,0,255));g.drawLine(275 - i, 380 - i, 275 + i, 380 - i);g.setColor(Color.RED);g.drawString(i+"L", 360, 80);for(int j=0;j<120000000;j++);repaint();}}public void outWater(Graphics g){g.setColor(Color.BLACK);g.drawString("脱水阶段", 360, 90);g.setColor(Color.BLUE);//int RGBcolor=255;int i=0;for( i=0;i<85;i++){g.setColor(new Color(0,0,255));g.drawLine(275 - i, 380 - i, 275 + i, 380 - i);repaint();}for( i=0;i<85;i++){g.setColor(Color.white);g.drawLine(190 + i, 295 + i, 360 - i, 295 +i);for(int j=0;j<120000000;j++);repaint();}}public void outWaterover(Graphics g){g.setColor(Color.white);//int RGBcolor=255;int i=0;for( i=0;i<85;i++){g.setColor(new Color(0,0,255));g.drawLine(275 - i, 380 - i, 275 + i, 380 - i);repaint();}}public void paint(Graphics g){init();Washerbody(g);// Rattler(g);switch(washflag){ //case 11:System.out.print("cuole");case 0:flagRattler1=1;break;case 1:{if(flagonbotton==1){// inwater.resume();if(flagwaterfull==0){inWater(g);flagwaterfull=1;Rattler(g);}else if(flagwaterfull==1&flagwashingover!=6){ if(flagRattler1==0)Rattler(g);elseRattler1(g);flagwashingover++;}else{if(flagwaterout==0){outWater(g);flagwaterout=1;}}}};break;case 2:{flagonbotton=1;};break;case 3:; break;case 4:Rattler(g); break;case 5:Rattler1(g); break;case 6:{if(flagwaterout1==0)outWater(g);elseoutWaterover( g);}break;}}}/*public void update(Graphics g){paint(g);}*/class MyThread extends Thread{ protected ponent app;String name;MyThread(String name){=name;}public void run(){Graphics g=app.getGraphics();// washer1.wash.inWater(g);inWater(g);if(name.equalsIgnoreCase("inwater")){stop();}}public void inWater(Graphics g){g.setColor(Color.BLUE);//int RGBcolor=255;int i=0;for( i=0;i<85;i++){g.setColor(new Color(0,0,255));g.drawLine(275 - i, 380 - i, 275 + i, 380 - i);g.setColor(Color.RED);g.drawString(i+"L", 360, 80);for(int j=0;j<120000000;j++);repaint();}}public void paint(Graphics g){ inWater(g);}private void repaint() {}}。
JAVA洗衣机仿真程序实验报告及代码

一.实验题目:用java编写洗衣机仿真程序二.实验目的:1.熟悉并掌握洗衣机(全自动)的工作原理和运行过程.2.学会软件工程设计中的一系列分析研究,对需求分析,可行性研究,软件模型等有一定的了解,为以后的软件设计工作打下良好的基础。
3.通过的洗衣机仿真系统的编写与学习,加深了对Java这门语言的了解,对其中的类的设计,类之间的关系,界面的设计(按钮及布局的设计)有了更深的了解与体会,为Java的学习做好准备工作。
三.实验要求:了解全自动洗衣机的简单工作过程及实现。
其中包括,洗衣的方式(标准或是柔和)、洗衣中的水位选择(高水位洗衣、低水位洗衣等)等方面需要在人们将衣服放入洗衣机洗衣服之后手动来选择;并且是必须选择的洗衣参数。
当选择了一种洗衣参数后,按下启动按钮,洗衣机就会自动完成洗衣服的整个过程。
在满足基本功能以外,还需要尽量考虑外观、造型、节水等方面的设计,符合人机界面的基本要求。
四.实验分析:1.洗衣机需求分析:标准清洗:浸泡/清洗/甩干快速清洗:清洗/甩干大件衣物(冬衣,牛仔类):浸泡(温水,延长浸泡/清洗(延长筒转时间)/甩干床单,窗帘类:浸泡(温水)/清洗根据衣物的不同用按钮选择上述洗衣模式即可.其中甩干可选可不选.尽量设计了一个节水功能,可以实现水回收.在无需甩干时水不流走,余下的水可做其他用途,实现节水.2.主要的类实现(1).继承类(2).包括进水,排水,洗涤,漂洗,甩干等成员函数(3).水位的选择通过参数传递决定进水函数(4).其余通过调用筒的转动函数(run)并通过一定的参数控制实现3.程序设计步骤≡≥选择水温≡≥放入衣物≡≥选择洗衣模式≡≥脱水≡≥排水≡≥烘干≡≥关闭五.设计与实现过程:1.洗衣机类的部分实现:import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Washing extends JApplet{private JFrame jf;private JButton jb1,jb2,jb3,jb4,jb5,jb6;public static void main(String[] args){Washing flowTest=new Washing();flowTest.setSize(270,160);flowTest.go();//flowTest.show(true);}public void go(){jf=new JFrame("洗衣机功能模拟器");Container cp=jf.getContentPane();cp.setLayout(null);jb1=new JButton("入水");jb2=new JButton("加衣");jb3=new JButton("脱水");jb4=new JButton("排水");jb5=new JButton("烘干");jb6=new JButton("关闭");// Container cp=jf.getContentPane();// cp.setLayout(new BorderLayout());jb1.setBounds(10, 10, 80, 80);cp.add(jb1); //指定组件追加到这个容器的末尾。
8086%2B综合实验%2B洗衣机程序设计

实验10-1 综合实验之一洗衣机的程序控制预习报告一,实验目的:掌握可编程并行接口电路用于一种具体控制过程的方法二,实验内容:设计一种自动洗衣机的程序控制器,在启动后先进水,等到达高水位后,启动洗衣马达转动4min,如在洗衣过程中发现水位低于高水位,则停止洗衣马达转动并报警,并在水位到达高水位后再次启动马达。
洗衣结束后则启动排水开关,待水位到达低水位后,则启动脱水马达,转动2min。
如此重复三次,要求在每一动作之间有2s的间隔。
高水位,低水位为水位传感器,用两个开关模拟,当水位高于高水位或低于低水位时,两个开关的状态分别为0 。
启动开关用一个开关表示。
进水、排水、洗衣马达、脱水马达及报警分别用一个发光二极管表示。
本实验只需用可编程并行接口电路的A口。
其硬件接口如下图所示。
也可采用可编程逻辑器件进行设计。
三,硬件电原理图(PROTEL格式)见附页。
实验硬件接口定义如下:四,代码清单及流程图STACK SEGMENT PARA STACK ' STACK'DB 256 DUP(0)STACK ENDSDATA SEGMENT PARA PUBLIC 'DATA'DATA ENDSCODE SEGMENT PARA PUBLIC 'CODE'ASSUME CS:CODESTART: MOV AX,DATAMOV DS,AXMOV DX,2C3HMOV AL,82H ;A口输出,B口输入OUT DX,AL ;写8255方式字CALL DELAYRES: MOV DX,2C0HMOV AL,00H ;设置LED灯全亮OUT DX,ALCALL DELAYMOV AL,0FFH ;设置LED灯全灭OUT DX,ALCALL DELAYL0: MOV DX,2C1HIN AL,DXTEST AL,01H ;检测是否启动JZ L0 ;为0则继续查询CALL DELAYMOV DX,2C0HMOV AL,11110111B ;进水灯OUT DX,ALL1: MOV DX,2C1HIN AL,DXTEST AL,01H ;检测是否重启JZ RESTEST AL,04H ;高水位?JZ L1 ;若0则继续查询MOV DX,2C0HMOV AL,10111111B ;洗衣灯OUT DX,ALL2: CALL DELAYDEC CXJZ FULLCALL DISPLAYMOV DX,2C1HIN AL,DXTEST AL,01H ;重启?JZ RESTEST AL,08HJNZ FULLTEST AL,02H ;低水位JZ L2 ;为0则继续查询MOV DX,2C0HMOV AL,01111111B ;报警灯OUT DX,ALL3: MOV DX,2C1HIN AL,DXTEST AL,01H ;重启?JZ RESTEST AL,02H ;低水位结束?JNZ L3 ;为1则继续查询JMP L2FULL: MOV DX,2C0HMOV AL,11101111B ;排水灯OUT DX,ALCALL DELAYL4: MOV DX,2C1HIN AL,DXTEST AL,01H ;重启?JZ RESTEST AL,02H ;低水位?JZ L4 ;为0则继续查询MOV DX,2C0HMOV AL,11011111B ;脱水灯OUT DX,ALCALL DELAYL5: CALL DELAYDEC CXJZ L0CALL DISPLAYMOV DX,2C1HIN AL,DXTEST AL,01H ;重启?JZ RESTEST AL,08HJNZ L0JMP L5STOP: MOV AH,4CHINT 21HDELAY PROC NEAR ;延时子程序PUSH BXPUSH CXMOV BX,0200HD2: MOV CX,0FFFHD1: MOV AH,01H ;检测键盘输入INT 16HJNZ STOP ;任意键退出,否则循环DEC CXJNZ D1DEC BXJNZ D2POP CXPOP BXRETDELAY ENDPDISPLAY PROC NEAR ;显示CX为入口PUSH DXPUSH CXPUSH AXMOV DL,0HC3: CMP CX,03E8H ;千位JNAE C4INC DLSUB CX,03E8HJMP C3C4: OR DL,30H ;ASCII转换MOV AH,02H ;显示INT 21HMOV DL,0HC5: CMP CX,64H ;百位JNAE C6INC DLSUB CX,64HJMP C5C6: OR DL,30HMOV AH,02HINT 21HMOV DL,0HC7: CMP CX,0AH ;十位JNAE C8INC DLSUB CX,0AHJMP C7C8: OR DL,30HMOV AH,02HINT 21HMOV DL,CLOR DL,30HMOV AH,02H ;个位INT 21HMOV DL,20HINT 21HPOP AXPOP CXPOP DXRETDISPLAY ENDPCODE ENDSEND START程序流程图:五,程序运行说明本程序系自主设计流程图,自主研发程序,对题目要求稍加改动,改动及添加如下:1,为记忆方便,将所有开关定义为‘1’有效,‘0’无效,方便实验时的操作2,实验中的4min和2min在验收时等待太久,故添加了一个加速按键,跳过剩余时间,对实验的实际效果没有影响3,在洗衣4min和脱水2min的过程中,由于时间较长,如果没有任何标记无法判断程序是否正常进行,故在上述过程中添加倒计时,程序运行时在屏幕上显示,这样便可指示程序此时的准确状态4,如果程序运行顺利,拟用步进电机模拟洗衣电机和脱水电机,虽然没有太大的实际意义,权当了解步进电机的工作方式,增加自己的实验器材熟悉程度了程序操作说明:1,上机检测LED点亮条件,程序设计为0点亮,检查硬件,如有错误则更改程序。
洗衣机控制电路实验报告

北京邮电大学实验报告题目:洗衣机控制器实验报告专业:信息与通信工程学院学号:09210670班级:2009211125姓名:刘明巍1.实验目的与实验要求2.实验原理及设计过程3.仿真波形及波形分析4.源程序5.元器件清单及资源利用情况6.故障及问题分析7.总结和结论一、实验目的与实验要求目的1. 熟练掌握 VHDL 语言和QuartusII 软件的使用;2. 理解状态机的工作原理和设计方法;3. 掌握利用 EDA 工具进行自顶向下的电子系统设计方法;基本要求1.洗衣机的工作步骤为洗衣、漂洗和脱水三个过程,工作时间分别为:洗衣20秒,漂洗15秒,脱水10秒;2.用一个键实现洗衣程序的手动选择:A、单脱水;B、单漂洗;C、单洗涤;D、漂洗和脱水;E、洗涤、漂洗和脱水全过程;3.用显示器显示洗衣机的工作状态(洗衣、漂洗和脱水),并倒计时显示每个状态的工作时间,全过程结束后,应提示使用者;4.用一个键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回到暂停之前保留的状态;提高要求1. 三个过程的时间有多个选项供使用者选择2. 可以预约洗衣时间3. 自拟其他功能二、实验原理及设计过程1.整个洗衣机的控制程序分为:状态控制及倒计时模块、初始模式选择模块、报警模块、洗衣时间选择模块、选通译码模块、分频器模块等分别实现,最后连接为整体。
(1)按键模块由防抖模块和按键信号产生模块构成:防抖模块用来增加按键的灵活性和有效性;按键控制信号产生模块是通过按键来产生模式选择信号、各模式时间选择信号和开始/暂停信号,形成控制模块需要的各种控制信号。
(2)显示模块由时间显示设置模块、数码管显示模块和选通信号模块以及指示灯构成:其中时间设置模块用来完成时间显示个位和十位信号的设计;数码管显示模块用用来完成模式选择选项的显示数字、模式时间选择选项的显示数字和倒计时时间的显示数字的信号设计;选通信号用来实现六个七段数码管的同时显示的设计;而指示灯用来完成对各种状态的指示的设计。
洗衣机实验报告

洗衣机实验报告1. 引言洗衣机是家庭生活中不可或缺的电器之一。
现代洗衣机使用先进的技术,可以高效地洗净衣物,减少人的劳动力消耗。
本实验旨在通过测试不同条件下洗衣机的洗涤效果,评估其性能和效率。
2. 实验设备•洗衣机:型号 XYZ-123,带有多种洗涤模式和选项•衣物:使用的衣物为纯棉T恤,尺寸均匀、质量相近3. 实验步骤1.准备工作:–将洗衣机接入电源并打开水源–调节洗衣机的洗涤模式和选项,选择相同的参数条件进行比较2.测试参数条件:–比较不同水温对洗涤效果的影响:•设定洗衣机的水温分别为冷水、温水和热水,其他条件保持一致•将衣物放入洗衣机中,启动洗涤程序•完成洗涤后,取出衣物评估洗涤效果–比较不同洗涤剂用量对洗涤效果的影响:•设定洗衣机的洗涤剂用量分别为正常用量、少量和过量,其他条件保持一致•将衣物放入洗衣机中,启动洗涤程序•完成洗涤后,取出衣物评估洗涤效果4. 实验结果4.1 水温对洗涤效果的影响表格1:不同水温下的洗涤效果评估水温洗涤效果评价冷水差温水良好热水优秀根据表格1的实验结果可知,随着水温的升高,洗涤效果也逐渐变好,热水下的洗涤效果最佳。
这是因为热水可以增加洗涤液的活性,更好地溶解衣物上的污渍。
4.2 洗涤剂用量对洗涤效果的影响表格2:不同洗涤剂用量下的洗涤效果评估洗涤剂用量洗涤效果评价正常用量优秀少量良好过量差根据表格2的实验结果可知,适量的洗涤剂用量可以达到最佳的洗涤效果。
当洗涤剂用量过少时,可能无法完全清除衣物上的污渍;而过量使用洗涤剂则容易残留在衣物上,导致洗涤效果不佳。
5. 结论通过本次实验,我们得出以下结论:1.水温对洗涤效果有显著影响,热水下的洗涤效果最佳。
2.适量的洗涤剂用量可以达到最佳的洗涤效果。
综上所述,用户在选择洗衣机洗涤模式时,可以根据需要调节相应的参数条件,以达到更好的洗涤效果。
6. 参考文献[1] 洗衣机的原理与维修. 大众文艺出版社. 2017.[2] 张三, 李四. 洗衣机能耗测量与效能评价研究. 洗涤科学, 2019, 5(2): 36-42.[3] 王五, 赵六. 洗衣机的洗涤效果研究. 家用电器研究, 2020, 20(1): 12-16.注意:本实验为虚拟场景,实际操作请根据洗衣机的说明书进行。
洗衣机运行模拟

Protues仿真图:
按键设置: 按键设置:
按下设定300s 按下设定200s 按下设定100s 按下启动,时间到后,再次按下可以再 次启动。 加速、减速:按下这两个键的其中一个,数码管段码 显示会加快速度正转或反转。 300s设定: 200s设定: 100s设定: 启动开关 :
洗衣机源程序
实物图
Hale Waihona Puke XTAL1:反向振荡放大器的输入及内部时 钟工作电路的输入。 XTAL2:来自反向振荡器的输出。
P0口:P0口为一个8位漏级开路双向I/O口, 口 每脚可吸收8TTL门电流。当P0口的管脚第 一次写1时,被定义为高阻输入。P0能够用 于外部程序数据存储器,它可以被定义为数 据/地址的第八位。在FIASH编程时,P0 口 作为原码输入口,当FIASH进行校验时,P0 输出原码,此时P0外部必须被拉高。
P3口:P3口管脚是8个带内部上拉电阻的双向 口 I/O口,可接收输出4个TTL门电流。当P3口写 入“1”后,它们被内部上拉为高电平,并用作输 入。作为输入,由于外部下拉为低电平,P3口 将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口如 下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0)
【实验小结】 实验小结】
1 一是仿真,经过之前锻炼很快就连好了电路进行了仿真。 仿真结果也跟预期理想结果相差无几。二是做实物,预先 准备了电路板和电线,就按照仿真图将电线连起来将结果 在示波器展示出。 2 2在连接电路的过程中,原先有个问题,当放大电路设置的放 , 大倍数过大时,会达到一个饱和状态,即使输入值增大,输出电 压也不改变,后该为一比一的比例 3 本次实验结果与预期基本一致。实验图设计合理,实验数 据正确,基本上是一次成功的实验。
洗衣机程序实验报告

洗衣机程序实验报告一.设计内容设计一个智能洗衣机的控制系统,能够实现进水、洗涤、脱水一系列自动过程。
采用EP2C5TC144实验板,控制器部分采用Verilog HDL语言编写,主体程序采用了状态机作为主要控制方式。
最后利用Quartus II 进行仿真。
二.实现功能当按下开始按键时,洗衣机开始工作,洗衣工作指示灯亮。
先注水1分钟,注水指示灯亮,当注水达一分钟时,注水停止,注水指示灯熄灭,进入洗涤过程。
洗涤过程要求洗衣桶正反转3次,洗涤过程完成后,进入脱水过程。
脱水指示灯亮,脱水一分钟后,再次注水一分钟,注水指示灯亮,再次脱水;整个脱水需要完成以上描述过程3次,完成后脱水指示灯灭,洗涤完成,洗衣工作指示灯灭。
1 / 7三.洗衣机的工作状态洗衣机控制器主要由状态机来描述,洗衣机工作共有6个状态:空闲(idle)、注水(flood)、正转(wash1)、反转(wash2)、脱水(dry)、完成(finish)。
下图为洗衣机控制器的状态转移图:四.设计思路整个程序分为两个子模块,分频子模块与洗衣机状态控制器子模块。
1.分频模块将20MHZ的晶振频率分频为1HZ的时钟频率供洗衣机状态控制器模块。
2 / 72. 洗衣机状态控制器模块Ls:洗衣机开始工作的指示灯,洗衣完成后熄灭;Lf:注水灯,洗衣机注水时此灯点亮,注水完成后此灯熄灭;Ld:脱水灯,进入脱水过程此灯点亮,整个脱水过程完成后,此灯熄灭;Forward:电动机正转输出信号,当洗衣机正转时,forward=1;Back:反转输出信号,当洗衣机反转时,back=1;Drain:脱水指示信号,当洗衣机脱水时,drain=1;Fw:注水指示信号,当洗衣机注水时,fw=1。
五.程序设计1.程序整体源代码module wmtest(clock,reset,ls,lf,ld,forward,back,drain,fw,start);input clock,reset,start;output ls,lf,ld,forward,back,drain,fw;wire clk_1hz;3 / 7fenpin ufp(.clk(clock),.rst(reset),.clkout(clk_1hz));washuwash(.clk(clk_1hz),.rst(reset),.start(start),.ls(ls),.ld(ld),.lf(lf),.forward(forward), .back(back),.drain(drain),.fw(fw));endmodulemodule fenpin(clk,rst,clkout);input clk,rst;output reg clkout;reg[24:0] count;always@(posedge clk or posedge rst)beginif(rst)begincount<=0;clkout<=0;endelse if(count==25'd24_999_999)begincount<=0;clkout<=~clkout;endelsecount<=count+25'd1;endendmodulemodule wash(clk,rst,ls,lf,ld,forward,back,drain,fw,start);input clk,rst,start;output reg ls,lf,ld,forward,back,drain,fw;reg[2:0]n1,n2;reg[3:0]state;reg[5:0] times;reg s;parameter idle=0,flood=1,wash1=2,wash2=3,wash3=4,dry=5,finish=6;always@(posedge clk or posedge rst )beginif(rst)beginstate<=idle;4 / 7lf<=1;ls<=1;ld<=1;forward<=1;back<=1;drain<=1;fw<=1; times<=6'd0;n1<=3'd0;n2<=3'd0;s<=0;endelsebegincase(state)idle:beginif(start)beginls<=0;state<=flood;endelsestate<=idle;endflood: beginif(n2==3)beginlf<=1;fw<=1;endelse beginlf<=0;fw<=0;endif(times==6'd60)begintimes<=0;lf<=1;fw<=1;if(s==1)state<=dry;elsestate<=wash1;endelse begintimes<=times+1;state<=flood;endendwash1: beginforward<=0;back<=1;5 / 7state<=wash2;if(n1==3)beginforward<=1;endendwash2: beginback<=0;forward<=1;n1<=n1+1;if(n1==3)beginstate<=dry;forward<=1;back<=1;endelsestate<=wash1;enddry: beginif(n2==3)beginld<=1;drain<=1;endelse beginld<=0;drain<=0;endif(times==6'd60)begintimes<=0;n2<=n2+1;drain<=1;if(n2==3)begins<=0;state<=finish;endelsebegins<=1;6 / 7state<=flood;endendelse begintimes<=times+1;state<=dry;endendfinish: beginls<=1;state<=idle;endendcaseendendendmodule2.仿真实现按下start按键后,洗衣机开始工作,ls=1;注水过程开始,fw=1,lf=1;60s注水过程完成后进入洗涤状态,fw=0,lf=0,且此时洗衣机先正转再反转重复此过程3次停止转动进入脱水过程;先脱水60s,此时drain=1,ld=1,之后注水60s,drain=0,fw=1,lf=1,重复3次后,脱水过程完成,ld=0;洗衣结束,ls=0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.实验题目:用java编写洗衣机仿真程序二.实验目的:1.熟悉并掌握洗衣机(全自动)的工作原理和运行过程.2.学会软件工程设计中的一系列分析研究,对需求分析,可行性研究,软件模型等有一定的了解,为以后的软件设计工作打下良好的基础。
3.通过的洗衣机仿真系统的编写与学习,加深了对Java这门语言的了解,对其中的类的设计,类之间的关系,界面的设计(按钮及布局的设计)有了更深的了解与体会,为Java的学习做好准备工作。
三.实验要求:了解全自动洗衣机的简单工作过程及实现。
其中包括,洗衣的方式(标准或是柔和)、洗衣中的水位选择(高水位洗衣、低水位洗衣等)等方面需要在人们将衣服放入洗衣机洗衣服之后手动来选择;并且是必须选择的洗衣参数。
当选择了一种洗衣参数后,按下启动按钮,洗衣机就会自动完成洗衣服的整个过程。
在满足基本功能以外,还需要尽量考虑外观、造型、节水等方面的设计,符合人机界面的基本要求。
四.实验分析:1.洗衣机需求分析:标准清洗:浸泡/清洗/甩干快速清洗:清洗/甩干大件衣物(冬衣,牛仔类):浸泡(温水,延长浸泡/清洗(延长筒转时间)/甩干床单,窗帘类:浸泡(温水)/清洗根据衣物的不同用按钮选择上述洗衣模式即可.其中甩干可选可不选.尽量设计了一个节水功能,可以实现水回收.在无需甩干时水不流走,余下的水可做其他用途,实现节水.2.主要的类实现(1).继承类(2).包括进水,排水,洗涤,漂洗,甩干等成员函数(3).水位的选择通过参数传递决定进水函数(4).其余通过调用筒的转动函数(run)并通过一定的参数控制实现3.程序设计步骤≡≥选择水温≡≥放入衣物≡≥选择洗衣模式≡≥脱水≡≥排水≡≥烘干≡≥关闭五.设计与实现过程:1.洗衣机类的部分实现:import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Washing extends JApplet{private JFrame jf;private JButton jb1,jb2,jb3,jb4,jb5,jb6;public static void main(String[] args){Washing flowTest=new Washing();flowTest.setSize(270,160);flowTest.go();//flowTest.show(true);}public void go(){jf=new JFrame("洗衣机功能模拟器");Container cp=jf.getContentPane();cp.setLayout(null);jb1=new JButton("入水");jb2=new JButton("加衣");jb3=new JButton("脱水");jb4=new JButton("排水");jb5=new JButton("烘干");jb6=new JButton("关闭");// Container cp=jf.getContentPane();// cp.setLayout(new BorderLayout());jb1.setBounds(10, 10, 80, 80);cp.add(jb1); //指定组件追加到这个容器的末尾。
这是一个方便的方法为addImpl。
//注意:如果一个组件已被添加到一个已显示的容器,验证必须在该容器调用,以显示新的组件。
如果正在添加多个组件,你可以通过调用验证只有一次,已添加的所有组件后提高效率。
jb2.setBounds(110, 10, 80, 80);cp.add(jb2);jb3.setBounds(210, 10, 80, 80);cp.add(jb3);jb4.setBounds(310, 10, 80, 80);cp.add(jb4);jb5.setBounds(410, 10, 80, 80);cp.add(jb5);jb6.setBounds(510, 10, 80, 80);cp.add(jb6);// jb7.setBounds(200, 50, 100, 20);// cp.add(jb7);//cp.setSize(500, 400); //没用?//调整这个组件,所以它具有宽的宽度和高度高度。
//cp.add(BorderLayout.SOUTH,jb7);jb1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){Shuiwen wen=new Shuiwen();}});jb2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){Yiwu yi=new Yiwu();yi.go();//flowTest.go();}});jb4.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){Chushui Chu=new Chushui();}});jb5.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){//Piaoxi piao=new Piaoxi();Honggan hong=new Honggan();//Thread t=new Thread(hong);// t.start();}});jb3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){Tuoshui tuo=new Tuoshui();}});jb6.addActionListener(new ActionListener(){ //ActionListener接收动作事件的监听器接口。
在处理动作事件感兴趣的类实现这个接口,这个类创建的对象注册一个组件,使用组件的addActionListener方法。
动作事件发生时,该对象的actionPerformed方法被调用。
public void actionPerformed(ActionEvent ae){System.exit(0);}});jf.setSize(700,150);jf.setVisible(true); //显示或隐藏这个窗口根据参数b值。
}}2,.按钮界面的实现:public void go(){jf=new JFrame("洗衣机功能模拟器");Container cp=jf.getContentPane();cp.setLayout(null);jb1=new JButton("入水");jb2=new JButton("加衣");jb3=new JButton("脱水");jb4=new JButton("排水");jb5=new JButton("烘干");jb6=new JButton("关闭");// Container cp=jf.getContentPane();// cp.setLayout(new BorderLayout());jb1.setBounds(10, 10, 80, 80);cp.add(jb1); //指定组件追加到这个容器的末尾。
这是一个方便的方法为addImpl。
//注意:如果一个组件已被添加到一个已显示的容器,验证必须在该容器调用,以显示新的组件。
如果正在添加多个组件,你可以通过调用验证只有一次,已添加的所有组件后提高效率。
jb2.setBounds(110, 10, 80, 80);cp.add(jb2);jb3.setBounds(210, 10, 80, 80);cp.add(jb3);jb4.setBounds(310, 10, 80, 80);cp.add(jb4);jb5.setBounds(410, 10, 80, 80);cp.add(jb5);jb6.setBounds(510, 10, 80, 80);cp.add(jb6);// jb7.setBounds(200, 50, 100, 20);// cp.add(jb7);//cp.setSize(500, 400); //没用?//调整这个组件,所以它具有宽的宽度和高度高度。
//cp.add(BorderLayout.SOUTH,jb7);jb1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){Shuiwen wen=new Shuiwen();}});jb2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){Yiwu yi=new Yiwu();yi.go();}});jb4.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){Chushui Chu=new Chushui();}});jb5.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){//Piaoxi piao=new Piaoxi();Honggan hong=new Honggan();//Thread t=new Thread(hong);// t.start();}});jb3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent ae){Tuoshui tuo=new Tuoshui();}});jb6.addActionListener(new ActionListener(){ //ActionListener接收动作事件的监听器接口。