




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数字系统课程设计设计报告设计题目:家用空调温度控制器班 级:电技081姓 名:翟建峰学 号:3080422031日 期:2010-12-31一 设计题目的要求: 家用空调温度控制器的功能为: 1、室内温度可由按键设置,温度的设置范围为20度至39度。 2、有加热和制冷两种工作模式。当空调工作在加热模式时,如果室温低于设定温度,空调加热,反之,不加热;当空调工作于制冷模式时,如果室温高于设定温度,空调制冷,反之空调不制冷。 3、对室内温度用两位数码管进行实时显示。二 设计方案及其工作原理:总的设计框图如下:本电路由控制核心cpu、按键、4位锁存器、数码管7位译码器电路组成。cpu:负责数据接收;
2、室温和设定温度的比较;工作模式选择;显示数据的输出;加热制冷信号的控制;报警信号的输出等。按键:负责设定标准温度,设置温度的升高与降低。锁存器:将cpu输出的显示信号锁存,防止干扰,将信号送给译码器。译码器:将BCD码译成数码管显示用的高低电平。工作原理在reset信号作用下,设定温度寄存器赋初值,初值为26度,通过add(温度升)和down(温度减)来步进调整设定温度(步进为一)。按键(key)模块通过seta和setb输出端口将设定温度传给cpu。cpu接收到设定温度后将其与由温度传感器传来的室温xy比较,将比较结果标志存在寄存器(flag)中。读取用户工作模式(mod=1时为加热,mod
3、=0时为制冷)。在加热模式状态下,根据flag的值给出加热控制寄存器heat赋值;在制冷模式状态下,根据flag的值给制冷状态寄存器cool赋值。cpu还将设置温度与设置温度范围比较,将比较结果标志存在报警寄存器flag_high(超上界寄存器)和flag_low(超下界寄存器)。cpu还将室温和设定温度分别存放在室温寄存器和设定温度寄存器中。最后,cpu将寄存器的值通过各端口输出。各锁存器将数据锁存后在时钟信号的作用下将锁存信号输出给译码器,译码器再把BCD码转换成数码管显示的高低电平,数码管显示出室温和设置温度。Led灯接到有效信号后点亮,指示设定温度是否越界(led_settoohigh
4、表示设置温度过高;led_settoolow表示设置温度过低)。三 各单元电路设计:1、cpu设计cpu框图如下:disp_outx:室温十位输出显示disp_outy:室温个位输出显示disp_outa:设置十位输出显示disp_outb:设置个位输出显示cool:制冷输出信号heat:加热输出信号led_settoohigh:设定温度超越上限报警led_settoolow:设定温度超越下限报警x:室温十位输入y:室温个位输入a:设定温度十位输入b:设定温度个位输入mod:用户加热制冷模式选择clk:时钟脉冲flag:室温和设置温度比较标志位寄存器flag_high:设置温度超越上界标志位寄
5、存器flag_low:设置温度超越下界标志位寄存器2、按键(key)设计按键(key)框图如下:seta 输出温度设定十位setb 输出温度设定个位add 设定温度加一down 设定温度减一clk 时钟信号reset复位信号(用于寄存器赋初值)3、锁存器设计锁存器框图如下:data:锁存数据输入qout:锁存数据输出clk: 时钟信号4、译码器设计 译码器框图如下:D4: 译码器BCD码输入信号a,b,c,d,e,f,g:译码器输出信号(输入给数码管)四 模拟仿真验证及结果分析:因整体仿真验证结果不易说明效果,故将各模块仿真结果予以分析。1、cpu仿真结果cpu仿真结果如图:分析:前两个周期,
6、用户模式为加热模式(mod=1)室温<设定温度,加热(heat=1);56周期用户模式为制冷(mod=0),室温>设定温度,制冷(cool=1);第79周期设置温度<20度,超越下界报警(led_settoolow=1);第1012周期,设置温度>39度,超越上界报警(led_settoohigh=1)。2、键盘仿真结果键盘仿真结果如图:分析:前2周期,reset=1,设置温度被设为26度,第510周期,add=1,设置温度每周期递增一;第1220周期down=1,设置温度每周期递减一,2127周期,没有增加和减少信号,温度稳定在24度。3、锁存器仿真结果锁存器仿真结果
7、如图:分析:如图,在每个时钟的上升沿将data中数据从qout输出。4、译码器仿真结果译码器仿真结果如图:分析:D4输入8时,abcdefg为:1111111,D4输入为7时,abcdefg为:1110000,符合数码管显示规则。下图为整个顶层结果仿真图(部分),仅供参考:五 总结体会:在这次课程设计的过程中,遇到了很多的问题;但也学习到了很多平时上课不曾接触到的东西、不懂的知识。了解到了具体的大工程是如何生成的、进一步掌握并熟悉了verilog HDL语言,同时也学会了同学之间相互的团结和协作。通过本次课程设计,我懂得一个工程,必须先要有一个总体的方案,心中要明确设计的目的,如何才能达到这个
8、目的;然后划分模块,将复杂抽象的问题具体简单化;接着逐个设计每个模块,调试,分析,再调试,直到完成各个模块的要求为止;最终,将各个模块整合起来,完成整体模块,完成工程设计。可谓受益匪浅。附录:程序源代码/*温度控制cpu*/disp_outx 室温十位输出显示/disp_outy 室温个位输出显示/disp_outa 设置十位输出显示/disp_outb 设置个位输出显示/cool 制冷输出信号/heat 加热输出信号/led_settoohigh 设定温度超越上限报警/led_settoolow 设定温度超越下限报警/x 室温十位输入/y 室温个位输入/a 设定温度十位输入/b 设定温度个位
9、输入/mod 用户加热制冷模式选择/clk 时钟脉冲/flag 室温和设置温度比较标志位寄存器/flag_high 设置温度超越上界标志位寄存器/flag_low 设置温度超越下界标志位寄存器module cpu(disp_outx, disp_outy, disp_outa, disp_outb, cool, heat, led_settoohigh, led_settoolow,x,y,a,b,mod,clk);output3:0 disp_outx, disp_outy, disp_outa, disp_outb;output cool, heat, led_settoohigh, le
10、d_settoolow;input3:0 x,y,a,b;input mod,clk;reg3:0 disp_outx, disp_outy, disp_outa, disp_outb;reg1:0flag;reg flag_high,flag_low, cool, heat, led_settoohigh, led_settoolow;always(posedge clk)beginbegin /*设定温度上下界标志位判断*/if(a>=4)beginflag_high =1;flag_low=0; /flag_high=1 设定温度超出上界endelse if(a<2)begi
11、n flag_low=1; /flag_low=1 设定温度超出下界flag_high =0; endelse beginflag_low =0;flag_high=0; / flag_low =0 flag_high=0 设定温度在正常范围内endendbegin /*室温与设置温度比较标志位判断*/if(x>a)flag=2'b01; /flag=01 室温高于设定温度else if(x<a) /flag=10 室温低于设定温度flag=2'b10;elsebeginif(y>b)flag=2'b01;else if(y<b)flag=2
12、39;b10;elseflag=2'b11; /flag=11 室温等于设定温度endendbegin /*制冷、加热输出寄存器赋值*/if(mod)begin /mod=1 加热模式下if(flag=2'b01) | (flag=2'b11)beginheat=0; /停止加热cool=0;endelse if(flag=2'b10)begin /加热heat=1;cool=0;endendelse /mod=0 制冷模式下beginif(flag=2'b10) | (flag=2'b11)begincool=0; /停止制冷heat=0;en
13、delse if(flag=2'b01) begincool=1; /制冷heat=0;endendendbegin /*显示、报警输出寄存器赋值*/if(!flag_high&&!flag_low) /室温和设定温度显示寄存器赋值begindisp_outx=x;disp_outy=y;disp_outa=a;disp_outb=b;led_settoohigh =0;/led_settoohigh =0 led_settoolow=0 设定温度在正常范围led_settoolow=0;endelse if(flag_high&&!flag_low)
14、/设定温度超越上界报警寄存器赋值beginled_settoohigh =1; / led_settoohigh =1 设定温度超越上界led_settoolow=0;endelse if(!flag_high&&flag_low) /设定温度超越下界报警寄存器赋值beginled_settoohigh =0;led_settoolow=1; /led_settoolow=1 设定温度超越下界endendendendmodule/*按键输入设定温度*/seta 输出温度设定十位/setb 输出温度设定个位/add 设定温度加一/down 设定温度减一/clk 时钟信号/rese
15、t复位信号(用于寄存器赋初值)module key(seta,setb,add,down,clk,reset);output3:0 seta,setb;input add,down,clk,reset;reg3:0 seta,setb;always(posedge clk or posedge reset)beginif(reset) /*寄存器赋初值*/beginseta=2;setb=6;endif(add) /*寄存器加一*/beginif(setb=9)beginsetb=0;seta=seta+1;endelse setb=setb+1;endelse if(down) /*寄存器减
16、一*/beginif(setb=0)beginsetb=9;seta=seta-1;endelsesetb=setb-1;endendendmodule/*4位锁存器*/qout 输出信号/data 输入信号/clk 时钟信号module suocunqi(qout,data,clk);output3:0qout;input3:0data;input clk;reg3:0 qout;always(clk or data)begin if(clk)qout=data; /在时钟信号作用下输出信号end endmodule/*7位数码管译码器*/a,b,c,d,e,f,g, 数据输出/D4 输出数据module yimaqi(a,b,c,d,e,f,g,D4);output a,b,c,d,e,f,g;input3:0D4;reg a,b,c,d,e,f,g;always(D4)begincase(D4)4'd0:a,b,c,d,e,f,g=7'b1111110;4'd1:a,b,c,d,e,f,g=7'b0110000;4'd2:a,b,c,d,e,f,g=7'b1101101;4'd3:a,b,c,d,e,f,g=7'b1111001;4'd4:a,b,c,d,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年班主任工作总结模版
- 初二英语上学期个人教学工作总结模版
- 3月份计划计划生育个人工作总结模版
- 农业部初步设计要求
- 四年级美术教学工作总结模版
- 小学数学骨干教师工作总结模版
- 供电所安全生产总结模版
- 儿童牙科护理
- 小米2新品发布会官方完整版
- 物流与供应链管理(培训)
- 2024年河北省临漳县事业单位公开招聘村务工作者笔试题带答案
- (市质检)莆田市2025届高中毕业班第四次教学质量检测试卷英语试卷(含答案解析)
- 环宇电子科技公司镀膜铣刀生产项目环评资料环境影响
- 2025广西中马钦州产业园区投资控股集团限公司招聘49人易考易错模拟试题(共500题)试卷后附参考答案
- 工程过账协议合同协议
- 快手开店合同协议
- 2025年第三届天扬杯建筑业财税知识竞赛题库附答案(501-1000题)
- 《中式美食鉴赏》课件
- 2025-2030中国森林消防装备市场规模体量及趋势前景预判研究报告
- 盆腔器官脱垂诊疗规范与指南
- 第十一讲中华一家和中华民族格局底定(清朝中期)-中华民族共同体概论专家大讲堂课件
评论
0/150
提交评论