您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > 智能洗衣机控制器设计 Verilog编程
智能洗衣机控制器设计报告鑫鑫出品2010-3-181目录一.设计背景……………………………………………………………2二.功能简介基本功能…………………………………………………………2扩展功能…………………………………………………………3三.模块设计及端口设置主模块main………………………………………………………3工作模式设定模块mode…………………………………………4进水量设定模块Water_t…………………………………………4无供水信号产生模块waterless…………………………………5危险信号产生模块Unsafe………………………………………5洗衣过程控制模块wash…………………………………………6报警模块alart……………………………………………………7LED灯状态模块LEDs………………………………………………7模块级连线图………………………………………………………8四.电路工作原理………………………………………………………9以s的值为主要状态标志的基本工作流程图…………………10五.Verilog源程序及注释……………………………………………11六.小结…………………………………………………………………182一.设计背景。如今,带有微型控制芯片的家用电器迅速普及。通过用户简单的设定,这些智能家电能自动完成家务,并向用户及时提供反馈信息。这极大地方便了人们的生活。智能洗衣机是智能家电的代表。用户只需按几个键,智能洗衣机就能自动完成注水、洗衣、排水、甩干等一系列工作,并在发生事故时给予用户报警并作出正确反应,极大减轻用户的洗衣负担,同时保障用户安全。基于以上功能要求,本人进行了智能洗衣机控制器的设计,并作出此设计报告。二.功能简介。基本功能:a.可选5种洗衣模式,列举如下1强力洗衣模式:工作程序为,注水-洗衣-排水-甩干-注水-漂洗-排水-甩干-注水-漂洗-排水-甩干。其中洗衣为30分钟;2普通洗衣模式:工作程序为,注水-洗衣-排水-甩干-注水-漂洗-排水-甩干-注水-漂洗-排水-甩干。其中洗衣为20分钟;3强力洗衣模式:工作程序为,注水-洗衣-排水-甩干-注水-漂洗-排水-甩干-注水-漂洗-排水-甩干。其中洗衣为10分钟;4漂洗模式:工作程序为,注水-漂洗-排水-甩干-注水-漂洗-排水-甩干。5甩干模式:工作程序为,甩干。以上五种模式中,进水时间为1-3分钟,漂洗为5分钟,排水2分钟,甩干3分钟。b.显示洗衣完成所需时间。c.用不同LED灯显示洗衣机当前的工作状态(注水、洗衣、排水、甩干)。3d.完成洗衣任务时蜂鸣3声提示。扩展功能:a.进水量可调。根据衣物的多少,进水时间有1分钟、2分钟、3分钟三个档位,并用一个数码管显示所设时间。b.进水时无水报警。蜂鸣器发出2秒的报警声,并中止洗衣工作。供水正常后恢复工作。c.甩干时洗衣机盖被打开则报警。2秒报警声,同时中止甩干操作。重新盖上盖子后恢复工作。d.有按键音。e.设有暂停/继续键。可随时按下暂停洗衣机的工作。再次按下则继续工作。f.用两个LED灯标志给电机的控制信号。在洗衣或漂洗时交替闪亮,象征电机顺时针/逆时针转动的转换。g.用数码管显示当前工作状态(注水、洗衣、排水、甩干)所剩时间。三.模块设计及端口设置。为完成预定功能,设置1个主模块,7个子模块;使用2个时钟信号端口,6个按键,6个数码管和7个LED。主模块main:调用其他模块,共同完成预定功能。输入端口:CP_1k,CP:分别为1kHz和1Hz方波,分别用于产生蜂鸣信号和系统状态转换及计时的时钟信号;4Start,Pause:开始键和暂停/继续键;Set,Speed:功能设定,分别用来设定工作模式和进水量;Open,No_water:警报信号,用来模拟打开洗衣机盖和供水中断事件的发生。输出端口:m[3:0],v[3:0]:数码管显示信号,分别指示工作模式和进水量;Timer[7:0],Timer_a[7:0]:数码管显示信号,分别表示当前过程剩余时间和完成所有工作剩余时间。LED_s,LED_wi,LED_wo,LED_w,LED_d和LED_l,LED_r:LED驱动信号,分别指示正在工作、进水、出水、洗衣、甩干和电机的顺时针、逆时针旋转状态。a:蜂鸣信号。用于报警、提示有键按下和洗衣完成。工作模式设定模块mode:设定工作模式。输入端口:Set:设定工作模式模式的按键;输出端口:m[3:0]:所设定的模式,BCD码,可取1到5的整数;进水量设定模块Water_t:设定进水量。输入端口:Speed:设定进水量,按键;输出端口:V[3:0]:所设定的进水时间,BCD码,可取取1到3的整数;5无供水信号产生模块waterless:产生无水报警信号。输入端口:No_water:供水中断/恢复信号,按键;输出端口:water_out:供水情况指示量,值为1表示无供水,0表示供水正常;危险信号产生模块Unsafe:产生危险报警信号。输入端口:Open:洗衣机盖开/合信号,按键;输出端口:danger:洗衣机盖状态指示量,值为1表示打开,0表示关闭;6洗衣过程控制模块wash:控制洗衣过程的转换。输入端口:CP:1Hz时钟信号,来自时钟信号发生器;Start:开始工作命令信号,按键;m:工作模式,来自模块mode;v:进水时间,来自模块Water_t;water_out:供水情况,来自模块waterless;danger:危险状态,来自模块Unsafe;tp:暂停/继续的命令信号;输出端口:p:运行/暂停工作状态量,1表示正在运行,0表示暂停;finish:工作结束状态量,由0变为1表示工作结束;timer[7:0]:当前工作过程剩余时间,向上传给main中的Timer;timer_a[7:0]:完成全部工作剩余时间,传给main中的Timer_a;s[2:0]:工作状态指示量,从0到5分别指示进水、洗衣、出水、甩干和完成信号有效;c[2:0]:取1到4,表示当前工作是第几轮;7报警模块alart:产生报警蜂鸣信号。输入端口:CP_1k:1kHz方波信号,用于产生蜂鸣信号,来自信号发生器;CP:1Hz方波信号,用于产生间断的蜂鸣信号,来自信号发生器;Start,Set,Pause,Speed:按键音有效信号。另外Pause还用于突发情况时人为控制暂停/继续的控制键;No_water,water_out,Open,danger:控制报警音开始/结束的信号,来自模块waterless和Unsafe;finish:完成工作后提示音有效信号,来自模块wash;输入端口:a:报警音驱动信号tp:暂停/继续信号。tp=1时暂停,tp=0时继续。LED灯状态模块LEDs:控制LED的亮灭。8输入端口:s,c:洗衣机的工作状态指示量,用作那个灯亮的判断条件,来自模块wash;p:运行/暂停状态标志量,用于暂停时的闪亮效果,来自模块alart;CP:1Hz方波信号,造成闪亮效果,来自信号发生器。输出端口:LED指示灯驱动信号。LED_wi:进水;LED_wo:出水;LED_w:洗衣;LED_d:甩干;LED_s:正在运行;LED_l:电机顺时针转;LED_r:逆时针转。用Leonardo综合出的模块级连线图如下:9以上子模块端口具体用途在电工作原理中涉及。四.电路工作原理。下面按电路的使用过程对电路工作原理进行描述。1.按下Set键,在Set上升沿作用下,mode模块被调用,执行的操作是工作模式m增加1。其状态变化如下:设定好工作模式后,按Speed键设定进水时间,water_t模块被调用,执行的操作是进水时间v增加1。其变化原理与m类似,只是变化范围是1-3分钟。2.设定完毕,按Start键,洗衣过程开始,这时是wash模块被调用,wash模块中,由状态变量c记录洗衣的轮数(以进水到甩干为一轮),状态变量s代表当前的工作方式,即s=0为进水,s=1为洗衣,s=2为排水,s=3为甩干,s=4时进行完成提示音信号的延时,其状态转变流程如下:其中,ok=1是上一任务完成的标志,模式1,2,3中,c初值为4。轮回3次后c=1,s由3变为4,finish置1有效,完成提示音响(由modulealart实现),同时延时计时器启动,计时完毕后,finish=0,提示音停。s=4状态的工作完成后,ok=0,s保持,直到下次启动(Start)再初始化。s=0s=1s=2=3s=3s=4=5m=1m=2m=3m=4m=510以s的值为主要状态标志的基本工作流程图:113.报警功能,主要由alart模块实现。按No_water键,供水中断信号water_out=1有效。如果这时正在进水,则置c_e=1使报警音延时计时器开始计时,同时c_t=1使报警信号有效,开始发出报警音。延时器计时完毕,c_e、c_t复位,报警音关闭,报警结束。但进水工作仍处于中断状态。只有再此按下No_water键,表示供水恢复,则继续进水。甩干过程中由Open键触发的洗衣机盖被打开的报警原理同上。工作结束后的提示音由输入的finish信号控制。finish会有3个CP有效,和CP相与后,产生三声提示音。暂停功能也有alart模块参与,按Pause键后,tp变化,会导致暂停有效信号取反,实现暂停/继续的功能。4.LED等指示状态共用到7个LED来代表系统的工作状态。其驱动信号有效与否由系统目前的工作状态来判断。其具体代表的状态和实现方法已在端口介绍和源程序注释中说明,不另赘述。五.Verilog源程序及注释。1.主模块main:modulemain(CP_1k,CP,Start,Pause,Set,Speed,Open,No_water,Timer,Timer_a,m,v,LED_wi,LED_wo,LED_w,LED_d,LED_s,LED_l,LED_r,a);inputCP_1k,CP,Start,Pause,Set,Speed,Open,No_water;//输入端口声明,其中CP_1k、CP为时钟信号,其他为按键;/**********************输出端口声明*************************/outputLED_wi,LED_wo,LED_w,LED_d,LED_s,LED_l,LED_r,a;//LED及蜂鸣信号output[3:0]m;//工作模式output[3:0]v;//进水时间output[7:0]Timer,Timer_a;//剩余时间wire[3:0]m;wire[2:0]s,c;wirewater_out,danger,finish,p,a,tp;modeU1(Set,m[3:0]);//调用模式选择模块Water_tU2(Speed,v[3:0]);//调用进水时间设定模块12washU3(CP,Start,m[3:0],v[3:0],water_out,danger,tp,p,finish,Timer[7:0],Timer_a[7:0],s[2:0],c[2:0]);//调用洗衣过程控制模块waterlessU4(No_water,water_out);//调用供水情况感应模块UnsafeU5(Open,danger);//调用洗衣机盖状态模块alartU6(CP_1k,CP,Start,Set,Pause,Speed,No_water,water_out,Open,danger,finish,s[2:0],a,tp);//调用报警信号产生模块LEDsU7(s[2:0],p,c[2:0],CP,LED_wi,LED_wo,LED_w,LED_d,LED_s,LED_l,LED_r);//调用LED驱动模块Endmodule2.模式选择模块mode:modulemode(Set,m);inputSet;//设定键Set为输入output[3:0]m;//模式选择结果m为输出reg[3:0]m;/*******
本文标题:智能洗衣机控制器设计 Verilog编程
链接地址:https://www.777doc.com/doc-7030598 .html