基于VHDL的空调控制器设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字系统设计与硬件描述语言

期末考试作业

题目:空调控制器的设计

学院:电子信息工程学院

专业:物联网工程

学号:**********

姓名:***

2016-12-14

一、选题设计描述

1.功能介绍

设计内容为空调控制器,可实现空调的开关、模式切换、温度控制、风速控制、定时设置。

模式默认为制冷,可切换为制热、除湿。

温度默认为26度,可按“温度+”、“温度-”调节,每次调节1度,最高30度,最低16度。

风速默认为中挡,可按“风速+”、“风速-”切换为低挡、高挡、睡眠模式。睡眠模式中,在低挡与停止间循环。

定时设置默认关闭,开启时默认30分钟,可按“定时+”、“定时-”调节,每次调节30分钟,最高24小时,最低30分钟。定时倒计时结束时,关闭空调。定时开启时,可按“取消定时”关闭定时。

空调控制器模拟界面如下:

2.算法简介

1)空调控制器

其输入与输出在主程序kt中已标明,在此不做介绍。2)单脉冲模块

这是非常重要以及核心的模块。

当a产生一个上升沿时,输出一个单脉冲,脉冲将持续到经过一个clk上升沿后的clk下降沿。

3)开关模块

a连接空调的开关,b连接开关控制模块的输出,c为空调各工作模块的开关信号,d连接数码管显示开关状况。

当定时时间结束,b输入一个单脉冲,空调关闭。

4)开关控制模块

此模块的作用是保证开关模块能够正常工作。

开关打开时,a输入一个单脉冲,重置c。b连接定时模块,当定时结束,b输入一个单脉冲,使c输出1,使开关模块输出0

5)温度模块

a连接开关模块,b为温度+1,c为温度-1,输出为温度的十位和个位。

6)风速模块

a连接开关模块,b为风速+1,c为风速-1。

di,zhong,gao为抵挡、中挡、高挡的状态(无睡眠模式,因为睡眠模式是抵挡-停止模式)。

其他连接数码管,显示睡眠模式、抵挡、中挡、高挡的状态。

7)模式模块

b连接开关模块,c为切换模式,输出类似于模式模块。

8)定时模块

a连接开关模块,b为定时模块开启,c为取消定时,up、down为定时时间+、-。clk1为空调时钟,clk2为模拟的倒计时时钟(周期1分钟)。clk2周期远大于clk1。

当时间倒计时结束时,sw1输出1,使开关控制模块控制开关关闭。

其他输出连接倒计时模块。

9)倒计时模块

a连接开关模块,clk连接定时模块的clk2,输入时间发生变化时,重新倒计时。

倒计时结束时,finish输出1,使定时模块的sw1输出1。

10)数码管模块

a连接开关模块,此为7段译码器。

11)计数器模块

此为六位计数器。a连接睡眠模式开关,rst为睡眠模式打开时的重置信号,每6次输出一次1。

二、程序源代码及说明

1)空调控制器

LIBRARY IEEE ;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL ;

ENTITY kt IS

PORT(switchin,modeset,fanup,fandown,tempup,tempdown,timerop,timercancel,timerup,t imerdown,clk1,clk2: IN STD_LOGIC;

--电源开关、模式切换、风速+、风速-、温度+、温度-、定时、取消定时、定时+、定时-、时钟信号、倒计时时钟信号

cools,heats,drys,dis,zhongs,gaos: OUT STD_LOGIC; --通向空调内部的制冷、制热、除湿、抵挡、中挡、高挡状态输出

switchstate,tempd,temps,coolstate,heatstate,drystate,distate,zhongstate,gaostate,sleepstate ,hdstate,hsstate,tdstate,tsstate: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));

--由数码管显示的开关、温度、制冷、制热、除湿、抵挡、中挡、高挡、睡眠状态和倒计时剩余时间

END ENTITY kt;

ARCHITECTURE behave OF kt IS

COMPONENT switch --开关模块

PORT(a,b,clk: IN STD_LOGIC; --b受定时模块的控制,时间减为0时,关闭开关

c: OUT STD_LOGIC;

d: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); --输送给数码管END COMPONENT switch;

COMPONENT control --开关控制模块

PORT(a,b,clk: IN STD_LOGIC;

c: OUT STD_LOGIC);

END COMPONENT control;

COMPONENT fan --风速模块

PORT(a,b,c,clk: IN STD_LOGIC;

di,zhong,gao: OUT STD_LOGIC; --由于high和low是敏感词汇,所以此处用拼音,可以看到此处没有睡眠模式,是因为睡眠模式其实是抵挡-停止模式ssleep,sdi,szhong,sgao: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); --不同于发给空调内部的信号,睡眠模式的状态应显示在外

END COMPONENT fan;

COMPONENT BCD7 --数码管模块

PORT(a: IN STD_LOGIC;

b: IN STD_LOGIC_VECTOR(3 DOWNTO 0);

q : OUT STD_LOGIC_VECTOR(0 TO 6) );

END COMPONENT BCD7;

COMPONENT pulse --单脉冲模块

PORT(a,clk: IN STD_LOGIC;

b: OUT STD_LOGIC);

END COMPONENT pulse;

COMPONENT temp --温度模块

PORT(a,b,c,clk: IN STD_LOGIC; --a控制开关,b提高1度,c降低1度

temp1,temp2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END COMPONENT temp;

COMPONENT timer --定时模块

PORT(a,b,c,up,down,clk1,clk2: IN STD_LOGIC;

sw1: OUT STD_LOGIC; --总开关关闭信号

oh1,oh2,ot1,ot2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); --输送给数码管显示剩余时间

END COMPONENT timer;

COMPONENT mode

PORT(b,c,clk: IN STD_LOGIC;

cool,heat,dry: OUT STD_LOGIC;

cool1,heat1,dry1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END COMPONENT mode;

SIGNAL swa,swb,swc:STD_LOGIC;

SIGNAL sigBCD7_1,sigBCD7_2,sigBCD7_3,sigBCD7_4,sigBCD7_5,

sigBCD7_6,sigBCD7_7,sigBCD7_8,sigBCD7_9,sigBCD7_10,

sigBCD7_11,sigBCD7_12,sigBCD7_13,sigBCD7_14:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

相关文档
最新文档