智能洗衣机.docx

上传人:b****4 文档编号:6263847 上传时间:2023-05-09 格式:DOCX 页数:18 大小:251.83KB
下载 相关 举报
智能洗衣机.docx_第1页
第1页 / 共18页
智能洗衣机.docx_第2页
第2页 / 共18页
智能洗衣机.docx_第3页
第3页 / 共18页
智能洗衣机.docx_第4页
第4页 / 共18页
智能洗衣机.docx_第5页
第5页 / 共18页
智能洗衣机.docx_第6页
第6页 / 共18页
智能洗衣机.docx_第7页
第7页 / 共18页
智能洗衣机.docx_第8页
第8页 / 共18页
智能洗衣机.docx_第9页
第9页 / 共18页
智能洗衣机.docx_第10页
第10页 / 共18页
智能洗衣机.docx_第11页
第11页 / 共18页
智能洗衣机.docx_第12页
第12页 / 共18页
智能洗衣机.docx_第13页
第13页 / 共18页
智能洗衣机.docx_第14页
第14页 / 共18页
智能洗衣机.docx_第15页
第15页 / 共18页
智能洗衣机.docx_第16页
第16页 / 共18页
智能洗衣机.docx_第17页
第17页 / 共18页
智能洗衣机.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

智能洗衣机.docx

《智能洗衣机.docx》由会员分享,可在线阅读,更多相关《智能洗衣机.docx(18页珍藏版)》请在冰点文库上搜索。

智能洗衣机.docx

智能洗衣机

 

电子技术基础课程设计

——智能洗衣机控制器

 

院系:

控制科学与工程系

专业:

自动化

班级:

0807班

姓名:

李公兵

学号:

u2000813726

指导教师:

龚军

一、课程设计名称

智能洗衣机控制器

二、设计内容与要求

1、设计一个智能洗衣机控制器,能够实现洗衣,漂洗和脱水的功能。

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

【模式1】:

洗衣模式--强力洗(洗衣30分钟)

【模式2】:

洗衣模式--普通洗(洗衣20分钟)

【模式3】:

洗衣模式--轻柔洗(洗衣10分钟)

【模式4】:

漂洗模式

【模式5】:

甩干模式

注:

在以上5个模式中,每次注水1分钟,漂洗5分钟,排水1分钟,甩干1分钟,模式1~3的洗衣时间如上所示,具体的洗衣步骤如下:

【模式1~3】:

注水->洗衣->排水->甩干->注水->漂洗->排水->甩干

->注水->漂洗->排水->甩干。

【模式4】:

注水->漂洗->排水->甩干->注水->漂洗->排水->甩干。

【模式5】:

甩干。

【要求】:

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

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

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

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

并谈谈此次实验的收获、感想及建议

3、分析设计

1、五个模式:

模式1、模式2、模式3、模式4、模式5

四个状态:

注水、洗衣(漂洗)、排水、甩干

2、端口描述:

输入端口:

Cp:

输入50Mhz的频率信号

Cr:

清零信号

Model1—5:

模式选择

输出端口:

Export:

显示模式

Light:

洗衣完成显示灯

3、状态流程图

4、模块设计

1、分频模块

因为出入的是频率为50Mhz的方波,要变成频率为1hz的方波,必须对其进行分频。

代码如下:

modulefenpin(in,out);

inputin;

outputout;

reg[24:

0]cnt;

regout;

always@(posedgein)

begin

if(cnt>='d249999)

begin

out<=~out;

cnt<=0;

end

else

cnt<=cnt+1;

end

Endmodule

波形仿真如下:

(由于50M是一个很大的数字,故仿真时看不到输出波形的跳变)

2、译码模块

时间需要用数码管显示出来,故必须对由七段显示器组成的数码管进行译码。

代码如下:

moduleyima(out,in);

input[3:

0]in;

output[6:

0]out;

reg[6:

0]out;

always@(in)

begin

case(in)

4'h0:

out=7'b1000000;

4'h1:

out=7'b1111001;

4'h2:

out=7'b0100100;

4'h3:

out=7'b0110000;

4'h4:

out=7'b0011001;

4'h5:

out=7'b0010010;

4'h6:

out=7'b0000010;

4'h7:

out=7'b1111000;

4'h8:

out=7'b0000000;

4'h9:

out=7'b0011000;

endcase

end

Endmodule

仿真波形如下(假设输入为十进制5)

说明:

输入为0101(即十进制数5),输出的为十进制数18(二进制0010010,即第二位和第五位为1),显示在数码管上的恰好是十进制数5。

3、计数模块(60进制减计数器)

程序片段:

begin

if(Second[3:

0]!

=0)

Second[3:

0]<=Second[3:

0]-4'd1;

elseif(Second[3:

0]==0&Second[7:

4]!

=0)

begin

Second[3:

0]<=4'd9;

Second[7:

4]<=Second[7:

4]-4'd1;

end

elseif(Second[7:

4]==0&Second[3:

0]==0&Minute[3:

0]!

=0)

begin

Second[3:

0]<=4'd9;

Second[7:

4]<=4'd5;

Minute[3:

0]<=Minute[3:

0]-4'd1;

end

elseif(Second[7:

4]==0&Second[3:

0]==0&Minute[3:

0]==0&Minute[7:

4]!

=0)

begin

Second[3:

0]<=4'd9;

Second[7:

4]<=4'd5;

Minute[3:

0]<=4'd9;

Minute[7:

4]<=Minute[7:

4]-4'd1;

end

End

5、各个模式的仿真

1、模式1的仿真

2、模式2的仿真

3、模式3的仿真

4、模式4的仿真

5、模式5的仿真

六、总结和感想

本次课程设计我做的是智能洗衣机控制系统,一共花了四个礼拜的时间。

刚开始选定题目之后,自己还是无从下手。

跟以前做c语言课程设计一样,一开始总是很迷茫。

后来在网上查到,要做这样的一个课程设计,必须先弄清楚要做的是什么,需要实现哪些功能,然后通过所需要的功能,画出设计流程图,这个是很重要的。

在这种思想的指导下,我先对智能洗衣机控制系统做了详细的分析,把这个设计主要分为五个模式,四个状态。

这样分析之后,工作就变得很明确起来。

首先,必须先完成分频模块和译码模块,这两个模块没有什么难度,很快就完成了。

虽然一共有五个模式,四个状态,但是我知道,只要完成了其中的一个模式和一个状态,其他的就可以很快的做出来。

由于以前对verilog语言不是很熟悉,因此遇到了一些困难。

比如,我不清楚case语句里面还能不能继续镶嵌case语句,但是通过编写了一个简单程序实验之后,我发现这是可以的。

我知道,verilog语言是这次课程设计的基础,没有坚实的verilog语言基础是不能完成这次课程设计的,为此,我还重新去吧verilog语言看了一遍,以强化自己的基础。

尽管这是一次个人独立的课程设计,但是我认为同学之间的交流和讨论还是很重要的。

通过交流和讨论,我们可以各取所长,以弥补自己的不足,这样可以减少很多弯路。

但是我也知道绝知此事要躬行,我们不能完全参考同学的,我们必须有自己的想法,遇到那种不确定的问题,最好自己去亲自试验一次,这个才能得到自己想要的东西,而且还会从中获取意想不到的乐趣。

从刚拿到题目时候的无从下手,到现在做完之后感觉其实这次课程设计还是蛮简单的。

我觉得这就是一种能力的增加,一种知识的积累。

课程设计结束了,我们都有了自己的课设产品。

但是我想说的是通过这样的课程设计,我们所获得的不仅仅是结果,而是这样一个过程,一个学习、进步、分享、享受、积累的过程。

对于我们来说,在这次课程设计中学习到得东西才是最重要的。

无论是知识还是方法,都让我们受益匪浅。

附:

程序详细代码

modulefenpin(in,out);

inputin;

outputout;

reg[24:

0]cnt;

regout;

always@(posedgein)

begin

if(cnt>='d249999)

begin

out<=~out;

cnt<=0;

end

else

cnt<=cnt+1;

end

Endmodule

moduleyima(out,inG);

input[3:

0]in;

output[6:

0]out;

reg[6:

0]out;

always@(in)

begin

case(in)

4'h1:

out=7'b1111001;

4'h2:

out=7'b0100100;

4'h3:

out=7'b0110000;

4'h4:

out=7'b0011001;

4'h5:

out=7'b0010010;

4'h6:

out=7'b0000010;

4'h7:

out=7'b1111000;

4'h8:

out=7'b0000000;

4'h9:

out=7'b0011000;

4'h0:

out=7'b1000000;

endcase

end

Endmodule

moduleWash(cp,rct,moshi,out,over,hm,lm,hs,ls);

inputcp,rct;

input[4:

0]moshi;

output[4:

0]out;

outputover;

output[6:

0]hm,lm,hs,ls;

reg[4:

0]out;

regover;

reg[7:

0]sec,min;

regxop;

reg[4:

0]zhuangtai;

reg[3:

0]bu;

wireFinish;

parameter

zhuangtai1=4'b0001,zhuangtai2=4'b0010,

zhuangtai3=4'b0011,zhuangtai4=4'b0100,Cloze=4'b0110;

assignFinish=((sec[3:

0]==0)&(sec[7:

4]==0)&(min[3:

0]==0)&(min[7:

4]==0));

always@(posedgecps)

begin

if(~rct)

begin

zhuangtai<=zhuangtai1;

xop<=1'b0;

sec[3:

0]<=0;sec[7:

4]<=0;min[3:

0]<=0;min[7:

4]<=0;

bu<=0;

end

if(zhuangtai==Cloze)

over<=4'b0001;

else

over<=4'b0000;

begin

if(sec[3:

0]!

=0)

sec[3:

0]<=sec[3:

0]-4'd1;

elseif(sec[3:

0]==0&sec[7:

4]!

=0)

begin

sec[3:

0]<=4'd9;

sec[7:

4]<=sec[7:

4]-4'd1;

end

elseif(sec[7:

4]==0&sec[3:

0]==0&min[3:

0]!

=0)

begin

sec[3:

0]<=4'd9;

sec[7:

4]<=4'd5;

min[3:

0]<=min[3:

0]-4'd1;

end

elseif(sec[7:

4]==0&sec[3:

0]==0&min[3:

0]==0&min[7:

4]!

=0)

begin

sec[3:

0]<=4'd9;

sec[7:

4]<=4'd5;

min[3:

0]<=4'd9;

min[7:

4]<=min[7:

4]-4'd1;

end

end

if((Finish==1)&(rct==1))

case(moshi)

5'b00001:

case(zhuangtai)

zhuangtai1:

begin

if(bu>=4'b1100)zhuangtai<=Cloze;

else

begin

min[7:

4]<=0;min[3:

0]<=0;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai2;

bu<=bu+2'b1;

end

end

zhuangtai2:

begin

if(xop==0)

beginmin[7:

4]<=2;min[3:

0]<=9;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai3;

xop<=1'b1;

bu<=bu+2'b1;

end

else

beginmin[7:

4]<=0;min[3:

0]<=4;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai3;

bu<=bu+2'b1;

end

end

zhuangtai3:

beginmin[7:

4]<=0;min[3:

0]<=0;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai4;

bu<=bu+2'b1;

end

zhuangtai4:

beginmin[7:

4]<=0;min[3:

0]<=0;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai1;

bu<=bu+2'b1;

end

default:

zhuangtai<=Cloze;

endcase

5'b00010:

case(zhuangtai)

zhuangtai1:

begin

if(bu>=4'b1100)zhuangtai<=Cloze;

else

begin

min[7:

4]<=0;min[3:

0]<=0;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai2;

bu<=bu+2'b1;

end

end

zhuangtai2:

begin

if(xop==0)

beginmin[7:

4]<=1;min[3:

0]<=9;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai3;

xop<=1'b1;

bu<=bu+2'b1;

end

else

beginmin[7:

4]<=0;min[3:

0]<=4;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai3;

bu<=bu+2'b1;

end

end

zhuangtai3:

beginmin[7:

4]<=0;min[3:

0]<=0;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai4;

bu<=bu+2'b1;

end

zhuangtai4:

beginmin[7:

4]<=0;min[3:

0]<=0;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai1;

bu<=bu+2'b1;

end

default:

zhuangtai<=Cloze;

endcase

5'b00100:

case(zhuangtai)

zhuangtai1:

begin

if(bu>=4'b1100)zhuangtai<=Cloze;

else

begin

min[7:

4]<=0;min[3:

0]<=0;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai2;

bu<=bu+2'b1;

end

end

zhuangtai2:

begin

if(xop==0)

beginmin[7:

4]<=0;min[3:

0]<=9;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai3;

xop<=1'b1;

bu<=bu+2'b1;

end

else

beginmin[7:

4]<=0;min[3:

0]<=4;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai3;

bu<=bu+2'b1;

end

end

zhuangtai3:

beginmin[7:

4]<=0;min[3:

0]<=0;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai4;

bu<=bu+2'b1;

end

zhuangtai4:

beginmin[7:

4]<=0;min[3:

0]<=0;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai1;

bu<=bu+2'b1;

end

default:

zhuangtai<=Cloze;

endcase

5'b01000:

case(zhuangtai)

zhuangtai1:

begin

if(bu>=4'b0111)zhuangtai<=Cloze;

else

begin

min[7:

4]<=0;min[3:

0]<=0;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai2;

bu<=bu+2'b1;

end

end

zhuangtai2:

beginmin[7:

4]<=0;min[3:

0]<=4;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai3;

bu<=bu+2'b1;

end

zhuangtai3:

beginmin[7:

4]<=0;min[3:

0]<=0;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai4;

bu<=bu+2'b1;

end

zhuangtai4:

beginmin[7:

4]<=0;min[3:

0]<=0;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=zhuangtai1;

bu<=bu+2'b1;

end

default:

zhuangtai<=Cloze;

endcase

5'b10000:

case(zhuangtai)

zhuangtai1:

beginmin[7:

4]<=0;min[3:

0]<=0;sec[7:

4]<=5;sec[3:

0]<=9;

zhuangtai<=Cloze;

end

default:

zhuangtai<=Cloze;

endcase

default:

zhuangtai<=Cloze;

endcase

end

always@(zhuangtai)

begin

case(zhuangtai)

zhuangtai1:

out<=5'b01000;

zhuangtai2:

out<=5'b00001;

zhuangtai3:

out<=5'b00010;

zhuangtai4:

out<=5'b00100;

Cloze:

out<=5'b10000;

default:

out<=5'b0000;

endcase

end

yima(lm,min[3:

0]);

yima(hm,min[7:

4]);

yima(ls,sec[3:

0]);

yima(hs,sec[7:

4]);

fenpin(cp,cps);

endmodule

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2