




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .数字电路综合实验报告实验名称: 简易电压力锅控制器的设计与实现学院:信息与通信工程学院专业:通信工程班级:班内序号:学号:姓名:目录一、设计课题的任务要求4基本要求4提高要求5二、系统设计(包括设计思路、总体框图、分块设计)51、设计思路52、总体框图73、分块设计7(1)控制器模块 (mystep) 7(2)分频器 & 计时器模块 (myclk)9(3)点阵模块 (mydianzhen) 9(4)数码管模块 (mydigital) 11(5)蜂鸣器模块 (mybuzzer) 11(6) LED 模块 (myled) 12
2、(7)防抖模块 (myfangdou) 12(8)顶层文件 (myall) 12三、仿真波形及波形分析131控制器模块13文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .2分频器 & 计时器模块143点阵模块154数码管模块175蜂鸣器模块196LED 模块207防抖模块208总体仿真20四、源程序 211控制器模块212分频器 & 计时器模块253点阵模块284数码管模块385蜂鸣器模块426LED 模块447防抖模块468顶层文件48五、功能说明及资源利用情况501功能说明502系统总流程图513资源利用情况53六、故障及问题分析54七、总结和结论 561总结562
3、结论57这是北京邮电大学通信工程 数字电路与逻辑设计实验(下)2016 年的实验报告。本实验是我独立完成,每行代码都是自己敲的,因此耗费了10 整天从早到晚待在实验室。不过也因为如此,有些语句可能只是我一个人的思路,非常通俗,换个词就是低端,和一般思路不一样。而且这个实验的要求每年都会有小变化,不过思路都不会大变。代码有比较详细的注释。文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .一、设计课题的任务要求设计制作一个简易电压力锅控制器。基本要求:电压力锅控制器的基本工作流程分三个步骤:等待设置状态煮炖状态保温状态。在等待设置状态下,用户可以按动BTN7选择煮米饭的口感或
4、按动BTN6选择营养炖的菜单,选择完成后,按一下开始键BTN0,电压力锅进入煮炖状态。在煮炖状态下BTN7和 BTN6将被禁用,煮炖状态又分为三个阶段:升压保压降压。不同口感的米饭和营养炖菜单的升压和降压时间均为4 秒,但保压时间和最大压力档位不同,详见附表。当电压力锅内的压力降到零,煮炖状态结束,蜂鸣器鸣响3 声,同时控制器自动转到保温状态,直到用户按一下取消键BTN1,则电压力锅控制器回到等待设置状态,用户可以取出煮炖好的食物享用,而电压力锅控制器则可以准备进行下一次的烹饪工作。要求:1、煮米饭口感选择:用按键BTN7实现米饭口感的切换,按下此键依照清香标准浓郁的顺序依次循环变化,用点阵显
5、示当前选择的口感,点阵显示要求见附表;2、营养炖菜单选择:用按键BTN6实现营养炖菜单的切换,按下此键依照排骨煲汤熬粥鸡鸭肉豆类/ 蹄筋的顺序依次循环变化,用点阵显示当前选择的菜单,点阵显示要求见附表;3、等待设置状态下点阵显示* 号,保温状态下点阵显示B;4、用发光二极管LD0LD7显示当前锅中的压力,点亮的发光二极管越多表示锅内的压力越大,点亮LD0 表示1 档压力,点亮LD0 和LD1 表示2 档压力,点亮LD0、 LD1和 LD2 表示3 档压力,以此类推,最大压力为8 档( 8 个发光二极管LD0LD7全亮)。在等待设置状态和保温状态下8 个发光二极管全不亮,压力为0。在煮炖状态的升
6、压阶段,根据所选择的米饭口感或营养炖菜单的最大压力档位,发光二极管逐点匀速点亮到对应档位的最大压力,保压阶段发光二极管保持为最大压力档位不变,降压阶段,发光二极管从该档位的最大压力逐点匀速熄灭至全灭;5、用数码管DISP1 和 DISP0 倒计时显示煮炖的剩余时间;6、煮炖状态结束转入保温状态的同时,蜂鸣器鸣响3 声,提醒用户可以享用美味了。文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .提高要求:1、增加预约功能:用BTN3和 BTN2设置预约时间,预约时间从5 秒到 99 秒可选,用数码管 DISP3 和 DISP2 倒计时显示预约的剩余时间,预约剩余时间结束,自动
7、进入煮炖状态,按照预约前设定的米饭口感或营养炖的菜单进行工作;2、所有用点阵显示的内容都改为用液晶显示;3、用数码管显示的倒计时改用液晶显示;4、自拟其他功能。二、系统设计(包括设计思路、总体框图、分块设计)1、设计思路( 1)模块化设计使用自顶向下(top-down)设计法,点阵(mydianzhen)、数码管(mydigital)、蜂鸣器 (mybuzzer)、 LED(myled) 每种输出各一个模块,防抖(myfangdou)为一个模块,计时器和分频器 (myclk) 写在一个模块里即可,另外按键输入集中至一个控制器模块(mystep) ,共计 7 个模块 +1 个顶层文件 (myal
8、l)。2)阶段化设计使用标志位标志每种状态,达到阶段化执行的目的。基础功能分为6 个阶段:等待设置状态(无标志位)、升压(step_1)、保压(step_2)、降压 (step_3)、蜂鸣器响(step_buzzer)、保温状态(step_4);预约功能分为3 个阶段:设置预约时间(step_e0)、等待设置状态(step_e1)、预约倒计时(step_e2)。另外还有一个预约倒计时结束的标志位step_e3。3)需要注意的问题第一,要求是降压结束后蜂鸣器响三声再进入保温状态,而不是在保温状态开始时响三声,因此点阵应在蜂鸣器响后再显示B;第二,等待设置状态的开始应是无任何显示,而在反复按下BT
9、N6/BTN7时不应出现无显示的情况,因此口感计数器(state1)和菜单计数器 (state2)应该都有一个初始状态;文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .第三,在执行某个个阶段时,之前和之后阶段的输入按键必须被全部禁止/ 无效(BTN1除外),因此应使用较多的if-elsif语句或case语句,而且应注意顺序和插入位置;第四,在按下BTN1后需要清零的变量/ 信号 / 端口应注意清零,而且注意不要做无谓的清零(有些信号会随着控制它的信号的清零而清零,因此无需对这些信号再清零)。2、总体框图控制器防抖按键LED分频器 & 计时器数码管时钟点阵蜂鸣器注:箭头表
10、示信号传递方向。3、分块设计1)控制器模块( mystep)本部分实现将按键输入转化为状态计数器和标志位。根据要求有:BTN7:米饭口感清香标准浓郁循环;文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .BTN6:营养炖口感排骨煲汤熬粥鸡鸭肉豆类/ 蹄筋循环;BTN0:控制等待设置状态的结束,按下后BTN6、BTN7被禁止;BTN2:控制预约设置时间的低位( 0-9 ),其中当高位为 0 时低位不能小于5;BTN3:控制预约设置时间的高位(0-9 );BTN4:控制预约时间选择的开始和结束。按下第一次后 BTN6、BTN7、 BTN0被禁止,按下第二次后 BTN6、 BT
11、N7、BTN0解除禁止, BTN2、 BTN3、BTN4被禁止。BTN1:在保温状态结束后按下,则回到等待设置状态;此外,将 BTN1的功能强化为任何时候按下均可回到等待设置状态。实现思路为按键控制state1、 state2两个计数器循环变化,再将它们合并为一个信号choice便于后续处理,其中使用较多的if语句对标志位进行判断。注:本模块产生的标志位有step_1,step_e0,step_e1,step_e2;使用的状态位有step_1,step_e0,step_e1,step_e3。基础功能状态转移图如下:文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .米饭口感
12、营养炖菜单AZNYBT初始QXPG初始DTBZJY注:绿色为按下BTN7 的状态转移,浅蓝色为按下BTN6 的状态转移。文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .预约时间设置的状态转移图如下:低位:若高位为 0(开始) 56789若高位为 0若高位不为043210高位:(开始) 0123498765注:深蓝色为按下BTN2的状态转移,橙色为按下BTN3的状态转移。2)分频器 &计时器模块 (myclk)本实验采用的时钟源为1KHz,本模块根据各模块需求分出了100Hz、 10Hz、 5Hz 的时钟。为了节省资源,分频器之间使用串联结构。分频器的实现不再赘述。本模块
13、还整合了计时功能,即开始预约倒计时或煮炖状态后进行计时,产生状态位控制其它模块的运行。为了提高精度,计时功能的process 没有使用 1Hz 的时钟,而是使用 10Hz 的时钟。计时器的实现同样使用计数器。注:本模块产生的标志位有step_2,step_3,step_e3,step_buzzer;使用的标志位有step_1,step_3,step_4,step_e1,step_e2,step_e3。3)点阵模块 (mydianzhen)点阵扫描控制器的系统结构如下:文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .输入控制信号扫描控制电路显示预存的字母点阵显示控制框图如
14、下:时钟列控制分频输入扫描电路电路8*8矩阵显示行控制扫描电路根据要求有:初始状态点阵不显示;从等待设置状态按下BTN6/BTN7后至降压状态结束的过程中,持续显示相应字母;保温状态显示B。追加功能有:从等待设置状态至升压过程显示黄色,保压过程显示红色,降压过程显示绿色;设置预约时间的过程点阵显示“YY”;YY与 B 均为滚动显示。文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .由于本实验显示的字母在一个点阵屏上就可以完全显示,因此使用循环左移完成滚动功能。滚动频率为5Hz;点阵扫描频率为1KHz。不同情况不同显示使用if-elsif与 case 语句的嵌套实现,再嵌套
15、一个其中使用计数器实现对点阵的行扫描。case,在另外,为了提高点阵显示的亮度,本实验没有使用点阵的第一行和最后一行,即字母的显示仅使用的中间的六行;为了保持每个点的亮度一致,使用了行扫描。注:本模块使用的标志位有step_1,step_2,step_3,step_4,step_e0,step_e1( 4)数码管模块 (mydigital)根据要求有:基础部分 (DISP0,DISP1) :初始状态数码管不显示;等待设置状态根据选择显示该状态所需时间;煮炖状态显示煮炖状态剩余时间;保温状态数码管不显示。预约部分 (DISP2,DISP3) :初始状态数码管不显示;设置预约时间时根据输入显示;预
16、约倒计时时显示剩余时间。在本实验中,实现的是预约倒计时结束后DISP2、 DISP3 熄灭。实现思路为使用一个计数器 (DISP_TEMP)控制当前应该扫描哪个数码管,用 if 语句判断当前处于何种状态,用 case 语句判断对当前数码管输出哪个数字。由于使用的是 1KHz的时钟源,共扫描4 个数码管,因此每个数码管的扫描频率为250Hz。5)蜂鸣器模块 (mybuzzer)根据要求有:降压结束后蜂鸣器响三声,之后进入保温状态。实验板上的蜂鸣器为无源蜂鸣器,根据输出电平的频率发出不同音调的声音。因此实现思路为:使用1KHz的时钟源,当降压结束后执行每一次时钟上升沿时输出电平翻转一次,得到的输出
17、频率为500Hz。使用一个计数器控制蜂鸣器的响和中间静音的时长,响每次时长0.5 秒,静音每次时长0.25 秒;使用另一个计数器控制蜂鸣器响 3 声,静音 3 次,之后给进入保温状态的标志位赋1。文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .6) LED模块 (myled)根据要求有:升压过程中 LED逐个匀速亮起至最大压力值;保压过程中 LED持续亮起;降压过程中 LED逐个匀速熄灭至0;其它状态 LED不亮。为提高精度(如按煲汤的6 档压力亮起时, 4 秒/6 有小数),使用100Hz 时钟而不是 10Hz 时钟。实现思路同样是使用计数器和case 语句,来判断当
18、前处于何种状态并控制灯的亮灭。7)防抖模块 (myfangdou)为了避免抖动引起的误操作,需要将所有外部按键输入接入本模块中,再输出给其它模块。本模块使用的是100Hz 的时钟。8)顶层文件 (myall)为简明起见,本部分使用的连接信号为A-X 这 24 个英文字母。另外,为便于识别,每个模块相互连接的信号的名称相同。三、仿真波形及波形分析为便于仿真及显示,所有时钟频率均加快1000 倍,如 CLK_100Hz的周期为 10us。另外,将对第一次出现的信号/ 变量进行解释说明。1控制器模块( 1)基本功能仿真Choice 是存储使用者选择的信号, 0 为初始状态, 1-3 为米饭口感, 4
19、-8 为营养炖菜单; Time_all 是总时间; Time_ehigh 和 Time_elow 是预约功能设置时间的高低位。可见: a. 按下 BTN6和 BTN7后 CHOICE变化;b. 按下 BTN0后 BTN6和 BTN7被禁止 ;c. 按下 BTN1后所有计数器和标志位清零。( 2)预约功能仿真可见: a. 进入预约时间设置时BTN6、BTN7、 BTN1被禁止;b.进入预约时间设置时预约时间低位初值是5;文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .c.预约时间高位 0 时低位可以变到小于4;预约时间高位变到 0 时低位若小于 5 则变为 5;进入等待设
20、置状态后 BTN2、 BTN3被禁止;按下 BTN0后 step_1 并没有变为 1,而是在 step_e3 标志位变为 1 后才变为 1;按下 BTN1后所有计数器和标志位被清零。分频器 &计时器模块1)分频器仿真可以清晰地看到实现了分频功能。2)计时器基本功能仿真Lefttime为倒计时,在 lefttime=11 时 step_2 被赋予 1;在 lefttime=4 时 step_3 被赋予 1;在 lefttime=0 时 step_4 被赋予 1。可见实现了倒数计时功能和在相应时刻标志位变化的功能。( 3)计时器预约功能仿真Lefttime_extra为倒计时,在lefttime_
21、extra=0时 step_e3 被赋予 1, 可见实现了预约倒数计时功能及在相应时刻标志位变化的功能。点阵模块( 1)基础功能仿真(例)COL1向点阵红色二极管输出,COL2向点阵绿色二极管输出;ROW向点阵航信号(发光二极管公共端)输出。等待设置阶段和升压时,根据选择choice=4 (排骨),点阵显示黄色PG;保压时,点阵显示红色PG;降压时,点阵显示绿色PG;保温时,点阵显示红色B。综上,使用标志位可以控制点阵在不同阶段以不同颜色显示不同的字母。( 2)点阵滚动仿真ROL为循环左移计数器,使用CLK_5Hz进行控制。文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持
22、.设置预约时间时,点阵显示红色YY;并且为滚动显示。滚动计数由ROL_COUNT完成。可见实现了点阵滚动显示的功能。保温时的滚动同理((1) 基础功能仿真中,由于是给输入信号clk_5Hz赋持续低电平,因此没有滚动显示)。数码管模块( 1)基础功能仿真DISP_TEMP控制当前选择哪个数码管显示,CAT向数码管的CAT输出, TUBE向数码管的段码输出。可见,等待设置状态时,若还没有进行选择,则数码管不显示;进行选择后,DISP0 和 DISP1 显示相应数字,DISP2 和 DISP3 不显示。( 2)预约功能仿真可见,进行预约时间设置时,DISP0、 DISP1 不显示, DISP2、DI
23、SP3 根据输入显示;进入等待设置状态后,DISP2、DISP3 维持显示, DISP0、DISP1 根据输入显示。3)倒计时仿真(例)由于预约倒计时显示和基本功能倒计时的思路是相同的,因此这里就以基础功能的倒计时为例。如图是剩余时间(lefttime)从 8 变为 5 的过程,可见在剩余时间变化时,数码管输出随着lefttime的变化而变化,实现了倒计时显示的功能。蜂鸣器模块Buzzer 向 beep 输出。 Ring3_Count 控制当前进行发声还是静音,或者是结束鸣响转向保温状态。蜂鸣器按 500Hz 的频率改变电平;可见响 3 次,停 3 次之后保温阶段的标志位 (step_4) 变
24、为 1;可见各信号能被 BTN1清零。6.LED 模块LED向 LD0-LD7 输出。可见,升压和保压阶段LED灯在 4s 内匀速亮起至最大后保持最大;降压阶段 LED灯在 4s 内匀速熄灭至全灭。文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .虽然有少量毛刺,但并没有影响LED的功能。防抖模块可见实现了防抖功能,而且可以看出,按键输出的脉宽与使用时钟的脉宽相同。8总体仿真从 LED的变化情况可以看出,实现了预约功能和基本功能。且返回等待设置状态后可以准确准备下一次功能。四、源程序由于 word 文档与 quartus的排版有差异,因此在这里对代码进行了整理,行数和VH
25、DL中不同。1控制器模块LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;ENTITY MYSTEP IS以下将对第一次出现的变量 / 信号进行注释。PORT(BTN0,BTN1,BTN2,BTN3,BTN4,BTN6,BTN7,STEP_E3:IN BIT;-BTN4 用来控制预约时间选择的开始和结束;-E 表示 extra ,step_e 系列用作预约功能的标志位,0 表示进入预约选择, 1 表示结束预约选择, 2 表示预约后口感 / 菜单选择的结束, 3 表示预约倒计时结束,进入升压状态;CHOICE:BUFFER INTEGER RANGE 0 TO
26、8;-choice表示口感 / 菜单的选择, 0 表示初始状态,- 择, 4-8 为营养炖菜单选择;STEP_1,STEP_E0,STEP_E1:BUFFER BIT;-step系列用作基础功能的标志位,0 表示进入口感- 未预约时口感 / 菜单选择的结束,进入升压状态,1-3 为米饭口感选/ 菜单选择, 1 表示2 表示进入保压状态, 3 表示进入降压状态, 4 表示进入保温状态;STEP_E2:OUT BIT;TIME_ALL:OUT INTEGER RANGE 0 TO 30;-time_all表示基础功能的总时间;TIME_EHIGH,TIME_ELOW:BUFFER INTEGER
27、RANGE 0 TO 9);-time_ehigh表示预约时间的十位,time_elow 表示预约时间的个位。END MYSTEP;ARCHITECTURE A OF MYSTEP ISSIGNAL STATE1:INTEGER RANGE 0 TO 3;-state1表示口感的选择,文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .SIGNAL STATE2:INTEGER RANGE 0 TO 5;-state2表示菜单的选择。实际上按键改变的是state1- 过 process ( state1 ,state2 )将选择整合为一个信号和 state2 ,再通choi
28、ce 的。BEGINPROCESS(BTN0,STEP_E3,BTN1)- 此进程控制等待设置状态的结束。BEGINIF (BTN1=1) THEN STEP_1=0; STEP_E2=0;-BTN1 为清零信号。ELSIF (STEP_E3=1) THEN STEP_1=1;- 若预约倒计时结束,那么进入升压状态ELSIF (BTN0EVENT AND BTN0=1) THEN- 若按下 BTN0,IF (CHOICE/=0) THEN若进行了口感 / 菜单选择, BTN1按下才有影响,否则不进入升压状态。IF (STEP_E0=0) THEN STEP_1=1;若并未设置预约,则直接进入升
29、压状态;ELSIF (STEP_E1=1) THEN STEP_E2=1;若设置了预约,则进入预约倒计时状态。END IF;END IF;END IF;- 注意到进入下一个elsif的条件是上一个if/elsif的条件 =0。END PROCESS;PROCESS(BTN7,BTN6,BTN1)此进程控制 BTN7(煮米饭口感)的状态变化。BEGINIF (BTN1=1 OR BTN6=1) AND STEP_1=0) THEN STATE1=0;- 不光 BTN1要清零,如果在等待设置状态时按下BTN7后又按下 BTN6,那么设定米饭口感的状态要被清零。若按下 BTN7,IF (STEP_E
30、0=0 OR (STEP_E0=1 AND STEP_E1=1) AND STEP_1=0)THEN当没有进行预约或者进行预约并且预约时间选择已经结束时,并且还在等待设置状态时,按下的 BTN7才能改变 state1 。从 3 变到 1 是为了循环,从 0 变到 1 是为了从初始状态(什么都不显示)变到第一个状态。ELSE STATE1=STATE1+1;END IF;END IF;END IF;END PROCESS;文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .PROCESS(BTN6,BTN7,BTN1)- 此进程控制BTN6(营养炖菜单)的状态变化。同上一个p
31、rocess 。BEGINIF (BTN1=1 OR BTN7=1) AND STEP_1=0) THEN STATE2=0; ELSIF (BTN6EVENT AND BTN6=1) THENIF (STEP_E0=0 OR (STEP_E0=1 AND STEP_E1=1) AND STEP_1=0)THENIF (STATE2=0 OR STATE2=5) THEN STATE2=1;ELSE STATE2=STATE2+1;END IF;END IF;END IF;END PROCESS;PROCESS(BTN4,BTN1)此进程控制选择预约时间的开始和结束。BEGINIF (BTN1
32、=1) THEN STEP_E0=0; STEP_E1=0;ELSIF (BTN4EVENT AND BTN4=1) THENIF (STEP_E0=1) THEN STEP_E1=1;如果是第一次按下 BTN4,说明是选择预约时间开始;ELSIF (CHOICE=0 AND STEP_1=0) THEN STEP_E0=1;如果是第二次按下 BTN4,说明是选择预约时间结束。END IF;END IF;END PROCESS;PROCESS(BTN2,TIME_EHIGH,BTN1,STEP_E0)此进程控制预约时间的低位变化。BEGINIF (BTN1=1) THEN TIME_ELOW=
33、0;ELSIF (TIME_EHIGH=0 AND TIME_ELOW=4 AND STEP_E0=1) THEN TIME_ELOWCASE TIME_ELOW ISWHEN 0 TO 4= TIME_ELOW TIME_ELOWTIME_ELOWCASE TIME_ELOW ISWHEN 0 TO 8= TIME_ELOWTIME_ELOW=0;END CASE;END CASE;END IF;END IF;END PROCESS;PROCESS(BTN3,BTN1)此进程控制预约时间的高位变化。基本同上。BEGINIF (BTN1=1) THEN TIME_EHIGH=0;ELSIF (
34、BTN3EVENT AND BTN3=1) THENIF (STEP_E0=1 AND STEP_E1=0) THENIF (TIME_EHIGH=9) THEN TIME_EHIGH=0;ELSE TIME_EHIGH CASE STATE2 ISWHEN 0= CHOICE=0; TIME_ALL CHOICE=4; TIME_ALL CHOICE=5; TIME_ALL CHOICE=6; TIME_ALL CHOICE=7; TIME_ALL CHOICE=8; TIME_ALL CHOICE=1; TIME_ALL CHOICE=2; TIME_ALL CHOICE=3; TIME_
35、ALL=15;END CASE;END PROCESS;END A;2分频器 &计时器模块LIBRARY IEEE;USE IEEE. STD_LOGIC_1164.ALL;ENTITY MYCLK IS文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .PORT(STEP_1,STEP_4,BTN1,STEP_E1,STEP_E2,CLK:IN BIT;CHOICE:IN INTEGER RANGE 0 TO 8;TIME_ALL:IN INTEGER RANGE 0 TO 30;TIME_EHIGH,TIME_ELOW:IN INTEGER RANGE 0 TO 9;C
36、LK_100Hz,CLK_5Hz:BUFFER BIT;LEFTTIME:BUFFER INTEGER RANGE 0 TO 30;-lefttime表示基础功能剩余时间;LEFTTIME_EXTRA:OUT INTEGER RANGE 0 TO 99;-lefttime_extra表示预约剩余时间;STEP_2:OUT BIT;STEP_E3:BUFFER BIT;STEP_3,STEP_BUZZER:OUT BIT);- 由于基础功能时间结束后要求蜂鸣器响- 用 STEP_BUZZER标志这一段时间。3 声再进入保温状态,因此需要END MYCLK;ARCHITECTURE B OF MY
37、CLK ISSIGNAL TIME_EALL:INTEGER RANGE 0 TO 99;- 将预约设定时间的高位和低位合起来。SIGNAL CLK_10Hz:BIT;BEGINPROCESS(CLK)使用的是 1KHz的时钟源。此进程产生 100Hz 的时钟,它被用在防抖模块、 LED模块。VARIABLE CLK_100Hz_COUNT:INTEGER RANGE 0 TO 4;BEGINIF (CLKEVENT AND CLK=1) THENIF (CLK_100Hz_COUNT=4) THEN CLK_100Hz=NOT CLK_100Hz; CLK_100Hz_COUNT:=0;EN
38、D IF;END IF;END PROCESS;PROCESS(CLK_100Hz)此进程产生 10Hz 的时钟,它被用在本模块最后的计时进程中。VARIABLE CLK_10Hz_COUNT:INTEGER RANGE 0 TO 4;BEGINIF (CLK_100HzEVENT AND CLK_100Hz=1) THENIF (CLK_10Hz_COUNT=4) THEN CLK_10Hz=NOT CLK_10Hz; CLK_10Hz_COUNT:=0;ELSE CLK_10Hz_COUNT:=CLK_10Hz_COUNT+1;END IF;END IF;END PROCESS;文档来源为
39、 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .PROCESS(CLK_10Hz)此进程产生 5Hz 的时钟,它被用在点阵模块的滚动显示控制中。BEGINIF (CLK_10HzEVENT AND CLK_10Hz=1) THENCLK_5Hz=NOT CLK_5Hz;END IF;END PROCESS;PROCESS(TIME_EHIGH,TIME_ELOW)BEGINTIME_EALL=TIME_EHIGH*10+TIME_ELOW;END PROCESS;PROCESS(CLK_10Hz,BTN1)计时进程。VARIABLE TIME_ALL_COUNT:INTEGER
40、RANGE 0 TO 310;VARIABLE TIME_ALL_ECOUNT:INTEGER RANGE 0 TO 1000;BEGINIF (BTN1=1) THENTIME_ALL_COUNT:=0;TIME_ALL_ECOUNT:=0;STEP_3=0;STEP_2=0;STEP_BUZZER=0;STEP_E3=0;ELSIF (CLK_10HzEVENT AND CLK_10Hz=1) THENIF (STEP_4=0) THENLEFTTIME10Hz,因此若不赋予这两个信号初值,就会导致数码管在煮炖状态开始时显示0。LEFTTIME_EXTRA=TIME_EALL;IF (ST
41、EP_1=1) THEN- 进入煮炖状态。LEFTTIME=4)THEN STEP_2=TIME_ALL)THEN STEP_BUZZER=TIME_EALL) THENSTEP_E3=1;ELSE文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .LEFTTIME_EXTRA=TIME_EALL-TIME_ALL_ECOUNT/10; TIME_ALL_ECOUNT:=TIME_ALL_ECOUNT+1;END IF;END IF;END IF;END IF;END PROCESS;END B;3点阵模块LIBRARY IEEE;USE IEEE. STD_LOGIC_1
42、164.ALL;ENTITY MYDIANZHEN ISPORT(STEP_1,STEP_2,STEP_3,STEP_4,STEP_E0,STEP_E1,CLK,CLK_5Hz:IN BIT;CHOICE:IN INTEGER RANGE 0 TO 8;ROW,COL1,COL2:OUT BIT_VECTOR (7 DOWNTO 0);-ROW为点阵行输出, COL1为点阵列红输出,COL2为点阵列绿输出。END MYDIANZHEN;ARCHITECTURE C OF MYDIANZHEN ISSIGNAL ROL_COUNT:INTEGER RANGE 0 TO 7;用于控制点阵循环滚动。
43、BEGINPROCESS(CLK_5Hz)- 点阵滚动频率为5Hz。BEGINIF (CLK_5HzEVENT AND CLK_5Hz=1) THENIF (ROL_COUNT=7) THEN ROL_COUNT=0;ELSE ROL_COUNT DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00111000 ROL ROL_COUNT; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00100100 ROL ROL_COUNT; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00111000 ROL ROL_COUNT
44、; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00111000 ROL ROL_COUNT; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00100100 ROL ROL_COUNT; COL2 DZ_COUNT:=0; ROW=;COL1=00111000 ROL ROL_COUNT; COL2 IF (STEP_E0=1 AND STEP_E1=0) THEN:而是进入预约时间设置状态。CASE DZ_COUNT ISWHEN 0= DZ_COUNT:=DZ_COUNT+1; ROW=;COL1= ROL ROL_COUNT;C
45、OL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1= ROL ROL_COUNT; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=01100110 ROL ROL_COUNT;COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=01100110 ROL ROL_COUNT;COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=01100110 ROL ROL_COUNT;COL2 DZ_COUNT:=0; ROW=;COL1=01100110 ROL ROL_COUNT;COL2=00000000;END
46、 CASE;ELSE COL1=00000000; COL2 IF (STEP_3=1) THEN煮炖模式选 1(清香米饭),且进入降压状态,显示绿色。CASE DZ_COUNT ISWHEN 0= DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ
47、_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=0; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=01101001; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=0
48、1111001; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=01101001; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=01111001; COL2 IF (STEP_3=1) THENCASE DZ_COUNT ISWHEN 0= DZ_
49、COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=0; ROW=;COL1=00000000;
50、 COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL
51、1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=; COL2 IF (STEP_3=1) THENCASE DZ_COUNT ISWHEN 0= DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;文档来源为 :从网络收集整理 .word 版本可编辑 .
52、欢迎下载支持 .COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=0; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_CO
53、UNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ
54、_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=; COL2 IF (STEP_3=1) THENCASE DZ_COUNT ISWHEN 0= DZ_COUNT:=DZ_COUNT+1; ROW=;文档来源为 :从网络收集整理 .word 版本可编辑 .欢迎下载支持 .COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; RO
55、W=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=0; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; CO
56、L2 DZ_COUNT:=0; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=; COL2 IF (STEP_3=1) THEN文档来源为 :从网络收集整理 .word 版本可
57、编辑 .欢迎下载支持 .CASE DZ_COUNT ISWHEN 0= DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=0; ROW=;COL1=000000
58、00; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;
59、COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=0; ROW=;COL1=; COL2 IF (STEP_3=1) THENCASE DZ_COUNT ISWHEN 0= DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_CO
60、UNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=00000000; COL2 DZ_COUNT:=0; ROW=;COL1=00000000; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=01101111; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 DZ_COUNT:=DZ_COUNT+1; ROW=;COL1=; COL2 D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校企合作与实践基地建设对人才培养的促进作用
- 2024年宿州砀山县县直事业单位招聘真题
- 企业财务会计向管理会计转型的思考与对策
- 漳州市凌波酒店管理集团有限公司招聘笔试真题2024
- 烟草河南公司真题2024
- 数字化转型背景下晋升机制的适应性分析
- 绩效考核机制与内部控制效果的协同作用
- 信鸽鸽棚管理制度
- 公司私家车管理制度
- 制造实验室管理制度
- 美国大选-特朗普介绍(个人演讲PPT)
- 底座工艺规程编制及工装设计
- 国企治理三会一层详解
- 高温高压设备警示牌
- GB/T 42064-2022普通照明用设备闪烁特性光闪烁计测试法
- JJG 700-2016气相色谱仪
- GB/T 21299-2015玻璃容器瓶罐公差
- GB/T 1355-2021小麦粉
- GB/T 10228-2008干式电力变压器技术参数和要求
- 在梨状肌综合征的诊断中的应用演示
- GA/T 1587-2019声纹自动识别系统测试规范
评论
0/150
提交评论