非常简单,而且比较有意思,适合初学者学习
单片机原理与应用
课程设计报告
作品名称: 基于STC89C52的16LED摇摇棒
目录
一、作品说明2
二、系统总体设计4
三、硬件设计6
四、软件设计7
五、系统调试与分析8
六、课程作品制作体会11
基于STC89C52的16LED摇摇棒设计 一、作品说明 摇摇棒是如今流行的一种玩具,在各种聚会、节日中均见得到它的身影。本设计也追随着摇摇棒的原理,利用人眼的视觉暂留特性,通过STC89C52单片机对16只高亮度LED发光二极管进行控制, 配合手的左右摇晃就可呈现一幅完整的画面。 该摇摇棒具有如下功能: 可以通过开关实现转换,轮流显示并循环: - 显示 “心”心形图案;
- 显示 “o(∩_∩)o”图案;
5) 显示 “LOVE”; 具体实物图如下: 二、系统总体设计 1、总体方案比较与论证 所谓的“摇摇棒”,其实就是一个循环的LED显示,利用人的视觉滞留产生静态显示的现象。要实现这个目标,就要求延时部分做的比较小,所以采用石英晶体振荡器。而目前能够实现这种功能的器件有很多种,不同的类型的器件也能够很好的完成。 本作品本着方便、价格低廉的原则,采用单片机控制,由晃动开关的闭合对单片机产生外部中断,从而对中断进行采集。到达一定数量便进行图象的转换。整个系统由单片机控制模块,开关及电源模块和输出显示模块三个部分构成。系统框图如下: 2、主要部件原理 (1)单片机控制模块 用单片机想要控制LED显示只需要定时输出就可以,但每个人摇动的速度不一样,如何准确的并稳定的变换图案呢?这就需要用到外部中断。将晃动开关的两个引脚一端接单片机引脚(P3.2),一端接GND,这样的话,当摇棒向一边运动时LED按照程序编辑好的规律显示,而向另一边运动时LED全灭,此时一个周期就会产生一个下跳沿的信号,信号传递给单片机的INT0产生中断,对中断的数量计数,当计到10时便转换显示的图案,当依次显示完后便回到初始状态进行循环。 由于人的视觉滞留时间长达0.1s,所以在每显示完一列LED后加入一段合适的延时,如5ms,每个字之间加入延时如15ms,这样,我们就能看到静态的稳定的字,并且每个字之间是有空隙的。为了让字能够在空间的中部显示,在启动中断显示后延时一段合适的时间,使棒在半圆轨迹的大约1/4处开始显示,这样看到的字方向上才比较正。 晃动开关也叫振动开关,其实都是震动开关的一种只是叫法不一样是通过弹簧接触导针的原理来控制电路的接通或者断开的。 简单来说,就如同打开或关掉电灯一样,开关触碰里头的金属板电灯就亮,离开就关,晃动开关也是利用类似的原理。利用弹簧的晃动,制造与金属端子的触碰或改变光线行进的路线,就能产生导通或不导通的效果。 本系统包括单片机控制模块,开关及电源模块和输出显示模块三个部分。 单片机控制模块由Keil C进行编写,实现起来简单,主要有三部分,主程序、中断服务部分还有字符点阵。 开关及电源模块采用两节电池并配合晃动开关开关使用。输出显示模块采用16个LED灯,在版上一字排开。 三、硬件设计 硬件连接上用滚珠开关产生的电平转换引发中断,传递给单片机,再由单片机调用点阵文件输出到LED上。 摇摇棒设计电路图 STC89C52单片机作为控制器,在它的P0、P2口接有16只以共阳的方式连接的高亮度LED,由单片机输出低电平点亮。串在LED公共端的二极管D18会产生一定的压降,用来保护LED。S3是画面切换开关,用于切换显示不同内容;S2为晃动开关。系统电源使用2节扭扣电池串联6V。 16只LED发光管作为画面每一列的显示,左右摇晃起到了扫描的作用,人眼的视觉暂留现象使得看到的是一幅完整的画面。 晃动开关的作用:棒在摇动时,只能在朝某一方向摇动时显示,否则会出现镜像字或镜像画面,所以通过接一只晃动开关来控制,使摇摇棒从左向右摇动时将内容显示出来。 软件部分包括主函数程序、中断服务程序、延时子程序以及四个显示子程序。软件设计流程如下: 主要测试单片机的工作情况,能否正常用LED显示出各图案,并且记录各图案持续的时间和稳定显示度以及一个循环周期所用的时间。并且检查LED的发光亮度,使之可以明显的分辩出来。
经过测试,当摆动的幅度和速度适当时,各个画面均可以明显的显示出来。整体来说,本方案设计比较成功。 拍摄照片: 六、课程作品制作体会 通过一学期的《单片机原理与应用》课程的学习,对单片机有了一定的认识和体会。作为机械电子方向的学生,要想深入发展,尤其是对自动化感兴趣的我,单片机是必须要学好的一门课程。从小喜欢敲敲打打,对制作单片机很感兴趣,满心希望能做出一个让自己满意的作品。 但是想起来容易做起来难,由于种种原因,我在学习、制作过程中遇到了很多的困难。首先,单片机的先修课程《微机原理》这门课,我们虽然上学期学过,但是当时掌握效果很差,所以在单片机课程开始阶段,涉及到相关知识时感到很吃力,花了很多的时间去“补课”。其次,焊接的基本功不扎实,上学期虽然做过焊接收音机的实习,但是那次是在设计电路已给出、精密度较低的情况下糊里糊涂的完成的,跟这次课程设计要完成的任务差距甚大,所以也花了不少的代价去弥补基本功的不扎实。最后还有一个问题是,原机械专业及物理方面共八门考试,让自己的复习、制作过程相当紧张,而机电院还安排了在长沙各工厂的认识实习,时间相当紧迫。我能做的就是,抓紧时间,少走弯路,提高效率。 请教了有经验的同学以后,我开始在网上搜各种相关程序和资料,根据自己的想法进行修改和整理。由于以前学过C语言,有一定的基础,所以就不顾老师强烈推荐的汇编语言,毅然选择用C语言设计了。相关知识理解得差不多了以后便开始设计电路。由于画图的软件应用不很熟悉,又没有经验,刚开始的图又丑又乱,焊起来很是麻烦,改了又改,加上基本功的不扎实,因此烧坏了第一块板子……沮丧之后,我请教了上届教物的一个师兄,在他的指导下我修改并完善了线路图,重新买了板子从头做起。这次为了避免犯大的错误,我遇到没有把握的地方认真分析,实在不会的就及时请教,一点一点踏实做起。 然而,好事多磨,就在我仔细焊接完成之后,测试的时候却发现显示的字和画面都是反的!我又认真检查、分析了一下,发现自己把S52的两个端口搞反了,水银开头的方向也接反了。问题找到了,我又耐着性子,把线拆了重新焊起。一鼓作气,终于再次把电路板焊好。这次,终于成功了! 通过此次课程作品制作,我对书本上很多以前不理解的内容有了新的实际的认识,也把很多抽象的知识具体化了,收获颇多。看来,很多时候我们只是读书是远远不够的,纸上得来终觉浅,绝知此事要躬行,尤其是对于我们这些理工科的学生。以后的学习过程中,希望能有更多的实践的机会。
全部资料51hei下载地址:
摇摇棒配套资料.zip
(7.77 MB, 下载次数: 212)
|