北邮数电实验 洗衣机控制器Word格式文档下载.docx
- 文档编号:15865696
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:33
- 大小:553.65KB
北邮数电实验 洗衣机控制器Word格式文档下载.docx
《北邮数电实验 洗衣机控制器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《北邮数电实验 洗衣机控制器Word格式文档下载.docx(33页珍藏版)》请在冰豆网上搜索。
D、漂洗和脱水;
E、洗涤、漂洗和脱水全过程。
(3)用发光二极管显示洗衣机的工作状态(洗衣、漂洗和脱水),并倒计时显示每个状态的工作时间,全部过程结束后,应有声音提示使用者,并保持在停止状态,直至再次开始。
(4)用点阵动画显示洗衣机工作过程中进水、波轮或滚筒转动、排水和甩干等的工作情况,四种工作情况的动画显示要有区别且尽可能的形象。
(5)用一个按键实现暂停洗衣和继续洗衣的控制,暂停后继续洗衣应回到暂停之前保留的状态。
1.2.提高要求:
(1)三个过程的时间有多个选项供使用者选择。
(2)可以预约洗衣时间。
(3)自拟其它功能。
2.系统设计
2.1.设计思路
按照实验要求,整个系统可按功能分为时钟分频、逻辑控制、按键功能、蜂鸣器报警、数码管显示、LED显示、点阵显示。
设计思路是先完成分频和逻辑控制的基本功能,在此基础上加入按键控制、报警和几个显示功能。
2.1.1输入部分:
设置了外部时钟,开始信号,暂停/继续信号,状态选择信号。
2.1.2控制部分:
(1)分频进程,将外部输入的50MHz时钟信号分频为1Hz和500Hz时钟信号,应用于倒计时计数和扫频;
(2)逻辑控制进程,在符合前提条件的情况下,根据预置的状态对输入数据进行分析判断,对应相应过程的洗衣,并完成不同状态的转变,将改变的输出信号送至输出部分显示;
(3)按键防抖动进程,避免在切换瞬间,因按键的来回弹跳对信号造成误操作;
(4)按键状态控制进程,判断按键前一状态来确定下一状态。
2.1.3输出部分:
(1)LED显示进程,显示当前选择的洗衣状态。
(2)数码管计数扫频及显示进程,将各个洗衣状态对应的时间及倒计时情况进行显示;
(3)点阵动画行扫描、计时及显示进程,根据不同的洗衣状态设计不同动画,并进行显示;
(4)报警进程,通过判断本次洗衣过程是否结束来发出报警信号。
2.2.总体框图
2.2.1总体框图
2.2.2MOS图
2.2.3流程图
2.3.分块设计
2.3.1分频进程
(1)进程说明
分频程序由2个程序来实现,利用分频的思想,从50MHz经过分频模块,得到1Hz和500Hz的时钟信号,其中1Hz的时钟信号用于其他进程的计时,500Hz时钟信号用于数码管扫频、点阵行扫频、按键防抖等进程。
(2)信号说明
clock:
输入的时钟信号;
clk:
第一个进程分频后1Hz的时钟信号,每触发一次高电平时间为1秒;
clk1:
第二个进程分频后500Hz的时钟信号。
2.3.2逻辑控制进程
为整个程序的主体,在输入拨码的高电平上升沿触发时,进行不同洗衣模式的切换;
根据选择的洗衣模式,确定洗衣的时间。
与led及点阵相关的代码是之后写进去的,为了逻辑思考的方便和减少代码量没有重新写进程。
长状态(比如70秒的全过程)中三个分状态的切换,通过一个计时器、一个计数器和一个变量来完成。
在倒计时开始后,变量记录下一个分状态的时间长,在状态切换时赋值给倒计时变量;
同时,在倒计时开始后,点阵时间计数器开始计时,在小过程动画切换时间点,计数器计数,用于控制点阵显示进程。
LED显示的实现为直接把选择状态的二进制码进行赋值。
1Hz时钟信号;
start、pause:
作为前提判断条件;
state:
洗衣状态对应的二进制码;
time:
倒计时时间变量;
temp:
记录下一状态时间的变量;
add:
点阵计时变量;
point:
计数器,记录当前时间对应的动画状态。
2.3.3按键防抖进程
按键防抖动模块负责暂停/继续按键的防抖动功能。
按键是机械式开关结构,在开关切换的瞬间会在接触点出现来回弹跳的现象,这种弹跳现象可能造成误动作而影响到正确性,当按下按键一次然后松开后,实际产生的按键信号跳动了多次,经过取样信号的检查后将会造成误判。
因此必须加上弹跳消除电路,避免误操作信号的发生。
以500Hz信号为时钟输入,变量m作为状态计数,当按键输入信号为高电平时,在时钟上升沿m加1,当m大于20时,即按键时间超过40ms时记为按键有效,把处理后信号赋值为高电平;
否则按键无效,把处理后信号赋值为低电平。
clk2:
分频后500Hz时钟信号;
pause_in:
原始输入的按键信号;
pause:
输出的防抖动的按键信号;
2.3.4按键状态控制进程
按键状态控制进程负责暂停/继续按键处理后的的电平状态切换。
按键和拨码不同处在于松手后按键恢复低电平,因此要持续时间保持或改变电平状态,需要另写一进程进行控制。
使用变量pa作为0/1计数,开始洗衣后,在防抖处理后的信号的上升沿时进行判断,若pa为1则维持暂停,输出低电平信号,同时pa赋值0;
若pa为0.说明此时状态为暂停,按键后应该继续洗衣,所以输出高电平信号,同时pa赋值0。
输出的信号就是其他进程中使用的暂停/继续信号。
start:
开始信号;
pause1:
输入的防抖动按键信号;
输出的保持状态按键信号。
2.3.5数码管显示进程
数码管显示选定洗衣状态的总时间以及倒计时的情况。
六个七段数码管中选择了两个来显示秒数的十位和个位,实际上轮流点亮而非一起点亮,通过使用扫频时钟信号和计数器来完成扫描,因为扫描频率足够大,利用人眼效应会使人感觉两个数码管同时亮。
分频后500Hz时钟信号;
cnt:
扫频计数器,直接控制cat[5..0]和t的切换;
倒计时过程中的当前时间;
cat[5..0]:
数码管显示位,”111011”和”110111”随扫频信号反复切换;
t:
十位、个位要显示的数字,随扫频信号反复切换;
distime[4..0]:
表示6个数码管将要显示的数字。
2.3.6报警器进程
使用1Hz信号时钟,在时钟上升沿判断当前状态,如果一个状态已结束,即state为”000”,则报警信号赋值为高电平,利用循环来限定蜂鸣器出响时间,出响时间即为计数器初值。
选定的洗衣状态;
alarm:
报警输出信号,高电平为出响;
alarmtime:
计数器,控制报警出响时间;
2.3.7点阵进程
负责显示不同洗衣过程对应的图案。
可选择的每个洗衣状态中包含进水、洗衣、漂洗、排水、甩干多个小过程,需要一个计数器控制每个小过程的时间,分析实验要求发现每个小过程的时间都是5秒的倍数,所以把每个小动画设计成5秒一个周期的循环动画。
与数码管显示同理,点阵的变化显示也需要通过扫频处理,需要设置专门的计数器负责扫行计数。
通过计数器产生点阵扫描,对行信号轮流进行扫描,为高电平的列信号表示被扫描行中对应列二极管发光。
当扫描频率足够大时,可以让人以为不同行的二极管同时点亮。
点阵的动画设计部分,设定了五种动画对应五个不同的小状态,设置变量记录当前时间对应的触发状态,进而控制点阵显示。
start、pause、state:
作为前提判断条件;
periodtime:
5s计时器,每个小过程的动画周期;
runnum:
扫行计数器;
计数器,记录当前时间对应的动画状态;
row[7..0]:
点阵列变量;
colorg[7..0]、colorr[7..0]:
点阵列变量。
3.仿真波形及波形分析
注:
为方便仿真,我修改了频率,并把每个进程提取出来分别进行了仿真。
3.1分频部分
3.1.1仿真波形图
3.1.2仿真使用代码
3.1.3仿真波形分析
进程p1分频系数为10,进程q2分频系数为20。
关于count的IF语句描述了一个计数模值为10的计数器,该计数器每一个计数周期结束,信号clk翻转一次,这样信号clk的周期为时钟信号clock周期的10倍,实现了对clock的10分频。
20分频同理。
实际实验中使用的是50MHz和500Hz的分频。
3.2状态转换部分
3.2.1仿真波形图
3.2.2仿真使用代码
3.2.3仿真波形分析
初始状态为“000”,当模式选择开关高电平的上升沿到来时,状态改变一次。
输出的LED状态显示依次为001、010、100、100、110、111、000。
3.3按键部分
3.3.1仿真波形图
3.3.2仿真使用代码
3.3.3仿真波形分析
执行语句的条件为开始开关处于高电平,pause_in是输入的按键信号,当输入按键信号高电平持续时间大于3个时钟信号,输出pause1信号的为高电平,pause1信号才有效;
否则,当输入按键信号高电平持续时间小于3个时钟信号,如第640ns之后的按键高电平信号,没有触发有效的pause1信号,即实现了防抖的功能。
第一个pause_in高电平信号之后,即pause1信号第一次置为高电平时,输出高电平的pause信号,进入暂停状态,此信号就是在其他进程中使用的最终信号;
pause1信号第二次置为高电平时,输出低电平的pause信号,继续开始。
3.4数码管部分
3.4.1仿真波形图
3.4.2仿真使用代码
3.4.3仿真波形分析
以40秒模式为例。
执行语句的条件为开始开关处于高电平,观察仿真波形可以看到扫频时钟信号每触发一次高电平,扫行信号cat在110111和111011之前切换一次。
clk为计时信号,clk2为扫频信号,频率做了修改以便于仿真。
为了方便观察,我把原代码中的distime变量的改为了distime_ge和distime_shi两个变量。
distime_ge为数码管显示的个位,可以看到,以cat信号两次高电平为周期,distime_ge的值变化一次,为"
1111011"
、"
1111111"
1110000"
1011111"
1011011"
0110011"
1111001"
1101101"
0110000"
1111110"
,即从9到0递减;
distime_shi为数码管显示的十位,可以看到distime_shi先是显示"
,即最初的数字4,开始倒计时后显示"
,即数字3,在十个clk时钟信号后变成"
,即数字2。
3.5报警器部分
3.5.1仿真波形图
3.5.2仿真使用代码
3.5.3仿真波形分析
在state为“000”,即结束状态时,alarm为高电平,时间为4个时钟信号的长度,即蜂鸣器发出了4秒声响。
state为其他值是alarm均为低电平。
在时钟上升沿判断,当state为“000”时,进入计数循环,变量值从0累加到4时以后赋给alarm高电平。
3.6点阵时间分配部分
3.6.1仿真波形图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北邮数电实验 洗衣机控制器 北邮数电 实验 洗衣机 控制器