数电 电子 课程设计 洗衣机实验报告 兼程序.docx

上传人:b****8 文档编号:9521916 上传时间:2023-02-05 格式:DOCX 页数:40 大小:260.11KB
下载 相关 举报
数电 电子 课程设计 洗衣机实验报告 兼程序.docx_第1页
第1页 / 共40页
数电 电子 课程设计 洗衣机实验报告 兼程序.docx_第2页
第2页 / 共40页
数电 电子 课程设计 洗衣机实验报告 兼程序.docx_第3页
第3页 / 共40页
数电 电子 课程设计 洗衣机实验报告 兼程序.docx_第4页
第4页 / 共40页
数电 电子 课程设计 洗衣机实验报告 兼程序.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

数电 电子 课程设计 洗衣机实验报告 兼程序.docx

《数电 电子 课程设计 洗衣机实验报告 兼程序.docx》由会员分享,可在线阅读,更多相关《数电 电子 课程设计 洗衣机实验报告 兼程序.docx(40页珍藏版)》请在冰豆网上搜索。

数电 电子 课程设计 洗衣机实验报告 兼程序.docx

数电电子课程设计洗衣机实验报告兼程序

 

电子技术课程设计

 

题目:

洗衣机

设计者:

学号:

班级:

日期:

2012/6/28

指导老师:

 

总体方案分析及选择:

洗衣机电路包含有总的控制模块,洗涤控制模块,洗涤记时模块,电动机控制模块以及LCD液晶板的动态显示模块.经过分析后,我们把前四个模块进行组合,把他们合成一个模块即:

总控制模块.他们之间的逻辑联结关系,是对数电课程的一个很好总结,也是自己对新知识(LCD液晶板的动态显示)学习理解运用能力的一个很好的提升机会。

基本功能要求:

1要求设计制作一个普通功能洗衣机控制电路,使之能控制洗衣机的进水阀,排水阀,洗涤程序电机,甩干驱动装置等按预定程序工作.总体过程包括:

进水浸泡洗涤排水甩干五个过程.进水从电路启动开始.其中浸泡可供选择,洗涤时间可以预置,洗涤结束时发出铃声进行提示并自动切断电源.发生故障如:

缺水或进水超时排水超时甩干碰桶等时也可自动切断电源!

2用中小规模集成电路芯片或CPLD/FPGA设计符合上述任务要求的电路,并制作出能实际运行的装置.

3安装并调试电路,测试各部分电路功能或模型.

4演示并交验硬件装置.

基本思路:

整个洗衣过程可分为置位、进水、浸泡、洗涤、排水、甩干、洗涤完毕提醒、断电八个状态,断电只有在出现断电信号时才有效。

正常运行时,首先进行置位,恢复到初始状态,置位完成后可进入进水状态,进水完成后进入浸泡状态,浸泡时间结束后进入洗涤状态,洗涤时间可由手动开关控制,当洗涤时间设置为零时,跳过洗涤阶段,洗涤状态完成后进入排水状态,排水之后进入甩干状态,甩干结束后,进入洗涤完毕提醒,同时有铃声提醒。

在正常运行时,可将前一个状态的完成信号作为下一个状态的启动信号,这样可使这些状态依次实现。

 

总电路图:

局部功能模块

总控模块:

该模块实现了对洗衣机整个运行过程的控制,打开电源后由模块内部进行控制

按洗涤过程控制洗衣机的运转.同时在输入端还给了报警输入,当发生故障时洗衣机自动断电.复位端可以让洗衣机进入初始状态.在输入端还有10个总线输入可以人为进行置数,从而控制各个过程的时间长短.当给甩干时间一个时间,其他都置为0可以让洗衣机只进行甩干操作.

VHDL文件:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entityxiyijiis

port(

clk0,clk1,rst,alarm:

instd_logic;

-----clk0:

控制开关脉冲.clk1:

记时开关脉冲.Rst:

复位端.arlarm:

报警输入端.-------

water_inh,water_inl,im_th,im_tl,wash_th:

instd_logic_vector(3downto0);

wash_tl,water_outh,water_outl,dry_th,dry_tl:

instd_logic_vector(3downto0);-----进水,浸泡,洗涤,出水,甩干指数端高位和地位输入端-----------

water_in,water_out,immersion,dry,z1,z2,voice,poweroff:

outstd_logic;

-----进水,出水,浸泡,甩干,洗涤,响铃,断电输出端-------

display_mh,display_ml,display_sh,display_sl:

outstd_logic_vector(3downto0)

-------------------输出时间显示高位低位输出端-------------

);

endentityxiyiji;

architecturebehaveofxiyijiis

signaljs,js_ten:

std_logic;

signalim,im_ten:

std_logic;

signalwa,wa_ten:

std_logic;

signalwa1,wa2,pwf:

std_logic;

signalcs,cs_ten:

std_logic;

signaldr,dr_ten:

std_logic;

signalxl,xl_ten:

std_logic;

signaljs_dh,js_dl,js_h,js_l:

std_logic_vector(3downto0);

signalim_dh,im_dl,im_h,im_l:

std_logic_vector(3downto0);

signalwa_dh,wa_dl,wa_h,wa_l:

std_logic_vector(3downto0);

signalcs_dh,cs_dl,cs_h,cs_l:

std_logic_vector(3downto0);

signaldr_dh,dr_dl,dr_h,dr_l:

std_logic_vector(3downto0);

signalxl_dh,xl_dl,xl_h,xl_l:

std_logic_vector(3downto0);

signaldis_mh,dis_ml:

std_logic_vector(3downto0);

signaldis_sh,dis_sl:

std_logic_vector(3downto0);

begin

-----------------------控制:

控制器件实现洗衣机的功能:

进水->浸泡->洗涤->出水->甩干->响铃->断电---------------

process(clk0,rst,alarm)

variablen:

integer;

begin

ifalarm='1'then

pwf<='1';----------判断是否有报警信号,有报警信号则pwf有效------

else

ifrst='1'then--------判断置位信号-------

n:

=0;

im_ten<='0';

js_ten<='0';

wa_ten<='0';

cs_ten<='0';

dr_ten<='0';

xl_ten<='0';

pwf<='0';----初始状态¬-----

elsifclk0='1'andclk0'eventthen

ifn=0then

ifwater_inh="0000"andwater_inl="0000"then

n:

=1;-----water_in不全为零则直接进入下一状态,不为零则继续判断-------

else

js_ten<='1';-----water_in不全为零则有js_ten为有效信号,使进水计时开始--------

ifjs='1'then-------进水计时时会使js为有效-----

n:

=1;-----进入进水状态¬-----

endif;

endif;

elsifjs='0'andn=1then------进水结束后js重新变为零,该判断有效------

ifim_th="0000"andim_tl="0000"then

n:

=2;

else

im_ten<='1';

ifim='1'then

n:

=2;

endif;

endif;

elsifim='0'andn=2then

ifwash_th="0000"andwash_tl="0000"then

n:

=3;

else

wa_ten<='1';

ifwa='1'then

n:

=3;

endif;

endif;

elsifwa='0'andn=3then

ifwater_outh="0000"andwater_outl="0000"then

n:

=4;

else

cs_ten<='1';

ifcs='1'then

n:

=4;

endif;

endif;

elsifcs='0'andn=4then

ifdry_th="0000"anddry_tl="0000"then

n:

=5;

else

dr_ten<='1';

ifdr='1'then

n:

=5;

endif;

endif;

elsifdr='0'andn=5then

ifxl_dh="0000"andxl_dl="0000"then

n:

=6;

else

xl_ten<='1';

ifxl='1'then

n:

=6;

endif;

endif;

elsifxl='0'andn=6then

pwf<='1';

endif;

endif;

endif;

endprocess;

-----------------------------记时-----------------------------

------------------进水记时--------------------------

process(clk1,js_ten)

begin

ifjs_ten='0'then---------当js_ten为1时,该判断无效,进入下一个判断-------

js_dh<=water_inh;

js_dl<=water_inl;

js_h<="0000";

js_l<="0000";

js<='0';

elsifclk1='1'andclk1'eventthen

ifjs_dh="0000"andjs_dl="0000"andjs_h="0000"andjs_l="0000"then

js<='0';---------从对电路图中可看出js_dl被设为0101,该判断无效-----

else

js<='1';

if(js_dl="0000"andjs_h="0000"andjs_l="0000")then

js_l<="1001";

js_h<="0101";

js_dl<="1001";

js_dh<=js_dh-1;

elsif(js_h="0000"andjs_l="0000")then------本条判断有效-------

js_l<="1001";

js_h<="0101";

js_dl<=js_dl-1;-----计数时js_dl减小,当计数结束,js_dl,js_h,js_l变为零,第一条判断有效,js变为零,满足下一个状态的条件-------

elsifjs_l="0000"then

js_l<="1001";

js_h<=js_h-1;

elsifjs_l>"0000"then

js_l<=js_l-1;

endif;

endif;

endif;

endprocess;

-------------浸泡记时----------------------

process(clk1,im_ten)

begin

ifim_ten='0'then

im_dh<=im_th;

im_dl<=im_tl;

im_h<="0000";

im_l<="0000";

im<='0';

elsifclk1='1'andclk1'eventthen

ifim_dh="0000"andim_dl="0000"andim_h="0000"andim_l="0000"then

im<='0';

else

im<='1';

if(im_dl="0000"andim_h="0000"andim_l="0000")then

im_l<="1001";

im_h<="0101";

im_dl<="1001";

im_dh<=im_dh-1;

elsif(im_h="0000"andim_l="0000")then

im_l<="1001";

im_h<="0101";

im_dl<=im_dl-1;

elsifim_l="0000"then

im_l<="1001";

im_h<=im_h-1;

elsifim_l>"0000"then

im_l<=im_l-1;

endif;

endif;

endif;

endprocess;

-----------------洗涤记时----------------------

process(clk1,wa_ten)

variablem:

integer;

begin

ifwa_ten='0'then

wa_dh<=wash_th;

wa_dl<=wash_tl;

wa_h<="0000";

wa_l<="0000";

wa<='0';

wa1<='0';

wa2<='0';

m:

=1;

elsifclk1='1'andclk1'eventthen

ifwa_dh="0000"andwa_dl="0000"andwa_l="0000"andwa_h="0000"then

wa<='0';wa1<='0';wa2<='0';

else

wa<='1';

ifm=1then

wa1<='1';

wa2<='0';

elsifm=11then

wa1<='0';

wa2<='0';

elsifm=14then

wa1<='0';

wa2<='1';

elsifm=24then

wa1<='0';

wa2<='0';

elsifm=27then

m:

=0;----m为循环的递增变量,m的不同状态可以控制洗衣机的正反转------

endif;

m:

=m+1;

if(wa_dl="0000"andwa_h="0000"andwa_l="0000")then

wa_l<="1001";

wa_h<="0101";

wa_dl<="1001";

wa_dh<=wa_dh-1;------wa_dh的初值根据开关来设置-----

elsif(wa_h="0000"andwa_l="0000")then

wa_l<="1001";

wa_h<="0101";

wa_dl<=wa_dl-1;

elsifwa_l="0000"then

wa_l<="1001";

wa_h<=wa_h-1;

elsifwa_l>"0000"then

wa_l<=wa_l-1;

endif;

endif;

endif;

endprocess;

--------------出水记时---------------------------

process(clk1,cs_ten)

begin

ifcs_ten='0'then

cs_dh<=water_outh;

cs_dl<=water_outl;

cs_h<="0000";

cs_l<="0000";

cs<='0';

elsifclk1='1'andclk1'eventthen

ifcs_dh="0000"andcs_dl="0000"andcs_h="0000"andcs_l="0000"then

cs<='0';

else

cs<='1';

if(cs_dl="0000"andcs_h="0000"andcs_l="0000")then

cs_l<="1001";

cs_h<="0101";

cs_dl<="1001";

cs_dh<=wa_dh-1;

elsif(cs_h="0000"andcs_l="0000")then

cs_l<="1001";

cs_h<="0101";

cs_dl<=cs_dl-1;

elsifcs_l="0000"then

cs_l<="1001";

cs_h<=cs_h-1;

elsifcs_l>"0000"then

cs_l<=cs_l-1;

endif;

endif;

endif;

endprocess;

--------------甩干记时-----------------------

process(clk1,dr_ten)

begin

ifdr_ten='0'then

dr_dh<=dry_th;

dr_dl<=dry_tl;

dr_h<="0000";

dr_l<="0000";

dr<='0';

elsifclk1='1'andclk1'eventthen

ifdr_dh="0000"anddr_dl="0000"anddr_h="0000"anddr_l="0000"then

dr<='0';

else

dr<='1';

if(dr_dl="0000"anddr_h="0000"anddr_l="0000")then

dr_l<="1001";

dr_h<="0101";

dr_dl<="1001";

dr_dh<=dr_dh-1;

elsif(dr_h="0000"anddr_l="0000")then

dr_l<="1001";

dr_h<="0101";

dr_dl<=dr_dl-1;

elsifdr_l="0000"then

dr_l<="1001";

dr_h<=dr_h-1;

elsifdr_l>"0000"then

dr_l<=dr_l-1;

endif;

endif;

endif;

endprocess;

------------------响铃记时----------------------

process(clk1,xl_ten)

begin

ifxl_ten='0'then

xl_dh<="0000";

xl_dl<="0010";

xl_h<="0000";

xl_l<="0000";

xl<='0';

elsifclk1='1'andclk1'eventthen

ifxl_dh="0000"andxl_dl="0000"andxl_h="0000"andxl_l="0000"then

xl<='0';

else

xl<='1';

if(xl_dl="0000"andxl_h="0000"andxl_l="0000")then

xl_l<="1001";

xl_h<="0101";

xl_dl<="1001";

xl_dh<=xl_dh-1;

elsif(xl_h="0000"andxl_l="0000")then

xl_l<="1001";

xl_h<="0101";

xl_dl<=xl_dl-1;

elsifxl_l="0000"then

xl_l<="1001";

xl_h<=xl_h-1;

elsifxl_l>"0000"then

xl_l<=xl_l-1;

endif;

endif;

endif;

endprocess;

----------------------------显示时间--------------------------

process(clk1,js_ten,im_ten,wa_ten,dr_ten,xl_ten)

begin

ifjs_ten='1'andim_ten='0'andwa_ten='0'andcs_ten='0'anddr_ten='0'andxl_ten='0'then--------在进水时-----

ifclk1='1'andclk1'eventthen

dis_mh<=js_dh;

dis_ml<=js_dl;-----显示分钟----

dis_sh<=js_h;

dis_sl<=js_l;------显示秒钟------

endif;

elsifim_ten='1'andwa_ten='0'andcs_ten='0'anddr_ten='0'andxl_ten='0'then---------在浸泡时,此时js_ten任然为1,只是不作为判别依据------

ifclk1='1'andclk1'eventthen

dis_mh<=im_dh;

dis_ml<=im_dl;

dis_sh<=im_h;

dis_sl<=im_l;

endif;

elsifwa_ten='1'andcs_ten='0'anddr_ten='0'andxl_ten='0'then

ifclk1='1'andclk1'eventthen

dis_mh<=wa_dh;

dis_ml<=wa_dl;

dis_sh<=wa_h;

dis_sl<=wa_l;

endif;

elsifcs_ten='1'anddr_ten='0'andxl_ten='0'then

ifclk1='1'andclk1'eventthen

dis_mh<=cs_dh;

dis_ml<=cs_dl;

dis_sh<=c

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

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1