智能洗衣机控制系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

四、确定输入和输出变量
• 四个输入量 :
• • •
八个输出量 :
clk—时钟脉冲信号 rst—控制器复位按键 start—开始状态开关 en—紧急状态开关 add—设置循环次数
numa—倒计时器的个位 numb—倒计时器的十位 fore—显示正转状态 back—显示反转状态 alarm—显示警告状态 led【2..0】—显示当前状态
• end
• else • begin • state<=s0; • led<=3'b100; • back<=1'b1; • fore<=1'b0; • end • • • • begin • state<=s2; • numa<=4'b1001; • numb<=4'b0101; • back<=1'b0; • fore<=1'b1; • led<=3'b010; • end

count3<=count3+1'b1;

else

count3<=1'b0;

end

end

end
always@(posedge clk or posedge rst)
• begin
• if(rst)
//系统复位
• begin
• back<=1'b0;
• fore<=1'b0;
• numa<=4'b0000;
• begin
• case(state)
• s0:begin
if(numb==0&&numa==0)
//时间为0,状态转移
• begin
state<=s1;
• numa<=4'b0100;
• numb<=4'b0000;
• led<=3'b001;
• back<=1'b0;
• fore<=1'b0;
• led<=3'b100;
• back<=1'b1;
• fore<=1'b0;
• end
end s3:begin
if(numb==0&&numa==0)
• else
• begin
• state<=s3;
• back<=1'b0;
• fore<=1'b0;
• led<=3'b001;
• end
• end
• 方案1:基于Verilog原理实现的数字电
路控制
• 方案2:基于单片机原理实现的控制
确定选择方案1,理由是Verilog语言灵
活简单,方便快捷易懂,有较好的实 • 用价值
十、状态编码

s0=4'b0001,

s1=4'b0010,

s2=4'b0100,

s3=4'b1000; 采用独热编码
智能洗衣机控制系统
一、大作业摘要
– 洗衣机控制电路由一片altera公司的cyclone2系列 EP2C5T144C8的FPGA作为中心控制器加上必要的 外围电路组成,实现对洗衣机工作状态的控制。芯 片编程采用Quartus2作为开发工具,由控制模块块 ,显示译码模块组成,顶层使用原理图实现,底层 由Verilog HDL语句实现。中心控制器FPGA根据控 制键盘的信号,向洗衣机发出正传,反转,待机信 号,并通过数码管和LED灯显示当前的状态及剩余时 间。该洗衣机控制电路可以方便快捷的实现对洗衣 机的控制和状态的显示功能。
• numb<=4'b0000;
• state<=s0;
• led<=3'b001;
• alarm=1'b0;
• end
• else
• begin
• if(!en && start)
//start为1,en为0则正常工作

• begin
• alarm<=1'b0;
• if(tim)
//循环次数tim>0,开始工作
十一、状态机设计
• module washer(clk,rst,en,start,add,fore,back,numa,numb,alarm,led,tim);

input clk,rst,start,add,en;
//en为紧急状态信号

output fore,back,alarm;

output [3:0]numa,numb,tim; //numa为倒计时个位,numb为倒
计时十位

output [2:0]led;

reg [2:0]led;

reg [3:0]tim;

reg [3:0]numa,numb;

reg fore,back,alarm;

reg [3:0]count3;

reg [3:0]state;

wire A;

parameter s0=4'b0001,
end s2:begin
if(numb==0&&numa==0)

else
• begin
• state<=s2;
• back<=1'b0;
• fore<=1'b1;
• led<=3'b010;
• end



• begin
• state<=s0;
• numa<=4'b1001;
• numb<=4'b0101;
三、设计任务及要求
•1.洗衣机的状态为待机5s→正转60s→待机5s→反转 60s→,并用3个LED灯和7段显示器分别表示其工作状 态和显示相应工作状态下的时间。 • 2.可自行设定洗衣机的循环次数,这里设置最大 的循环次数为9次。 • 3.具有紧急情况的处理功能。当发生紧急情况时 ,立即转入待机状态,紧急情况解除后,继续执行后续 步骤; • 4.洗衣机设定循环次数递减到零时立即报警,以 表示洗衣机设定的循环次数已经结束

numb<=4'b0000;

state<=s0;

led<=3'b001;

end
• end

else if(en && start)
//en为1,进入紧急状态

begin

back<=1'b0;

fore<=1'b0;

alarm<=1'b1;

end

else
//start为0,给循环次数tim赋值

end
• if(numa==0 && numb==0 && state==s0 && !en && led==3'b100)
begin
//一次循环结束tim自减1

tim<=tim-1'b1;

end

end

else

begin

back<=1'b0;

fore<=1'b0;

numa<=4'b0000;
二、设计的背景、目的和意义
• 现今社会家用电器日益增多,技术也是不断更 新。主要家用电器更是发展迅速。洗衣机现在 已经成为不可或缺的家用电器。我设计的这款 洗衣机的控制器是基于verliogHDL基础。这 款洗衣机的实用性很高,具有反转,正转,报 警之后暂停工作的功能。对于现今的洗衣机大 多数都不具备报警功能。这一控制器的设计正 好填补了这一空缺。

s1=4'b0010,

s2=4'b0100,

s3=4'b1000;
• always@(posedge add or posedge rst) //循环次数count设置

begin

if(rst)

count3<=1'b0;

else

begin

if(start==0)

begin

if(count3<=14)
七、输入和输出变量对应部件说明
clk:采用实验箱里的频率产生器,产生1Hz频率 add:实验箱里的按键 rst,start,en:状态开关按键 numa,numb:实验箱中的共阳七段数码管 led【2..0】:实验箱中的3个led灯 fore,back,alarm:实验箱中的3个led灯
八、方案论证
十六、设计结论及评价
• 优点:能根据不同的衣物的干脏程度 来调整循环次序,并且具有报警功能 和回到正常状态的功能
• 不足:不能在洗衣时自动加洗衣粉
• 结论:该设计有待提高
五、确定输入状态
启动start后,控制器首先进入待机s0状态,时间从5秒 倒计时,如果没有到0秒则继续等待,时间自减;当t=0, 进入洗衣机正转s1状态,时间从60秒倒计时,如果没有 到0秒则继续等待,时间自减;当t=0,进入洗衣机待机s2 状态,同理等待5秒;当t为零后,进入s3洗衣机发转状 态,时间从60秒倒计时,如果没有到0秒则继续等待,时 间自减;整个过程依次循环。紧急状态emergency,当 按下紧急停止按钮后,处于正反转状态中的电机停止转动 ,同时紧急报警LED灯亮,因此紧急状态不设定独立状态
图4-2紧急暂停仿真图
如图4-2所示,紧急状态发生,en变为高电平 ,洗衣机暂停工作,电机停止运转,紧急状态 结束后,恢复原状态。
图4-3紧急状态结束,状态恢复
如图4-3所示,紧急暂停结束,en恢复低电平 ,再次开始工作,进入下一循环。
十三、使用说明
• (1)电路上电后,先按下复位键rst复位,在Start拨码开关未闭 合前可以由add按键开关设置总的工作循环次数,确定洗衣机控 制器工作循环次数。 •(2)设定好允许工作时间后,闭合Start开关,洗衣机控制器开始 工作。 •(3)可以看见指示待机LED灯亮5s,正转LED灯亮60S,待机 LED亮5s,反转LED灯亮60s,如此反复直至工作允许时间为0。

begin

tim<=count3;

numa<=4'b0000;

numb<=4'b0000;

alarm<=1'b0;

end

end

end
• endmodule
原理图Байду номын сангаас
十二、仿真时序图
• 图4-1洗衣机正常运行的仿真图
如图4-1所示,rst置高电平,控制器复位, rst低电平后,add按下两次,设置循环次数为 2,按下start后置为高电平,洗衣机开始工作 。
end s1:begin
if(numb==0&&numa==0)
• else • begin state<=s1; • led<=3'b001; • back<=1'b0; • fore<=1'b0; • end • • • • begin • state<=s3; • numa<=4'b0100; • numb<=4'b0000; • back<=1'b0; • fore<=1'b0; • led<=3'b001; • end
• default:state<=s0;

endcase

if({numb,numa}>0)
//倒计时控制部分

begin

if(numa==0) //numa为0,则numa赋值9,numb自减1

begin

numa<=4'b1001;

numb<=numb-1'b1;

end
• else

numa<=numa-1'b1;
相关文档
最新文档