基于微机的律动光立方设计
实验题目:基于微机的律动光立方设计

演示视频请访问
http://v.youku.com/v_show/id_XMjcwOTQzNDg0OA $= =$ .html?f=49516286&spm=a2hzp.8253876.0.0&fro m=y1.7-3
1. 课程简要信息
课程名称:微机原理课程设计
课程学时:60学时
适用专业:工业自动化、电气自动化
学生年级:大三
2. 实验内容与任务(限 500 字)
光立方是将若干个发光二极管(LED)组成一个三维立方体,通过变换不同位置上 LED 亮灭状态实现在 3D 空间上显示立体的图形、文字等。光立方是“裸眼”3D 最直观、最简易的实现方式,集知识性、观赏性、娱乐性于一体。本实验要求学生综合利用微机原理、数字电子、模拟电子知识,设计硬件方案,自行焊接、搭建光立方及其外围电路,编写、调试软件,实现随音乐声强和频谱在3D 空间上不断变化的“律动光立方”。具体任务包括:
1)以 8088、8255 等器件为基础,设计光立方的硬件电路。
2)焊接 512个LED组成的光立方、译码驱动电路和音频采集电路。
3)编写自检程序,实现光立方 LED 的逐个循环点亮,借此判断 512 个 LED 是否可以正常点亮,译码驱动电路是否正常。
4)编写静态图像、文字显示程序,实现 3D心型、时钟的显示。
5)编写简单动画显示程序,实现旋转立方体的显示。
6)编写程序实现随音乐强度和频谱在三维空间上不断变化的光立方,音乐由麦克风采集,频谱通过快速傅立叶变换得到。
本实验由6人合作完成,分成 3个阶段与层次,依次递进,其中1) ${ \sim } 3$ )项由第一组共 2人完成,4)~5)项由第二组共 2 人完成,6)项由第三组共 2人完成。
3. 实验过程及要求(限 300 字)
1)学习光立方显示原理,了解已有光立方设计方案并比较优缺点。
2)团队负责人组织本组成员讨论,提出适于现有软硬件资源的方案并规划时间进度。注意在确定方案时要从技术、成本等方面综合考虑,利用甘特图制定进度计划。
3)通过仿真检验所设计的硬件。
4)焊接光立方和硬件电路,注意要搭建测试电路来检验焊接质量。
5)编写自检程序,逐个点亮 LED。
6)设计LED 码表并编写静态显示程序,能显示 3D 心型、3D 时钟等。
7)设计动画程序,能显示旋转立方体等。
8)编写“律动光立方”程序,采集音频后通过FFT 得到频谱,根据声强和频谱改变横、纵方向
上LED 的点亮状态。
9)撰写设计总结报告,并通过每个人演讲,交流经验体会。
4. 相关知识及背景(限 150 字)
本实验涵盖了微机原理、模拟电子技术、数字电子技术的课内知识与典型应用,需综合运用驱动放大电路、多级译码电路、音频检测与放大、模数信号转换、信号处理、可编程逻辑器件等相关知识和技术,涉及可靠性、可测试性、可重用性等工程概念与实现方法,也需要运用成本核算、基于甘特图的进度与资源管理等工程管理方法。
5. 教学目标与目的(限 100 字)
使学生具备从工程视角择优选择、提出创新性技术方案的能力;帮助学生掌握“软(件)硬(件)兼施”的电子系统设计和实现方法,具备调试复杂软硬件的能力;促进团队合作,使学生能初步运用进度与资源工程管理方法。
6. 教学设计与引导
本实验需要综合运用微机原理、数字电子、模拟电子等课程知识来解决工程实际问题,从分析项目需求、制定项目技术方案、规划项目时间进度与任务分配、设计调试硬件电路、编写软件、软硬件联调等方面对学生进行全面培养。在实验教学中,教师应注重在以下方面加强对学生的讲解和引导:
1)通过演示往届学生完成的 $4 ^ { * } 4 ^ { * } 4 { = } 6 4$ 个 LED 光立方,激发学生学习兴趣,同时指出这次实验所要完成的 $8 ^ { * } 8 ^ { * } 8 { = } 5 1 2$ 个 LED 的光立方,其工作量至少是以往的 512/64=8 倍,所以提醒学生注意 $\textcircled{1}$ 该项目需要多人组队完成,队员之间的团结协作是项目能否成功的关键因素,必须在实验前完成任务分配和进度规划,甘特图是一种行之有效的方法。 $\textcircled { 2 } 5 1 2$ 个 LED 中任何一个LED 显示不正常都会影响最终的效果,因此要在项目方案设计之初就要把可靠性、可测试性、可维修性等工程要求考虑在内。 $\textcircled{3} 6$ 个人分三批进入实验室完成相对独立的任务,每个人的工作都是后续小组完成实验的基础,在思想上强化每个学生的责任和担当,在技术上引导学生注重系统概念、工程规范、代码可重用性。
2)在方案制定阶段,引导学生从技术可实现性、技术难点、可靠性、成本等多方面衡量比较技术方案,并依据现有软硬件资源确定技术方案。例如学生通过检索,初步选择了基于门电路的方案、基于 CPLD 的方案和基于锁存器的方案,针对这三种方案,指导学生完成如表 1 的表格.
通过该表格,可使学生切身感受到解决一个工程问题可以有多种可行方案,每种方案都有其优缺点,在制定方案时要以综合考虑多方面因素,立足解决主要矛盾。又如锁存器方案有 573和 373 两种芯片都可以实现指定功能,引导学生从布线合理、易于排错角度选择芯片,最终学生选择了便于接线的、输入输出管脚在芯片左右两侧的 573,而没有选用输入输出引脚交替排列的 373 芯片。
表1 现有方案的对比
| 技术可实现性 | 技术难点 | 成本 | 可靠性 | 可维修性 | 软件开销 | |
| 门电路方描案 | 点扫 | 纯硬件连线,已有知识可完成。 | 16个与门,合计32元。 | 器件数最多,连线复杂,可靠性最低 | 连线复杂、器件多,难于维修 | -次只能控制一个LED 亮灭,显示整个光立方需要反复512次,软件开销大。 |
| CPLD方案 | 点、线、面扫描 | 需要自学CPLD开发,花费额外时间 | 一 个 CPLDXC9572,52元 | 器件最少,可靠性高 | 只有一片CPLD,维修容易。 | 点扫描需要反复512 次,软件开销大;面扫面需要反复8次,软件开销最小。 |
| 锁存线扫器方描或案 | 锁存线扫器方描或面扫描 | 纯硬件连线,已有知识可完成。 | 八个 573 和三个ULN2803A,合计42元 | 可靠性较好 | 可维修性较好 | 线扫描需要反复64 次,软件开销较大;面扫描需要反复8次,软件开销最小。 |
3)引导学生利用现代工程管理工具来推进项目进度。本项目团队由三个小组、每组两人总共 6 人构成,三个小组分六个星期先后进入实验室,每小组的工作都是后续小组的基础,所以一旦出现某个小组不能按时完成任务,就会影响整个项目进度,因此在项目之初就让学生们学习利用甘特图规划项目进度的方法,团队成员自行推举了负责人,要求负责人统一制定项目进度规划、分配资源和任务。
4)在焊接硬件阶段中,除目视检测焊接质量外,引导学生注重可测试性,要求学生基于 TPC-ZK实验箱设计搭建硬件测试电路,保证焊接 LED、译码驱动电路的每一个单元都可测试。
5)在设计实现过程中,引导学生掌握“软(件)硬(件)兼施”的电子设计方法和软硬联调的调试方法。在实验设计实现过程中,要求学生综合利用现有软硬件资源、充分发挥软硬件各自优势来实现对光立方的控制。例如 8255芯片的驱动电流有限,在不加达林顿管驱动的情况下一次只能驱动一个LED,那么为了使整个光立方显示,那么就需要从软件上予以弥补,通过高速循环扫描的方式、利用人眼视觉残留现象让人感觉是整个光立方在持续稳定显示。
6)在音频信号处理中,虽然学生是调用已有的 FFT 程序,但音频采集滤波放大电路、采样频率、FFT 程序调用和 FFT 处理结果运用等仍需学生自己确定,因此要求学生必须复习模拟电子和信号处理相关知识,引导学生关注滤波电路、采样频率等对FFT 的影响及对光立方整体显示效果的影响,关注现有 FFT 采样点数和程序运算结果的物理含义。
7)允许学生试错,引导学生关注可靠性、可测试性、代码可重用性等工程要求。例如学生在实现门电路方案时起初并未注意合理布局布线,也没有边焊接边测试,而是把整个电路焊接完才开始测试,对于指导教师的提示也未予以足够重视,作为指导教师并未强制要求学生改正,等测试电路时学生就发现因为连线混乱这个电路根本无法找到不正常工作的原因,为了排查一个LED 错误经常会花上一个小时而且还不一定排查出来,这种切肤之痛让学生对于可测试性有了直观的感受,此时指导教师对学生进行有针对性的理论知识和实际工程操作的讲解,学生是心服口服,自觉主动的重新改进硬件电路。
8)强化学生全程交流,除项目结束后要求学生做 ppt 进行演讲外,要求学生在项目制订方案、任务交接时都要由团队负责人组织团队讨论,借以加强学生的团队意识、进度意识、工程观念,同时让学生相互了解彼此的工作,交流成功与失败的经验体会。
7. 实验原理及方案
1)系统结构
系统结构如图1所示。音乐通过麦克风经音频滤波放大电路处理后,由ADC0809实现量化采集、把模拟音频信号转换为微处理器 8088 可以直接处理的数字信号。8088 对输入音频信号进行 FFT 计算,并计算声强峰值,在中断程序中根据 FFT 计算结果和声强峰值控制 8255 各个端口的状态,8255 输出经光立方译码与驱动电路后控制 512 个 LED 点亮与熄灭状态,从而使光立方随声强和频率改变显示状态。8253产生方波信号,该信号经8259向8088定时申请中断,形成音频信号定时采集、光立方循环扫描的时间基准。

图1 律动光立方系统结构
2)实现方案
2.1 音频滤波放大电路用于滤除音频信号中的噪声并将信号放大到 ADC0809 的电压范围内。共有三种不同的方案,既可以选择由分立元件(如三极管、电阻、电容)搭建,也可以由通用运算放大器(如 LM324)组成,还可以选用 INA1650 等单芯片解决方案。
2.2 光立方显示可以选择静态显示或动态扫描两大类,静态显示需要同时驱动 512 个 LED 来使整个光立方显示,动态扫描由可以细分为点扫描、线扫描和面扫描三种。点扫描是一次只控制一个LED 的状态,通过循环扫描 512 次来使整个光立方显示;线扫描是一次控制一列(8 个)LED 的状态,通过循环扫描 $5 1 2 / 8 { = } 6 4$ 次来使整个光立方显示;面扫描是一次控制一个面( $8 ^ { * } 8 { = } 6 4$ 个)LED 的状态,通过循环扫描 $5 1 2 / 6 4 { = } 8$ 次来使整个光立方显示。
2.3 光立方动态扫描形式的不同直接决定了译码和驱动电路的结构和形式。对于驱动电路而言,如果采用点扫描形式,因为一次只需控制一个 LED 的亮灭,所以可以省略驱动电路,而由 8255 直接驱动;如果采用线扫描和面扫描形式,则因为驱动 LED 数量多,超出了 8255 的驱动能力,所以必须添加诸如ULN2803等驱动芯片。就译码电路而言,如果是点扫描或线扫描则必须采用多级译码结构,实现上可以使用门电路或 CPLD芯片;如果是面扫描可以采用线选方式,由8255或锁存器直接选择。
2.4整个程序包括8253、8255初始化,ADC 采样、峰值和 FFT 计算、8255输出控制、LED亮灭控制等。程序采用基于中断的形式,根据音频信号特征、光立方扫描次数等确定中断时间间隔,定时时钟由8253方式3产生,定时中断由 8253通过8259 向CPU申请。
8. 教学实施进程

1)在预习自学阶段教师和学生需完成的工作任务如图 2 所示
图 2 预习自学阶段教师和学生需完成的工作
学生在比较现有方案的过程中,往往只重视技术可实现性和技术难度,教师要适时引导学生关注成本、可靠性、可测试性、可维修性等工程要求。在学生提出实验方案后教师要检查方案的正确性,尤其是要求学生的方案必须立足于现有的软硬件实验装置,对于那些自制电路过多、预期耗时过长的方案要求学生整改。在制定项目进度和任务分配中,强化学生的主观能动性,即采用团队成员集体讨论、团队负责人全面负责的形式,教师只调整某些学生任务量过少、另些学生任务量过重的情况。
2)在硬件设计调试阶段教师和学生需完成的工作任务如图 3 所示。
在硬件设计阶段引入了虚拟实验,在multisim软件下搭建了 $8 ^ { * } 8$ 虚拟LED点阵如图4所示。引入虚拟实验教学的目的有两个:一是打破实验室实验的时间限制,学生可以充分利用课外时间进行硬件设计与调试。学生在焊接硬件电路前可以在课外时间对此点阵进行仿真操作,由于multisim 提供了与实际器件外观高度相似的虚拟器件和 Interactive 仿真模式,学生不仅可在此虚拟实验环境中得到与真实实验高度类似的直观感受,而且可以有充裕的时间尝试多种不同的硬件方案。二是为后续硬件焊接排错提供指导。由于虚拟实验环境不存在焊接虚焊、硬件接触不良等情况,所以如果在虚拟实验环境中得到了正确结果的前提下,而在实际电路中得不到结果,则说明在焊接、器件、连线等方面存在错误,因为通过虚拟实验缩小了排错的范围,所以硬件调试的效率得以提高。
在硬件焊接阶段,教师除对焊接方法、安全性等对学生进行必要的讲解指导外,其它都不作约束,同时允许学生试错,即学生可以不接受教师的建议,按照自己的想法设计焊接电路,出现错误后学生自己再返工,虽然这种方式学生做了无用功,但曲折的过程和深刻的教训会让学生对可靠性、可测试性等工程要求有更为直观深入的理解并积累了工程经验。
3)在软件设计和软硬件联调阶段教师和学生需完成的工作任务如图 5 所示。
在程序设计阶段教师把软件的规范性放在首要的位置,程序结果不仅要正确,而且要求学生在书写代码前必须画流程图,软件必须采用模块化设计,子程序必须有文档,子程序输入、输出参数必须符合约定要求,子程序必须配有测试代码用以验证代码的正确性。上述要求都在打分时予以考虑,对于那些只有正确结果,代码不规范、文档不健全的一律只给及格分,从而强化学生软件设计的规范意识。

图3 硬件设计调试阶段教师和学生需完成的工作
软硬件联调是学生通过微机课程设计必须掌握的技能,所以在学生调试驱动子程序、算法子程序和主程序过程中教师都进行详细的指导与讲解。如光立方的显示效果是通过动态扫描实现的,当图形显示不正常时,依靠单步执行是无法有效排查错误的,这时教师就引导学生通过设置断点 $+ .$ 单步调试来提高测试效率,首先设置断点让程序全速运行到疑似有问题的代码附近,然后单步执行观察光立方的输出。又如有部分学生经常出现 8255芯片管脚长时间工作后失效的问题,看似这个问题是由硬件芯片不稳定引起的,但通过调试软件代码发现该问题是软件导致的,原因是光立方每列采用共阴极接法,在切换列过程中,采用的是原有列共阴极8255 口线置 $_ { 0 }$ 改变阳极 8 条口线状态 $\twoheadrightarrow$ 新列共阴极 8255 口线置 $_ { 0 }$ 原有列共阴极 8255 口线置 1 的过程,在此过程中存在原有列共阴极 8255 口线和新列共阴极 8255 口线同时为 0 的情况,过大的灌电流导致 8255 损坏。正确的切换顺序是原有列共阴极 8255 口线置 $1 $ 改变阳极 8 条口线状态 $\twoheadrightarrow$ 新列共阴极8255口线置0。


图 4 multisim 虚拟环境下的 LED 点阵
图5 软件设计和软硬件联调阶段教师和学生需完成的工作任务
9. 实验报告要求
实验报告包含以下几个方面内容:
1)实验需求分析。根据光立方动态显示和音频信号采集要求,逐条列举律动光立方应实现的功能和对应的技术指标。例如光立方必须达到持续稳定显示的要求,人眼看不到延迟、卡顿等情况,与这一功能要求对应的技术指标是光立方点亮的总时间不能超过0.1秒。
2)实现方案论证。包含 a)对现有技术方案的描述及各个既有方案的优缺点对比,完成如表1所示的方案对比表。b)根据现有实验箱的软硬件资源(如实验箱板载只有一片8255,总共 24条口线)提出本实验具体的软硬件方案。
3)理论推导计算过程。如音频采集电路中滤波和放大参数的计算方法;FFT 一次计算需要512个采样点,光立方稳定显示要求点亮时间不能超过0.1秒,能复现语音的采集频率需大于 ${ 5 \mathrm { K H z } }$ ,依据上述三个约束条件计算采样频率和光立方扫描频率的方法。
4)电路设计与参数选择。例如选取音频采集电路中放大电路组态的依据;8253定时时间间隔与计数初值的计算方法;LED 译码驱动电路的实现形式等。
5)电路图与仿真结果。包含音频采集电路、LED 译码驱动电路的电路图和验证硬件的 multisim仿真电路及仿真结果。
6)硬件电路测试方法。给出检验焊接质量、测试音频采集电路、LED 译码驱动电路的方法。
7)程序流程图。包含主程序及音频采集、光立方扫描等子程序的流程图。
8)实验总结。从项目组织、技术、团队合作等方面对实验进行总结。
附录:1)给出整个程序代码。2)甘特图
10.考核要求与方法(限 300 字)
本实验从七方面进行考核
1)文献检索:要求学生运用多种检索工具查找到相关文献资源。考核文献正确性、与实验相关性和文献数量。
2)方案设计:要求学生从技术、成本等多方面比较现有技术方案优劣,并提出自己的设计方案。
考核器件和电路的合理性、成本可控性。
3)焊接质量:考核焊接结构的完整性、布线的合理性、点亮 LED 的个数、是否有用于测试焊接质量的硬件测试电路。
4)上机编程调试:考核代码正确性和可重用性,软硬件联调、设置断点单步执行等调试方法的使用。
5)实物验收:考核是否达到了设计要求,能否长时间可靠稳定运行为
6)总结报告:实验报告是否完整、规范。
7)创新性:是否采用了新颖的设计方法或实现了更加丰富的功能。
11.项目特色或创新(可空缺,限 150 字)
本项目以裸眼3D的光立方实现为背景,融知识性、娱乐性、观赏性于一体,充分激发学生学习兴趣;该项目的实现需综合运用微机、数字和模拟电子等多门电类核心课程知识,提高了学生自学能力和同时运用软硬件技术解决工程问题的能力;由 6 人组成团队分时段、分层次合作完成实验,培养团队精神和运用多种工程管理方法的能力。
光立方体

蓝色圆柱形LED光立方
电路板


方案 1
实验效果 3D 时钟

方案 2

3D 心型


律动光立方
律动光立方视频网址
http://v.youku.com/v_show/id_XMjcwOTQzNDg0OA $= =$ .html?f=49516286&spm=a2hzp.8253876.0.0
&from=y1.7-3
实验案例信息表
| 案例提供单位 | 天津大学 | 相关专业 | 工业、电气自动化 | |||
| 设计者姓名 | 陈曦 | 电子邮箱 | chenxi@t ju.edu. cn | |||
| 移动电话 | 13502024252 | 通讯地址(含邮编) | 天津市南开区天津大学电气自动化与信息工程学院,300072 | |||
| 设计者姓名 | 刘迎澍 | 电子邮箱 | liu_ysh@t ju. edu. cn | |||
| 移动电话 | 15922097591 | 通讯地址(含邮编) | 天津市南开区天津大学电气自动化与信息工程学院,300072 | |||
| 设计者姓名 | 金文 | 电子邮箱 | jinwen@t ju. edu. cn | |||
| 移动电话 | 13752271335 | 通讯地址(含邮编) | 天津市南开区天津大学电气自动化与信息工程学院,300072 | |||
| 相关课程名称 | 微机原理课程设计 | 学生年级 | 大三 | 学时(课内+课外) | 60+60 | |
| 支撑条件 | 仪器设备 | TPC-ZK微机原理及接口实验台、PC机、示波器、万用表 | ||||
| 软件工具 | TPC-PCI集成编程环境 | |||||
| 主要器件 | 发光二极管、XC9572、ULN2803、74LS573 | |||||