电子技术课程设计智能洗衣机控制器
电子技术基础课程设计——智能洗衣机控制器 目录 一、课程设计的目的二、课程设计的课题与要求 1.课程设计的课题2.课程设计的要求三、设计思路与过程 1.设计前提概述2.ASM 图3.状态图4.输入输出设计四、程序内容 五、仿真波形图 1.模式一的仿真2.模式二的仿真3.模式三的仿真4.模式四的仿真5.模式五的仿真六、课设感想与收获 一、课程设计的目的1.了解数字系统的组成,学习数字系统的设计方法。
2.学习数字系统由上向下设计法的工具-ASM图3.熟悉现代数字系统的实现方法:用PLD器件取代传统的中规模集成器件实现数字电路与系统。
4.学习分层次化实现数字电路与系统的方法。
5.学习使用硬件描述语言(HardwareDescription Language)对数字电路与系统进行建模、仿真与实现的方法。
二、课程设计的课题与要求1.课程设计的课题设计一个智能洗衣机(全自动洗衣机)控制器,能够实现洗衣,漂洗和脱水的功能。
2.课程设计的要求能够使用按键模拟对洗衣机的控制,能够设置工作模式,为了便于观察,将洗衣机的工作模式和所剩的工作时间用数码管显示出来,能够将洗衣机当前所处的状态用发光管或者数码管显示出来。
【模式1】:洗特别脏的衣服(洗衣30秒钟)【模式2】:洗脏的衣服 (洗衣20秒钟)【模式3】:洗一般的衣服(洗衣10秒钟)【模式4】:漂洗
(每次漂洗5秒钟)【模式5】:脱水(每次脱水3秒钟)【洗衣全过程】:
洗衣+脱水+漂洗+脱水+漂洗+脱水,注水完成使用外部传感器S=1表示。
【漂洗模式】:漂洗+脱水+漂洗+脱水,注水完成使用外部传感器S=1表示。
【脱水模式】:脱水。
【注】:操作完毕使用蜂鸣器鸣叫两秒提示。
三、设计思路与过程1.设计前提概述本设计任务主要是实现各个模式之间的
切换以及各个状态之间的转变。
课题已经要求有模式一到五这五个模式,故按照这五个模式来思考。
另外,课题也明确要求了三个状态:洗衣,漂洗与脱水。但是,注水是洗衣机必
须进行的操作,也占有整个模式中的部分时间,所以也将注水当作一种状态,而
且洗衣和漂洗之前都必须注水。
综上,设计的模式有五个:模式一,模式二,模式三,模式四和模式五。设计的
状态有四个:注水,洗衣,漂洗与脱水,分别对应s1,s2,s3,s4。
2.ASM 图每个状态都有规定的具体时间,时间到了,发生转换。图中T1,
T2,T3,T4,T5,T6,TT表示用时间来控制状态的转换。在程序中,有具体
的T1,T2,T3,T4,T5,T6,TT的表示,为作图简便,图中不作具体说明。
3.状态图图中S1,S2,S3,S4分别对应状态注水,洗衣,漂洗,脱水。而图
中的T1,T2,T3,T4,T5,T6,TT同ASM图中的符号,在ASM图中已说
明,详情见程序,这里不重复说明。
4.输入输出设计本程序共有5个模式:模式一,模式二,模式三,模式四,模式五。4个状态:注水,洗衣,漂洗,脱水。
设计6个输入按键,分别为K1,K2,K3,K4,K5,K6。K1为控制模式一的按键;
K2为控制模式二的按键;
K3为控制模式三的按键;
K4为控制模式四的按键;
K5为控制模式五的按键;
K6为控制洗衣机工作的按键。
输出设备有一个发光二极管,四个数码管。发光二极管亮表示注水完成,发光二极管灭表示正在注水。一个数码管用来显示当前的模式,1,2,3,4,5分别表示模式一,模式二,模式三,模式四,模式五;
一个数码管用来表示当前的状态,1,2,3,4分别表示注水,洗衣,漂洗,脱水状态;
两个数码管用来显示当前模式所剩下的时间,时间以1递减至0。
四 | 、 | 程 | 序 | 内 | 容 | module |
washclother(clk,clkk,k1,k2,k3,k4,k5,k6,state,mode,ttime,alarm,zhushui);input clk; //整个程序的时钟信号inputclkk; //扬声器的时钟信号inputk1; //模式一的控制按键inputk2; //模式二的控制按键inputk3; //模式三的控制按键inputk4; //模式四的控制按键inputk5; //模式五的控制按键inputk6; //工作使能按键output[3:0] state; //状态数码管显示信号 output[3:0] mode;
//模式数码管显示信号 output[7:0] ttime; //模式的总时间outputalarm,zhushui; reg zhushui; //注水信号regalarm; //扬声器信号reg[3:0] jiao; //扬声器响的时间计时reg[7:0] ttime; reg [3:0] mode; reg [3:0] state; reg work; //开始工作信号regover; //结束信号always@(posedge clk or posedge k6) begin if(k6==1) //k6 按下,work为1,开始工作work<=1;else //k6 未按,模式初始化beginover<=1; jiao<=4'b0000;work<=0; if(k1==1) //初始化为模式一beginttime<=8'h55;mode<=4'b0001;end else if(k2==1) //初始化为模式二beginttime<=8'h45;mode<=4'b0010;end else if(k3==1) //初始化为模式三beginttime<=8'h35;mode<=4'b0011;end else if(k4==1) //初始化为模式四beginttime<=8'h20;mode<=4'b0100;end else if(k5==1) //初始化为模式五beginttime<=8'h5;mode<=4'b0101;end else //初始化为0begin mode<=4'b0000;state<=4'b0000;ttime<=8'h0;end end if(work==1) //开始从某一模式工作begincase(mode) //确定模式4'b0001:begin//模式一的过程if(((ttime>8'h53)&&(ttime<8'h56))||((ttime<8'h21)&&(ttime>8'h18))||((ttime<8'h11)&&(ttime>8'h8)))begin //注水状态zhushui<=1'b0;state<=4'b0001;end else zhushui<=1'b1;if((ttime>8'h23)&&(ttime<8'h54))state<=4'b0010;//洗衣状态if(((ttime>8'h13)&&(ttime<8'h19))||((ttime<8'h9)&&(ttime>8'h3)))state<=4'b0011;//漂洗状态if(((ttime>8'h20)&&(ttime<8'h24))||((ttime<8'h14)&&(ttime>8'h10))||((ttime<8'h4)&&(ttime>8'h0)))state<=4'b0100;//脱水状态if(ttime>8'h0)begin //时间递减到0if(ttime[3:0]==4'
b0000)begin ttime[3:0]<=4'b1001;ttime[7:4]<=ttime[7:4]-1'b1;end else ttime[3:0]<=ttime[3:0]-1'b1;end end 4'b0010:begin//模式二的过程if(((ttime>8'h43)&&(ttime<8'h46))||((ttime<8'h21)&&(ttime>8'h18))||((ttime<8'h11)&&(ttime>8'h8)))begin zhushui<=1'b0;
state<=4' | b0001; | end | else | zhushui<=1' | b1; | if((ttime>8' | |
h23)&&(ttime<8' | h44)) | state<=4' | b0010; | if(((ttime>8' | |||
h13)&&(ttime<8'h19))||((ttime<8'h9)&&(ttime>8'h3)))state<=4'
b0011; | if(((ttime>8' | h20)&&(ttime<8' | h24))||((ttime<8' |
h14)&&(ttime>8'h10))||((ttime<8'h4)&&(ttime>8'h0)))state<=4'b0100;if(ttime>0) begin if(ttime[3:0]==4'b0000)begin ttime[3:0]<=4'b1001;ttime[7:4]<=ttime[7:4]-1'b1;end else ttime[3:0]<=ttime[3:0]-1'
b1; | end | end | 4' | b0011:begin | //模 | 式 | 三 | 的 | 过 | 程 |
if(((ttime>33)&&(ttime<36))||((ttime<21)&&(ttime>18))||((ttime<11)&&(ttime>8))) begin zhushui<=1'b0;state<=4'b0001;end else zhushui<=1'b1;if((ttime>8'h23)&&(ttime<8'h34))state<=4'
b0010; | if(((ttime>8' | h13)&&(ttime<8' | h19))||((ttime<8' |
h9)&&(ttime>8'h3)))state<=4'b0011;if(((ttime>8'h20)&&(ttime<8'h24))||((ttime<8'h14)&&(ttime>8'h10))||((ttime<8'h4)&&(ttime>8'h0)))state<=4'b0100;if(ttime>8'h0)begin if(ttime[3:0]==4'b0000)begin ttime[3:0]<=4'b1001;ttime[7:4]<=ttime[7:4]-1'b1;end else ttime[3:0]<=ttime[3:0]-1'b1;end end 4'b0100:begin//模式四的过程if(((ttime>8'h18)&&(ttime<8'h21))||((ttime<8'h11)&&(ttime>8'
h8)))begin zhushui<=1'b0;state<=4'b0001;end else zhushui<=1'b1;if(((ttime>8'h13)&&(ttime<8'h19))||((ttime<8'h9)&&(ttime>8'h3)))state<=4'b0011;if(((ttime>8'h10)&&(ttime<8'h14))||((ttime<8'h4)&&(ttime>8'h0)))state<=4'b0100;if(ttime>8'h0)begin
if(ttime[3:0]==4' | b0000) | begin | ttime[3:0]<=4' | b1001; |
ttime[7:4]<=ttime[7:4]-1'b1;end else ttime[3:0]<=ttime[3:0]-1'b1;end end 4'b0101:begin//模式五的过程if((ttime>8'h3)&&(ttime<8'h6))begin zhushui<=1'b0;state<=4'b0001;end else zhushui<=1'b1;if((ttime<8'h4)&&(ttime>8'h0))state<=4'b0100;if(ttime>8'h0)
begin | if(ttime[3:0]==4' | b0000) | begin | ttime[3:0]<=4' | b1001; |
ttime[7:4]<=ttime[7:4]-1'b1;end else ttime[3:0]<=ttime[3:0]-1'b1;end end 4'b0000:begin//停止工作state<=4'b0000;ttime<=8'h0;
zhushui<=1' | b1; | alarm<=1' | b0; | end | endcase |
if((over==1)&&(ttime[7:0]==8'h1))begin over<=0; jiao<=4'b0010;//扬声器鸣叫2Send if(jiao>4'b0000)begin alarm<=~clkk; //扬声器鸣叫jiao<=jiao-1'b1;//鸣叫时间递减到0end else alarm<=0; end end endmodule 五、仿真波形图1.模式一的仿真2.模式二的仿真3.模式三的仿真4.模式四的仿真5.模式五的仿真六、课设感想与收获每次课程设计都有些让我们即恐惧又兴奋,因为它充满挑战。本次课程设计亦是如此,趣味性强,同时也可以学到很多东西。
在这次课设中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我通过查找大量资料,请教老师,以及不懈的努力,不仅培养了思考、动手
操作的能力,在各种其它能力上也都有了提高。更重要的是,在课设过程中,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。
我不仅了解了数字系统的组成,学会了数字系统的设计方法及数字系统由上向下设计法的工具-ASM图,而且熟悉了现代数字系统的实现方法:用PLD器件取代传统的中规模集成器件实现数字电路与系统。我还掌握了分层次化实现数字电路与系统的方法,了解了使用硬件描述语言(HardwareDescription Language)对数字电路与系统进行建模、仿真与实现的方法。
课设的过程永远是那么的纠结,那么的刺激,那么的值得回味,在某种意义上说,这是一种锻炼,一种知识的积累,能力的提高。完全可以把这个当作基础东西,只有掌握了这些最基础的,才可以更进一步,取得更好的成绩。很少有人会一步登天吧。永不言弃才是最重要的。
而且,这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。
虽然大二学过数电,对Verilog语言有一定的涉猎,但是并不熟悉,未掌握其核心内容,这次课程设计,不仅复习了数电知识的内容,而且使我对Verilog语言有了更进一步的了解,不管是从结构上,还是从语法上。Verilog语言是一门很实用的语言,应该说是一门很精确的语言。