当前位置:文档之家› 智能洗衣机控制器设计报告

智能洗衣机控制器设计报告

(封面)XXXXXXX学院智能洗衣机控制器设计报告题目:院(系):专业班级:学生姓名:指导老师:时间:年月日设计内容及要求① 设计一个智能洗衣机控制器,能够实现洗衣,漂洗和脱水的功能。

②要求能够使用按键模拟对洗衣机的控制,能够设置工作模式,为了便于观察,将洗衣机设定的工作模式(1~5)和整个过程所剩的工作时间用数码管显示出来(时间分辨率为1分钟),能够将洗衣机当前所处的状态(注水,洗衣,排水,甩干)用发光管或者数码管显示出来。

【模式1】:洗衣模式--强力洗(洗衣30分钟)【模式2】:洗衣模式--普通洗(洗衣20分钟)【模式3】:洗衣模式--轻柔洗(洗衣10分钟)【模式4】:漂洗模式【模式5】:甩干模式注:在以上5个模式中,每次注水1分钟,漂洗5分钟,排水1分钟,甩干1分钟,模式1~3的洗衣时间如上所示,具体的洗衣步骤如下:【模式1~3】:注水->洗衣->排水->甩干->注水->漂洗->排水->甩干->注水->漂洗->排水->甩干。

【模式4】:注水->漂洗->排水->甩干->注水->漂洗->排水->甩干。

【模式5】:甩干。

【要求】:实现逻辑控制过程,可以选择性的加入注水口无水报警等人性化的状态提示,操作完毕使用蜂鸣器鸣叫两秒提示。

③ 画出洗衣机控制器的状态机,写出状态编码方案。

④ 用Verilog语言对设计进行描述,设计一个测试方案,并能够下载到实验板上调试成功。

⑤ 写出设计性实验报告,并打印各层次的源文件和仿真波形,然后作简要说明。

并谈谈此次实验的收获、感想及建议系统设计1 系统框图与说明本次设计的重点在于智能控制器状态之间转换的条件和关系,并且在此基础上输出相应的显示。

图一系统结构框图Pause warnMode1Mode2Mode3Mode4Mode5输入端口描述Reset:复位Mode1-5:模式选择Pause:暂停启动Warn:报警2状态转换图洗衣机共分为5个模式,4个状态。

模式分别为MODE1强力洗,MODE2普通洗,MODE3轻柔洗,MODE4漂洗,MODE5甩干;状态分别为state0注水,state1洗衣,state2排水,state3甩干。

另外,为使洗衣机增添功能,添加了两个个状态,一个为初始状态state00,另一个为cloze,即为洗衣完成时的状态。

图二 状态转换图3 输入输出设计(按键,数码管,发光管,蜂鸣器) 控制器设定有8个按键,其中5个为选择模式的按钮,另外一个则是控制器的复位键reset 。

当按下reset 的时候,控制器回复到初始状态。

还有一个是表示无水时的传感信号,最后一个则是增加的控制洗衣机暂停和再启动的按键。

输出数码管也有6个,其中两个分别显示控制器当前状态和模式,另外四个用来表示当前状态所剩余时间。

发光二极管设定了两个,其中一个表示洗衣机水箱无水时的报警显示,另一个是表示洗衣完成时的显示。

相应的,在这两个发光管亮起时,蜂鸣器发出声音。

系统仿真1 各工作模式仿真波形图三 mode1状态转换图四 mode2状态转换图五 mode3状态转换图六 mode4状态转换图七 mode5状态转换图八 mode4中由注水向洗衣状态转换时细节显示实验总结1 心得体会我们认为,在这学期的课设中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。

更重要的是,在课设过程中,我们学会了很多学习的方法。

而这是日后最实用的,真的是受益匪浅。

要面对社会的挑战,只有不断的学习、实践,再学习、再实践。

我们采用Verilog语言作为执行核心,通过了种从无到有,从不会到自由运用的过程。

在某种意义上说,这是一种锻炼,一种知识的积累,能力的提高。

完全可以把这个当作基础东西,只有掌握了这些最基础的,才可以更进一步,取得更好的成绩。

很少有人会一步登天吧。

永不言弃才是最重要的。

而且,这对于我们的将来也有很大的帮助。

以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。

就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。

附录:源程序moduleauto_con(clk,clk2,clr,out,sel,mode,warn,speak,ts1,ts2,tm1,tm2,LEDW,LEDF); input clk,clr,clk2,warn;input[4:0] sel;output[3:0] out;output speak,LEDW,LEDF;output[3:0] mode;reg[3:0] mode;reg LEDW,LEDF;reg[3:0] out;reg[3:0] state;reg[1:0] step;output[3:0] ts1,ts2,tm1,tm2;reg[3:0] ts1,ts2,tm1,tm2;wire fin;wire speak;reg flag;parameter state0=4'b0001,state1=4'b0010, /*状态编码,采用二进制编码方式*/state2=4'b0011,state3=4'b0100,state11=4'b0110,state12=4'b0111,state13=4'b1000,cloze=4'b0101,state00=4'b0000;assign fin=((ts2==0) & (ts1==0) & (tm2==0) & (tm1==0));assign speak=(warn||(state==cloze))&clk2; /*蜂鸣器信号*/always @(posedge clk) /*该进程定义起始方式*/begincase(sel)5'b00001:mode<=4'b0001; /*模式编码,采用二进制编码方式*/5'b00010:mode<=4'b0010;5'b00100:mode<=4'b0011;5'b01000:mode<=4'b0100;5'b10000:mode<=4'b0101;default: mode<=4'b0000;endcaseif(state==cloze) LEDF <= 1'b1; /*洗衣完成时发光管发光*/else LEDF <= 1'b0;LEDW <= warn; /*无水报警时发光管发光*/beginif(ts2!=0) /*该部分控制倒计时*/ts2 <= ts2 - 4'd1;else if(ts2==0 & ts1 != 0)begints2 <=4'd9;ts1 <= ts1-4'd1;endelse if(ts2==0 & ts1==0 & tm2!=0)begints2 <= 4'd9;ts1 <= 4'd5;tm2 <= tm2 - 4'd1;endelse if(ts2==0 & ts1==0 & tm2==0 & tm1!=0)begints2 <= 4'd9;ts1 <= 4'd5;tm2 <= 4'd9;tm1 <= tm1 - 4'd1;endendif(clr) beginstate<=state00;flag<=1'b0;step<=2'b00;tm1<=0;tm2<=0;ts1<=0;ts2<=0;endif(fin)case(sel) /*该进程控制各模式状态之间的转换*/ 5'b00001:case(state) /*MODE1的状态转换*/state00:begin tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0001;endstate0:beginif(flag==0)begin tm1<=2;tm2<=9;ts1<=5;ts2<=9;state<=4'b0110;flag<=1'b1;endelsebegin tm1<=0;tm2<=4;ts1<=5;ts2<=9;state<=4'b0010;endend4'b0110:begin tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0011;end4'b0010:begin tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0011;end4'b0011:begin tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0100;end4'b0100:beginif(step==2'b10) state<=cloze;elsebegin tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=state0;step<=step+2'b1;endenddefault: state<=cloze;endcase5'b00010:case(state) /*MODE2的状态转换*/state<=4'b0001;endstate0:beginif(flag==0)begin tm1<=1;tm2<=9;ts1<=5;ts2<=9;state<=4'b0111;flag<=1'b1;endelsebegin tm1<=0;tm2<=4;ts1<=5;ts2<=9;state<=4'b0010;endend4'b0111:begin tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0011;end4'b0010:begin tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0011;end4'b0011:begin tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0100;end4'b0100:beginif(step==2'b10) state<=cloze;else begintm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=state0;step<=step+2'b1;endenddefault: state<=cloze;endcase5'b00100:case(state) /*MODE3的状态转换*/ state00:begin tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0001;endstate0:beginif(flag==0)state<=4'b1000;flag<=1'b1;endelsebegin tm1<=0;tm2<=4;ts1<=5;ts2<=9;state<=4'b0010;endend4'b1000:begin tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0011;end4'b0010:begin tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0011;end4'b0011:begin tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0100;end4'b0100:beginif(step==2'b10) state<=cloze;else begintm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=state0;step<=step+2'b1;endenddefault: state<=cloze;endcase5'b01000:begin /*MODE4的状态转换*/case(state)4'b0000:begin tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=state+4'b0001;end4'b0001:begin tm1<=0;tm2<=4;ts1<=5;ts2<=9;state<=state+4'b0001;end4'b0010:begin tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=state+4'b0001;end4'b0011:begin tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=state+4'b0001;end4'b0100: begin if(flag==0)begintm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0001;flag<=flag+1'b1;endelse state<=cloze;enddefault:state<=cloze;endcaseend5'b10000:begin /*MODE5的状态转换*/case(state)4'b0000:begin tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0100;end4'b0100:begin state<=cloze;enddefault state<=cloze;endcaseenddefault: state<=state00; /*default语句,避免锁存器的产生*/ endcaseend。

相关主题