您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 基于vhdl语言的智能空调控制器的设计报告
数字系统设计与硬件描述语言期末考试作业题目:智能空调控制器的设计学院:电子信息工程学院专业:电子信息工程学号:3012204273姓名:王欢2015-01-09一、选题设计描述1.功能介绍对于这次的期末课程作业,我选择的是智能空调控制器的设计。众所周知,日常使用的空调至少具有定时、控温、模式选择等基本功能。我设计的这个智能空调主要能实现以下几种功能:①四种模式选择:强风、弱风、自然风、睡眠状态。②工作时间设定:半小时、一小时、一个半小时、两小时。③工作温度设置:可以自由设置温度,然后将室温与设置的温度进行比较,当室温低于设置的温度时,空调温度升高;当室温高于设置的温度时,空调温度下降;并且当室温达到设置的温度时,温度就不再变化。2.算法简介按照上述的几种功能介绍,我将分几个模块依次介绍:①模式选择模块:因为有4种模式,所以用一个4路数据选择器就可以实现。“00”、“01”、“10”、“11”分别代表“强风”、“弱风”、“自然风”、“睡眠状态”。②时间设置模块:半个小时即三十分钟,可以用一个三十进制的计数器来实现定时,一个小时即六十分钟,可以用一个六十进制的计数器实现,依此类推即可。③温度设置模块:室温与设置温度的比较需要用比较语句来实现,空调温度的增减都需要用计数器来实现,所以这是一个包含比较和计数两种功能的电路。④开关模块:我采用的是一个是三输入开关控制器,三个输入分别代表模式选择、时间设置、温度设置,只要其中有一个模块开始工作,那么开关就打开,空调就开始工作。⑤显示模块:上述几个模块都需要这个模块来进行显示。用两个BCD-七段译码器来分别显示显示十位和个位。就可以看出温度和时间的变化。二、程序源代码及说明①模式选择,四选一数据选择器:仿真见图一LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYxuanzeISPORT(a,b,c,d,s1,s2:INSTD_LOGIC;---a,b,c,d是数据端口,s1和s2是选择端口。y:OUTSTD_LOGIC);ENDENTITYxuanze;ARCHITECTUREoneOFxuanzeISSIGNALss:STD_LOGIC_VECTOR(0TO1);BEGINss=s2&s1;---将两个标准逻辑位类型变成一个标准逻辑矢量类型PROCESS(ss)BEGINCASEssIS---用case语句实现多路选择WHEN00=y=a;WHEN01=y=b;WHEN10=y=c;WHEN11=y=d;WHENOTHERS=NULL;ENDCASE;ENDPROCESS;ENDARCHITECTUREone;②定时半小时,三十进制计数器:仿真见图二libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitythirtyisport(clk,clr:instd_logic;gewei,shiwei:outstd_logic_vector(3downto0);---个位和十位dingshi:outstd_logic);---定时脉冲endentity;architecturearcofthirtyissignaljinwei:std_logic;---进位beginprocess(clk,clr)variablege:std_logic_vector(3downto0);beginifclr='1'thenge:=0000;---clr有清零作用elsifclk'eventandclk='1'thenifge=1000thenge:=ge+1;jinwei='1';---当个位加到“1000”即第九个时钟上升时产生一个进位。elsifge=1001thenge:=0000;---个位加到9之后返回0jinwei='0';elsege:=ge+1;jinwei='0';endif;endif;gewei=ge;endprocess;process(clk,clr,jinwei)variableshi:std_logic_vector(3downto0);Beginifclr='1'thenshi:=0000;elseifclk'eventandclk='1'thenifjinwei='1'thenifshi=0010thenshi:=0000;---十位从“0000”变成“0010”,即经过了30个时钟脉冲,然后返回“0000”。同时产生一个定时脉冲。dingshi='1';elseshi:=shi+1;dingshi='0';endif;endif;shiwei=shi;endif;endif;endprocess;endarc;③定时一小时,六十进制计数器:仿真见图三libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitysixtyisport(clk,clr:instd_logic;gewei,shiwei:outstd_logic_vector(3downto0);---个位和十位dingshi:outstd_logic);---定时脉冲endentity;architecturearcofsixtyissignaljinwei:std_logic;---进位beginprocess(clk,clr)variablege:std_logic_vector(3downto0);beginifclr='1'thenge:=0000;---clr有清零作用elsifclk'eventandclk='1'thenifge=1000thenge:=ge+1;jinwei='1';---当个位加到“1000”即第九个时钟产生一个进位。elseifge=1001thenjinwei='0';ge:=0000;---个位加到9之后返回0elsege:=ge+1;jinwei='0';endif;endif;endif;gewei=ge;endprocess;process(clk,clr,jinwei)variableshi:std_logic_vector(3downto0);Beginifclr='1'thenshi:=0000;elsifclk'eventandclk='1'thenifjinwei='1'thenifshi=0101thenshi:=0000;dingshi='1';---十位从“0000”变成“0101”,即经过了60个时钟脉冲,然后返回“0000”。同时产生一个定时脉冲。elseshi:=shi+1;dingshi='0';endif;endif;elseshi:=shi;endif;shiwei=shi;endprocess;endarc;④温度控制,仿真见图四和图五libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitywenduis---根据室温和设定温度的比较判断温度是上升还是降低port(clk,en:instd_logic;---clk时钟en开关/使能端shiwei,gewei,romeshi,romege:instd_logic_vector(0to3);---shiwei设置温度的十位;gewei设置温度的个位;romeshi设置室温的十位;romege设置温度的个位。shiout,geout:outstd_logic_vector(0to3));---shiout输出温度的十位geout输出温度的个位endwendu;architecturebehaveofwenduissignalhs,hg:std_logic_vector(0to3);beginprocess(clk,en,shiwei,gewei,romeshi,romege,hs,hg)beginifen='0'thenhs=romeshi;hg=romege;elsifclk'eventandclk='1'thenifhs&hgshiwei&geweithen---室温低于设置的温度,温度上升ifhg1001thenhg=hg+1;elsehg=0000;hs=hs+1;endif;elsifhs&hgshiwei&geweithen---室温高于设置的温度,温度下降ifhg0000thenhg=hg-1;elsehg=1001;hs=hs-1;endif;elsehs=shiwei;hg=gewei;---判断温度上升或下降到设置的温度,保持温度显示不变endif;endif;shiout=hsanden&en&en&en;geout=hganden&en&en&en;---输出温度endprocess;endbehave;⑤开关控制器:仿真见图六libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitykaiguanisport(shuru1,shuru2,shuru3,stop:instd_logic;diandongji:outstd_logic);endentity;architectureoneofkaiguanisbeginprocess(shuru1,shuru2,stop)beginifshuru1='1'orshuru2='1'orshuru3='1'thendiandongji='1';---三输入中只要有一个为1,那开关就打开。elsifstop='1'thendiandongji='0';---endif;endprocess;endone;⑥七段译码器:仿真见图七libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityxianshiisport(shuzi:instd_logic_vector(3downto0);shuchu:outstd_logic_vector(6downto0));endxianshi;architectureaofxianshiisbeginwithshuziselectshuchu=1111110when0000,0110000when0001,1101101when0010,1111001when0011,0110011when0100,1011011when0101,1011111when0110,1110000when0111,1111111when1000,1111011when1001,0000000whenothers;---将四位二进制数通过七段译码器显示出来enda;三、仿真结果及分析图一这是一个四选一数据选择器,“s2s1”的“00”、“01”、“10”、“11”分别可以选择a,b,c,d四个模式,即题目中的强风、弱风、自然风、睡眠四种状态。图二这是一个三十进制计数器,由仿真波形可以看到,每经过一个时钟脉冲,个位加一,每经过10个时钟脉冲,十位加一,每经过30个时钟脉冲产生一个定时脉冲,同时十位和个位都归零。图三这是一个六十进制计数器,由仿真波形可以看到,每经过一个时钟脉冲,个位加一,每经过10个时钟脉冲,十位加一,每经过60个时钟脉冲产生一个定时脉冲,同时十位和个位都归零。图四图四中,室温为30度,设置的温度为25度,所以温度下降至25度后并维持在25摄氏度。图五图五中,室温为10度,设置的温度为25度,室温低于设置的温度,所以温度上升,并且上升到25度后维持在25度。图六这相当于一个三输入或门和另一个非门相与。三个shuru中只要有一个为1,且stop为0
本文标题:基于vhdl语言的智能空调控制器的设计报告
链接地址:https://www.777doc.com/doc-4279432 .html