ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:896.36KB ,
资源ID:7792762      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7792762.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(洗衣机定时器.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

洗衣机定时器.docx

1、洗衣机定时器一、设计任务与要求 设计一个洗衣机洗涤程序控制器,控制洗衣机的电动机按下图所示的规律运转: 定时到定时启动 正转(20s) 暂停(10s) 反转(20s) 暂停(10s) 停止 定时未到 图1、电机运转时序图 用两位数码管预置洗涤时间(分钟数),洗涤过程在送入预置时间后开始运转,洗涤中按倒计时方式对洗涤过程作计时显示,用LED表示电动机的正、反转,如果定时时间到,则停机并发出音响信号。 二、总体框图其系统框图如下图所示: rev run pause 译码驱动模块 Q2 Q1 CP 时序电路模块 EN Rd 音响电路 En clk 时间到 start 十进制减法计数器模块 时间显示

2、En 洗涤预置时间编码寄存电路模块 LD 1 S K1 K2 K3 K4 K5 K6 K7 K8 K9 K10 图2、系统框图 此设计问题可分为洗涤预置时间编码寄存电路模块、十进制减法计数器模块、时序电路模块、译码驱动模块四大部分。 设置预置信号LD,LD有效后,可以对洗涤时间计数器进行预置数,用数据开关K1-K10分别代表数字1,2,9,0,用编码器对数据开关K1-K10的电平信号进行编码,编码器真值表如下表所示,编码后的数据寄存。 表1、时序电路状态表 数据开关电平信号 编码器输出K1 k2 k3 k4 k5 k6 k7 k8 k9 k10 Q3 Q2 Q1 Q0 0 0 0 0 0 0

3、0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0状态编码为: S0=00 S1=01 S2=11 S3=10 若选JK触发器,其输出为Q2Q1。 逻辑赋值

4、后的状态如下表所示: 表2、逻辑状态表 A B QN2 QN1 QN+12 QN+11 说明 0 X 1 X X 0 X 1 0 X 1 X X 0 X 1 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 0 维持S0 S0 S1 维持S1 S1S2 维持S2 S2S3 维持S3 S3S0 设置电动机正转信号run、反转信号rev、暂停信号Pause,由时序电路的输出Q2Q1经译码驱动模块,可使显示信号正确反映电路的工作状态,译码驱动模块真值表如下表所示: 表3、译码驱动真值表 Q2 Q1 run rev pause1

5、011201 1 1 0 0 0 0 0 1 0 0 1 0 1 直到洗涤计时时间到,时序电路异步复位,并启动音响电路。3、器件选择 用QUARTUS软件中Altera公司Cyclone系列的EP1C2Q240C8芯片实现仿真,EDA试验箱上的EP1C12核心板中的PB0、PB1、PB2、三个LED灯、数码管和开关SW13-SW16用于硬件调试,下载接口是数字芯片下载接口(DIGITAL JTAG)。4、功能模块1、预置时间和编码电路(settime): library ieee; use entity settime is port(load:in std_logic; -用来进行数据的读入

6、 time_input:in std_logic_vector(3 downto 0); -通过开关进行输入 time_set:out std_logic_vector(7 downto 0) ); end settime; set architecture time of settime is signal p1:std_logic_vector(7 downto 0); begin process(load) begin if(loadevent and load=1) then case time_input is when 0000=p1p1p1p1p1p1p1p1p1p1p1=000

7、00000; end case; end if; end process; time_set=p1;end settime; 图3、settime模块图4、 settime仿真图time_input为通过开发板上按钮输入的信号,load为输入确认信号。本模块将输入的四位时间信息编码输出到减法计数器电路。2、减法计数器(counter):library ieee;use use entity counter is port(clk,start:in std_logic; time_set:in STD_LOGIC_VECTOR(7 downto 0); -接受上一个模块输入的时间信号 time_

8、remain:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0); -剩余时间的输出 time_over:buffer std_logic ); -time_over就是gameoverend counter; architecture counter of counter is begin process(clk) variable time_second:integer range 0 to 59:=59; -用来进行内部信息的记录 begin if(clkevent and clk=1) then -判断是否开始 if(start=0) then if(time_re

9、main(7 downto 0)=0) then time_remain=time_set; else time_remain(7 downto 4)=time_remain(3 downto 0); time_remain(3 downto 0)=time_set(3 downto 0); end if; time_second:=59; time_over=1; else if(time_over=1) then -判断时间是否已经结束 if(time_second=0 and time_remain(7 downto 0)=0) then time_over=0; else if(tim

10、e_second=0) -判断每一分钟的结束 then if(time_remain(3 downto 0)=0) then time_remain(7 downto 4)=time_remain(7 downto 4)-1; time_remain(3 downto 0)=1001; time_second:=59; else time_remain(7 downto 4)=time_remain(7 downto 4)-1; time_remain(3 downto 0)=1001; time_second:=59; end if; else time_second:=time_secon

11、d-1; end if; end if; end if; end if; end if; end process;end counter;图5、counter模块图6、counter仿真图本模块中clk为系统时序脉冲信号,start为系统开始运行的信号,time_set为从预置时间模块接收到的时间编码信号,time_remain为输出到数码管显示电路的时间信号,time_is_up为系统运行结束信号,可以用来控制蜂鸣器的通断。在系统运行的开始时期,用户第一次输入的预置时间会被赋给个位,第二次输入的时间会被赋给十位,可以进行多次输入,以前的会被覆盖。3、数码管显示电路(showtime):lib

12、rary ieee;use showtime is port(remain_time:in std_logic_vector(7 downto 0); -剩余时间的输入 clk:in std_logic; minute,second:out std_logic; -用来标记当前显示的是个位还是十位 a,b,c,d,e,f,g:out std_logic ); end showtime; architecture showtime of showtime is signal temp:std_logic_vector(6 downto 0); signal bcd:std_logic_vecto

13、r(3 downto 0); signal choose:std_logic; -用来转换分位和秒位 begin process(clk) begin if(clkevent and clk=1) then choose=not choose; if(choose=1) then minute=0;second=1; bcd=remain_time(7 downto 4); else minute=1;second=0; bcd temp temp temp temp temp temp temp temp temp temp temp= 1111011; end case; a=temp(6

14、);b=temp(5);c=temp(4);d=temp(3);e=temp(2);f=temp(1);g=temp(0); end process;end showtime; 图7、showtime 模块 图8、 showtime仿真图接收减法计数器电路传来的时间信息,进行实时译码显示,由于我们的实际是可以进行两位的时间显示的,所以开始的时候是用的两个数码管,后来见到硬件芯片上是只有一个,又修改成了一个,但为了进行两位的显示,我们就设计了两个小灯,每个小灯分别代表十位和个位,当某个小灯被点亮时代表当前显示的是对应位的数值,每个一秒转换一次,这样就可以实现两位的显示了。4、电机运转时序控制电路

15、(analyse):library ieee; use use entity analyse is port(clk,start,time_over:in std_logic; out_1,out_2:out std_logic); -两路输出用来编辑电机的正反装和暂停end analyse; architecture analyse of analyse isbeginprocess(clk) variable state:std_logic;variable wash_time: integer := 0;variable wait_time: integer := 0; begin if

16、(clkevent and clk=1) then if(start=0) -系统还没有开始工作 then wash_time := 0; wait_time := 0; state := 0; out_1=0;out_2=0; else if(time_over=1) -时间没有结束 then if(wash_time=20) then if(wait_time=9) then wash_time:=0; state:=not state; else wait_time:=wait_time+1; end if; else wash_time:=wash_time+1; -时间已经结束,系统

17、结束工作 wait_time:=0; end if; end if; if(wash_time=20) then out_1=0;out_2=0; else if(state=0) then out_1=1;out_2=0; else out_1=0;out_2=1; end if; end if; end if; end if; end process;end analyse;图9、analyse模块 图10、analyse仿真图通过时钟的输入进行计算当前系统应该处的状态,并进行编码输出电机的运转状态。由于在显示以及输入的时候只有分钟,故需要内设一个秒的计时变量。5、译码器(move):li

18、brary ieee;use move is port( out_1,out_2:in std_logic; -用来编码正反转的输入 REV,RUN,PAUSE:buffer std_logic); -电机的三个状态end move;architecture move of move is begin REV=out_2;RUN=out_1;PAUSE=not(out_1 OR out_2);end move;图11、move模块 图12、move仿真图分析输入的电机转动编码信号,即为思路中的Q1何Q2,安排电机运行状态并进行输出。此模块较为简单,设计基本没什么难度。6、分频电路(主程序中未包

19、含):library ieee;use mytime is port( clk_in:in std_logic; clk:buffer std_logic );end mytime;architecture mytime of mytime is begin process(clk_in) variable i:integer:=0; begin if(clk_inevent and clk_in=1) then i:=i+1; end if; if(i=100) then clk暂停-反转-暂停”的循环过程直至剩余时间变为零。数码管在系统的整个运行过程中时时显示剩余运转时间,由于我们选用的数

20、码管是一个,故设定的是每隔一秒分别显示十位和个位。根据以上需求分析,按照系统模块化设计的要求可将洗衣机控制器的电路设计为主要由五部分组成,包括:预设时间和编码电路、减法计数器电路、数码管显示电路、电机运转时序控制电路、译码器。1、系统总体电路图如下: 图15、系统总体电路图 2、 管脚分配:图16、管脚分配图3、仿真图以及波形:图17、系统仿真图 仿真图中clk给是个上升沿,其中第一段10个上升沿RUN给出高电平,代表正转;第二段5个上升PAUSE给出高电平,代表暂停;第三段10个上升沿REV给不高电平,代表反转;第四段5个上升沿PAUSE给出高电平,代表暂停;最后当到规定时间暂停并发出警告信

21、号。4、硬件连接:FPGA芯片 输入clk-PIN28,start-PIN126,load-PIN127,time_over-PIN125, 分别对应IO3,PB1,PB1,PB2;a-PIN105,b-PIN104,c-PIN101,d-PIN100,e-PIN85,f-PIN84,g-PIN83,time_input0-PIN94,time_input1-PIN95,time_input2-PIN98,time_input3-PIN99, 分别对应数码管和SW13-SW16;输出PAUSE-PIN133,REV-PIN132,RUN-PIN133,分别接IO9,IO10,IO11;minute-PIN82,second-PIN86;分别对应SW8,SW9;功能选择位VGA3.0状态为0001,即16位拨码SW1-SW16被选中输出到总线D15.0;IO9,I019,IO11连接L1,L2,L35、硬件下载: 图18 正转图19 暂停图20 反转六、实验问题分析和经验总结:关于这个洗衣机控制器,就是用模块化层次化的设计方法进行系统层的设计,这样分解下来,设计会更容易点,思路也比较简单。洗衣机控制器主要就只有三个状态,要实现几种状态的多次循环的改变,其他的还有计时和数码显示的功能,所以电路可以设计为大致

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

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