华中科技大学
电子线路课程设计
题 目:智能洗衣机
院 系:控制科学与工程系
班 级:自动化100X班
姓 名:
联系方式:
指导老师:
snowwolf目录
一 题目分析。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。1
二 系统流程图.。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。2
三 主要模块介绍.。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。5
四 各按键功能.。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。眼罩英文6
五 仿真波形.。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。7
六 实验总结。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。8
七 附录。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。9
少儿如何学习英语
长五b火箭首飞成功一:题目分析
本次课程设计要求以Verilog HDL硬件描述语言为基础,以DE2开发板为工具,编写智能洗衣机的模拟程序。
首先,我在熟悉题目要求的前提下,将题目要求划分为以下几个小的项目,每个项目尽量用单独的模块实现其功能:
1 洗衣过程的转换:控制洗衣过程在每个过程对应的状态机之间 转换,用control.v模块实现。
2 洗衣时间的显示:通过直接调用上学期编写的24小时智能时钟程序的计时模块,并用总时间减去已用时间得到剩余时间,用led_show.v实现。
本程序的特色:
①led灯表示水位: 通过一定的算法,实现用led灯的亮灭表示水位。Led依次点亮表示注
水过程,相反,表示排水和甩干过程。
②1602 LCD液晶屏: 用LCD显示所有操作步骤和过程,包括选择模式,当前洗衣模式和状态,洗衣完毕等。这些过程都是用LCD液晶屏具体显示。
③按键使用和去抖: 因为要使用按键进行模式的选择,所以我用软件去抖的方式实现按键按动时的去抖。
④暂停键模拟断电保护:设计了一个暂停键,模拟真实情况中的断电保护。当暂停时模拟现实中的断电;暂停结束模拟现实中的重新上电,程序从断点继续运行。
二:系统流程图
MODE 1 OR MODE 2 OR MODE 3:
MODE 5
流程图说明:第一个为总的控制系统的流程图,后面三个为总流程图中,每种模式的详细流程图。
三:主要模块介绍
module my_start: 顶层模块,调用下层模块。
module HZ_1: 分频模块,通过10分频和5分频将50Mhz 分频成为1hz。
module control: 控制模块,控制洗衣模式状态机的转换。
module led_show: 倒计时模块,通过减去已用时间,得到剩余时间。
module put_bottom:软件去抖模块,通过软件去抖,检测按键按动情况。
module lcd_show: 1602液晶屏显示模块,包括驱动和需要显示的字符。
Module water_station:用led灯显示当前水位。
四:各按键功能
SW_0 :电源键,‘0’时表示power off(未开电源),‘1’表示洗衣机已经开机,处于工作状态,优先级最高。
SW_1 :暂停键,‘0’时表示正常工作,‘1’时表示暂停工作, 处于待机状态。
Key_2 :确定键,按下表示模式选择确定,进入洗衣工作状态。
Key_1 :模式选择键,洗衣机共有5种工作模式,用此键进行 选择模式。脸部美白
液晶屏 :显示洗衣机工作状态。
数码管 :显示洗衣机当前工作模式剩余时间和整个工作状态剩 余时间。
Hex7,hex6:表示当前状态剩余分钟。
Hex5,hex4:表示剩余时间(秒)。
Hex1,hex0:表示整个状态剩余时间。
jinan
Led: 表示洗衣机水位状态,水位越高,led灯亮的越多。
五:仿真波形
说明:bot_1为模式选择按键,bot_2为确认按键,当57us按动确认键后,进入所选择的的mode 1。wsh_sty为当前洗衣状态,0代表注水,1代表洗衣(为了缩短仿真时间,我将洗衣时间改成一分钟),2代表排水,3代表甩干,4代表漂洗。可以看到,洗衣过程如下:0-
1-2-3---0-4-2-3---0-4-2-3---wash over。符合要求,下载到开发板上以后也验证成功,mode 2和mode 3是类似状态,不再累述。
说明:这是mode 4的仿真图,wsh_sty中0代表注水,2代表排水,3代表甩干,4代表漂洗。可以看到,洗衣方式为0-4-2-3--0-4-2-3--wash overbottom什么意思,符合题目要求。
实验总结
在去年多功能时钟的基础上,今年的课程设计让我学会了很多的新知识,也少走了很多弯路。
①模块化设计的思想:本次课程设计使用了很多去年设计多功能时钟的模块,编写可移植模块,对程序编写有莫大的好处。
②学习到很多小的注意事项:以前编写程序,从来不管warning,但是本次课设,本着严格要求的态度,我把所有warning都详细baidu和修改了一遍,最终将两百多个warning减少到了15个。通过修改warningchina history,可以发现并改正很多不良习惯。
我的200多个警告里面大部分是因为无意识的疏忽造成的。比如,time_flag <= time_flag + 1;其中time_flag为11位寄存器型变量,编译时提示的警告为‘1’没有标明位数,被默认设置成为32位,所以改成指出英语 11'b1即可消除警告,这种重复性错误占有很大比例。
再比如,ca英国历史简介语句没有养成加defaulet的习惯,我认为虽然运行时似乎对程序没有影响,但是遇到干扰或者时序混乱等情况时可能会出现问题。
还有比如,写代码时,在模块名后面的输入输出变量声明时多写了一个逗号等。
这些都提醒自己在写代码时不能投机取巧,尽管不会产生错误,但却可能造成以后写Verilog时习惯性疏忽。