库升汽车网
您的当前位置:首页电子技术课程设计智能洗衣机控制器

电子技术课程设计智能洗衣机控制器

来源:库升汽车网




电子技术课程设计智能洗衣机控制器

电子技术基础课程设计——智能洗衣机控制器 目录 一、课程设计的目的二、课程设计的课题与要求 1.课程设计的课题2.课程设计的要求三、设计思路与过程 1.设计前提概述2.ASM 3.状态图4.输入输出设计四、程序内容 五、仿真波形图 1.模式一的仿真2.模式二的仿真3.模式三的仿真4.模式四的仿真5.模式五的仿真六、课设感想与收获 一、课程设计的目的1.了解数字系统的组成,学习数字系统的设计方法。

2.学习数字系统由上向下设计法的工具-ASM3.熟悉现代数字系统的实现方法:用PLD器件取代传统的中规模集成器件实现数字电路与系统。

4.学习分层次化实现数字电路与系统的方法。

5.学习使用硬件描述语言(HardwareDescription Language)对数字电路与系统进行建模、仿真与实现的方法。

二、课程设计的课题与要求1.课程设计的课题设计一个智能洗衣机(全自动洗衣机)控制器,能够实现洗衣,漂洗和脱水的功能。

2.课程设计的要求能够使用按键模拟对洗衣机的控制,能够设置工作模式,为了便于观察,将洗衣机的工作模式和所剩的工作时间用数码管显示出来,能够将洗衣机当前所处的状态用发光管或者数码管显示出来。

【模式1】:洗特别脏的衣服(洗衣30秒钟)【模式2】:洗脏的衣服 (洗衣20秒钟)【模式3】:洗一般的衣服(洗衣10秒钟)【模式4】:漂洗



(每次漂洗5秒钟)【模式5】:脱水(每次脱水3秒钟)【洗衣全过程】:

洗衣+脱水+漂洗+脱水+漂洗+脱水,注水完成使用外部传感器S=1表示。

【漂洗模式】:漂洗+脱水+漂洗+脱水,注水完成使用外部传感器S=1表示。

【脱水模式】:脱水。

【注】:操作完毕使用蜂鸣器鸣叫两秒提示。

三、设计思路与过程1.设计前提概述本设计任务主要是实现各个模式之间的

切换以及各个状态之间的转变。

课题已经要求有模式一到五这五个模式,故按照这五个模式来思考。

另外,课题也明确要求了三个状态:洗衣,漂洗与脱水。但是,注水是洗衣机必

须进行的操作,也占有整个模式中的部分时间,所以也将注水当作一种状态,而

且洗衣和漂洗之前都必须注水。

综上,设计的模式有五个:模式一,模式二,模式三,模式四和模式五。设计的

状态有四个:注水,洗衣,漂洗与脱水,分别对应s1s2s3s4

2.ASM 图每个状态都有规定的具体时间,时间到了,发生转换。图中T1

T2T3T4T5T6TT表示用时间来控制状态的转换。在程序中,有具体

T1T2T3T4T5T6TT的表示,为作图简便,图中不作具体说明。

3.状态图图中S1S2S3S4分别对应状态注水,洗衣,漂洗,脱水。而图

中的T1T2T3T4T5T6TTASM图中的符号,在ASM图中已说

明,详情见程序,这里不重复说明。



4.输入输出设计本程序共有5个模式:模式一,模式二,模式三,模式四,模式五。4个状态:注水,洗衣,漂洗,脱水。

设计6个输入按键,分别为K1K2K3K4K5K6K1为控制模式一的按键;
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 按下,work1,开始工作work<=1;else //k6 未按,模式初始化beginover<=1; jiao<=4b0000;work<=0; if(k1==1) //初始化为模式一beginttime<=8h55;mode<=4b0001;end else if(k2==1) //初始化为模式二beginttime<=8h45;mode<=4b0010;end else if(k3==1) //初始化为模式三beginttime<=8h35;mode<=4b0011;end else if(k4==1) //初始化为模式四beginttime<=8h20;mode<=4b0100;end else if(k5==1) //初始化为模式五beginttime<=8h5;mode<=4b0101;end else //初始化为0begin mode<=4b0000;state<=4b0000;ttime<=8h0;end end if(work==1) //开始从某一模式工作begincase(mode) //确定模式4b0001:begin//模式一的过程if(((ttime>8h53)&&(ttime<8h56))||((ttime<8h21)&&(ttime>8h18))||((ttime<8h11)&&(ttime>8h8)))begin //注水状态zhushui<=1b0;state<=4b0001;end else zhushui<=1b1;if((ttime>8h23)&&(ttime<8h54))state<=4b0010;//洗衣状态if(((ttime>8h13)&&(ttime<8h19))||((ttime<8h9)&&(ttime>8h3)))state<=4b0011;//漂洗状态if(((ttime>8h20)&&(ttime<8h24))||((ttime<8h14)&&(ttime>8h10))||((ttime<8h4)&&(ttime>8h0)))state<=4b0100;//脱水状态if(ttime>8h0)begin //时间递减到0if(ttime[3:0]==4



b0000)begin ttime[3:0]<=4b1001;ttime[7:4]<=ttime[7:4]-1b1;end else ttime[3:0]<=ttime[3:0]-1b1;end end 4b0010:begin//模式二的过程if(((ttime>8h43)&&(ttime<8h46))||((ttime<8h21)&&(ttime>8h18))||((ttime<8h11)&&(ttime>8h8)))begin zhushui<=1b0;

state<=4

b0001;

end

else

zhushui<=1

b1;

if((ttime>8

h23)&&(ttime<8

h44))

state<=4

b0010;

if(((ttime>8

h13)&&(ttime<8h19))||((ttime<8h9)&&(ttime>8h3)))state<=4

b0011;

if(((ttime>8

h20)&&(ttime<8

h24))||((ttime<8

h14)&&(ttime>8h10))||((ttime<8h4)&&(ttime>8h0)))state<=4b0100;if(ttime>0) begin if(ttime[3:0]==4b0000)begin ttime[3:0]<=4b1001;ttime[7:4]<=ttime[7:4]-1b1;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<=1b0;state<=4b0001;end else zhushui<=1b1;if((ttime>8h23)&&(ttime<8h34))state<=4

b0010;

if(((ttime>8

h13)&&(ttime<8

h19))||((ttime<8

h9)&&(ttime>8h3)))state<=4b0011;if(((ttime>8h20)&&(ttime<8h24))||((ttime<8h14)&&(ttime>8h10))||((ttime<8h4)&&(ttime>8h0)))state<=4b0100;if(ttime>8h0)begin if(ttime[3:0]==4b0000)begin ttime[3:0]<=4b1001;ttime[7:4]<=ttime[7:4]-1b1;end else ttime[3:0]<=ttime[3:0]-1b1;end end 4b0100:begin//模式四的过程if(((ttime>8h18)&&(ttime<8h21))||((ttime<8h11)&&(ttime>8



h8)))begin zhushui<=1b0;state<=4b0001;end else zhushui<=1b1;if(((ttime>8h13)&&(ttime<8h19))||((ttime<8h9)&&(ttime>8h3)))state<=4b0011;if(((ttime>8h10)&&(ttime<8h14))||((ttime<8h4)&&(ttime>8h0)))state<=4b0100;if(ttime>8h0)begin

if(ttime[3:0]==4

b0000)

begin

ttime[3:0]<=4

b1001;

ttime[7:4]<=ttime[7:4]-1b1;end else ttime[3:0]<=ttime[3:0]-1b1;end end 4b0101:begin//模式五的过程if((ttime>8h3)&&(ttime<8h6))begin zhushui<=1b0;state<=4b0001;end else zhushui<=1b1;if((ttime<8h4)&&(ttime>8h0))state<=4b0100;if(ttime>8h0)

begin

if(ttime[3:0]==4

b0000)

begin

ttime[3:0]<=4

b1001;

ttime[7:4]<=ttime[7:4]-1b1;end else ttime[3:0]<=ttime[3:0]-1b1;end end 4b0000:begin//停止工作state<=4b0000;ttime<=8h0;

zhushui<=1

b1;

alarm<=1

b0;

end

endcase

if((over==1)&&(ttime[7:0]==8h1))begin over<=0; jiao<=4b0010;//扬声器鸣叫2Send if(jiao>4b0000)begin alarm<=~clkk; //扬声器鸣叫jiao<=jiao-1b1;//鸣叫时间递减到0end else alarm<=0; end end endmodule 五、仿真波形图1.模式一的仿真2.模式二的仿真3.模式三的仿真4.模式四的仿真5.模式五的仿真六、课设感想与收获每次课程设计都有些让我们即恐惧又兴奋,因为它充满挑战。本次课程设计亦是如此,趣味性强,同时也可以学到很多东西。

在这次课设中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我通过查找大量资料,请教老师,以及不懈的努力,不仅培养了思考、动手



操作的能力,在各种其它能力上也都有了提高。更重要的是,在课设过程中,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。

我不仅了解了数字系统的组成,学会了数字系统的设计方法及数字系统由上向下设计法的工具-ASM图,而且熟悉了现代数字系统的实现方法:用PLD器件取代传统的中规模集成器件实现数字电路与系统。我还掌握了分层次化实现数字电路与系统的方法,了解了使用硬件描述语言(HardwareDescription Language)对数字电路与系统进行建模、仿真与实现的方法。

课设的过程永远是那么的纠结,那么的刺激,那么的值得回味,在某种意义上说,这是一种锻炼,一种知识的积累,能力的提高。完全可以把这个当作基础东西,只有掌握了这些最基础的,才可以更进一步,取得更好的成绩。很少有人会一步登天吧。永不言弃才是最重要的。

而且,这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。

虽然大二学过数电,对Verilog语言有一定的涉猎,但是并不熟悉,未掌握其核心内容,这次课程设计,不仅复习了数电知识的内容,而且使我对Verilog语言有了更进一步的了解,不管是从结构上,还是从语法上。Verilog语言是一门很实用的语言,应该说是一门很精确的语言。

显示全文