2010学年度第一学期电子技术基础课程设计――智能洗衣机控制器控制科学与工程系 自动化 1006 班******* ********院 系: 专 业: 班 级: 姓 名: 学 号: 指导教师:课程设计名称智能洗衣机控制器的设计设计内容及要求①设计一个智能洗衣机控制器,能够实现洗衣,漂洗和脱水的功能。
②要求能够使用按键模拟对洗衣机的控制,能够设置工作模式,为了便于观察,将洗衣机设定的工作模式(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 warnResetModelMode2Mode3Mode4Mode5输入端口描述Reset :复位Mode1-5 :模式选择Pause :暂停启动Warn :报警2状态转换图洗衣机共分为5个模式,4个状态。
模式分别为M0DE1强力洗,M0DE2普通洗,M0DE3轻柔洗,M0DE4漂洗,M0DE5 甩干;状态分别为stateO 注水,statel 洗衣,state2 排水,state3 甩干。
另外,为使洗衣机增添功能,添加了两个个状态,一个为初始状态stateOO,另一个为cloze,即为洗衣完成时的状态。
图二状态转换图3输入输出设计(按键,数码管,发光管,蜂鸣器)控制器设定有8个按键,其中5个为选择模式的按钮,另外一个则是控制器的复位键reset。
当按下reset的时候,控制器回复到初始状态。
还有一个是表示无水时的传感信号,最后一个则是增加的控制洗衣机暂停和再启动的按键。
输出数码管也有6个,其中两个分别显示控制器当前状态和模式,另外四个用来表示当前状态所剩余时间。
发光二极管设定了两个,其中一个表示洗衣机水箱无水时的报警显示,另一个是表示洗衣完成时的显示。
相应的,在这两个发光管亮起时,蜂鸣器发出声音。
系统仿真1各工作模式仿真波形图三model 状态转换图四mode2状态转换图六mode4状态转换iooooococoocooooowooxxxxMoocoowxmoawao c图七mode5状态转换图八mode4中由注水向洗衣状态转换时细节显示实验总结1心得体会本学期电子课程设计以老师多个命题,学生自由选择命题的形式进行。
趣味性强,同时也可以学到很多东西。
我们认为,在这学期的课设中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。
更重要的是,在课设过程中,我们学会了很多学习的方法。
而这是日后最实用的,真的是受益匪浅。
要面对社会的挑战,只有不断的学习、实践,再学习、再实践。
我们采用Verilog 语言作为执行核心,通过了种从无到有,从不会到自由运用的过程。
在某种意义上说,这是一种锻炼,一种知识的积累,能力的提高。
完全可以把这个当作基础东西,只有掌握了这些最基础的,才可以更进一步,取得更好的成绩。
很少有人会步登天吧。
永不言弃才是最重要的而且,这对于我们的将来也有很大的帮助。
以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。
就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。
本次课程设计虽然结束了,却留下了很多遗憾,因为由于时间的紧缺和课程的繁忙,并没有做到最好,但是,最起码我们没有放弃,它是我们的骄傲!相信以后我们会以更加积极地态度对待我们的学习、对待我们的生活。
我们的激情永远不会结束,相反,我们会更加努力,努力的去弥补自己的缺点,发展自己的优点,去充实自己,只有在了解了自己的长短之后,我们会更加珍惜拥有的,更加努力的去完善它,增进它。
只有不断的测试自己,挑战自己,才能拥有更多的成功和快乐!To us, happiness equals success! 快乐至上,享受过程,而不是结果!认真对待每一个实验,珍惜每一分一秒,学到最多的知识和方法,锻炼自己的能力,这个是我们在实时测量技术试验上学到的最重要的东西,也是以后都将受益匪浅的!2 功能扩展洗衣机设定了启动,暂停和在启动功能,在运用时显得更为人性化。
附录:源程序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; /* 洗衣完成时发光管发光 */ elseLEDF <= 1'b0;begin if(ts2!=0)ts2 <= ts2 - 4'd1;LEDW <= warn; /* 无水报警时发光管发光 *//* 蜂鸣器信号 *//* 该进程定义起始方式 *//* 模式编码,采用二进制编码方式 *//* 该部分控制倒计时 */else if(ts2==0 & ts1 != 0) begin ts2 <=4'd9; ts1 <= ts1-4'd1;endelse if(ts2==0 & ts1==0 & tm2!=0) begin ts2 <= 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) begin state<=state00; flag<=1'b0; step<=2'b00;tm1<=0;tm2<=0;ts1<=0;ts2<=0;endif(fin)case(sel) /* 该进程控制各模式状态之间的转换*/ 5'b00001:case(state) /*M0DE1 的状态转换*/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:begintm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0011;end4'b0010:begintm1<=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) /*M0DE2的状态转换*/ state00:begintm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0001;endstate0:beginif(flag= =0)begin tm1<=1;tm2<=9;ts1<=5;ts2<=9;state<=4'b0111;flag<=1'b1;endelsebegintm1<=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;state<=4'b0100;endend4'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)/*M0DE3的状态转换*/ state00:beginstate<=4'b0001;tm1<=0;tm2<=0;ts1<=5;ts2<=9;endstate0:beginif(flag= =0)begin tm1<=0;tm2<=9;ts1<=5;ts2<=9;state<=4'b1000;flag<=1'b1;endelsebegintm1<=0;tm2<=4;ts1<=5;ts2<=9; state<=4'b0010;endend4'b1000:begintm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=4'b0011;end4'b0010:begintm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=4'b0011;end4'b0011:begin tm1<=0;tm2<=0;ts1<=5;ts2<=9;end5'b10000:begin /*M0DE5的状态转换*/ 4'b0100:beginif(step==2'b10) state<=cloze; else begintm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=state0;step<=step+2'b1;endend default: endcase state<=cloze;5'b01000:begincase(state)4'b0000:begin /*MODE4的状态转换*/ tm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=state+4'b0001;end 4'b0001:begintm1<=0;tm2<=4;ts1<=5;ts2<=9; state<=state+4'b0001;end 4'b0010:begintm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=state+4'b0001;end4'b0011:begintm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=state+4'b0001; end4'b0100: beginif(flag==0)begintm1<=0;tm2<=0;ts1<=5;ts2<=9;state<=4'b0001;flag<=flag+1'b1;endelse state<=cloze;enddefault:state<=cloze; endcasecase(state) 4'b0000:begin state<=4'b0100;end 4'b0100:beginend defaultendcase enddefault: state<=state00; /*default 语句,避免锁存器的产生*/ endcase end tm1<=0;tm2<=0;ts1<=5;ts2<=9; state<=cloze;state<=cloze;。