北邮数字电子电路综合实验-LED点阵风扇的设计与实现
北邮数电实验下LED点阵风扇的设计与实现
![北邮数电实验下LED点阵风扇的设计与实现](https://img.taocdn.com/s3/m/51f20dc2daef5ef7ba0d3c57.png)
数字电路与逻辑设计实验实验报告实验名称:led点阵风扇的设计与实现学院:电子工程学院专业:电子科学与技术班级:班内序号:学号:姓名:北京邮电大学2015年11月9日目录一、任务要求 (3)1.基本要求: (3)2.提高要求: (3)二、系统设计 (3)1. 设计思路 (3)2. 总体框图 (4)3. 分块设计 (7)三、仿真波形及波形分析 (8)四、源程序(包括注释) (12)五、功能说明及资源利用情况 (23)1. 功能说明 (23)2. 资源利用情况 (24)六、故障及问题分析 (25)七、总结和结论 (27)1.总结 (27)2.结论 (27)一、任务要求1.基本要求:(1)用8*8点阵模拟风扇转动,并采用双色点阵显示。
(2)风扇转动方式如图1所示,包括四个点阵显示状态并按顺序循环显示。
风扇转动速度根据环境温度分为4档,其中1档的四个显示状态之间的切换时间为2秒,2档为1秒,3档为0.5秒,4档为静止不动。
(3)环境温度通过2个BTN按键设置,一个用来增加,一个用来减少,温度可设置范围为10℃~40℃,温度精度为1℃,并用两个数码管进行温度显示。
风扇根据不同的温度自动采用不同的转动速度,其中20℃~24℃对应1档,25℃~29℃对应2档,30℃~40℃对应3档,10℃~19℃对应4档,用一个数码管显示档位。
(4)定时模式:在风扇不同转动速度下,可以通过按键切换进入定时模式。
定时时间可设置范围为20~59秒,采用两个数码管进行倒计时,当倒计时结束后,风扇状态保持静止不动。
(5)设置开关键。
风扇开机初始状态为20℃、1档,并有不小于5秒的开机音乐。
关机状态为点阵全灭。
图12.提高要求:(1)设计LED风扇的其他工作模式。
(2)利用实验板上的温度传感器代替按键直接获取温度数据,实现对LED 风扇四档转速的自动控制。
(3)用数码管实时显示温度传感器的温度数据,精度为0.1℃。
(4)自拟其他功能。
二、系统设计1.设计思路在LED点阵风扇的设计与实现中,首先进行了分频器的设计:由于所使用电路板的时钟频率为50MHz,而需要使用的点阵、数码管扫描频率为1kHz,扇叶切换频率分别为2Hz、1Hz和0.5Hz,故首先将时钟频率进行四次分频。
北京邮电大学电子电路基础实验报告
![北京邮电大学电子电路基础实验报告](https://img.taocdn.com/s3/m/4d94fde56294dd88d0d26b50.png)
电子电路基础实验报告——晶体管β值检测电路的设计2012211117班2012210482号信通院17班01号张仁宇一、摘要:晶体管β值测量电路的功能是利用晶体管的电流分配特性,将放大倍数β值的测量转化为对晶体管电流的测量,同时实现用发光二极管显示出被测晶体管的放大倍数β值。
该电路主要由晶体管类型判别电路、β-V转换电路、晶体管放大倍数档位判断电路、显示电路、报警电路及电源电路六个基本部分组成。
首先通过LED发光二极管的亮灭实现判断三极管类型,并将β值的变化转化为电压的变化从而利用电压比较器及LED管实现β值档位(<150、150~200、200~250、>250)的判断与显示、并在β>250时通过LED管闪烁报警。
二、关键字:β值;晶体管;档位判断;闪烁报警三、实验目的1、加深对晶体管β值意义的理解2、了解掌握电压比较器的实际使用3、了解发光二极管的使用4、提高电子电路综合设计能力四、设计任务要求1、基本要求设计一个简易的晶体管放大倍数β值检测电路,该电路能够实现对放大倍数β值大小的初步测定1)电路能够测出NPN,PNP三极管的类型2)电路能将NPN晶体管的β值分别为大于250,大于200小于250,大于150小于200和小于150共四个档位进行判断3)用发光二极管指示被测三极管的放大倍数β值在哪一个档位4)在电路中可以用手动调节四个档位值得具体大小5)当β值大于250时可以光闪报警2、扩展要求1)电路能将PNP晶体管的β值分别为大于250,大于200小于250,大于150小于200和小于150共四个档位进行判断在电路中可以用手动调节四个档位值得具体大小。
2)NPN,PNP三极管β值的档位的判断可以通过手动或自动切换3)用PROTEL软件绘制该电路及其电源电路的印制电路版图。
五、设计思路与总体结构框图晶体管类型判别电路β-V转换电路放大倍数档位判断电路显示电路报警电路电源电路三极管类型判别电路的功能是利用NPN 型和PNP 型三极管的电流流向相反的特性判别晶体管的类型。
北邮数电实验报告
![北邮数电实验报告](https://img.taocdn.com/s3/m/6ce022ae0875f46527d3240c844769eae009a3e9.png)
北邮数电实验报告北邮数电实验报告一、引言数电实验是电子信息类专业学生必修的一门实验课程,通过实践操作,帮助学生巩固理论知识,培养实际动手能力。
本次实验旨在通过设计和搭建一个简单的数字电路,来理解数字电路的基本原理和工作方式。
二、实验目的本次实验的目的是设计一个4位二进制加法器,实现两个4位二进制数的相加运算。
通过实验,我们可以加深对于数字电路的理解,掌握数字电路的设计和搭建方法。
三、实验原理1. 二进制加法器二进制加法器是一种用于计算二进制数相加的数字电路。
它由若干个逻辑门和触发器组成,可以实现二进制数的加法运算。
在本次实验中,我们将设计一个4位二进制加法器,即可以计算两个4位二进制数的相加结果。
2. 逻辑门逻辑门是数字电路中常用的基本元件,用于实现逻辑运算。
常见的逻辑门有与门、或门、非门、异或门等。
在本次实验中,我们将使用与门和异或门来构建4位二进制加法器。
四、实验步骤1. 设计4位二进制加法器的电路图根据实验要求,我们需要设计一个能够计算两个4位二进制数相加的电路。
首先,我们可以将两个4位二进制数分别用D0~D3和E0~E3表示,其中D0和E0分别为最低位。
然后,我们需要使用与门和异或门来实现加法器的功能。
通过逻辑运算,我们可以得到每一位的和以及进位。
最后,将每一位的和连接起来,即可得到最终的结果。
2. 搭建电路根据电路图,我们可以开始搭建实验电路。
首先,将所需的逻辑门和触发器连接起来,形成一个完整的电路。
然后,将所需的输入信号和电源连接到电路上。
最后,使用示波器等工具检查电路的工作状态,确保电路正常运行。
3. 进行实验测试在搭建好电路后,我们可以进行实验测试。
首先,将两个4位二进制数的输入信号连接到电路上。
然后,通过观察输出信号,判断电路是否正确计算了两个二进制数的相加结果。
如果输出信号与预期结果一致,说明电路设计和搭建成功。
五、实验结果与分析在进行实验测试后,我们可以得到实验结果。
通过观察输出信号,我们可以判断电路是否正确计算了两个二进制数的相加结果。
LED点阵实验报告
![LED点阵实验报告](https://img.taocdn.com/s3/m/c91d3cec77a20029bd64783e0912a21614797f8b.png)
LED点阵实验报告实验报告:一、实验背景与目的:LED点阵是一种常见的显示设备,由多个LED灯组成,通过控制每个LED灯的亮灭来实现信息的展示。
本实验的目的是通过搭建LED点阵电路,掌握LED点阵显示驱动原理及实现方法,并进一步了解数字显示、字符显示等功能。
二、实验器材与原理:1.实验器材:(1)LED点阵模块(2)Arduino UNO开发板(3)跳线若干(4)面包板2.实验原理:LED点阵是由多个LED灯组成的矩阵结构,通过控制每个LED的亮灭来实现不同的图案和字符显示。
在Arduino开发环境中,可以通过控制数字输出口的高低电平来实现LED点阵的驱动。
为了方便控制,通常使用编码器来进行扫描。
三、实验步骤:1.搭建电路首先,在面包板上搭建Arduino开发板和LED点阵模块的连接线路。
将LED点阵的正极接到5V电源上,将负极接到Arduino开发板的GND上。
然后,将LED点阵的A、B、C等引脚分别连接到Arduino开发板的数字输出管脚上。
2.编写驱动程序在Arduino开发环境中,编写一个简单的程序来实现数字1在LED点阵上的显示。
3.上传程序将编写好的程序上传到Arduino开发板上。
四、实验结果及分析:通过实验,我们成功实现了数字1的显示。
在LED点阵上,部分LED灯亮起,显示出数字1的形状。
五、实验总结与心得体会:通过本次实验,我对LED点阵的原理和使用方法有了更深入的了解。
LED点阵作为一种常见的显示设备,可以广泛应用于各种信息展示的场合。
掌握了LED点阵的驱动方法,我们可以进一步实现数字、字符、图案等更复杂的显示功能。
六、实验存在的问题与改进方向:本次实验中,我们只实现了数字1的显示,未能涉及更多的显示内容。
下一步的改进方向可以是通过编写更复杂的程序,实现更多种类的数字和字符的显示,并且尝试实现图案显示。
此外,还可以了解更多关于LED点阵的驱动原理,尝试使用更多的编码方式和控制方法来驱动LED点阵。
北邮·数电综合实验·双色点阵显示控制器的设计与实现
![北邮·数电综合实验·双色点阵显示控制器的设计与实现](https://img.taocdn.com/s3/m/ae27d039eefdc8d376ee320b.png)
数字电路与逻辑设计实验报告题目:双色点阵显示控制器的设计与实现班级:学号:姓名:1 实验要求1.1基本要求:1)固定红色显示一个汉字或图形,显示亮度4级可调,用一个btn按钮实现亮度调节,亮度变化视觉效果要尽量明显。
2) 用从红到绿8级渐变色显示一个固定汉字或图形。
3) 分别用单字循环显示、左右滚动显示、上下滚动显示三种显示方式单色显示四个汉字或图形,显示过程中,显示方式用一个btn 按键进行切换。
4) 显示的图形或汉字要尽量饱满美观。
1.2提高要求:1) 滚动显示过程中实现四种显示颜色的自动变换,颜色变化视觉效果要尽量明显。
2) 自拟其它功能。
2系统设计2.1设计思路本实验采用自顶向下设计法:从整个系统功能出发,按一定原则将系统划分为若干子系统,再将每个子系统分为若干功能模块,然后实现所要求的的功能。
总体是通过分频、按键控制、扫描控制等模块实现上述功能,通过占空比来改变色彩,实现八级渐变色,通过扫描频率的改变和信号的占空比实现亮度的调节,通过行扫描和列扫描的不同实现左右滚动显示和上下滚动显示。
由于按键动作的时刻和按下的时间长短是随机的,并且存在由开关簧片反弹导致的电平抖动,所以还要为每个按键开关设置一个消抖和同步电路,这样才能保证按键的准确性。
2.2总体设计框图1)总体结构框图2)ASM 图选择汉字或图形 选择显示模式 选择亮度显示不同的文字或者图案no yes yes no yes no yesno如图所示:开始由按键选择模式,是单个渐变色显示,还是循环显示,还是可改变亮度显示,在执行的同时检查是否按下reset 键,如果reset 键被按下,那么将对系统进行复位。
选择图形或文字选择显示方式 case1?case2?csae3 左右滚动显示上下滚动显示四种颜色自动变换 循环显示点阵屏显示循环显示? 调亮显示?固定红色 调节亮度 从红到绿八级变色 开始2.3模块划分逻辑划分框图CP如图所示:系统主要分成3个模块:分频模块针对不同的模式进行分频,扫描控制模块通过行扫描或者列扫描来控制循环显示的方式,点阵显示模块主要是响应不同模式下的点阵显示方式及图形。
双色点阵显示控制器 北京邮电大学数字电路综合实验报告
![双色点阵显示控制器 北京邮电大学数字电路综合实验报告](https://img.taocdn.com/s3/m/6fbb2b46e45c3b3567ec8be4.png)
数字电路综合实验报告班级:姓名:班内序号:学号:日期:一、实验摘要采用EDA技术的自顶向下的模块化设计方法,借助相关开发软件,例如QualtusⅡ软件,将硬件描述语言——VHDL程序固化于具有丰富I/O口、内部逻辑和连线资源的FPGA(现场可编程门阵列)中。
该技术具有系统设计效率高、集成度好、保密性强、易于修改、易于实现等优点,成为当今数字系统设计主流技术。
此方式所制作的LED点阵控制器,由于是纯硬件行为,具有速度快、可靠性高、抗干扰能力强、开发周期短等显著优点。
二、实验任务(1)任务要求双色点阵显示控制器设计实现一个8×8 双色点阵显示控制器。
基本要求:1、固定红色显示一个汉字或图形,显示亮度4 级可调,用一个btn 按钮实现亮度调节,亮度变化视觉效果要尽量明显。
2、用从红到绿8 级渐变色显示一个固定汉字或图形。
3、分别用单字循环显示、左右滚动显示、上下滚动显示三种显示方式单色显示四个汉字或图形,显示过程中,显示方式用一个btn 按键进行切换。
4、显示的图形或汉字要尽量饱满美观。
提高要求:1、滚动显示过程中实现四种显示颜色的自动变换,颜色变化视觉效果要尽量明显。
2、自拟其它功能。
(2)EDA点阵显示汉字原理以8×8的LED点阵为例,8×8的LED点阵是由64个发光二极管按矩阵形式排列而成,每一行上的发光管有一个公共的阳极(或阴极),每一列上的发光管有一个公共的阴极(或阳极),一般按动态扫描方式显示汉字或图形。
由于所用实验板上提供有1 kHz的时钟,本例设计中利用该时钟进行扫描,使每行扫描时间为1 ms,实验结果显示亮度合适。
现以行扫描为例简单说明动态扫描显示的原理。
工作时先将要扫描行的点阵字模从各列上输出,再让译码器选中(扫描)该行,使本行得以显示,接着再送下一行数据,再使下一行有效,直到8行全被扫描一遍。
至此,一幅完整的文字信息就显现出来,然后再反复扫描这8行直至显示新的信息。
点阵led设计实验实验报告
![点阵led设计实验实验报告](https://img.taocdn.com/s3/m/e3fe0daf9a89680203d8ce2f0066f5335a8167fe.png)
点阵led设计实验实验报告一、实验目的本实验旨在通过设计和搭建一个点阵LED 系统,掌握点阵LED 的基本工作原理和电路设计方法,并了解如何通过编程控制点阵LED 实现各种图案显示。
二、实验材料和器件实验所用材料和器件包括:- 点阵LED 模块:用于显示图案和文字。
- Arduino 控制板:用于控制点阵LED 模块。
- 杜邦线:用于连接点阵LED 模块和Arduino 控制板。
三、实验步骤1. 硬件搭建首先,将点阵LED 模块连接到Arduino 控制板上。
具体的连接方式可以参考Arduino 官方文档或点阵LED 模块的说明书。
2. 软件设置接下来,需要在计算机上安装并配置Arduino 开发环境。
之后,通过Arduino 开发环境中的代码编辑器编写控制点阵LED 的代码。
3. 编写程序编写程序的主要步骤如下:- 导入所需的库文件:根据点阵LED 模块的型号和控制方式,导入相应的库文件。
- 设置引脚模式:设置Arduino 控制板的引脚模式,以便与点阵LED 模块进行通信。
- 定义图案:根据需要显示的图案或文字,定义相应的数组或变量。
- 初始化点阵LED 模块:根据模块的特性和控制方式,初始化点阵LED 模块。
- 显示图案:根据定义的图案,通过控制点阵LED 模块的引脚,实现图案的显示。
4. 上传程序编写完程序后,将Arduino 控制板通过USB 连接到计算机,并通过Arduino 开发环境将程序上传到控制板中。
5. 测试和调试上传完程序后,点阵LED 模块将开始显示所定义的图案。
可以通过修改程序中的图案定义部分来实现不同的显示效果,并进行测试和调试。
四、实验结果和分析经过编程和调试,我们成功实现了点阵LED 模块的图案显示功能。
通过修改程序中的图案定义,我们可以显示不同的图案、文字甚至动画效果。
点阵LED 的显示效果清晰且亮度可调,能够满足我们的需求。
在实验过程中,我们也遇到了一些问题。
数字电路实验报告_北邮
![数字电路实验报告_北邮](https://img.taocdn.com/s3/m/f6e60a0b3d1ec5da50e2524de518964bce84d218.png)
一、实验目的本次实验旨在通过实践操作,加深对数字电路基本原理和设计方法的理解,掌握数字电路实验的基本步骤和实验方法。
通过本次实验,培养学生的动手能力、实验技能和团队合作精神。
二、实验内容1. 实验一:TTL输入与非门74LS00逻辑功能分析(1)实验原理TTL输入与非门74LS00是一种常用的数字逻辑门,具有高抗干扰性和低功耗的特点。
本实验通过对74LS00的逻辑功能进行分析,了解其工作原理和性能指标。
(2)实验步骤① 使用实验箱和实验器材搭建74LS00与非门的实验电路。
② 通过实验箱提供的逻辑开关和指示灯,验证74LS00与非门的逻辑功能。
③ 分析实验结果,总结74LS00与非门的工作原理。
2. 实验二:数字钟设计(1)实验原理数字钟是一种典型的数字电路应用,由组合逻辑电路和时序电路组成。
本实验通过设计一个24小时数字钟,使学生掌握数字电路的基本设计方法。
(2)实验步骤① 分析数字钟的构成,包括分频器电路、时间计数器电路、振荡器电路和数字时钟的计数显示电路。
② 设计分频器电路,实现1Hz的输出信号。
③ 设计时间计数器电路,实现时、分、秒的计数。
④ 设计振荡器电路,产生稳定的时钟信号。
⑤ 设计数字时钟的计数显示电路,实现时、分、秒的显示。
⑥ 组装实验电路,测试数字钟的功能。
3. 实验三:全加器设计(1)实验原理全加器是一种数字电路,用于实现二进制数的加法运算。
本实验通过设计全加器,使学生掌握全加器的工作原理和设计方法。
(2)实验步骤① 分析全加器的逻辑功能,确定输入和输出关系。
② 使用实验箱和实验器材搭建全加器的实验电路。
③ 通过实验箱提供的逻辑开关和指示灯,验证全加器的逻辑功能。
④ 分析实验结果,总结全加器的工作原理。
三、实验结果与分析1. 实验一:TTL输入与非门74LS00逻辑功能分析实验结果表明,74LS00与非门的逻辑功能符合预期,具有良好的抗干扰性和低功耗特点。
2. 实验二:数字钟设计实验结果表明,设计的数字钟能够实现24小时计时,时、分、秒的显示准确,满足实验要求。
led点阵课程设计报告
![led点阵课程设计报告](https://img.taocdn.com/s3/m/9f6add496d175f0e7cd184254b35eefdc9d3156e.png)
led点阵课程设计报告一、课程目标知识目标:1. 让学生了解LED点阵的基本结构、工作原理及其在显示技术中的应用。
2. 使学生掌握LED点阵电路的连接方式,理解电路图的阅读与绘制。
3. 引导学生掌握LED点阵编程控制方法,了解相关编程语言及软件工具。
技能目标:1. 培养学生动手搭建LED点阵电路的能力,提高实践操作技能。
2. 培养学生运用编程语言对LED点阵进行控制,实现简单动画和文字显示的能力。
3. 培养学生分析问题、解决问题的能力,提高团队协作和创新能力。
情感态度价值观目标:1. 激发学生对电子技术和编程的兴趣,培养主动学习的态度。
2. 培养学生严谨的科学态度和良好的实验习惯,提高安全意识。
3. 引导学生关注科技发展,认识创新对国家和社会的重要性,培养社会责任感。
课程性质分析:本课程为电子技术实践课程,结合理论知识,强调动手实践,注重培养学生的实际操作能力和创新能力。
学生特点分析:学生为初中年级学生,具备一定的物理知识和编程基础,对新鲜事物充满好奇心,动手能力强,喜欢团队协作。
教学要求:结合课程性质和学生特点,采用任务驱动、分组合作的教学方法,注重理论与实践相结合,提高学生的实践能力和创新精神。
通过本课程的学习,使学生能够达到上述课程目标,为后续相关课程打下坚实基础。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. LED点阵基础知识:- LED点阵结构及工作原理- LED点阵的分类、性能参数及应用场景2. LED点阵电路连接:- 电路图阅读与绘制- LED点阵驱动电路的搭建与调试3. 编程控制LED点阵:- 常用编程语言及软件工具介绍- 编程实现LED点阵动画和文字显示4. 实践项目:- 设计并实现一个简单的LED点阵时钟- 创作一个LED点阵动画作品教学内容安排与进度:第一课时:LED点阵基础知识学习,介绍LED点阵的结构、工作原理及分类。
第二课时:LED点阵电路连接,学习电路图的阅读与绘制,动手搭建驱动电路。
北邮数电综合实验报告
![北邮数电综合实验报告](https://img.taocdn.com/s3/m/54eecc20cbaedd3383c4bb4cf7ec4afe04a1b1fa.png)
北邮数电综合实验报告北邮数电综合实验报告一、实验目的与背景数电综合实验是北邮电子信息工程专业的重要实践环节,旨在通过实际操作,巩固和应用学生在数字电路、模拟电路、通信原理等相关课程中所学到的理论知识。
本实验报告将对数电综合实验的内容、过程和结果进行详细描述和分析。
二、实验内容本次数电综合实验的主要内容为设计一个数字电子钟。
该电子钟具备显示时间、日期、闹钟功能,并能实现闹钟的设置、开关控制等基本操作。
实验中,我们需要使用数字集成电路、显示模块、按键开关、时钟模块等元件进行电路设计和搭建。
三、实验过程1. 硬件设计与连接根据实验要求,我们首先进行电路设计。
根据数字电子钟的功能需求,我们需要选取适当的集成电路和模块。
通过分析电路原理图,我们将各个模块进行连接,保证信号的正确传递和控制。
2. 软件编程与调试在硬件连接完成后,我们需要进行软件编程。
通过使用C语言或者Verilog等编程语言,我们可以实现数字电子钟的各项功能。
在编程过程中,我们需要考虑到时钟频率、显示模块的控制、按键开关的响应等因素。
3. 实验调试与测试完成软件编程后,我们需要进行实验调试和测试。
通过连接电源,观察电子钟的各项功能是否正常工作。
如果发现问题,我们需要进行调试,找出问题所在,并进行修复。
四、实验结果与分析经过实验调试和测试,我们成功实现了数字电子钟的设计和搭建。
该电子钟能够准确显示时间和日期,并能根据用户的设置进行闹钟的开关和响铃。
通过实验过程,我们对数字电路的原理和应用有了更深入的理解。
五、实验心得与收获通过参与数电综合实验,我深刻体会到了理论与实践的结合的重要性。
在实验中,我们需要将课堂上所学的知识应用到实际中,通过实际操作来巩固和加深对知识的理解。
同时,实验中也锻炼了我们的动手能力和解决问题的能力。
在实验过程中,我们还学会了团队合作的重要性。
在设计和搭建电路的过程中,我们需要相互配合,互相帮助,共同解决问题。
通过与同学们的合作,我们不仅解决了实验中遇到的各种问题,还加深了与同学们的交流和友谊。
北邮数电实验报告 双色点阵显示控制器
![北邮数电实验报告 双色点阵显示控制器](https://img.taocdn.com/s3/m/46a8782ba5e9856a561260a6.png)
数字电路与逻辑设计实验设计方案题目:双色点阵显示控制器一、设计思路⏹基本要求:1.固定红色显示一个汉字或图形,显示亮度4级可调,用一个btn按钮实现亮度调节,亮度变化视觉效果要尽量明显。
2.用从红到绿8级渐变色显示一个固定汉字或图形。
3.分别用单字循环显示、左右滚动显示、上下滚动显示三种显示方式单色显示四个汉字或图形,显示过程中,显示方式用一个btn按键进行切换。
4.显示的图形或汉字要尽量饱满美观。
⏹提高要求:1.滚动显示过程中实现四种显示颜色的自动变换,颜色变化视觉效果要尽量明显。
2.自拟其它功能。
二、系统设计总体框图方框图(模块划分)ASM图MDS图三、仿真波形及仿真分析1.时钟分频分析:这个进程组用于产生不同频率的时钟用于不同用途的时钟信号,图中所表达的也是如此,不同频率的时钟信号。
对于lightness信号来说,它是一个低分频的,可控占空比的信号,图中所示为占空比为80%时的信号。
2.防抖分析:Mode_in和intensity_in信号有短时间的抖动现象,在经过防抖之后,短时间的抖动并不会影响mode和intensity信号。
Mode_in和intensity_in信号有长时间的高电平,这会使控制电路既要检测上升沿又要检测下降沿。
经过防抖程序之后,将控制信号mode和intensity处理成脉冲信号,这样控制电路只需检测是否有正脉冲就可以了。
3.状态控制与亮度调节分析:每当mode信号有一个正脉冲时,state就变化一次。
每当intensity信号有一个正脉冲时,lightness就改变一次占空比。
4.颜色改变分析:当状态改变到S1的时候,占空比信号才会改变。
从图中可以看出,可控占空比信号是每八个时间单位为一组,这八个时间单位分别代表着第一行被选中、第二行被选中、……第八行被选中。
当第一行被选中时,可以清楚看到红色和绿色控制信号的占空比是不同的,这样就会导致点阵点的颜色中红色成分和绿色成分亮度不同,从而改变其颜色。
点阵led课程设计
![点阵led课程设计](https://img.taocdn.com/s3/m/b1c30e275bcfa1c7aa00b52acfc789eb172d9eb7.png)
点阵led 课程设计一、课程目标知识目标:1. 让学生理解点阵LED的基本原理,掌握其组成结构及工作方式;2. 使学生了解点阵LED在信息技术领域的应用,如显示技术、广告牌等;3. 引导学生掌握点阵LED的编程控制方法,学会运用相关软件进行简单的设计和调试。
技能目标:1. 培养学生动手操作能力,能够正确组装和调试点阵LED设备;2. 培养学生编程思维,学会运用编程语言对点阵LED进行控制,实现简单的显示效果;3. 提高学生团队协作能力,学会在项目中分工合作,共同解决问题。
情感态度价值观目标:1. 激发学生对电子信息技术的好奇心和兴趣,培养其探索精神和创新意识;2. 培养学生严谨的科学态度,注重实验过程的观察和思考;3. 引导学生关注社会发展和科技应用,认识到科技对生活的改变,增强社会责任感。
课程性质:本课程属于信息技术与电子技术的实践课程,结合理论教学与动手实践,注重培养学生的实际操作能力和创新思维。
学生特点:针对初中年级学生,他们对新鲜事物充满好奇,动手能力强,但可能缺乏系统性的专业知识。
教学要求:结合学生特点,教师应采用启发式教学,引导学生主动探索,注重理论与实践相结合,提高学生的实际操作能力和解决问题的能力。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容根据课程目标,教学内容主要包括以下三个方面:1. 点阵LED基础知识:讲解点阵LED的原理、结构、种类及其在显示技术中的应用。
对应教材中第二章“显示技术”相关内容。
- 点阵LED原理与结构介绍;- 点阵LED的种类及特点;- 点阵LED在现实生活中的应用案例。
2. 点阵LED编程控制:学习编程语言,实现对点阵LED的控制。
对应教材中第四章“点阵LED显示控制技术”相关内容。
- 点阵LED编程基础;- 常用编程语言的介绍与应用;- 点阵LED显示控制实例。
3. 点阵LED实践操作:动手实践,组装和调试点阵LED设备,完成简单显示效果。
北京印刷学院EDA设计报告点阵LED
![北京印刷学院EDA设计报告点阵LED](https://img.taocdn.com/s3/m/52b1e7da050876323112121f.png)
北京印刷学院课程设计报告--嵌入式系统EDA课程设计名称:EDA技术课程设计课程设计题目:点阵LED显示屏控制器的设计专业:电子信息工程专业班级:学生姓名:学生姓名指导老师:唐英杰时间:目录一、设计任务要求 (3)1、基本要求: (3)二、设计方案 (3)1、系统功能 (3)2、系统设计 (3)1)系统设计方案说明 (3)2)模块分析 (4)1、分频模块 (4)2、时钟模块 (4)3、按键去抖模块 (5)4、只读ROM模块 (6)5、显示控制模块 (6)6、16*16LED点阵扫描显示模块 (7)三、应用设备及软件介绍 (9)1:主要仪器设备(实验用的软硬件环境) (9)2:实验的软件环境 (9)3:操作方法与实验步骤 (9)四、调试过程分析、遇到的问题及解决方法 (9)五、设计结论 (10)六、管脚分配说明 (11)七、参考文献 (11)八、附录 (11)附录一、分频模块程序 (11)附录二、按键去抖模块程序 (13)附录三、显示控制模块程序 (14)附录四、扫描显示控制模块程序 (18)附录五、只读ROM模块程序 (20)一、设计任务要求1、基本要求:①点阵LED显示屏为16*16的屏;②能显示一组汉字,如:电子信息工程专业;③能以多种显示方式显示汉字,如左移、右移等;二、设计方案1、系统功能系统能够在16*16的LED点阵屏幕上显示任一汉字,有三种显示方式,分别是直接显示文字、从左到右刷屏显示、从右到左刷屏显示;并且能显示不同长度的文字。
2、系统设计1)系统设计方案说明此实验是基于CycloneIII的EP3C55F484C8嵌入式系统的设计,主要有时钟模块、按键去抖模块、只读ROM模块、显示控制模块、16*16LED点阵扫描显示模块以及一些输入和输出管脚、电源和地构成。
2)模块分析1、分频模块分频器,使输入时钟信号分频成低频信号,达到适合的频率,以供此实验应用。
其中分为奇分频和偶分频,这里用到100的偶分频和5的奇分频。
北邮数电实验双色点阵扫描控制器
![北邮数电实验双色点阵扫描控制器](https://img.taocdn.com/s3/m/ff2a9f766137ee06eff918d0.png)
2018212048赵依然实验5双色点阵扫描显示控制器一、实验要求1.用8×8点阵显示字符,每次显示一个字符,每秒切换一次,显示内容为“B”、“U”、“P”、“T”及姓名的第一个字母。
如张三显示的内容为“B”、“U”、“P”、“T”、“Z”、“S”。
2.为系统设置一个复位键,复位后重新从“B”开始循环显示。
要求使用按键复位。
二、实验设计思路我们知道点阵的结构,当row轮流出0的时候,二极管阴极为低电平,这时候我们给到一个高电平在红灯或者绿灯的阳极的时候,就能驱使灯点亮。
这样我们可以基于“视觉暂留”的现象,快速刷新row灯,使得点阵能够快速点亮,这样就能显示一个完整的字,最后再利用一个模7计数器来实现每个字母之间的转换。
我们引入一个1000hz的时钟,并对其进行一个1000分频变成1hz的时钟。
之后再利用这个模7计数器来控制cor_l和cor_g和row来控制灯的颜色、每行灯亮时列的亮灯情况。
另外,我们需要一个模8计数器,后面再设计一个3-8线译码器,这样能够控制row的亮灯情况。
最后我们需要注意的是,由于row需要快速刷新,故我们需要用1000hz的时钟,而字符之间的转换的计数器要用1hz的时钟,来满足亮灯1s的条件。
我们还需要设计一个复位键,以便能做到按下按钮重新回到第一个字母的功能,这需要reset 按下时,模7计数器的数字回到0。
这样把带防抖的复位键加进去即可。
最后顶层将这两个模块连接起来即可。
三、VHDL代码及注释点阵部分:library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;use IEEE.std_logic_arith.all;entity dianzhen isport(clk:in std_logic;col_r:out std_logic_vector(7downto0);--红灯的控制显示col_g:out std_logic_vector(7downto0);--绿灯的控制显示row:out std_logic_vector(7downto0);--二极管阴极控制reset:in std_logic);end dianzhen;architecture a of dianzhen issignal sel7:std_logic_vector(2downto0);--模7计数器的信号signal sel8:std_logic_vector(2downto0);--模8计数器的信号signal clk_add:std_logic:='0';--分频后的时钟beginp1:process(clk)--1000分频variable c:integer range0to499:=0;beginif(clk'event and clk='1')thenif c=499thenclk_add<=not clk_add;c:=0;elsec:=c+1;end if;end if;end process p1;p2:process(clk)--模8计数器beginif(clk'event and clk='1')thensel8<=sel8+1;--加满自动重新归零end if;end process p2;p3:process(clk_add,reset)--模7计数器beginif(reset='1')then--当出现重置的信号为高电平时,计数器重置为000,这样就能回到字母B sel7<="000";elsif(CLK_add'EVENT AND CLK_add='1')thenif(sel7=O"6")thensel7<=O"0";--模满7归零else sel7<=sel7+1;end if;end if;end process p3;p4:process(sel7,sel8)—模7和模8共同作用,模8用来快速刷新row,模7用来控制哪个字母,每行对应相对的列点亮的情况,显示字母。
北邮数电实验报告_双色点阵
![北邮数电实验报告_双色点阵](https://img.taocdn.com/s3/m/6b30049e6bec0975f465e27b.png)
北京邮电大学数电综合实验报告实验名称:双色点阵显示控制器学院:姓名:班级:学号:班内序号:一.设计课题的任务要求用8×8点阵设计双色点阵显示控制器 基本要求: 1、固定红色显示一个汉字或图形,显示亮度4级可调,用一个btn 按钮实现亮度调节,亮度变化视觉效果要尽量明显。
2、用从红到绿8级渐变色显示一个固定汉字或图形。
3、分别用单字循环显示、左右滚动显示、上下滚动显示三种显示方式单色显示四个汉字或图形,显示过程中,显示方式用一个btn 按键进行切换。
4、显示的图形或汉字要尽量饱满美观。
提高要求:滚动显示过程中实现四种显示颜色的自动变换,颜色变化视觉效果要尽量明显。
自拟其它功能。
二.系统设计1. 设计思路考虑本程序设计要求模块明确单一但需要变化多种状态,因此采用单模块多状态多进程方式实现。
其中防抖进程用于检测输入,本程序使用BTN 按键进行输入控制,而按键的键入可能由于抖动产生多个上升沿,对程序的控制产生影响。
防抖动采用了延时原理来对冒险或长时间按键电平进行处理。
分频使用了多个进程产生程序所需要的多个时钟频率。
包括:clk1(扫描时钟 大于480Hz 但不过高)clk2(占空比调节1 clk1周期的整数倍,但不过高) clk3(占空比调节2 同clk2,但占空比不同) clk4(占空比调节3 同clk2,但占空比不同) clk5(按键时钟 约100Hz) clk6(滚动变化计时 约1Hz)状态机变化进程用于管理状态变化,当遇到按键电平信号时根据规则改变对应状态。
显示进程包括主要显示进程和一些辅助进程,辅助进程完成了时钟对应计数器计数,主进程则根据状态变化显示不同显示模式下不同的图案。
2. 总体框图(1) 总体结构框图:(2) 逻辑划分框图Mode(3)MDS图3.各进程介绍⑴分频进程们分频进程含一个从50M(也可能是25M)分出的扫描频率clk1,这个频率要大于60*8=480Hz(因为人眼分辨频率为60Hz左右,要保证每排扫描时达到60Hz 则需480Hz)。
北邮电子电路综合设计实验报告
![北邮电子电路综合设计实验报告](https://img.taocdn.com/s3/m/248560d189eb172ded63b7c3.png)
北京邮电大学电子电路综合设计实验报告课题名称:函数信号发生器的设计学院:信息与通信工程学院 班级:2013211123姓名:周亮学号:2013211123班内序号:9一、 摘要方波与三角波发生器由集成运放电路构成,包括比较器与RC积分器组成。
方波发生器的基本电路由带正反馈的比较器及RC组成的负反馈构成;三角波主要由积分电路产生。
三角波转换为正弦波,则是通过差分电路实现。
该电路振荡频率和幅度便于调节,输出方波幅度大小由稳压管的稳压值决定,方波经积分得到三角波;而正弦波发生电路中两个电位器实现正弦波幅度与电路的对称性调节,实现较理想的正弦波输出波形。
二、关键词: 函数信号发生器 方波 三角波 正弦波三、设计任务要求1.基本要求:设计制作一个函数信号发生器电路,该电路能够输出频率可调的正弦波、三角波和方波信号。
(1) 输出频率能在1-‐10KHz范围内连续可调,无明显失真。
(2) 方波输出电压Uopp=12V(误差小于20%),上升、下降沿小于10us。
(3) 三角波Uopp=8V(误差小于20%)。
(4) 正弦波Uopp1V,无明显失真。
2. 提高要求:(1) 输出方波占空比可调范围30%-‐70%。
(2) 三种输出波形的峰峰值Uopp均可在1V-‐10V内连续可调电源电路 方波-‐三角波发生电路 正弦波发生电路方波输三角波输正弦波输现输出信号幅度的连续调节。
利用二极管的单向导通性,将方波-‐三角波中间的电阻改为两个反向二极管一端相连,另一端接入电位器,抽头处输出的结构,实现占空比连续可调,达到信号发生器实验的提高要求。
五、分块电路和总体电路的设计过程1. 方波-‐三角波产生电路设计过程:①根据所需振荡频率的高低和对方波前后沿陡度的要求,选择电压转换速率S R合适的运算放大器。
方波要求上升、下降沿小于10us,峰峰值为12V。
LM741转换速率为0.7V/us,上升下降沿为17us,大于要求值。
北京邮电大学数电实验-沙漏点阵实验报告
![北京邮电大学数电实验-沙漏点阵实验报告](https://img.taocdn.com/s3/m/d1c63751804d2b160b4ec0f8.png)
数字电路实验报告学院:电子工程学院班级:2012211209 学号:2012211063 姓名:张克寒一实验课题任务介绍和要求沙漏是一种古老的计时工具,也是一种玩具。
电子沙漏用发光二极管表示沙粒,模拟沙漏的运动过程。
电子沙漏会像真正的沙漏一样,上部的沙粒(点亮的发光二极管)一粒一粒往下掉,下部的沙粒一粒一粒堆起来。
在结构上,两组各16 个发光二极管分别排列成为两个三角形,如图1 所示。
其中:VD0~VD15 位于上部,排列成倒三角形;VD0'~VD15'位于下部,排列成正三角形。
两个三角形的顶尖相对,组成沙漏形状。
当上部有一个发光二极管熄灭时,相应地下部就有一个发光二极管点亮,模拟了沙粒的运动。
1、采用8*8 双色点阵显示电子沙漏的开机界面,如图2 所示。
其中红色LED 代表沙漏的上半部分沙粒VD0~VD15,绿色LED 代表沙漏的下半部分VD0'~VD15'。
2、用拨码开关SW1 模拟重力感应器。
当SW1 为低电平时,沙粒从VD0~VD15 向VD0'~VD15'移动;当SW1 为高电平时,沙粒从VD0'~VD15'向VD0~VD15 移动。
3、按键BTN0 作为计时启动停止按键,启动后沙粒即可按照SW1 设定的方向移动,以SW1 为低电平时为例,LED 移动的顺序与对应关系如图3 的①~○16所示(若SW1为高电平,则点阵显示移动顺序为○16~①)。
每颗沙粒的移动时间为1 秒,当移动到图3 的○16时,若SW1 仍为低电平,则保持沙粒不动,但计时继续,直到SW1 的电平发生变化或者BTN0 计时停止。
4、设计实现一个60 秒计时器,当按键BTN0 启动时开始工作,用于在沙粒移动过程中进行计时校准,并用数码管DISP0~DISP1 显示计时结果。
提高要求:1、可以调节控制电子沙漏的流动速度。
2、用多种方式呈现电子沙漏界面。
3、自行设定沙粒的移动路径,显示每颗沙粒的移动过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字电子电路综合实验题目:LED点阵风扇的设计与实现实验报告学号:姓名:班级:专业:通信工程学院:信息与通信工程学院指导老师:2015年11月7日LED点阵风扇的设计与实现一、实验要求基本要求:1.用8×8点阵模拟风扇转动,并用双色点阵显示。
2.风扇转动方式包括四个点阵显示状态,并按顺序循环显示。
风扇转动速度根据环境温度分为4档,其中1档的四个显示状态之间的切换时间为2秒,2档为1秒,3档为0.5秒,4档为静止不动。
3.环境温度通过2个BTN按键设置,一个用来增加,一个用来减少,温度范围可设置范围为10℃~40℃,温度精度为1℃,并用两个数码管进行温度显示,风扇根据不同的温度自动采用不同的转动速度,其中20℃~24℃对应1档,25℃~29℃对应2档,30℃~40℃对应3档,10℃~19℃对应4档,用一个数码管显示档位。
4.定时模式:在风扇不同转动速度下,可以通过按键切换进入定时模式。
定时时间可设置范围为20~59秒,采用2个数码管进行倒计时显示,当倒计时结束后,风扇状态保持静止不动。
5.设置开关键。
风扇开机初始状态为20℃、1档,并有不小于5秒的开机音乐,关机状态为点阵全灭。
提高要求:1.设计LED 风扇的其他工作模式。
2.利用实验板上的温度传感器代替按键直接获取温度数据,实现对LED 风扇四档转速的自动控制。
3.用数码管实时显示温度传感器的温度数据,精度为0.1℃。
4.自拟其他功能。
二、系统设计1.设计思路这次实验采用老师讲过的自顶向下的设计方法来完成设计。
为了实现电风扇的功能,将系统分成多个模块:控制器模块:通过按钮与开关输入开关机、温度、倒计时时间等信息,实现开机音乐、温度调整档位切换功能、倒计时功能等。
蜂鸣器模块:通过蜂鸣器震动,使开机时播放不少于5s的音乐。
分频器模块:分频模块把晶振(1000Hz)分成了500Hz,1000Hz,2000Hz传给控制器,供电风扇以不同档位工作。
LED点阵模块:双色点阵部分按时钟周期对红灯、绿灯分别进行行扫描,以显示风扇的四个工作状态,并在四个状态间循环切换。
倒计时模式切换模块:用SW按钮控制温度与倒计时工作模式的切换。
数码管显示模块:通过6个共阴极数码管按时钟周期持续扫描,一位显示0,第二、三位显示时间,第四位显示档位,第五、六位显示温度。
防抖模块:防止由于BTN按钮本身原因1次输入产生多个信号。
2.设计框图三、波形图1.蜂鸣器通过开机键控制开关,开机后蜂鸣器响5s 。
2.数码管控制器点阵显示数码管显示分频器通过一定频率不断扫描,6个数码管均可以良好显示数字,第一位显示0,第二、三位显示时间,第四位显示档位,第五、六位显示温度。
3.分频器4.点阵显示四、源程序1.防抖文件library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fangdou ISport(clk:in std_logic;reset:in std_logic;resetn: out std_logic);END fangdou;architecture behave of fangdou is signal clk_tmp : std_logic;signal cnt : integer range 0 to 199999; signal tmp1,tmp2: std_logic;beginprocess(clk)beginif (clk'event and clk='1') thenif cnt=199999 thencnt<=0;clk_tmp<= not clk_tmp;elsecnt<=cnt+1;end if;end if;end process;process(clk_tmp)beginif (clk_tmp'event and clk_tmp='0') thentmp2<=tmp1;tmp1<=key_in;end if;end process;key_out<=clk_tmp and tmp1 and (not tmp2);end behave;2.电风扇use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dianfengshan isport (clk: in std_logic;--时钟输入clear: in std_logic;--电风扇开关colr,colg,row:buffer std_logic_vector(7 downto 0); --LED点阵显示shu:out std_logic_vector(7 downto 0);--数码管cat:out std_logic_vector(5 downto 0);--数码管行扫描b1,b2: in std_logic;--温度增减b3,b4: in std_logic;--时间增减ton: in std_logic;--时间模式开/关feng: out std_logic--蜂鸣器);end dianfengshan;architecture behave of dianfengshan issignal clk1,clk2,clk3,clk4:std_logic ;--分频后的时钟信号表示倒计时结束signal tup:std_logic:='0';--tup为‘1’signal kind,dang:integer range 0 to 3;--kind为风扇的四个状态,dang 为模式signal cnt:integer range 0 to 7;--数码管管位显示signal temp:integer range 10 to 40:=20;--温度signal a1,a2,a3,a4,a5:std_logic;--对应b1,b2,b3,b4,ton防抖后的输出signal clock: std_logic;--电风扇转动的时钟signal t:integer range 0 to 59:=20;--时间signal op:std_logic;--open,时间模式开关signal beep: std_logic;--蜂鸣器信号component fangdou is--引用防抖模块port(clk: in std_logic;reset: in std_logic;resetn:out std_logic);end component;beginuo_1:fangdou port map(clk,b1,a1) ;uo_2:fangdou port map(clk,b2,a2);uo_3:fangdou port map(clk,b3,a3);uo_4:fangdou port map(clk,b4,a4);uo_5:fangdou port map(clk,ton,a5);p1:process(clk,clear)--分频器variable tmp1:integer range 0 to 999;variable tmp2:integer range 0 to 749;variable tmp3:integer range 0 to 499;variable tmp4:integer range 0 to 499;beginif clear = '0' thentmp1:=0;tmp2:=0;tmp3:=0;tmp4:=0;elseif clk'event and clk = '1' thenif tmp1=999 thentmp1:=0;clk1<= not clk1;else tmp1:=tmp1+1;end if; --对clk进行2000分频if tmp2=749 thentmp2:=0;clk2<=not clk2;else tmp2:=tmp2+1;end if; --对clk进行1500分频if tmp3=499 thentmp3:=0;clk3<=not clk3;else tmp3:=tmp3+1;end if; --对clk进行1000分频if tmp4=499 thentmp4:=0;clk4<=not clk4;else tmp4:=tmp4+1;end if;end if;p2: process(clk)--控制LED点阵的行扫描beginif clear = '1' then--电风扇开关开着的时候if clk'event and clk = '0' thenif cnt = 7 then cnt<=0;else cnt<= cnt+1;end if;end if;case cnt iswhen 0=>row<="01111111";--行扫描when 1=>row<="10111111";when 2=>row<="11011111";when 3=>row<="11101111";when 4=>row<="11110111";when 5=>row<="11111011";when 6=>row<="11111101";when 7=>row<="11111110";end case;else row<="11111111";end if;p3:process(clk)--led显示beginif clear = '1' thenif kind = 0 then --电风扇工作第一种状态case row iswhen "01111111"=>colr<="10000000";colg<="00000001"; when "10111111"=>colr<="01000000";colg<="00000010"; when "11011111"=>colr<="00100000";colg<="00000100"; when "11101111"=>colr<="00010000";colg<="00001000"; when "11110111"=>colr<="00001000";colg<="00010000"; when "11111011"=>colr<="00000100";colg<="00100000"; when "11111101"=>colr<="00000010";colg<="01000000"; when others =>colr<="00000001";colg<="10000000";end case;elsif kind = 1 then--电风扇工作第二种状态case row iswhen "01111111"=>colr<="00010000";colg<="00000000"; when "10111111"=>colr<="00010000";colg<="00000000"; when "11011111"=>colr<="00010000";colg<="00000000"; when "11101111"=>colr<="00010000";colg<="00001111";when "11111011"=>colr<="00001000";colg<="00000000"; when "11111101"=>colr<="00001000";colg<="00000000"; when others =>colr<="00001000";colg<="00000000";end case;elsif kind =2 then--电风扇工作第三种状态case row iswhen "01111111"=>colg<="10000000";colr<="00000001"; when "10111111"=>colg<="01000000";colr<="00000010"; when "11011111"=>colg<="00100000";colr<="00000100"; when "11101111"=>colg<="00010000";colr<="00001000"; when "11110111"=>colg<="00001000";colr<="00010000"; when "11111011"=>colg<="00000100";colr<="00100000"; when "11111101"=>colg<="00000010";colr<="01000000"; when others =>colg<="00000001";colr<="10000000";end case;else--电风扇工作第四种状态case row iswhen "01111111"=>colr<="00000000";colg<="00010000"; when "10111111"=>colr<="00000000";colg<="00010000"; when "11011111"=>colr<="00000000";colg<="00010000"; when "11101111"=>colr<="00001111";colg<="00010000";when "11111011"=>colr<="00000000";colg<="00001000";when "11111101"=>colr<="00000000";colg<="00001000";when others =>colr<="00000000";colg<="00001000";end case;end if;end if;end process;p4:process(a1,a2,a3,a4,a5,clk)--温度控制模块beginif clear = '1' thenif clk'event and clk= '0'thenif a1='1' then--b1按键控制温度增加if temp<40 thentemp<=temp+1;end if;elsif a2 = '1' then--b2按键控制温度减少if temp>10 thenend if;end if;if tup<='0' then--倒计时没结束时if temp>9 and temp<20 then--第4档dang<=3;clock<='0';elsif temp>19 and temp<25 then--第1档dang<=0;clock<=clk1;elsif temp>24 and temp<30 then--第2档dang<=1;clock<=clk2;elsif temp>29 and temp<41 then--第3档,dang<=2;clock<=clk3;else temp<=temp;end if;elsif tup<='1' thenclock<='0';--clock置0,风扇静止end if;end if;else temp<=20;clock<=clk1;dang <= 0;end if;end process;p5:process(clock)--风扇四种状态的切换beginif clear = '1' thenif clock'event and clock='1' thenif kind = 3 then--kind在0到3之间循环切换kind<=0;elsekind <= kind +1;end if;end if;end if;end process;p6:process(temp,t)--数码管显示variable c1,c2,c3,c4,c5,shu1:integer range 0 to 9;variable tmp:integer range 0 to 5;beginif clear = '1' thenc1:=temp rem 10;--c1显示温度的个位数c2:=temp/10;--c2显示温度的十位数c3:=dang+1;--c3显示档位,即dang+1c4:=t rem 10;--c4显示时间的个位数c5:=t/10;--c5显示时间的十位数if clk'event and clk = '1' then--数码管扫描if tmp = 5 thentmp := 0;else tmp:=tmp+1;end if;end if;case tmp iswhen 0=>cat<="111110";shu1:=c1;when 1=>cat<="111101";shu1:=c2;when 2=>cat<="111011";shu1:=c3;when 3=>cat<="110111";shu1:=c4;when 4=>cat<="101111";shu1:=c5;when 5=>cat<="011111";shu1:=0;end case;case shu1 is--数码管对10个数的显示when 0=>shu<="11111100";when 1=>shu<="01100000";when 2=>shu<="11011010";when 3=>shu<="11110010";when 4=>shu<="01100110";when 5=>shu<="10110110";when 6=>shu<="10111110";when 7=>shu<="11100000";when 8=>shu<="11111110";when 9=>shu<="11110110";end case;else cat<="111111";end if;end process;p7:process(a3,a4,clk4,op)--时间控制模块variable tmp:integer range 0 to 999;beginif clear = '1' thenif clk'event and clk ='0' thenif op = '0' thenif a3='1' then--b3按键增加时间if t<59 thent<=t+1;end if;elsif a4='1' then --b4按键减少时间if t>20 thent<=t-1;end if;end if;elsif op = '1' thenif tmp = 999 then tmp:=0;if t>0 thent<= t-1;elsif t=0 thent<=0;tup<='1'; --t=0,倒计时结束end if ;else tmp:=tmp + 1;end if;end if;end if;else t<= 20; --总开关关闭后,对时间进行重置end if;end process;p8:process(a5)--b5按键按下之后更改倒计时模式beginif clear = '1' thenif a5'event and a5='1' thenop<=not op; end if;else op <='0';end if;end process;p9:process(clk,clk4)--蜂鸣器模块,开机音乐variable f: integer range 0 to 999;variable a: integer range 0 to 5; --开机音乐5秒钟variable b:integer range 0 to 2;variable c:integer range 0 to 3;variable d: integer range 0 to 4;variable e: integer range 0 to 1;beginif clear ='1'thenif clk'event and clk = '1' thenif f = 999 then f:=0;if a = 5 then a:=5;else a:=a+1;end if;else f:=f+1;end if;if b = 2 then b:=0;else b:=b+1;end if;if c = 3 then c:=0;else c:=c+1;end if;if d = 4 then d:=0;else d:=d+1;end if;if e = 1 then e:=0;else e:=e+1;end if;if a = 5 then beep<= '0'; --5秒后,音乐停止elsif a = 4 then beep <= not beep;elsif a = 3 then if b = 2 then beep <=not beep;end if;elsif a = 2 then if c=3 then beep <= not beep;end if;elsif a=1 then if d = 4 then beep <= not beep;end if;else if e = 1 then beep <= not beep; end if; --使每秒蜂鸣器的发出不同频率的声音end if;end if;else a:=0;end if;end process;feng<=beep;cclk1<=clk1;cclk2<=clk2;cclk3<=clk3;end behave五、功能说明及资源利用情况功能说明:开机后有5s音乐,后音乐停止,开机时点阵显示初始状态,默认初始温度为20℃,通过btn按键调节温度,加减温度后档位自动随之变化,风扇转速也随之变化,当使用SW开倒计时模式时,调节btn按键调整倒计时时间,计时结束后风扇停止转动。