数字电路课程设计洗衣机控制电路设计
- 格式:docx
- 大小:133.52 KB
- 文档页数:19
数字电子技术课程设计报告题目:洗衣机定时控制器班级:洗衣机定时控制器一、设计任务及要求:1.设计脉冲信号源(秒脉冲)2.至少能显示 1:00—12:593.具备校时功能4.附加特殊功能设计(报时功能)二、方案设计与论证:所谓数字钟,是指利用电子电路构成的计时器。
相对机械钟而言,数字钟能达到准确计时,并显示小时、分、秒,同时能对该钟进行调整。
在此基础上,还能够实现整点报时的功能。
其中有振荡器,分频器,校时电路,报时电路,计数器,译码器和显示器七部分组成。
振荡器和分频器组成标准秒信号发生器,不同进制的计数器产生计数,译码器和显示器进行显示,通过校时电路实现对时,分的校准方案一:使用 COMS 数字芯片,使用专用时钟芯片,使用十进制计数器,以及使用万用板焊接电路,分模块搭建电路,使用专用电源供电。
优点:计时准确,反应灵敏,思路简单,性能稳定,成功率高,便于调试。
缺点:驱动能力弱,走线复杂,对数电知识的利用并不充分。
方案二:使用 TTL 数字芯片,使用 74LS93 多进制计数器,用 555 定时器自建时钟模块,使用 USB 供电,使用 PCB 制板。
优点:电路驱动能力强,不必考虑输入脚悬空的问题,充分利用了模电、数电的知识,外观漂亮,供电方便。
缺点:整体布局比较麻烦,排查错误比较麻烦,时钟性能一般。
在比较两个方案的优缺点后,选择了第二个方案,进行由上而下层次化的设计,先定义和规定各个模块的结构,再对模块内部进行详细设计。
通过仿真,原理图设计,PCB 制作,分步骤调试,来解决方案二的不足。
使做出来的效果又好,又能充分利用学过的数电知识。
可以体现数电课设的真正内涵。
我们设计的电子钟,严格按照设计要求,具有整点报时,调时,调分等功能;特别是,我们的调时调分开关,都加上了消抖电路,使用了模拟电路消抖,省去了一些数字芯片,这些都是我们组,区别于其他组的地方。
设计原理及框图定时控制器实际上是一个对标准频率进行计数的计数电路,由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的 1kHZ 时间信号必须做到准确稳定。
课程设计任务书学生姓名: 专业班级: 信息sy1101 指导教师: 工作单位: 信息工程学院 题 目: 简易洗衣机控制电路的设计与实现 初始条件:zzzzzzz本设计既可以使用集成译码器、计数器、定时器、脉冲发生器和必要的门电路等,也可以使用单片机系统构建多功能数字钟。
用数码管显示定时时间。
要求完成的主要任务: (包括课程设计工作量及技术要求,以及说明书撰写等具体要求)1、课程设计工作量:1周。
2、技术要求:1)设计一个电子定时器,控制洗衣机按如下洗涤模式进行工作:2)当定时时间达到终点时,一方面使电机停机,同时用指示灯提醒用户。
3)用两位数码管显示洗涤的预置时间(以分钟为单位),按倒计时方式对洗涤过程作计时显示,直到时间到而停机。
4)用三只LED 灯表示“正转”、“反转”和“暂停”3个状态。
5)确定设计方案,按功能模块的划分选择元、器件和集成电路,设计分电路,阐述基本原理。
画出电路原理图。
3、查阅至少5篇参考文献。
按《武汉理工大学课程设计工作规范》要求撰写设计报告书。
全文用A4纸打印,图纸应符合绘图规范。
时间安排:1、 2013 年 5 月 16 日,布置作课设具体实施计划与课程设计报告格式的要求说明。
2、 2013 年 6 月 25 日至 2013 年 6 月 28 日,方案选择和电路设计。
3、 2013 年 6 月 29 日至 2013 年 7 月 3 日,电路调试和设计说明书撰写。
4、 2013 年 7 月 5 日,上交课程设计成果及报告,同时进行答辩。
指导教师签名: 年 月 日停机目录摘要 (1)Abstract (2)1.概述 (3)1.1设计任务和要求 (3)1.2设计的总体思路 (3)2.总体方案及原理框图 (4)2.1方案提出 (4)2.2方案分析 (5)3.单元电路设计与参数的计算 (6)3.1 秒脉冲发生器 (6)3.2 分秒计时器 (7)3.3 数码显示器 (9)3.4电机控制电路 (10)3.5 报警电路 (13)4、总体电路 (17)5. 心得体会 (19)附录一参考文献 (20)附录二元件清单 (21)附录三实物图 (22)摘要现代生活人民生活水平越来越高,家家户户几乎都有一台洗衣机,随着时代的发展,洗衣机也在不停革新、发展。
1数字电路与逻辑设计实验报告题目: 洗衣机控制器设计2一、洗衣机控制器要求设计制作一个全自动洗衣机的控制器:_ 洗衣机的工作步骤为洗衣、漂洗和脱水三个过程,工作时间分别为:洗衣20 秒,漂洗30 秒,脱水15 秒;_ 用一个按键实现洗衣程序的手动选择:A 、单洗涤;B 、单漂洗;C 、单脱水; D 、漂洗和脱水;E 、洗涤、漂洗和脱水全过程;_ 用显示器件显示洗衣机的工作状态(洗衣、漂洗和脱水),并倒计时显示每个 状态的工作时间,全部过程结束后,应提示使用者;_ 用一个按键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回到暂停之前 保留的状态;_ 选做:三个过程的时间有多个选项供使用者选择。
_ 选做:可以预约洗衣时间。
_ 选做:自拟其它功能。
二、系统设计基本思想电路由模式选择、计数器、报警模块以及译码驱动电路和数字显示电路等模块组成。
1、模式选择模块五种洗衣模式可供用户选择,模式选择模块将用户的选择信息传递到控制模块。
2、减计数计数器模块计数器洗衣以倒计时模块的方式提示用户当前剩余的洗衣时间,该计数器能读取不同的模值进行计数。
计时单位为一秒钟。
3、译码和数码显示电路译码和数码显示电路是将计时状态直观清晰地反映出来,被人们的视觉器官所接受。
显示器件选用LED 七段数码管。
在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。
4、报警模块当系统运行到“报警”状态时,蜂鸣器将会报警,时间为5 秒。
4、分频器模块设计一个大小合适的分频器使得系统能够正确的实现一秒的计时。
三、总体设计图以及转移图流程图示:3状态选择开始信号输入变量A 为1YESNO进行洗涤变量B 为1YESNO进行漂洗变量C 为1YES进行脱水NO完成洗衣后报警提示完成4总体逻辑设计图:状态转移图示:控制器分频器OSC时间计数器洗涤漂洗脱水译码时间显示ClkClk1Clk2T15 T20 T2Cnt clr 报警Pause状态选择 译码5管脚设计图:WAITA =’1’进行洗涤进行漂洗A =’0’ B=‘1’B =’0’B =’1’进行脱水A =’0’ B=‘0’C =’1’C =’0’完成洗衣报警提示仿真情况:6简要说明:本次仿真执行的是第五个状态即洗涤、漂洗和脱水全过程。
电子科技大学
数字电路
课程设计报告
姓名:张华博
学号:2011091010004
选课号:132
指导老师:张刚
时序逻辑电路课程设计
——————自动洗衣机控制器
设计要求:假设自动洗衣机的定时操作顺序是,洗衣10min,排水2min,脱水3min,然后停止。
分析:自动洗衣机开机后,系统开始运行,首先进入初始状态,当系统收到有效指令信号后开始自动循环,进入洗衣状态,10分钟之后,进入排水状态,经2分钟,进入脱水状态3分钟,再次进入初始状态;期间任何时刻输入有效复位信号,系统将重新开始自动循环状态;系统处于每一个工作状态时,均有一个LED 灯管与其对应,处于发光状态。
由上分析知:该系统的主体应为10分、2分、3分计时器,当一个计时器计时结束后,输出一个使能信号作用于下一个计时器,激发其开始计时。
开始的指令信号作用于第一个计时器的一个使能端,以激发整个循环系统开始工作;当输入有效复位信号时,计时器全部清空置零,并重新开始循环。
逻辑电路图如下:
十分钟计时器逻辑电路
两分钟计时器逻辑电路
三分钟计时器逻辑电路
自动洗衣机系统逻辑电路
逻辑电路仿真:
输入2Hz的时钟信号CLK,ENT为指令信号,CLRN为复位信号,Z1、Z2、Z3、Z4分别对应于洗衣状态、排水状态、脱水状态、初始状态。
波形仿真效果
仿真结果显示该电路设计正确,该系统基本可实现预期的操作功能。
总结感想无需赘言,见组合逻辑课程设计报告……。
2008—2009学年第二学期《数字电子技术课程设计》设计报告专业班级电气07-1姓名学号开课系室电工电子学教学中心设计日期 2009年7月4日~7日洗衣机的简易控制电路设计一、设计任务及要求:洗衣机是家庭常用电器,一般可以有多种工作模式可供选择。
在此要求设计具有两种工作模式的简易洗衣机控制电路,具有复位、模式设置、洗衣时间预置、启动、暂停功能,并能显示洗衣机的工作状态(如洗涤时间倒计时,电动机的正反转、暂停)。
(一)具体要求:1、设置为复位开关S0,开关状态S0=1时,对系统状态进行复位,计数器清零。
S0=0时,进入模式选择。
2、设置模式选择开关S1。
开关状态S1=0时,执行洗衣模式一,控制洗衣机的电机按照图1的规律循环运转;S1=1执行洗衣模式二,控制洗衣机的电机按照图2规律循环运转。
图1 洗衣模式一图2 洗衣模式二3、洗衣时间预置键K1和K2。
当S1=0,S2=0时,预置模式一的洗衣时间;当S1=1,S2=0时,预置模式二的洗衣时间。
在时间预置功能下,按一下K1按键洗衣时间增加1分钟(一个洗衣循环),按一下K2按键洗衣时间减少1分钟(一个洗衣循环),预置时间范围为0-9分钟。
4、设置启动开关S2。
洗衣模式设定后,开关状态S2=1时,按照设定的洗衣模式启动电机运转。
在洗衣过程中分别用3个LED灯来显示电动机的正转、翻转,间歇等状态。
5、设置暂停开关S3。
当开关状态S3=1时,洗衣暂停,计数器状态、显示均保持,并点亮LED灯显示暂停状态。
S3=0时正常运转。
(二)输入输出资源说明:1、输入信号:四个控制开关S0、S1、S2、S3(开关拨下时S =0,开关拨上时S =1),两个按键K1和K2(按下时K=1,松开时K=0)。
2、外部输入脉冲信号时钟源CP (10Hz ),经适当分频后供计数器使用。
3、输出3组显示译码信号(每组7个输出端),分别接到外部的三个七段数码管M1、M2,M3上(共阴极接法)。
要实现数电模拟洗衣机控制,包括正转、反转和停机功能,并且添加计秒和计分功能,可以考虑使用数字逻辑电路和计时器集成电路来完成。
控制设计步骤:1. 逻辑控制电路设计:使用数字逻辑电路设计控制正转、反转和停机的逻辑控制功能。
这可以通过使用触发器、逻辑门等元件组合设计而成。
2. 计时器集成电路应用:使用集成的计时器电路,比如555定时器、计数器等,来实现计秒和计分功能。
这些电路可以用于测量时间并触发相应的控制信号。
3. 状态机设计:设计一个状态机来管理洗衣机的工作状态,根据当前状态和传感器输入确定下一个状态,并触发相应的控制信号。
4. 显示和输出控制:使用数码显示器或LED灯来显示剩余时间(秒和分),以及洗衣机当前的工作状态。
5. 传感器输入:添加传感器来检测洗衣机的转动状态、水位和其他参数,并将这些输入信息送入控制系统中。
6. 安全保护功能:考虑添加安全保护功能,如过载保护、温度监控等,确保洗衣机的安全运行。
需要的器件和模块:-触发器、逻辑门芯片:用于控制正转、反转和停机功能的逻辑控制。
- 555定时器、计数器芯片:用于实现计时功能。
-数码显示器或LED灯:显示剩余时间和工作状态。
-传感器**:用于检测洗衣机的实时状态。
总体设计流程:1. 根据洗衣机的功能需求,设计逻辑控制电路,实现正转、反转和停机功能。
2. 使用计时器电路,设计计时和计分功能。
3. 结合逻辑控制和计时功能,设计状态机和控制逻辑,实现洗衣机的自动控制。
4. 添加显示和输出模块,显示剩余时间和工作状态。
5. 考虑安全保护和故障检测功能,确保洗衣机的稳定运行。
以上是基于数字逻辑电路和计时器集成电路的洗衣机控制设计方案,具体的实施需要根据实际需求和具体的电路设计进行调整和优化。
一、课程题目:具有数字显示的洗衣机控制电路二、设计内容及要求此次课程设计将设计一个具有数字显示的洗衣机控制电路。
对于该电路有以下要求1.2.3.三、系统方案、系统框图系统框图如下1.定时器电路因为定时是以一分钟为单位量的,所以通过定时电路实现以六十秒为周期的脉冲信号,用以记时。
2.控制电路与执行电路控制电路接受记时信号,并将其转化为控制信号,输入到执行电路,模拟电机的转动情况。
3.预置及显示电路通过预置及显示电路,预置洗衣机的工作时间及实现数字显示。
四、单元电路设计、参数计算和器件选择1.定时器1)通过NE555定时器产生频率为一秒一个的秒脉冲。
为了让NE555定时器产生一秒一个的脉冲信号,首先把它接成多谐振荡器,如下图接法:(R1、R2、C1电阻电容的值的计算、C2的作用(滤波?))2)通过74LS160、74LS161和74LS138组成六十进制加法计数器六十进制加法计数器的电路图如下图所示74LS160是一个十进制上升沿计数器,它的CP端输入来自NE555多谐振荡器的一秒一个的脉冲信号,并在进位输出端产生每十秒一个的脉冲信号。
74LS161为可预置的4 位二进制同步计数器即十六进制计数器,它的CP端输入来自74LS160的每十秒一个的脉冲信号。
它的功能表如下为了组成六十进制加法计数器,采取置零的方法,并且通过74LS161的同步并行预置数功能实现置零。
为了实现将74LS161十六进制计数器通过置零的方法变成六进制计数器,需要74LS138译码器的帮助。
74LS138的译码器的功能表如下。
通过参照以上芯片的功能表,可以得到六十进制加法计数器的工作状态表,如下。
将74LS138的Y5输出端接在74LS161的LD非端,LD非端输入如下图所示的波形。
由于74LS161的同步并行预置数功能要在CR=1、LD=0、且有时钟脉冲CP 的上升沿作用时才能实现,所以置零功能在第60秒实现。
通过以上芯片的连接,实现了60进制加法计数器。
洗衣机自动控制电路一、设计要求1.洗衣时间设定范围:1—99分钟(预设为30min)2.显示漂洗时间(显示分钟就好),时间到后会自动报警3.漂洗时(用发光二极管代替电动机)显示正转、反转、暂停4.定时时间内电机工作要求如下:启动正转20s 暂行10s 反转20s 暂行停止定时未到二、设计方案由于受现有知识的限制,我们不能使用单片机以及编写程序的方法来实现。
只能采用CMOS和TTL集成器件等中小型集成块,如计数器,锁存器,与非门,555定时器等构成洗衣机控制电路。
洗衣机的洗衣流程如框图:三、具体电路设计及工作原理说明1、多谐振荡器多谐振荡器是一种自激振荡器,产生振荡信号,用于计时。
在许多场合对多谐振荡器的频率稳定性要求严格,一般采用石英晶体振荡器。
但是由于洗衣机对时间的精确度要求不是很高,所以我们采用555定时器接成的500HZ多谐振荡器。
电路如图:图中是把555定时器接成施密特触发器,在用施密特触发器接成多谐振荡器的方法接成。
其中R7=100Ω,R8=200Ω,C3=5.77μF ,C4=1μF(滤波电容)把数据带入T=(R1+2R2)C2ln2 ,得T约为0.002s。
即周期为0.002秒,输出500HZ 的信号。
4号管脚即为脉冲信号输出管脚。
2、时钟电路及74LS192D功能表时钟电路采用计数器对输入的500HZ振荡信号进行计数,从而实现计时。
用十进制计数器接成两个60进制计数器,分别用于计秒和计分。
分和秒的计数图如下:加减计数器74LS192D(四个)、数码显示管等74LS192的功能表3、电机正转、反转、暂停的表示把秒十位上的数作为正反转控制系统的输入信号,把秒十位上输出的二进制数经74LS138 译码器译码成8个输出,然后再各取两位输出经由译码器、与非门、取反器作用到相应的3个指示灯(U15号灯亮表示正转,U13号亮表示反转,U14灯亮表示停止)。
4、分显示电路原理两个代表分的个位和十位的192的输出端接到74LS138D(3-8译码器)的对应输入端,然后经过74LS04D和74LS00D的处理,LED灯从左到右依次为正传、暂停、翻转。
课程设计(2015-2016学年第2学期)课程名称:数字电子技术课程设计学生姓名:范馨艺专业班级:14电信一班学院:信息与电气工程学院学号: 188840020学生成绩:《数字电子与仿真课程设计》任务书适用专业:2014级电子信息设计时间:2周一、课程设计的性质、地位和任务电子技术课程设计是系统地了解数字电路的特点,熟练地掌握数字电路的设计方法和EDA技术工具的使用的实践环节,可为今后学习计算机硬件、EDA技术打下坚实的基础。
数字系统课程设计是电子信息专业二年级所开设的课程设计项目,时间为2周。
通过本课程设计,要求学生独立完成各项任务:设计、调试、仿真及功能验证。
二、课程设计的基本要求1、根据给定的任务,在计算机上完成设计电路、波形及功能仿真。
2、搭接电路,验证其功能的正确性。
3、完成课程设计报告书。
三、课程设计任务一、《具有数字显示的洗衣机控制电路》设计功能框图见下图,控制电路需完成下述功能:1.能够在N分钟内,任意设定洗衣机工作时间,并动态显示剩余时间。
设计具体要求:1.利用EDA工具——MaxplusⅡ的图形输入法,首先完成各底层模块电路的设计,元件自行选择。
2.每个学生在D盘新建文件夹,名为snxd**(**为学号最后两位);减法计数器文件名为jf_N(N为学号最后两位+30)。
注意:文件名应以字母开头,不能和元件库已有元件同名,如74LS00等。
3.对各模块电路进行仿真、调试,功能正确后形成顶层电路,并进行仿真调试。
8421BCD码洗衣机控制电路报告正文包括:1.各底层模块:包括设计电路、仿真图、封装图、主要管脚和电路功能说明。
2.总体电路:包括设计电路、仿真图、主要管脚和电路功能说明。
3.报告要求打印,A4纸。
设计中注意保存设计成果。
4.最后,对本次课程设计(两部分)写“心得体会与建议”,不少于800字。
1.六十进制加法计数器2.五十进制减法计数器3.环形计数器4.。
数字电路与逻辑设计实验报告题目:洗衣机控制器设计一、洗衣机控制器要求设计制作一个全自动洗衣机的控制器:_ 洗衣机的工作步骤为洗衣、漂洗和脱水三个过程,工作时间分别为:洗衣20秒,漂洗30 秒,脱水15 秒;_ 用一个按键实现洗衣程序的手动选择:A、单洗涤;B、单漂洗;C、单脱水;D、漂洗和脱水;E、洗涤、漂洗和脱水全过程;_ 用显示器件显示洗衣机的工作状态(洗衣、漂洗和脱水),并倒计时显示每个状态的工作时间,全部过程结束后,应提示使用者;_ 用一个按键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回到暂停之前保留的状态;_ 选做:三个过程的时间有多个选项供使用者选择。
_ 选做:可以预约洗衣时间。
_ 选做:自拟其它功能。
二、系统设计基本思想电路由模式选择、计数器、报警模块以及译码驱动电路和数字显示电路等模块组成。
1、模式选择模块五种洗衣模式可供用户选择,模式选择模块将用户的选择信息传递到控制模块。
2、减计数计数器模块计数器洗衣以倒计时模块的方式提示用户当前剩余的洗衣时间,该计数器能读取不同的模值进行计数。
计时单位为一秒钟。
3、译码和数码显示电路译码和数码显示电路是将计时状态直观清晰地反映出来,被人们的视觉器官所接受。
显示器件选用LED 七段数码管。
在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。
4、报警模块当系统运行到“报警”状态时,蜂鸣器将会报警,时间为5 秒。
4、分频器模块设计一个大小合适的分频器使得系统能够正确的实现一秒的计时。
三、总体设计图以及转移图流程图示:总体逻辑设计图:状态转移图示:管脚设计图:仿真情况:简要说明:本次仿真执行的是第五个状态即洗涤、漂洗和脱水全过程。
通过此仿真可以发现当输出选择模式信号change时,洗衣机模式开始发生变化。
输入第一个change信号的时候进入单洗涤状态,输入第二个change信号进入单漂洗状态,输入第三个change信号进入了单脱水的状态,输入第四个change信号进入了脱水和漂洗的状态,当输入最后一个change信号的时候进入洗涤、漂洗和脱水的全状态。
数字逻辑电路课程设计设计题目全自动洗衣机控制器的设计姓名学号专业班级完成日期目录一、实验目的 (3)二、设计题目与思路 (3)三、总体方案的设计与选择 (4)四、使用元件 (5)五、分析与心得 (5)六、附件一:实验代码 (5)一、实验目的1.进一步掌握数字电路课程所学的理论知识。
2.了解数字电路设计的基本思想和方法,学会科学分析和解决问题。
3.熟悉几种常用集成数字芯片,并掌握其工作原理,进一步学会使用其进行电路设计。
4. 培养认真严谨的工作作风和实事求是的工作态度。
二、设计题目与思路本次数字电路课程设计我选择的题目是“全自动洗衣机控制器”。
这个系统的主要功能是:1.设计一个全自动洗衣机控制器电路,实现对洗衣机的全自动控制。
根据全自动洗衣机的控制原理设计一个控制电路,使之能够控制全自动洗衣机完成整个工作过程。
洗衣机工作过程如下:当按下复位按钮时,洗衣机上电,控制电路复位到初始状态(默认水位为“中”);使用者可根据衣服的多少,按下水位控制按钮,改变水位设置,以控制上水时加水的多少;当按下启动/暂停按钮时,洗衣机开始洗衣的第一个操作:进水阀门打开,开始上水,并根据水位设置(高、中、低、少)历时不同的时间timeadd(8s、7s、6s、5s);然后进水阀门关闭,电机开始运转,开始洗衣过程,并历时9s;然后电机停止运转,排水阀门打开,开始排水,并根据水位设置(高、中、低、少)历时不同的时间timedrain(7s、6s、5s、4s);然后排水阀门关闭,进水阀门打开,开始第二次上水,并历时timeadd……当甩干结束后,整个洗衣过程完成,扬声器发出持续15秒的急促的“嘀嘀”音,提示用户洗衣结束。
洗衣机工作过程简记如下:空闲(idle)→第一次加水(water1)7s→洗衣(wash)9s→第一次排水(drain1)6s→第二次加水(water2)7s→漂洗(rinse)9s→第二次排水(drain2)6s→甩干(dry)5s→蜂鸣15s2、控制器只要送出对应的控制信号就可以了。
《数字逻辑》课程设计报告题目:洗衣机自动控制电路目录1 设计任务书2 总体方案设计2.1 功能和逻辑需求分析2.2 总体方案设计3 单元模块设计3.1分倒数单元电路设计3.2 秒倒数单元电路设计3.4 计数器单元电路设计3.2 状态译码器单元电路设计3.5总体电路设计(画出总体电路图)4 电路调试与测试4.1分倒数单元模块4.2秒倒数单元模块4.3计数器单元模块4.4状态译码器单元模块4.5全部器件5 总结1 设计任务书洗衣机自动控制电路为洗衣机设计一控制电路,当洗衣机控制开关打开后,电动机先正转20S,然后暂停10S,随后反转20S,再然后暂停10S;如果定时时间没到,则开始循环,若定时时间到,则停机断电。
定时时间设定范围为0~60分,显示分秒的倒计时。
用LED指示灯表示电机的正转、反转和暂停状态。
2 总体方案设计(1)、计时器:由两片芯片来分别完成分、秒的倒计时功能,分芯片提供预置功能,两片芯片的模均为60.(2)、计数器:通过计数来完成输出洗衣机四种状态(正转 > 暂停 > 反转 > 暂停 > 正转)的切换(3)、状态译码器:将输入的四种状态转换为三种状态(正转、暂停、反转)(4)、所有芯片都使用每秒一脉冲的统一脉冲,实现同步。
2.1 功能和逻辑需求分析1)、计时器:①由于平常用的基础器件无法简单做到倒数功能,所以决定用GAL器件,通过编写ABEL-HEL并在GAL器件上实现。
②计数器的分和秒分别需要8位输出(4位作为十位,另外4位作为个位,每4位二进制数在数码管上显示为一个十进制的数。
)③所以计数器的分和秒必须分为两个GAL器件,但同时秒需要有一个退位输出信号,分需要一个抑制秒继续倒数的输出信号,所以每个芯片需要9个输出端。
④总结:计数器需要两个GAL22v10分别实现分和秒的倒数。
2)、按周期显示正、反灯和暂停灯:①该功能仍然需要GAL器件来实现,首先需要内部能自己计数,电动机先正转20S,然后暂停10S,随后反转20S,再然后暂停10S,按20+10+20+10=60秒为一周期,所以需要6个输出来计数(作为内部计数,可以不必显示)。
电子技术课程设计报告设计题目:洗衣机时控电路院(部):专业班级:学生姓名:学号:指导教师:目录洗衣机控制电路 (1)一、绪论 (1)1.1设计任务 (1)1.2 要求 (1)二、洗衣机控制电路分析 (2)2.1电路工作总体框图 (2)2.2六十进制秒计数器和一百进制分计数器 (3)2.3预置时间 (7)2.4循环电路 (8)三、总电路 (11)3.1正转仿真 (11)3.2反转仿真 (12)3.3停止仿真 (13)四、结束语与心得体会 (14)参考文献 (15)洗衣机控制电路摘要:本设计是基于数字电路定时器的洗衣机简易控制电路,着眼于目前普遍应用在洗衣机控制系统上的正反转动,设计了一个普通洗衣机的主要控制电路,定时器,它按照一定的洗涤程序控制电机做正向和反向转动,并且运用数码管来显示预置时间和洗涤剩余时间。
运用仿真电路实现其运转功能。
关键词:洗衣机数字电路proteus 仿真电路设计一、绪论1.1设计任务开始前我们通过控制三向开关来对其运行时间进行预置即洗涤时间设置,开始运转后,洗涤时间显示进行减计数功能,当秒计数器的个位减为零时就向十位借数,十位减一(分计时器同理),而在同时通过并行输出寄存器稳定输出秒十位数据,再经过门电路来控制洗衣机运行状态的显示灯,当设置的洗涤时间到后,显示器显示清零。
运转状态:定时转动→正转→暂停→反转→暂停→停止↑↓——定时未到———1.2 要求首先设计让倒计时显示器按规律运行的电路,再通过倒计时电路的信号来控制交通灯按4 种状态循环变换。
电源电路采用9V 变压器、整流桥和稳压管,使220V 的交流电转换为5V 的直流电。
4Hz 方波脉冲由555 定时器产生,再由74LS193 实现4 分频,最终输出1Hz 的脉冲信号;用两块74LS193 实现倒计时,一块显示十位,一块显示个位,用2 个D 触发器74HC74实现30s,20s,5s 时间的转换;利用倒计时电路控制4 个状态。
数电课程设计论文论文题目:洗衣机控制电路设计课程名称数字电子技术基础课程设计学院专业班级学号姓名指导教师2013年 05月26 日一、设计题目 (2)1、设计地目地: (2)二、设计任务与要求 (2)三、设计思路 (2)四、单元模块地设计 (3)1、脉冲发生器 (3)2、60s计数器模块 (4)1)芯片说明 (4)2)60进制异步减法计数器 (5)3、定时模块 (6)4、显示模块 (8)1)CD4511 (8)2)8段数码管 (8)5、洗衣机正反转模块 (9)6、其他模块 (10)1)蜂鸣器 (10)2)正反转停止 (11)五、作品及元件清单: (13)六、总结及心得 (13)一、设计题目洗衣机控制电路设计1、设计地目地:1.)掌握洗衣机控制电路地设计、组装与调试方法.2.) 熟悉数字和模拟集成电路地设计和使用方法.二、设计任务与要求设计制作一个洗衣机控制器,具有如下功能:1)采用中小规模集成芯片设计洗衣机地控制定时器,控制洗衣机电机作如下运转:2)洗涤电机用两个继电器控制.3)用两位数码管显示洗涤地预置时间(分钟数),按倒计时方式对洗涤过程作计时显示,直至时间到而停机.洗涤定时时间在0~10min内用户任意设定.4)当定时时间到达终点时,一方面使电机停转,同时发出音响信号提醒用户注意.5)洗涤过程在送入预置时间后即开始运转.三、设计思路本定时器包括两级定时:一是总洗涤过程地定时;二是在总洗涤过程中包含电机地正转、反转和暂停三种定时,并且这三种定时是反复循环直至总定时时间到为止.总地洗涤时间定时器负责整个电路地时间定时功能,按照设计要求,需要可以自由设定1-10分钟地洗涤时间.第二个定时是电机地正反转定时,要求按照2s 暂停,8s 正转,8s 反转,并且不断地循环下去,直到定时时间到.根据思路:我们地设计模块电路为:四、单元模块地设计1、脉冲发生器用555定时器组成地多谐振荡器地原理图如图所示.R1、R2、C 是外接电阻元件.当uc 因电源接通对C 充电而上升到CC U 32时,比较器A1输出为低电平,使R-S 触发器输出置0,T 导通,电容C 通过T 放电;当uc 因电容放电而减小到略低于CC U 31时,比较器A2输出为低电平,使R-S 触发器输出置1,T 截止,电容C 继续充电直到uc 略高于CC U 32时,触发器又翻转到0,从而完成一个周期振荡.其振荡周期可用下式计算:计数器 一级定时器二级定时器暂停反转 正转显示定时T=ln2*(R1+2R2)C T=Ln2*(8.2k+2*68K)*10uf≈1s555连接电路 555脉冲产生周期2、60s 计数器模块 1)芯片说明74HC192是同步十进制可逆计数器,它具有双时钟输入,并具有清除和置数地功能.其引脚及功能如图所示:Uc555123456 7 8 555定时器地引脚图5k Ω- ∞ + + A 1 - ∞++ A 2- 1 5k Ω5k ΩRD- S D - QQU CC 电源地WR 4 8 5 6 27 555定时器地原理图3OUGN DIS TL TH VC 复位端输出端高触发放电端低触发电压控制端电源端T功能表如图2)60进制异步减法计数器根据功能表,要实现60进制地功能,则只需要使用2个192计数器,便可以组合成60进制异步减法计数器.该电路图地时序表如下第一个芯片为10进制计数器,第二个计数器为6进制计数器,脉冲电路状态等效十进制借位0Q3 Q2 Q1 Q01 1 0 1 01002 1 0 0 1903 1 0 0 080 0100 0 0 001脉冲电路状态等效十进制借位0Q3 Q2 Q1 Q010 1 1 060 20 1 0 15030 1 0 040 060 0 0 001当第一个192从10减到0之后,13脚会产生一个脉冲,此脉冲接入第二192地cpd脚,充当计数脉冲.当第二计数脉冲从6减为0时,U1 U2输出端输出0000 0000,此时通过与非和反相器组成地电路,接入U1 和U2地11脚,置为初始值,开始下一轮计数.真值表如图:QA QB QC QD QA QB QC QD PL1001 0110 11000 0101 1 (1)0000 0000 03、定时模块74HC192具有置数地功能,可以利用置数功能实现定时器地功能.其中,0-9分钟定时电路如图1所示.当开关S1打开时,U4脚接入低电平,允许置数,此时,脉冲对计数器无效,不计数.开关S2接高电平和U1地第5脚,按键按下时,充当计数脉冲.每按一次,计数器加1.U1地QA,QB,QC,QD端分别连接U4地A,B,C,D端,在U1计数时,同时将U4实时置数,实现定时功能.10分钟定时:由于10进制计数器只能定时0-9分钟,所以要实现10分钟地计数,还需要另外一个计数器74HC192.原理同0-9分钟地相似,由于该位只显示1和0两种状态,所以不需要使用另外地计数器来实现置数功能,使用单刀双掷开关,显示1时接高电平,显示0时连接低电平,实现置数功能.电路如图:3、显示模块显示模块使用CD4511和8位数码管.1)CD4511CD4511 是一片CMOS 地七段译码器.具有BCD转换、消隐和锁存控制、七段译码及驱动功能地CMOS电路能提供较大地拉电流.可直接驱动共阴LED数码管.引进功能如图所示.L E BLLT D C B A a b c d e f g显示X X0X X X X11111118X01X X X X00000000110000111111000110001011000010110010110110120110011111100130110100011001140110101101101150110110001111160110111111000070111000111111180111001111100192)8段数码管数码管是一种半导体发光器件,其基本单元是发光二极管.发光二极管单元连接方式分为共阳极数码管和共阴极数码管.共阴数码管是指将所有发光二极管地阴极接到一起形成公共阴极(COM)地数码管.共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管地阳极为高电平时,相应字段就点亮.当某一字段地阳极为低电平时,相应字段就不亮.当使用cd4511为译码器,必须使用共阴地数码管.显示电路如图所示5、洗衣机正反转模块设计要求该电路控制电机正转8s,暂停2s,反转8s,并不断循环直至定时时间到时显示暂停.该模块与一级定时模块连接.十位数字(二进制)A 个位数字(二进制)B转动方向0100 0010 00000111反转011001010100001100100001可以得到真值表如下图十位数字(二进制)A 个位数字(二进制)B转动方向0101 0011 00010111 正转0110 0101 0100 0011 0010 0001 0000BA Y =1十位数字(二进制)A 个位数字(二进制)B 转动方向0101 0100 0011 0010 000100001001 暂停1000由真值表经过化简得到地公式,可以得到图5-1地电路图,其中A 连接十位计数器地QA 输出脚,B 连接个位计数器地QD 输出脚,即可以实现正反转地功能.6、其他模块 1)蜂鸣器当定时时间结束之后,蜂鸣器启动,提醒用户定时时间到.当计数结束时,定时器应显示00状态.可以得到如下地真值表(6-1)定时器时间74HC192输出(U2 U1)蜂鸣器状态Y (0为停止,1启动)10 0001 0000 009 0000 1001 0 ………… ………… 0 000000 00001由上表可以得到公式21111)(A D C B A Y +++= 有公式可得电路图:0000AB 反转正转暂停BA Y =2BY =3图-5-1其中,A1 B1 C1 D1 分别连接定时器74HC192地QA QB QC QD 端2)正反转停止当定时器时间到时,需要断开洗衣机正反转功能,并让洗衣机处于暂停状态. 由真值表(6-1)可得,所需要地公式为21111)(A D C B A Y +++=可以利用蜂鸣器模块,利用三极管充当开关地功能,组合实现对计数器地停止功能.由蜂鸣器模块电路图可得,当定时时间未到时,p 端为高电平,此时三极管导通,电路正常,洗衣机开始正反转.当定时器时间到,p 端变为低电平,三极管截止,此时计数器暂停计数,洗衣机处于停止状态.电路如下所示各模块组合成地总电路图如下:A2A1 B1 C1 D1蜂鸣器pp74HC192三极管地集电极接74HC192地5脚,由192地真值表可得,当5脚恒定为低电平时,192暂停计数并置数为初始值.五、 作品及元件清单:PCB:总结及心得总结: 经过测试,该电路基本符合课程设计地要求,其中,时间可在0~19分钟内自由定时,正反转时间准确为8s ,暂停为2s.当定时时间到时,洗衣机暂停,蜂鸣器响起,提醒用户定时时间到.电路是有3个按钮,分别为十分钟定时按钮,个位定时按钮和启动按钮,操作方便.参考文献:数字电子技术基础(第五版) 阎石 高等教育出版社数字电子技术课程设计指导书(第二版) 物理与光电工程学院电工电子部原件名称 型号及大小 作用 封装 数量(个) 74HC192 直插16脚 计数器 DIP_16 5 NE555 直插8脚 产生脉冲 DIP_8 1 CD4511 直插16脚 译码器 DIP_16 1 74HC00 直插14脚 与非门 DIP_14 1 74HC02 直插14脚 或非门 DIP_14 3 74HC04 直插14脚反相器 DIP_14 3 数码管 --- 显示 RED_4GND 1可调电阻10k 调节脉冲频率 --- 1电阻 300 限流 AXIAL_0.4 8 68k --- AXIAL_0.4 1 开关 --- 断开与连接 --- 2 按键 --- 定时器按键 --- 1 Led 灯 红、绿、蓝 旋转地提示灯 LED-0 各1个 LED 灯 红 作0和1地提示 LED-0 1 三极管S8050 作暂停开关 TO-92A 1 电容10uF --- RAD_0.3 1 103----RAD_0.31。
总体方案分析及选择:洗衣机电路包含有总的控制模块,洗涤控制模块,洗涤记时模块,电动机控制模块以及LCD 液晶板的动态显示模块.经过分析后,我们把前四个模块进行组合,把他们合成一个模块即:总控制模块.他们之间的逻辑联结关系,是对数电课程的一个很好总结,也是自己对新知识(LCD 液晶板的动态显示)学习理解运用能力的一个很好的提升机会。
基本功能要求:1要求设计制作一个普通功能洗衣机控制电路,使之能控制洗衣机的进水阀,排水阀,洗涤程序电机,甩干驱动装置等按预定程序工作.总体过程包括:进水浸泡洗涤排水甩干五个过程.进水从电路启动开始.其中浸泡可供选择,洗涤时间可以预置,洗涤结束时发出铃声进行提示并自动切断电源.发生故障如:缺水或进水超时排水超时甩干碰桶等时也可自动切断电源!2用中小规模集成电路芯片或CPLD/FPGA设计符合上述任务要求的电路,并制作出能实际运行的装置.3安装并调试电路,测试各部分电路功能或模型.4演示并交验硬件装置.下载实现图:局部功能模块总控模块:该模块实现了对洗衣机整个运行过程的控制,打开电源后由模块内部进行控制,按洗涤过程工致洗衣机的运转.同时在输入端还给了报警输入,当发生故障时洗衣机自动短电.复位端可以让洗衣机进入初始状态.在输入端还有10个总线输入可以人为进行置数,从而控制各个过程的时间长短.当给甩干时间一个时间,其他都置为0可以让洗衣机只进行甩干操作.VHDL文件:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity xiyiji isport(clk0, clk1, rst, alarm: in std_logic;-----clk0:控制开关脉冲.clk1:记时开关脉冲.Rst:复位端.alarm:报警输入端.------- water_inh, water_inl, im_th, im_tl, wash_th: in std_logic_vector(3 downto0);wash_tl, water_outh, water_outl, dry_th, dry_tl: in std_logic_vector(3 downto 0); -----进水,浸泡,洗涤,出水,甩干置数端高位和低位输入端-----------water_in, water_out, immersion, dry, z1, z2, voice, poweroff: out std_logic; -----进水,出水,浸泡,甩干,洗涤,响铃,断电输出端-------display_th, display_tl: out std_logic_vector(3 downto 0)-------------------输出时间显示高位低位输出端-------------);end entity xiyiji;architecture behave of xiyiji issignal js, js_ten : std_logic;signal im, im_ten : std_logic;signal wa, wa_ten : std_logic;signal wa1, wa2, pwf: std_logic;signal cs, cs_ten : std_logic;signal dr, dr_ten : std_logic;signal xl, xl_ten : std_logic;signal js_dh, js_dl: std_logic_vector(3 downto 0);signal im_dh, im_dl: std_logic_vector(3 downto 0);signal wa_dh, wa_dl: std_logic_vector(3 downto 0);signal cs_dh, cs_dl: std_logic_vector(3 downto 0);signal dr_dh, dr_dl: std_logic_vector(3 downto 0);signal xl_dh, xl_dl: std_logic_vector(3 downto 0);signal dis_th,dis_tl: std_logic_vector(3 downto 0);begin-----------------------控制:控制器件实现洗衣机的功能:进水->浸泡->洗涤->出水->甩干->响铃->断电---------------control:process(clk0, rst,alarm)variable n: integer;beginif alarm = '1' thenpwf <= '1';elseif rst = '1' thenn := 0;im_ten <= '0';js_ten <= '0';wa_ten <= '0';cs_ten <= '0';dr_ten <= '0';xl_ten <= '0';pwf <= '0';elsif clk0 = '1' and clk0 'event thenif n = 0 thenif water_inh = "0000"and water_inl = "0000"thenn := 1;elsejs_ten <= '1';if js = '1' thenn := 1;end if;end if;elsif js = '0' and n = 1 thenif im_th = "0000"and im_tl = "0000"thenn := 2;elseim_ten <= '1';if im = '1' thenn := 2;end if;end if;elsif im = '0' and n = 2 thenif wash_th = "0000"and wash_tl = "0000"thenn := 3;elsewa_ten <= '1';if wa = '1' thenn := 3;end if;end if;elsif wa = '0' and n = 3 thenif water_outh = "0000"and water_outl = "0000"thenn := 4;elsecs_ten <= '1';if cs = '1' thenn := 4;end if;end if;elsif cs = '0' and n = 4 thenif dry_th = "0000"and dry_tl = "0000"thenn := 5;elsedr_ten <= '1';if dr = '1' thenn := 5;end if;end if;elsif dr = '0' and n = 5 thenxl_ten <= '1';if xl = '1' thenn := 6;end if;elsif xl = '0' and n = 6 thenpwf <= '1';end if;end if;end if;end process;-----------------------------记时----------------------------- ------------------进水记时--------------------------js_jishiqi:process(clk1, js_ten)beginif js_ten = '0' thenjs_dh <= water_inh;js_dl <= water_inl;js <= '0';elsif clk1 = '1' and clk1 'event thenif js_dh = "0000"and js_dl = "0000"thenjs <= '0';elsejs <= '1';if js_dl = "0000"thenjs_dl <= "1001";js_dh <= js_dh - 1;elsejs_dl <= js_dl - 1;end if;end if;end if;end process;-------------浸泡记时-----------------------im_jishiqi:process(clk1, im_ten)beginif im_ten = '0' thenim_dh <= im_th;im_dl <= im_tl;im <= '0';elsif clk1 = '1' and clk1 'event thenif im_dh = "0000"and im_dl = "0000"then im <= '0';elseim <= '1';if im_dl = "0000"thenim_dl <= "1001";im_dh <= im_dh - 1;elseim_dl <= im_dl - 1;end if;end if;end if;end process;-----------------洗涤记时---------------------- wa_jishiqi:process(clk1, wa_ten)variable m: integer;beginif wa_ten = '0' thenwa_dh <= wash_th;wa_dl <= wash_tl;wa <= '0';wa1 <= '0';wa2 <= '0';m := 0;elsif clk1 = '1' and clk1 'event thenif wa_dh = "0000"and wa_dl = "0000"then wa <= '0';elsewa <= '1';if m = 0 thenwa1 <= '1';wa2 <= '1';elsif m = 10 thenwa1 <= '0';wa2 <= '1';elsif m = 13 thenwa1 <= '1';wa2 <= '0';elsif m = 23 thenwa1 <= '0';wa2 <= '0';elsif m = 26 thenm := 0;end if;m := m + 1;if wa_dl = "0000"thenwa_dl <= "1001";wa_dh <= wa_dh - 1;elsewa_dl <= wa_dl - 1;end if;end if;end if;end process;--------------出水记时--------------------------- cs_jishiqi:process(clk1, cs_ten)beginif cs_ten = '0' thencs_dh <= water_outh;cs_dl <= water_outl;cs <= '0';elsif clk1 = '1' and clk1 'event thenif cs_dh = "0000"and cs_dl = "0000"then cs <= '0';elsecs <= '1';if cs_dl = "0000"thencs_dl <= "1001";cs_dh <= cs_dh - 1;elsecs_dl <= cs_dl - 1;end if;end if;end if;end process;--------------甩干记时-----------------------dr_jishiqi:process(clk1, dr_ten)beginif dr_ten = '0' thendr_dh <= dry_th;dr_dl <= dry_tl;dr <= '0';elsif clk1 = '1' and clk1 'event thenif dr_dh = "0000"and dr_dl = "0000"then dr <= '0';elsedr <= '1';if dr_dl = "0000"thendr_dl <= "1001";dr_dh <= dr_dh - 1;elsedr_dl <= dr_dl - 1;end if;end if;end if;end process;------------------响铃记时---------------------- xl_jishiqi:process(clk1, xl_ten)beginif xl_ten = '0' thenxl_dh <= "0010";xl_dl <= "0000";xl <= '0';elsif clk1 = '1' and clk1 'event thenif xl_dh = "0000"and xl_dl = "0000"then xl <= '0';elsexl <= '1';if xl_dl = "0000"thenxl_dl <= "1001";xl_dh <= xl_dh - 1;elsexl_dl <= xl_dl - 1;end if;end if;end if;end process;----------------------------显示时间--------------------------xianshishijian: process(clk1, js_ten, im_ten, wa_ten)beginif js_ten = '1' and im_ten = '0' and wa_ten = '0' and cs_ten = '0' and dr_ten = '0' and xl_ten = '0' thenif clk1 = '1' and clk1 'event thendis_th <= js_dh;dis_tl <= js_dl;end if;elsif im_ten= '1' and wa_ten= '0' and cs_ten= '0' and dr_ten= '0' and xl_ten = '0' thenif clk1 = '1' and clk1 'event thendis_th <= im_dh;dis_tl <= im_dl;end if;elsif wa_ten = '1' and cs_ten = '0' and dr_ten = '0' and xl_ten = '0' then if clk1 = '1' and clk1 'event thendis_th <= wa_dh;dis_tl <= wa_dl;end if;elsif cs_ten = '1' and dr_ten = '0' and xl_ten = '0' thenif clk1 = '1' and clk1 'event thendis_th <= cs_dh;dis_tl <= cs_dl;end if;elsif dr_ten = '1' and xl_ten = '0' thenif clk1 = '1' and clk1 'event thendis_th <= dr_dh;dis_tl <= dr_dl;end if;elsif xl_ten = '1' thenif clk1 = '1' and clk1 'event thendis_th <= xl_dh;dis_tl <= xl_dl;end if;end if;end process;----------------------------输出-----------------------------output:process(dis_th, dis_tl, im, js, cs, dr, wa1, wa2, xl, pwf)begindisplay_th <= dis_th;display_tl <= dis_tl;immersion <= im;water_in <= js;water_out <= cs;dry <= dr;z1 <= wa1;z2 <= wa2;voice <= xl;poweroff <= pwf;end process;end behave;测试文件:-------------------------------------------------------------- VHDL Testbench for xiyiji-- 2009 9 25 11 16 3-- Created by "EditVHDL"-- "Copyright (c) 2002 Altium Limited"------------------------------------------------------------Library IEEE;Use IEEE.std_logic_1164.all;Use IEEE.std_logic_textio.all;Use STD.textio.all;------------------------------------------------------------------------------------------------------------------------entity Testxiyiji isend Testxiyiji;------------------------------------------------------------------------------------------------------------------------architecture stimulus of Testxiyiji isfile RESULTS: TEXT open WRITE_MODE is"results.txt";procedure WRITE_RESULTS(alarm: std_logic;clk0: std_logic;clk1: std_logic;display_th: std_logic_vector(3 downto 0);display_tl: std_logic_vector(3 downto 0);dry: std_logic;dry_th: std_logic_vector(3 downto 0);dry_tl: std_logic_vector(3 downto 0);im_th: std_logic_vector(3 downto 0);im_tl: std_logic_vector(3 downto 0);immersion: std_logic;poweroff: std_logic;rst: std_logic;voice: std_logic;wash_th: std_logic_vector(3 downto 0);wash_tl: std_logic_vector(3 downto 0);water_in: std_logic;water_inh: std_logic_vector(3 downto 0);water_inl: std_logic_vector(3 downto 0);water_out: std_logic;water_outh: std_logic_vector(3 downto 0);water_outl: std_logic_vector(3 downto 0);z1: std_logic;z2: std_logic) isvariable l_out : line;beginwrite(l_out, now, right, 15);write(l_out, alarm, right, 2);write(l_out, clk0, right, 2);write(l_out, clk1, right, 2);write(l_out, display_th, right, 5);write(l_out, display_tl, right, 5);write(l_out, dry, right, 2);write(l_out, dry_th, right, 5);write(l_out, dry_tl, right, 5);write(l_out, im_th, right, 5);write(l_out, im_tl, right, 5);write(l_out, immersion, right, 2);write(l_out, poweroff, right, 2);write(l_out, rst, right, 2);write(l_out, voice, right, 2);write(l_out, wash_th, right, 5);write(l_out, wash_tl, right, 5);write(l_out, water_in, right, 2);write(l_out, water_inh, right, 5);write(l_out, water_inl, right, 5);write(l_out, water_out, right, 2);write(l_out, water_outh, right, 5);write(l_out, water_outl, right, 5);write(l_out, z1, right, 2);write(l_out, z2, right, 2);writeline(RESULTS, l_out);end procedure;component xiyijiport (alarm: in std_logic;clk0: in std_logic;clk1: in std_logic;display_th: out std_logic_vector(3 downto 0);display_tl: out std_logic_vector(3 downto 0);dry: out std_logic;dry_th: in std_logic_vector(3 downto 0);dry_tl: in std_logic_vector(3 downto 0);im_th: in std_logic_vector(3 downto 0);im_tl: in std_logic_vector(3 downto 0);immersion: out std_logic;poweroff: out std_logic;rst: in std_logic;voice: out std_logic;wash_th: in std_logic_vector(3 downto 0);wash_tl: in std_logic_vector(3 downto 0);water_in: out std_logic;water_inh: in std_logic_vector(3 downto 0);water_inl: in std_logic_vector(3 downto 0);water_out: out std_logic;water_outh: in std_logic_vector(3 downto 0);water_outl: in std_logic_vector(3 downto 0);z1: out std_logic;z2: out std_logic);end component;signal alarm: std_logic;signal clk0: std_logic;signal clk1: std_logic;signal display_th: std_logic_vector(3 downto 0);signal display_tl: std_logic_vector(3 downto 0);signal dry: std_logic;signal dry_th: std_logic_vector(3 downto 0);signal dry_tl: std_logic_vector(3 downto 0);signal im_th: std_logic_vector(3 downto 0);signal im_tl: std_logic_vector(3 downto 0);signal immersion: std_logic;signal poweroff: std_logic;signal rst: std_logic;signal voice: std_logic;signal wash_th: std_logic_vector(3 downto 0);signal wash_tl: std_logic_vector(3 downto 0);signal water_in: std_logic;signal water_inh: std_logic_vector(3 downto 0);signal water_inl: std_logic_vector(3 downto 0);signal water_out: std_logic;signal water_outh: std_logic_vector(3 downto 0);signal water_outl: std_logic_vector(3 downto 0);signal z1: std_logic;signal z2: std_logic;beginDUT:xiyiji port map (alarm => alarm,clk0 => clk0,clk1 => clk1,display_th => display_th,display_tl => display_tl,dry => dry,dry_th => dry_th,dry_tl => dry_tl,im_th => im_th,im_tl => im_tl,immersion => immersion,poweroff => poweroff,rst => rst,voice => voice,wash_th => wash_th,wash_tl => wash_tl,water_in => water_in,water_inh => water_inh,water_inl => water_inl,water_out => water_out,water_outh => water_outh,water_outl => water_outl,z1 => z1,);STIMULUS0:processbeginalarm <= '0';dry_th <= "1000";dry_tl<= "0000";im_th <= "0000";im_tl <= "0000";wash_th <= "0000";wash_tl <= "0000";water_inh <= "0000";water_inl <= "0000";water_outh <= "0000";water_outl <= "0000";rst <= '1';wait for 10ns;rst <= '0';wait for 1000ns;alarm <= '1';wait;end process;processbeginclk0 <= '1';clk1 <= '1';wait for 1ns;clk0 <= '0';clk1 <= '0';wait for 1ns;end process;WRITE_RESULTS(alarm,clk0,clk1,display_th,display_tl,dry,dry_th,dry_tl,im_th,im_tl,immersion,poweroff,rst,voice,wash_th,wash_tl,water_in,water_inh,water_inl,water_outh,water_outl,z1,z2);end architecture; 波形图:显示模块:此模块实现将由控制器件产生的时间显示的BCD码与地址选择信号同步的转化成可供LCD显示的ASCII码并同时显示字母WELCOME的功能!VHDL文件:LIBRARY IEEE;USE IEEE.std_Logic_1164.ALL;ENTITY OUTPUT ISPORT(R, CP, BUSY :IN Std_Logic;-----使能输入端,脉冲输入端,输入信号忙输入端--------LINE_OUT,STROBE,RST:OUT STD_LOGIC;------行选择输出端,输入数据使能输出端,复位输出端--- TIME_IN :IN STD_LOGIC_VECTOR(7 DOWNTO 0);--------输入时间-----------ADDR_OUT :OUT Std_Logic_Vector( 3DOWNTO 0);--------地址输出端----------DATA_OUT : OUT Std_Logic_Vector(7 DOWNTO 0));-----数据输出端---------END OUTPUT;ARCHITECTURE XS OF OUTPUT ISTYPE State_type IS(S0,S1,S2,S3,S4);SIGNAL S :State_Type;SIGNAL LCDPT:INTEGER RANGE 0 TO 9;BEGINPROCESS(CP,R)BEGINIF R='1' THENS<=S0;LCDPT<=0;RST<='1';ELSIF CP='1' AND CP 'EVENT THENCASE S ISWHEN S0=> S<=S1;LCDPT<=0;RST<='1';WHEN S1=> RST<='0';STROBE<='0';IF BUSY='0' THENLCDPT<=LCDPT+1;IF LCDPT=8 THENS<=S3;ELSES<=S2;END IF;END IF;WHEN S2=> S<=S1;STROBE<='1';WHEN S3=> STROBE<='0';IF BUSY='0' THENIF LCDPT=9 THENLCDPT<=8;LCDPT<=LCDPT+1;END IF;S<=S4;END IF;WHEN S4=> STROBE<='1';S<=S3;WHEN OTHERS=> NULL;END CASE;END IF;END PROCESS;PROCESS (LCDPT)BEGINCASE LCDPT ISWHEN 0 => NULL;WHEN 1 => DATA_OUT<="01010111" ; ADDR_OUT<="0011"; LINE_OUT<='0';WHEN 2 => DATA_OUT<="01000101" ; ADDR_OUT<="0100"; LINE_OUT<='0';WHEN 3 => DATA_OUT<="01001100" ; ADDR_OUT<="0101"; LINE_OUT<='0';WHEN 4 => DATA_OUT<="01000011" ; ADDR_OUT<="0110"; LINE_OUT<='0';WHEN 5 => DATA_OUT<="01001111" ; ADDR_OUT<="0111"; LINE_OUT<='0';WHEN 6 => DATA_OUT<="01001101" ; ADDR_OUT<="1000"; LINE_OUT<='0';WHEN 7 => DATA_OUT<="01000101" ; ADDR_OUT<="1001"; LINE_OUT<='0';WHEN 8 => DATA_OUT<="0011"&TIME_IN(7 DOWNTO4);ADDR_OUT<="0101";LINE_OUT<='1';WHEN 9 => DATA_OUT<="0011"&TIME_IN(3 DOWNTO0);ADDR_OUT<="0110";LINE_OUT<='1';END CASE;END PROCESS;END ARCHITECTURE;-------1,2,3,4,5,6,7输入字母WELCOME,8,9输入时间变化----------TEST文件:-- VHDL Testbench for output-- 2009 9 23 16 13 33-- Created by "EditVHDL"-- "Copyright (c) 2002 Altium Limited"------------------------------------------------------------Library IEEE;Use IEEE.std_logic_1164.all;Use IEEE.std_logic_textio.all;Use STD.textio.all;------------------------------------------------------------------------------------------------------------------------entity Testoutput isend Testoutput;------------------------------------------------------------------------------------------------------------------------architecture stimulus of Testoutput isfile RESULTS: TEXT open WRITE_MODE is"results.txt";procedure WRITE_RESULTS(ADDR_OUT: std_logic_vector(3 downto 0);CP: std_logic;DATA_OUT: std_logic_vector(7 downto 0);LINE_OUT: std_logic;Reset: std_logic;RST: std_logic;STROBE: std_logic) isvariable l_out : line;beginwrite(l_out, now, right, 15);write(l_out, ADDR_OUT, right, 5);write(l_out, BUSY, right, 2);write(l_out, CP, right, 2);write(l_out, DATA_OUT, right, 9);write(l_out, LINE_OUT, right, 2);write(l_out, Reset, right, 2);write(l_out, RST, right, 2);write(l_out, STROBE, right, 2);writeline(RESULTS, l_out);end procedure;component outputport (ADDR_OUT: out std_logic_vector(3 downto 0);BUSY: in std_logic;CP: in std_logic;DATA_OUT: out std_logic_vector(7 downto 0);LINE_OUT: out std_logic;Reset: in std_logic;RST: out std_logic;STROBE: out std_logic);end component;signal ADDR_OUT: std_logic_vector(3 downto 0);signal BUSY: std_logic;signal CP: std_logic;signal DATA_OUT: std_logic_vector(7 downto 0);signal LINE_OUT: std_logic;signal Reset: std_logic;signal RST: std_logic;signal STROBE: std_logic;beginDUT:output port map (ADDR_OUT => ADDR_OUT,BUSY => BUSY,CP => CP,DATA_OUT => DATA_OUT,LINE_OUT => LINE_OUT,Reset => Reset,RST => RST,STROBE => STROBE);STIMULUS0:processbeginRESET<='1';BUSY <= '0';WAIT FOR 2NS;RESET<='0';WAIT FOR 100NS ;RESET <= '1';WAIT FOR 100NS;wait;end process;PROCESSBEGINCP<='0';WAIT FOR 1NS ;CP<='1';WAIT FOR 1NS;END PROCESS;WRITE_RESULTS(ADDR_OUT,BUSY,CP,DATA_OUT,LINE_OUT,Reset,RST,STROBE);end architecture; 波形图:模块运用了器件库里的LCD显示器件:1、模块运用AD6现有资源,由晶振产生的10MHZ的基准时钟和分频器CDIV可将基准时钟分频,即后续模块所需要的不同频率脉冲及LCD(CLK0)控制器时钟.心得体会本次课程设计是一个很好的锻炼机会。
辽宁工业大学数字电子技术基础课程设计(论文)题目:洗衣机控制电路设计院(系):电子与信息工程学院专业班级:电子102班学号: 6学生姓名:李宏指导教师:吕娓教师职称:副教授起止时间:课程设计(论文)任务及评语院(系):电子与信息工程学院教研室:电子信息摘要本设计是基于数字电路定时器的洗衣机简易控制电路。
通过预置洗衣机的洗涤时间来自动的正反转和暂停,并且用不同的指示灯来表示洗衣机的正逆暂停三状态。
当到达一定时间后,会自动报警,发出蜂鸣声。
同时,用两位数码管来显示预置时间和洗涤剩余时间,具有良好的用户界面。
电路主要分为显示电路,秒脉冲发生电路,计时电路,报警状态电路和洗衣机正反转控制电路。
显示电路使用的是两个单位的共阴极八段数码管,秒脉冲发生电路采用了使用广泛的555定时器芯片,通过控制供电,产生秒信号,作为个芯片的时钟信号。
计时电路使用的是十进制的可逆计数器74LS192芯片,分别设计为十进制和六进制电路,用于完成时间的定时,计时功能。
报警电路和状态显示电路使用的是简单的74LS04非门和78LS08双输入与门组成的逻辑电路,分别控制蜂鸣器和发光二极管,来实现报警和状态显示。
次课程设计经实验与软件仿真,具有良好的可靠性,洗衣机控制电路的一般要求。
关键词:洗衣机控制电路;数字电子控制;定时器目录第1章洗衣机控制电路方案设计 (1)洗衣机控制电路的应用意义 (1)洗衣机控制电路设计的要求及技术指标 (1)洗衣机控制电路的方案设计 (1)总体设计方案的框图及分析 (2)第2章洗衣机控制电路各单元电路设计 (3)秒脉冲发生器的设计 (3)一百进制分计数器和六十秒计数器的设计 (3)循环控制电路电路设计 (5)第3章系统设计与分析 (7)整体电路及工作原理 (7)部分电路的分析及仿真 (9)第4章课程设计的总结 12参考文献 (13)附录:元器件清单 (14)第1章洗衣机控制电路方案设计洗衣机控制电路的应用意义现代生活人民生活水平越来越高,家家户户几乎都有一台洗衣机。
洗衣机由于洗涤方便受到广大用户的喜爱。
随着时代的发展洗衣机也在不停革新、发展。
本次课程设计要求利用定时器、数码管、LED等数字电路器件设计实现简易洗衣机功能。
设计时考虑了很多种情况,根据本人的能力选择了一种。
这个方案总共使用了一些或门、与门、非门以及电阻电容若干,74LS192 NE555定时器各一个完成了简易洗衣机的功能实现。
随着现在电子技术的发展和人们生活水平的提高,在不久的将来将会出现功能更加全面的全自动化洗衣机。
洗衣机控制电路设计的要求及技术指标普通洗衣机的主要控制电路是一个定制器,它按照一定的洗涤程序控制电机做正向和反向转动。
定时器可以采用机械式,也可以采用电子式,这里要求用中小规模集成芯片设计制作一个电子定时器,来控制洗衣机的电机作如下运转。
正转20S,暂停10S,反转20S,暂停10S。
如果定时时间到,则停机并发出音响信号。
设电机用继电器控制。
洗涤定时时间在0~20min内由用户任意设定。
用两为数码管显示洗涤的预置时间,倒计时方式对洗涤过程作计时显示,显示至时间到而停机。
当定时时间到达终点时,一方面使电机停转,同时发出音响信号提醒用户注意。
洗涤过程在送入预置时间后即开始运转。
三只LED灯表示“正转”、“反转”和“暂停”3个状态。
洗衣机控制电路的方案设计方案一:从课程设计要求来看,要求实现电机的正传、反转、暂停,实际上没有电机给我们接上,这回要用四个LED灯的状态来表示,当显示时间前20秒正传、暂停10秒、反转20秒、再暂停10秒,周期恰好是60秒,理所当然的分钟计数器、秒计数器是一定要有的。
接下来脉冲是一定的了,但是有分钟计数器和秒钟计数器还要考虑是不是要60分频器,就我们所学过的来说实现循环有移位寄存器;还有个问题,当洗涤时间到了,报警还要一个报警电路,根据人性化、自动化、低成本的设计原则,报警的蜂鸣器不可以长时间的叫,要有个合理的时间,我们可以用一个单稳态电路来实现。
还有一个问题要解决:如何提取时间并使循环电路工作的信号?一是直接从数值上进行提取信号来控制一个可以实现循环的74LS194来实现;方案二另一种实现循环的电路是制作一个二十进制到十进制的循环转化来把这一分钟走完,但是从电路的复杂程度和经济性来说,显然后者太过于复杂,也不利于接线和排故障,虽然难度会大一些、出成果的时间会比别人晚,但是要设计一个真正可以让用户用放心使用的产品,还得这样做。
尤其是最后的循环电路用两个194一定可以很容易实现。
经过两方案比较后方案一更加符合设计要求,而且更加经济。
总体设计方案的框图及分析首先,从秒脉冲出来的信号,经过一个控制电路后进入秒计数器进行秒计数,进行清零,这时用户置入洗涤时间,并按开始按钮,洗衣机开始工作。
当秒计数器变为零的时候,去分钟计数器上面借数;与此同时,从十秒位转化出来的信号进入移位寄存器后,LED灯表示出电机运转状态;当用户设定的洗涤时间结束后,电路报警并清零;同时电机指示灯熄灭。
图1-1总体框图第2章洗衣机控制电路各单元电路设计秒脉冲发生器的设计秒脉冲发生器由NE555电路及外围电路组成,其中R9=480K、R8=480K,C3=1uF的电阻电容值决定了脉冲宽度。
既T=(R8+2R9)C2ln2当T=1S,即可凑出R8、R9、C3其中C3=是为了保持输出的波形的稳定。
如图2-4所示,R9=480、C3=1uF组成一个串联RC充放电电路,在NE555的7脚上输出一个方波信号,C3上得到一个三角波。
此三角波送到NE555的2脚输入端。
由NE555内部的比较器和门电路共同作用,维持7脚上的方波信号和3脚上的输出方波。
图2-1 秒脉冲发生器原理图一百进制分计数器和六十秒计数器的设计一百进制分计数器和六十秒计数器的原理是一样的,不同的只是它们的输入脉冲和进制不同而已,我们用四片74LS192来实现分计数和秒计数功能,我们要的只是减计数,所以我们把它的UP端接到高电平上去,DOWN端接到秒脉冲上;十分秒位上的输入端B、C端接到高电平上,即从输入端置入0110(十进制的6),秒十位的LD端和借位端BO联在一起,再把秒位的BO端和十秒位的DOWN联在一起。
当秒脉冲从秒位的DOWN端输入的时候秒计数的192开始从9减到0;这时,它的借位端BO 会发出一个低电平到秒十位的输入端DOWN,秒十位的计数从6变到5,一直到变为0;当高低位全为零的时候,秒十位的BO发出一个低电平信号,DOWN为零时,置数端LD等于零,秒十位完成并行置数,下一个DOWN脉冲来到时,计数器进入下一个循环减计数工作中。
对于分计数来说,道理也是一样的;只是要求,当秒计数完成了,分可以自动减少,需要把秒十位的借位端BO端接到分计数的DOWN端作为分计数的输入信号来实现秒从分计数上的借位图2-2 分秒计数器电路图循环控制电路电路设计(1)其基本原理简述还是采用我们的方法,把秒十位上的数提出来作为循环控制系统的输入信号,秒位上的都是相同的,可以不管。
我们的目标是把秒十位上输出的二进制数转化成两位三个数:表2-1状态转换表现在我们把秒十位192的QA、QB接上一个异或门,QC接上一个反相器,然后把它们出来的信号接到一个与非门后再接到So端,把反相器出来的信号输入到S1端;这样就实现了上述要求。
当我们开机时,计数器是被清零的,QA、QB、QC没有输出,这时输出的是000,194的So、S1为11,移位寄存器置数为0010。
当192输出的是0101时,So、S1为10,移位寄存器右移动作,因为So、S1的两端接一个与非门出1,再通过一个接在194QB端的与门,结果输出来到发光二极管的还是高电平(如下图所示);从节点46输出,经过反相器到达节点48的是低电平与门U28没有输出脉冲,所以194做右移直到下一个状态的到来。
显然当192的输出是0100是也是一样的。
当输出是0011时,So、S1的状态是11,194处于并行置数,其QB端输出一个高电平1,与此同时,从So、S1输出的两个1进入与非门U27,但是在节点46是一个低电平0,所以节点44没有高电平输出。
而节点46为高电平1,这时通过U28的脉冲信号可以输出了,与U28的或门U22、U23、U24、U25、U26就可以输出脉冲信号到发光二极管实现闪烁;当192输出的是0010时,So、S1状态从11变为01,移位寄存器192做左移循环,在脉冲的输入下。
同右移一样,从So、S1输出到U27再出来的是一个高电平1,所以与门U26输出高电平;当计数器192输出的是0001时,还是和0010 时一样;最后当192输出是0000时,其又和输出0011时一样,移位寄存器194处于置数状态,放光二极管闪烁。
到此,提取信号、循环电路完成。
图2-3循环控制电路第3章系统设计与分析整体电路及工作原理图3-1系统总原理图现在各单元电路完成了,最后要把它们有效的结合起来联合工作,实现目的功能。
我们要求在给分钟置数的同时秒要显示为零;外部还要有强制停止并清零;还有暂停功能。
对于置数来说,我们可以在分钟计数器的UP端到高电平之间各用一个开关接上,就当给它一个低电平时,计数器就往上增加1。
但时,192要求在UP端工作的同时,其DOWN端要为高电平,且秒计数器要为零,我们可以让秒计数器清零,同时把脉冲停止了。
在高电平上接上一个开关,让它接到一个JK触发器上,同时把JK触发器的JK端接1,让它实现触发功能。
让它的Q端输出到秒计数器的清零端,这样刚开机或者再按一下开机键就可以对秒计数器清零。
把JK触发器的Q反端和从分计数器借位端Bo反相出来的信号接到一个与非门上,从与非门出来的信号接到分计数器的DOWN端来保证置数的时候DOWN是高电平。
但是如果仅是这样的话,当置数完成再一次按开机键(如图中的J5所示)时,没有脉冲信号输入到秒计数器的DOWN端,192并不可以工作。
我们可以把脉冲和JK 触发器Q反端接到一个与门上,然后把它上输出端接到秒计数器的DOWN端以控制计数。
现在的问题是,循环的发光二极管没有受到控制键的控制,所以还得把受到控制的从与门U16出来的信号输出到移位寄存器194的时钟信号CLK上。
最后要解决一个大问题,当所置的洗衣时间完成后,要发出报警并自动清零。
至于报警电路我们知道当计数器全为零的时候,从秒位会发出一个借位信号,一直接到十分位上去,十分位会发出一个借位信号,我们可以用这个信号来作为报警并清零的信号,平时192的借位端保持的是高电平,当有借位信号时,其变成0,我们在分十位借位端接一个非门,再把它和分位的CLR端一起接到一个或门,也需要把它接到一个JK触发器(U13)上作为其时钟信号,其后再接到单稳态电路的输入端TRI,单稳态的输出端接到蜂鸣器上。