JAVA洗衣机仿真程序实验报告及代码

合集下载

洗衣机模糊控制仿真实验报告

洗衣机模糊控制仿真实验报告

洗衣机模糊控制仿真实验报告一、实验目的本实验旨在通过对洗衣机运行过程的模糊控制仿真实验,帮助学生更好地了解模糊控制的基本原理和实现方法。

二、实验原理洗衣机模糊控制系统主要包括模糊控制器、模糊推理机和输出规则等三个部分。

模糊控制器是模糊系统的核心部分,其主要作用是将输入信号转化为模糊集,并将控制输出信号转化为真实输出信号。

模糊控制器的输入为洗衣机工作状态的一些参数,例如水位、温度等,输出为洗衣机运行状态的一些控制命令,例如加热、搅拌等。

模糊推理机是由一系列规则组成的系统,它负责根据输入的模糊集和一组先验规则,进行模糊推理,得到控制输出信号的模糊集,即模糊控制器的中间变量。

输出规则主要为控制输出信号的模糊集赋值,即将模糊集中各个元素映射到真实输出信号的取值范围内。

三、实验步骤1、建立洗衣机的模糊控制系统模型,包括模糊控制器、模糊推理机和输出规则等。

2、设置洗衣机的运行参数,例如水位、温度等,作为模糊控制器的输入。

3、根据洗衣机的运行状态,制定一组先验规则,作为模糊推理机的输入,并进行模糊推理。

4、根据模糊推理得到的控制输出信号的模糊集,进行输出规则的映射,得到洗衣机的真实控制命令。

5、根据洗衣机的控制命令,模拟洗衣机的工作流程。

6、对洗衣机的工作流程进行仿真实验,并记录实验结果。

四、实验结果分析经过多次实验,得到了洗衣机的模糊控制系统的优化参数,能够实现洗衣机的良好控制。

通过对实验结果的分析,可以发现,模糊控制系统可以有效地调节洗衣机的运行状态,使其在不同的工作状态下保持稳定且高效的运行。

同时,模糊控制系统也具有很强的适应性和鲁棒性,可以自适应地调节参数,应对各种不同的运行环境。

五、实验总结本实验通过模拟洗衣机的工作流程,对模糊控制系统的基本原理和实现方法进行了深入探究,能够有效地帮助学生掌握模糊控制系统的设计和应用方法。

同时,在实验过程中,也需要注意对实验数据和结论的分析和总结,以便更好地优化模糊控制系统的参数和性能,实现最佳控制效果。

洗衣机的java程序

洗衣机的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洗衣机仿真程序实验报告及代码

一.实验题目:用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洗衣机程序设计

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。

Java实验报告及其源代码控制结构和方法

Java实验报告及其源代码控制结构和方法

Java实验报告及其源代码控制结构和⽅法实验2 控制结构和⽅法⼀、实验⽬的1.了解程序设计三种结构:顺序、条件、循环;2.掌握Java语⾔的条件控制语句,包括if,if~else,switch语句,以及可以根据具体条件灵活使⽤它们;3.掌握Java语⾔的循环语句,包括for,while,do~while语句;4.掌握Java⽅法定义和调⽤⽅式。

⼆、实验环境1.PC微机;2.DOS操作系统或 Windows 操作系统;3.Java sdk程序开发环境、eclipse集成环境。

三、实验内容1. 判断两个圆的距离关系编写程序,提⽰⽤户输⼊两个圆的圆⼼坐标和各⾃半径,然后判断第⼆个圆是否在第⼀个圆内,还是和第⼀个圆重叠。

2.10000以内的完全数如果⼀个正整数等于除它⾃⾝以外其他所有因⼦之和,就称为完全数。

如6是⼀个完全数,因为6=1+2+3。

编写程序求出10000以内的所有完全数。

3.回⽂整数如果⼀个整数其顺序和逆序数值相同,如121,则称为回⽂数。

找出99999以内的所有正整数,使得其满⾜⾃⾝,⾃⾝的平⽅,⾃⾝的三次⽅均是回⽂数。

在该程序中要求使⽤以下⽅法://return the reversal of an integer, i.e. reverse(456) returns 654public static int reverse(int number)//return true if number is Palindromepublic static boolean isPalindrome(long originalNumber)四、实验步骤1.在实验⼀建⽴的Java项⽬下新建三个Java类,分别命名为JudgeCircle.java、perfectNumber.java、palindromeInteger,java。

2.在JudgeCircle.java添加代码:public class JudgeCircle {public static void main(String[] args) {// TODO Auto-generated method stubScanner radius1 = new Scanner(System.in) ;Scanner X1 = new Scanner(System.in) ;Scanner Y1 = new Scanner(System.in) ;Scanner radius2 = new Scanner(System.in) ;Scanner X2 = new Scanner(System.in) ;Scanner Y2 = new Scanner(System.in) ;System.out.println("Circle1: ");System.out.println("请输⼊Circle1的圆⼼坐标:");double x1 = X1.nextDouble();double y1 = Y1.nextDouble();System.out.println("请输⼊Circle1的半径:");double r1 = radius1.nextDouble();System.out.println("Circle2:");System.out.println("请输⼊Circle2的圆⼼坐标:");double x2 = X2.nextDouble();double y2 = Y2.nextDouble();System.out.println("请输⼊Circle2半径:");double r2 = radius2.nextDouble();double R = Math.abs(r1 - r2);double D = Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2)) ;if(R > D)System.out.println("Circle1在Circle内");else if(R < D)System.out.println("Circle1在Circle外");elseSystem.out.println("Circle1和Circle重叠");}}3.在perfectNumber.java 添加代码:public static void main(String[] args) {// TODO Auto-generated method stubint size = 10000;int[] factor = new int[size];int[] sum = new int[size];for(int i = 2; i <= size - 1; i++)for(int j = 1; j <= i/2; j++) {if(i % j == 0) {factor[j] = j;sum[i] += factor[j] ;}}for(int k = 2; k <= size; k++)if(sum[k] == k)System.out.println(k + " 是完全数。

洗衣机实验报告

洗衣机实验报告

数字显示洗衣机控制系统学习、原理设计、单片机编程及PCB设计一、任务描述当今社会中几乎每家每户都有一台洗衣机。

洗衣机省时省力省水,节省了很多劳动力,使得洗衣服不再被人们所发愁.而且现在的洗衣机都越来越先进,其实洗衣机中各种操作都是通过单片机控制实现的.将单片机用于家电中的洗衣机控制具有精度高、功能强、经济性好的特点,无论在提高产品质量和数量、节约能源,还是改善劳动条件等方面都显示出无比的优越性。

二、设计原理1、设计目的:通过对洗衣控制系统模型的设计巩固学习单片机的键盘、显示器、定时器、并口等部分的综合应用。

2、摘要:基于MCS-51 单片机的洗衣控制系统,控制面板由按键、指示灯和LED 显示器组成.按键选择洗衣机工作方式,指示灯配合按键工作,LED 显示器则显示洗衣机洗涤和脱水时间。

洗衣机的整体电路模块包括键盘矩阵、指示灯、电动机控制及电源电路。

控制程序设计包括定时中断服务程序、外中断服务程序及主程序。

三、设计方案1、面板设计:洗衣机的控制面板如图1,由4 个按键,7 只指示灯和2 只LED 显示器组成.按键选择洗衣机工作方式,指示灯配合按键工作,LED 显示器显示洗衣机洗涤和脱水时间。

2、工作流程:2.1。

打开洗衣机的电源开关后,强洗指示灯被点亮,表明洗衣机当前处于强洗模式,电动机只1个方向运转.按下“增"按键,则选择弱洗工作模式,电动机正反2 个方向交替运转,每隔1min 变换方向1 次。

2.2.设置好强洗、弱洗工作模式后,按下“编程选择”按键,则“洗涤次数”指示灯被点亮,此时按下按键“增”或“减”,就可设置洗涤次数。

2.3。

洗涤次数设置好后,按下“编程选择"按键,指示灯“洗衣定时”被点亮,此时按下按键“增”或“减",就可设置洗衣时间.2.4。

洗衣时间设置好后,按下“编程选择”按键,指示灯“脱水定时”被点亮,此时按下按键“增"或“减”,就可设置脱水时间。

基于组态王的洗衣机设计模拟实验

基于组态王的洗衣机设计模拟实验

基于组态王的洗衣机设计模拟实验洗衣机设计模拟实验是基于组态王的虚拟化设计实验,主要目的是通过模拟洗衣机的运行过程,检验洗衣机设计的合理性和效果,并提供优化方案。

以下是基于组态王的洗衣机设计模拟实验的详细描述:实验目的:1.检验洗衣机设计的性能和效果;2.优化洗衣机的工作流程;3.提供洗衣机的改进方案。

实验步骤:1.洗衣机设计:首先,通过组态王软件进行洗衣机的初始设计。

包括洗衣机的整体结构、内部组件、运行方式、控制系统等。

设计包括洗涤、漂洗、脱水等各个功能和步骤的流程图,并设置相应的参数和条件。

2.模拟实验设置:根据设计的洗衣机模型,通过组态王软件设置模拟实验场景。

包括环境条件、洗衣机初始状态、布料种类和数量等。

3.洗衣机运行:通过组态王软件模拟洗衣机的运行过程。

运行时,洗衣机的各个组件和传感器会根据设计的参数和条件进行相应的动作和检测。

例如,水泵会根据设定的水位自动注入水,电机会根据设定的转速控制转动等。

4.数据采集和分析:在洗衣机运行的同时,通过组态王软件实时采集洗衣机的运行数据,包括水位、温度、转速、时间等。

将采集到的数据导入到数据分析软件中,并进行详细的分析和比较。

例如,分析洗涤过程中水温的变化,脱水过程中的转速和振幅等。

5.效果评估与优化:通过对比分析洗衣机的设计参数和实际运行数据,评估洗衣机的洗涤效果和能耗情况。

根据评估结果,提出相应的优化方案。

例如,调整洗涤步骤和时间,改进水流控制方式等,以提高洗衣机的效果和能效。

6.结果展示与总结:将模拟实验的结果展示与总结,包括洗衣机运行过程的图表和数据,以及优化方案的提出和效果。

同时,对洗衣机的设计和优化过程进行总结和反思,并提出深入研究和改进的建议。

总结:基于组态王的洗衣机设计模拟实验能够有效地评估洗衣机的设计性能和效果,并提供相应的优化方案。

通过该模拟实验,可以减少实际试验的成本和时间,提高设计和优化的效率。

同时,还可以为洗衣机制造商和研发人员提供参考和指导,以不断改进和创新洗衣机的设计和技术。

组态王洗衣机实训报告

组态王洗衣机实训报告

一、实训概述随着科技的不断进步,自动化技术在各个领域的应用日益广泛。

组态王作为一种通用的工业监控软件,在自动化控制领域发挥着重要作用。

本实训报告以组态王软件为平台,对洗衣机控制系统进行设计和仿真,旨在掌握组态王软件在工业自动化控制中的应用。

二、实训目的1. 熟悉组态王软件的基本功能和操作方法。

2. 掌握组态王软件在工业自动化控制中的应用。

3. 培养实际操作能力,提高动手实践能力。

4. 为以后从事相关领域工作打下基础。

三、实训内容1. 洗衣机控制系统硬件设计2. 洗衣机控制系统软件设计3. 洗衣机控制系统仿真与调试四、实训过程1. 硬件设计洗衣机控制系统硬件主要由以下部分组成:- PLC控制器:作为控制核心,负责接收传感器信号、执行控制指令等。

- 传感器:用于检测洗衣机的工作状态,如水位传感器、温度传感器等。

- 执行器:根据PLC控制器的指令,执行相应的操作,如电机、电磁阀等。

- 人机界面:用于显示洗衣机的工作状态、设置参数等。

2. 软件设计洗衣机控制系统软件设计主要包括以下内容:- 组态王软件配置:在组态王软件中创建PLC、传感器、执行器等设备,并设置相应的参数。

- 控制程序编写:利用组态王提供的编程工具,编写PLC控制程序,实现对洗衣机各个工作过程的控制。

- 人机界面设计:设计人机界面,包括显示洗衣机工作状态、设置参数、操作按钮等。

3. 仿真与调试在完成软件设计后,对洗衣机控制系统进行仿真,验证控制程序的正确性。

仿真过程中,对系统进行调试,确保各个功能模块正常运行。

五、实训结果与收获1. 掌握组态王软件的基本功能和操作方法:通过本次实训,掌握了组态王软件的基本操作,如设备创建、参数设置、编程等。

2. 熟悉工业自动化控制原理:在实训过程中,深入了解了工业自动化控制原理,为以后从事相关领域工作打下基础。

3. 提高实际操作能力:通过实际操作,提高了自己的动手实践能力,为以后的工作积累了宝贵经验。

4. 发现并解决问题:在实训过程中,遇到了一些问题,如传感器信号不稳定、执行器响应不及时等。

洗衣机仿真系统实验报告

洗衣机仿真系统实验报告

西安郵電大學软件工程课内实验报告书院系名称:计算机学院实验题目:洗衣机仿真系统学生姓名:杜斌专业名称:软件工程班级:软件1002学号:04103041时间:2012年04月10日指导教师:杜斌全自动洗衣机控制面板V1.0报告书一、洗衣机仿真的需求分析与说明:随着人类文明的进步和社会的发展,洗衣机已经逐渐走进千家万户,其市场极其广阔,它是人们日常使用频率较高的家用电器,然而从设计到生产再到销售使用的各个环节中能否找到既节约又环保的方法来降低成本呢?答案是肯定的!再说,洗衣机的运行控制在各环节中也占有重要的低位。

如今,能耗问题已经是全球面临的最大的问题,但是计算机以它的高效精确低耗等优点用于各行各业,洗衣机的控制仿真使用计算机来完成也未尝不可,这样不仅可以节约成本,还更能设计出符合市场需求的产品。

洗衣机仿真程序的可行性分析:二、洗衣机仿真程序的可行性分析:二、随着科技的发展,嵌入式系统已经广泛使用于生活的方方面面,大大小小的家电都好像有了聪明的大脑一样,帮助人们完成某些工作。

当然洗衣机也不例外,它也能利用嵌入式系统控制洗衣机工作。

既然嵌入式系统也是计算机系统的迷你版,我们完全可以使用计算机设计用户接口、编写洗衣机仿真程序模拟洗衣机运行,它们的原理是相同的。

这样,我们就可以省去很多工作和节约材料,方便在早期把错误降到最低,收到事半功倍的效果。

三、设计概要:为了考虑用户的方便使用我们尽量往“全自动”方向靠拢,但又要顾及到给用户一点选择空间,使得人机交互更富有弹性。

综合考虑本系统做的非常的智能化只要选择衣物的种类,合适否甩干,洗衣机仿真系统会自动按照需求给予处理洗剂,不需要用户进行过多的操作!四、详细设计:说明:本程序使用C++语言编写,在windows的环境使用微软提供的MFC类库编写程序。

1.主要功能模块:(1)主界面(程序的主题框架)(2)选择洗剂衣物的种类(包括:刺绣类、羽绒类、呢绒类、纯棉类、中式服装、牛仔类、丝绸类、针织类、皮革类、西式服装)(3)选择是否甩干(包括:甩干和不甩干)(4)进度条(显示洗衣进度,脱水进度)(5)当前状态(包括正在洗剂,停止洗剂,正在脱水)(6)剩余时间(倒计时总共的时间)(7)开始按钮(用以进行程序的开始)(8)停止按钮(用以进行程序的停止)(9)关于按钮(关于本软件的版权)(10)退出按钮(退出程序)2.主要的流程图如下:3.软件主要界面截图:软件图标截图:软件主体界面截图:未选择洗剂类型提示界面:未选择是否脱洗提示界面:正在洗剂状态:正在脱干状态:洗剂完成状态:关于功能界面:。

全自动洗衣机模拟实验报告

全自动洗衣机模拟实验报告

全自动洗衣机模拟实验一、题目及要求运用DI/DO实验板模拟自动洗衣机的洗衣过程二、程序流程开机并注水→停止注水开始洗涤(滚筒转动)→停止转动并开启排水阀排水→关闭排水阀同时注水→停止注水开始第一遍清洗(滚筒转动)→停止转动排水→关闭排水同时注水→停止注水开始第二遍清洗→开启排水阀排水(滚筒继续转动直至甩干衣物)→停转关闭排水阀→音乐提示已完成清洗三、详细定义说明1号绿灯:开机(挡住即开启)1号红灯:排水阀(灯亮:开启,灯灭:关闭)2号红灯:注水(灯亮:开始注水,灯灭:停止注水)3号红灯:滚筒转动(灯亮:开始转动,灯灭:停止转动)洗涤时间5s清洗时间每遍5s注水时间3s排水时间3s甩干时间2s提示音3s四、源程序代码int BASE=0X220;int creat_DI (int *DI_NUM, int num){int i=0;for(i=0;i<6;i++)DI_NUM[i]=(num>>i)&0x01;return;}int creat_DO( int *DO_NUM){int temp=0;int i=0;for(i=5;i>0;i--){ temp=(temp+DO_NUM[i])*2;}return temp+DO_NUM[0];}main (){int DI[6]={0};int DI_in;int DO_out;char c;clrscr();while(1){DI_in=inportb(BASE+6);creat_DI(DI,DI_in);DO_out=creat_DO(DO);outportb(BASE+13,DO_out);if(DI[0]==0){DO[1]=1;DO_out=creat_DO(DO);outportb(BASE+13,DO_out);sleep(3);DO[1]=0;DO[2]=1;DO_out=creat_DO(DO);outportb(BASE+13,DO_out);sleep(5);DO[2]=0;DO_out=creat_DO(DO); outportb(BASE+13,DO_out); sleep(3);DO[0]=0;DO[1]=1;DO_out=creat_DO(DO); outportb(BASE+13,DO_out); sleep(3);DO[1]=0;DO[2]=1;DO_out=creat_DO(DO); outportb(BASE+13,DO_out); sleep(5);DO[2]=0;DO[0]=1;DO_out=creat_DO(DO); outportb(BASE+13,DO_out); sleep(3);DO[0]=0;DO[1]=1;DO_out=creat_DO(DO);outportb(BASE+13,DO_out); sleep(3);DO[1]=0;DO[2]=1;DO_out=creat_DO(DO); outportb(BASE+13,DO_out); sleep(5);DO[0]=1;DO_out=creat_DO(DO); outportb(BASE+13,DO_out); sleep(2);DO[2]=0;DO[0]=0;DO_out=creat_DO(DO); outportb(BASE+13,DO_out); sound(1000);sleep(2);nosound();c=bioskey(0);if(c==’n’||c==’N’) continue; else break;}else return ;}}五、结果分析经上机调试程序正确运行且有效,模拟开机后洗衣机各流程对应灯依次按程序设定亮灭,表示洗衣机可以按照预期正常工作六、意见及建议通过这次试验和以往的上机情况,建议老师在刚开始接触这门课的时候多讲一点C语言的知识,以便之后编写程序可以容易一些;另外建议老师可以整理出一些课件让我们拷贝回去以供课下复习参考;最后希望老师可以把实验用的工业计算机调试正常,以免使用过程中总是死机导致程序还没来得及存储,造成数据丢失,带来诸多不便。

洗衣机控制器实验报告

洗衣机控制器实验报告

数字电路与逻辑设计综合实验实验报告学院:信息与通信工程学院专业:通信工程姓名:111班级:111学号:111序号:22任课教师:袁东明日期:2009年11月一、设计课题的任务要求:课题名称:洗衣机控制器的设计实验目的:1.熟练掌握VHDL语言和QuartusⅡ软件的使用;2.理解状态机的工作原理和设计方法;3.掌握利用EDA工具进行自顶向下的电子系统设计方法。

设计任务:本实验意在模仿真正洗衣机的各种基本功能,包括开关控制,工作暂停,分辨各种洗衣模式(洗涤,漂洗,脱水),工作状态的显示,倒计时工作时间并显示,预约洗衣时间,工作停止时报警等功能。

基本任务:1.洗衣机的工作步骤为洗衣、漂洗和脱水三个过程,工作时间分别为:洗衣20秒,漂洗25秒,脱水15秒;2.用一个按键实现洗衣程序的手动选择:A、单洗涤;B、单漂洗;C、单脱水;D、漂洗和脱水;E、洗涤、漂洗和脱水全过程;3.用显示器件显示洗衣机的工作状态(洗衣、漂洗和脱水),并倒计时显示每个状态的工作时间,全部过程结束后,应提示使用者;4.用一个按键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回到暂停之前保留的状态。

提高要求:1.三个过程的时间有多个选项供使用者选择;2.可以预约洗衣时间;3.自拟其它功能。

二、系统设计:设计思路:根据系统所要实现的功能,采用自顶向下的设计方法,将其划分为模式选择、状态计时、控制电路、译码显示和分频五个大的模块,每个模块再由各自所需完成的功能划分成更细的模块。

1.模式选择模块五种洗衣模式可供用户选择,模式选择模块将用户的选择信息传递到控制模块。

2. 状态计时模块洗衣以倒数计时模块的方式提示用户当前剩余的洗衣时间,该计数器能读取不同的模值进行计数,计时单位为一秒钟。

3. 控制电路模块控制模块接收其他各模块传递来的状态和计时等信号,通过内部的选择、译码和转换电路,发出状态转移和控制信号,协调整个系统按照设定好的工作模式正常运转。

(整理)基于组态王的洗衣机设计模拟实验

(整理)基于组态王的洗衣机设计模拟实验

组态软件技术与应用课程报告课题名称基于组态王的洗衣机模拟实验基于组态王与PLC的洗衣机控制系统报告课题要求全自动洗衣机是我们日常生活中很普遍使用的自动化电器,给我们的生活带来了方便,演示模块如右图所示,下面我们将模拟全自动洗衣机,了解其工作原理。

工作流程:启动:按下启动按钮进水口开始进水,进水口指示灯亮,当水位达到高水位限制开关的时候,停止进水。

运行灯亮。

洗衣过程:当进水完成后,洗涤电机开始转动,运行指示灯亮。

为了更好的洗涤衣服,我们设定洗涤电机正转,反转相互交替三次。

正反转切换前需先停止,当设定洗涤次数完成时,排水灯亮,洗涤电机停止转动。

将桶内水排完。

当水排完后,洗涤电机启动,将衣服甩干,当设定的时间结束时,洗衣完成,排水灯熄灭,运行指示等灭。

当洗衣过程中,进水时若时间超过设定时间仍未达到上水位或排水时间超过设定时间仍未达到下水位水位,报警,指示灯亮,洗涤电机停止转动设计要求(1)根据题目要求正确连线;(2)实现PLC与组态王之间的正常通信;(3)在组态王中绘制能够正确反映题目要求的画面,定义相关变量,进行相应的动画链接,且实物与画面能够双向监控;(4)对进水口指示灯亮的次数进行计数,计数到十次后将次数清零。

绘制报警画面,大于3次进行报警;(5)实现进水口指示灯亮的次数的实时曲线显示;(6)实现进水口指示灯亮的次数的历史曲线显示。

洗衣机流程图如下图所示:设计流程开始签束T出水结束报隼系统设计硬件连接全自动洗衣机地址分配如下表所示:输入输出器件说明器件说明X0启动Y0进水X1停止Y1出水X2上限Y2电机止转X3下限Y3电机反转Y4运行指示灯一Y5报警全自动洗衣机电气接口图:DC24V启动停止上限位下限位------ 1-- ---- T--I 1 I IS/S 0V 0V 24V 24V X0 X1 X2 X3三菱FX3U-64MT/ESC0M1Y0 Y1 Y2 Y3 Y0 Y1也力、江IT•孜反粒指示指示<上一步重”下一步QO >] 取消 |设备设置选中设备中的板卡,双击新建清组要安装的设法指定唯一的唐相名都 |新二口事濡r~指定冗氽设备设 备厢置 向 导悠辐助悠室就设 备的安解通讯至替•幸一步生产厂濠: 设小名称:*掌克韦尔 *夏迎博 ♦欧姆龙* ccumc A 02 编程口+ FX2_465 + ffl elsecA + M eXneC A IK A.* £J 系?U 串口由。

智能控制实验-模糊控制

智能控制实验-模糊控制

实验一 洗衣机的模糊控制仿真一、实验目的本实验要求在学生掌握模糊控制器基本工作原理和设计方法基础上,熟悉MALAB 中的模糊控制工具箱,能针对实际问题设计模糊控制器,建立模糊控制系统,训练学生综合运用计算机来解决一些实际问题的能力。

二、实验设备计算机一台、MATLAB 软件三、实验要求设计一个模糊控制器,根据衣物的泥污和油污程度,输出衣物的洗涤时间,通过改变控制参数的大小,观察模糊控制的性能。

四、实验步骤1.确定模糊控制器的结构选用两输入单输出模糊控制器,控制器的输入为衣物的泥污和油污,输出为洗涤时间。

2. 定义输入、输出模糊集 将泥污分为三个模糊集:泥污少SD 、泥污中MD 、泥污大LD ;油污分为三个模糊集:油污少SG 、油污中MG 、油污大LG ;将洗涤时间分为五个模糊集:很短VS 、短S 、中等M 、长L 、很长VL 。

3. 定义隶属度函数选用三角形隶属度函数实现泥污、油污和洗涤时间的模糊化:(50)/50050/50050(100)/505010050100(50)/50x x x x x x x x μμμμ=-⎧≤≤⎪≤≤⎧⎪==⎨⎨-<≤⎩⎪⎪<≤=-⎩SD MD 泥污LD (50)/50050/50050(100)/505010050100(50)/50x x x x x x x x μμμμ=-⎧≤≤⎪≤≤⎧⎪==⎨⎨-<≤⎩⎪⎪<≤=-⎩SG MG 油污LG(50)/50010/50010(100)/501025/501025(100)/5025402540/504060(100)/504060(50)/50x z x z x z x z x z z x z x z x μμμμμμ=-⎧≤≤⎪⎧≤≤⎪=⎨⎪-<≤⎩⎪≤≤⎧⎪==⎨⎨-<≤⎩⎪⎪≤≤⎧⎪=⎨<≤-⎪⎩⎪≤≤=-⎩SG MG MG 洗涤时间MG LG实验结果:实验分析:6.模糊推理因模糊控制规则表对称,所以上图为input1 和input2分别为50时input2和input1与洗涤时间的关系。

java实验报告代码

java实验报告代码

java实验报告代码Java 实验报告代码引言:Java 是一种面向对象的编程语言,广泛应用于软件开发领域。

本实验报告将介绍我在学习 Java 过程中的实验代码,并对其进行分析和总结。

一、实验背景在学习 Java 编程语言时,实验是一种非常重要的学习方式。

通过实验,我们可以将理论知识应用于实际项目中,提升自己的编程能力和解决问题的能力。

二、实验目的本次实验的目的是通过编写 Java 代码,实现一些基本的功能,包括输入输出、条件语句、循环语句、数组和函数等。

三、实验过程1. 输入输出在 Java 中,可以使用 Scanner 类来实现输入输出操作。

下面是一个示例代码:```javaimport java.util.Scanner;public class InputOutputExample {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入一个整数:");int num = scanner.nextInt();System.out.println("您输入的整数是:" + num);}}```上述代码中,我们使用 Scanner 类的 nextInt() 方法来读取用户输入的整数,并使用 System.out.println() 方法将结果输出到控制台。

2. 条件语句条件语句是根据条件判断来执行不同的代码块。

下面是一个示例代码:```javapublic class ConditionalStatementExample {public static void main(String[] args) {int num = 10;if (num > 0) {System.out.println("这个数是正数");} else if (num < 0) {System.out.println("这个数是负数");} else {System.out.println("这个数是零");}}}```上述代码中,我们使用 if-else 语句来判断一个数是正数、负数还是零,并根据不同的条件输出不同的结果。

模拟控制的全自动洗衣机实验报告

模拟控制的全自动洗衣机实验报告

西安邮电大学(计算机学院)硬件课程设计报告题目:模拟控制的全自动洗衣机的设计与实现专业名称:XXXX班级:XXXX学生姓名:XXXX学号(8位):XXXX指导教师:XXXX设计起止时间:XXXX1.设计目的能够了解和熟悉微机与可编程并行接口芯片8255A之间的工作原理,掌握8255A与开关,数码管,电机驱动之间的数据交换过程,并能设计出相应的实验连接线路。

能够在实验箱和proteus仿真环境中正确连线。

掌握如何将箱子与电脑连接,如何将程序加载到箱子所连接的电路中;掌握如何使用proteus仿真软件进行模拟实物连接。

最后运用自己所学过的知识和查找的资料能够正确的做出一个简单的设计。

2.设计内容1.基本实验我们将基础实验分为了两部分,两人为一组,我这次做的是基础实验二和基础实验三参考学习通视频,然后自己在电脑上重新连接线路。

三个基本实验的proteus 仿真的原理图如下:(1)8255基本输入输出要求:实现拨动开关控制LED的亮灭注:因为本次实验没有做这个,所以这里只贴上图片不进行详细的介绍。

(2)流水灯设计要求:实现拨动不同开关控制 LED 灯的变化。

例如,K1 从左往右,K2 从右往左,K3 从中间向两边,K4 从两边向中间依次亮灭变化,按特定键退出。

思路做法:将8255A的cs与试验箱上的IOY0相连,其目的是进行选择端口的高两位地址。

将8255A的A0A1与系统总线的XA1XA2相连,其目的是进行片内选地址,确定端口低两位的地址,最后确定出ABC口在本次实验中的端口地址。

初始化8255A,调整代码中三端口的地址,通过控制字控制A口输入,B,C口输出。

然后通过开关的输入跳转到不同的程序功能段。

一共四个功能,都是使用循环输出的方法,从左往右和从右往左的运行周期为循环8次,也就是将8个灯都点亮一次,然后继续读开关状态进行下一次,中间向两边和两边向中间是循环4次。

实验截图如下:(3)数码管应用要求:数码管显示 0 到 7,实现拨动不同开关,数码管显示该开关位置值(1-8);若同时拨动两个以上开关,则数码管显示“E”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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接收动作事件的监听器接口。

相关文档
最新文档