单片机课程设计基于AT89S52的16LED摇摇棒.doc

上传人:土8路 文档编号:10531825 上传时间:2021-05-22 格式:DOC 页数:18 大小:552KB
返回 下载 相关 举报
单片机课程设计基于AT89S52的16LED摇摇棒.doc_第1页
第1页 / 共18页
单片机课程设计基于AT89S52的16LED摇摇棒.doc_第2页
第2页 / 共18页
单片机课程设计基于AT89S52的16LED摇摇棒.doc_第3页
第3页 / 共18页
单片机课程设计基于AT89S52的16LED摇摇棒.doc_第4页
第4页 / 共18页
单片机课程设计基于AT89S52的16LED摇摇棒.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《单片机课程设计基于AT89S52的16LED摇摇棒.doc》由会员分享,可在线阅读,更多相关《单片机课程设计基于AT89S52的16LED摇摇棒.doc(18页珍藏版)》请在三一文库上搜索。

1、单片机原理与应用课程设计报告 作品名称: 基于AT89S52的16LED摇摇棒 专业班级: 学 号: 姓 名: 指导老师: 2013年6月目 录一、作品说明2二、系统总体设计4三、硬件设计6四、软件设计7五、系统调试与分析8六、课程作品制作体会11基于AT89S52的16LED摇摇棒设计一、作品说明 摇摇棒是如今流行的一种玩具,在各种聚会、节日中均见得到它的身影。本设计也追随着摇摇棒的原理,利用人眼的视觉暂留特性,通过AT89S52单片机对16只高亮度LED发光二极管进行控制, 配合手的左右摇晃就可呈现一幅完整的画面。 该摇摇棒具有如下功能:1) 显示 “欢迎使用神奇魔幻摇摇棒!”;2) 显示

2、 “o(_)o”微笑图案;3) 显示 心形图案;4) 显示 “LOVE”;5) 可以通过开关实现转换,轮流显示并循环。二、系统总体设计1、总体方案比较与论证所谓的“摇摇棒”,其实就是一个循环的LED显示,利用人的视觉滞留产生静态显示的现象。要实现这个目标,就要求延时部分做的比较小,所以采用石英晶体振荡器。而目前能够实现这种功能的器件有很多种,不同的类型的器件也能够很好的完成。本作品本着方便、价格低廉的原则,采用单片机控制,由水银开关的闭合对单片机产生外部中断,从而对中断进行采集。到达一定数量便进行图象的转换。整个系统由单片机控制模块,开关及电源模块和输出显示模块三个部分构成。系统框图如下:输出

3、显示LED单片机水银开关 2、主要部件原理 (1)单片机控制模块 用单片机想要控制LED显示只需要定时输出就可以,但每个人摇动的速度不一样,如何准确的并稳定的变换图案呢?这就需要用到外部中断。将水银开关的两个引脚一端接VCC,一端接GND,这样的话,当摇棒向一边运动时LED按照程序编辑好的规律显示,而向另一边运动时LED全灭,此时一个周期就会产生一个下跳沿的信号,信号传递给单片机的nINT0产生中断,对中断的数量计数,当计到10时便转换显示的图案,当依次显示完后便回到初始状态进行循环。由于人的视觉滞留时间长达0.1s,所以在每显示完一列LED后加入一段合适的延时,如5ms,每个字之间加入延时如

4、15ms,这样,我们就能看到静态的稳定的字,并且每个字之间是有空隙的。为了让字能够在空间的中部显示,在启动中断显示后延时一段合适的时间,使棒在半圆轨迹的大约1/4处开始显示,这样看到的字方向上才比较正。(2) 水银开关 水银开关,又称倾侧开关,是电路开关的一种,以一接著电极的小巧容器储存著一小滴水银,容器中多数注入惰性气体或真空。 仔细观察水银开关,实际上他是一个封闭的玻璃管,里面有两个分开着的导线和一段水银球,当玻璃管的平衡位置变化时,水银球会来回移动,当水银球移动到两根导线时,因水银是金属-导体,故电路变为通路,此时接收器处于工作状态;反之,水银球远离两根导线时为断路,此时接收器处于非工作

5、状态。本设计采用震动开关代替水银开关,试验测试发现,水银开关多次高频率的接通断开后触点会氧化,容易接触不良,因此改用的震动开关。3、 系统设计 本系统包括单片机控制模块,开关及电源模块和输出显示模块三个部分。单片机控制模块由Keil C进行编写,实现起来简单,主要有三部分,主程序、中断服务部分还有字符点阵。开关及电源模块采用5V变压器并配合水银开关使用。输出显示模块采用16个LED灯,在版上一字排开。 三、硬件设计硬件连接上用水银开关产生的电平转换引发中断,传递给单片机,再由单片机调用点阵文件输出到LED上。摇摇棒设计电路图AT89S52单片机作为控制器,在它的P0、P2口接有16只以共阳的方

6、式连接的高亮度LED,由单片机输出低电平点亮。P0口处接上拉电阻RA1。串在LED公共端的二极管D1会产生一定的压降,用来保护LED。K1是画面切换开关,用于切换显示不同内容;S1为水银开关。系统电源VCC为5V,实际使用时用3节干电池串联4.5V即可。16只LED发光管作为画面每一列的显示,左右摇晃起到了扫描的作用,人眼的视觉暂留现象使得看到的是一幅完整的画面。水银开关的作用:棒在摇动时,只能在朝某一方向摇动时显示,否则会出现镜像字或镜像画面,所以通过接一只水银开关来控制,使摇摇棒从左向右摇动时将内容显示出来。4、 软件设计软件部分包括主函数程序、中断服务程序、延时子程序以及四个显示子程序。

7、软件设计流程如下:5、 系统调试与分析主要测试单片机的工作情况,能否正常用LED显示出各图案,并且记录各图案持续的时间和稳定显示度以及一个循环周期所用的时间。并且检查LED的发光亮度,使之可以明显的分辩出来。图 案稳定程序欢迎使用神奇魔幻摇摇棒较稳定心形较稳定笑脸较稳定LOVE较稳定经过测试,当摆动的幅度和速度适当时,各个画面均可以明显的显示出来。整体来说,本方案设计比较成功。拍摄照片:六、课程作品制作体会通过一学期的单片机原理与应用课程的学习,对单片机有了一定的认识和体会。作为机械电子方向的学生,要想深入发展,尤其是对自动化感兴趣的我,单片机是必须要学好的一门课程。从小喜欢敲敲打打,对制作单

8、片机很感兴趣,满心希望能做出一个让自己满意的作品。但是想起来容易做起来难,由于种种原因,我在学习、制作过程中遇到了很多的困难。首先,单片机的先修课程微机原理这门课,我们虽然上学期学过,但是当时掌握效果很差,所以在单片机课程开始阶段,涉及到相关知识时感到很吃力,花了很多的时间去“补课”。其次,焊接的基本功不扎实,上学期虽然做过焊接收音机的实习,但是那次是在设计电路已给出、精密度较低的情况下糊里糊涂的完成的,跟这次课程设计要完成的任务差距甚大,所以也花了不少的代价去弥补基本功的不扎实。最后还有一个问题是,原机械专业及物理方面共八门考试,让自己的复习、制作过程相当紧张,而机电院还安排了在长沙各工厂的

9、认识实习,时间相当紧迫。我能做的就是,抓紧时间,少走弯路,提高效率。请教了有经验的同学以后,我开始在网上搜各种相关程序和资料,根据自己的想法进行修改和整理。由于以前学过C语言,有一定的基础,所以就不顾老师强烈推荐的汇编语言,毅然选择用C语言设计了。相关知识理解得差不多了以后便开始设计电路。由于画图的软件应用不很熟悉,又没有经验,刚开始的图又丑又乱,焊起来很是麻烦,改了又改,加上基本功的不扎实,因此烧坏了第一块板子沮丧之后,我请教了上届教物的一个师兄,在他的指导下我修改并完善了线路图,重新买了板子从头做起。这次为了避免犯大的错误,我遇到没有把握的地方认真分析,实在不会的就及时请教,一点一点踏实做

10、起。然而,好事多磨,就在我仔细焊接完成之后,测试的时候却发现显示的字和画面都是反的!我又认真检查、分析了一下,发现自己把S52的两个端口搞反了,水银开头的方向也接反了。问题找到了,我又耐着性子,把线拆了重新焊起。一鼓作气,终于再次把电路板焊好。这次,终于成功了!通过此次课程作品制作,我对书本上很多以前不理解的内容有了新的实际的认识,也把很多抽象的知识具体化了,收获颇多。看来,很多时候我们只是读书是远远不够的,纸上得来终觉浅,绝知此事要躬行,尤其是对于我们这些理工科的学生。以后的学习过程中,希望能有更多的实践的机会。附:一、硬件电路图#i二、源程序nclude #define uchar uns

11、igned char#define uint unsigned int /宏定义#define KEY P3_0 /定义画面切换按键uchar KY; /KY作用在后面说明 uchar disp; /显示汉字指针uchar pic=0,num=0; /pic为按键次数;num为中断次数uchar code love = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x3F,0x00,0x20

12、,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x0F,0x04,0x10,0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,0x04,0x10,0xF8,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x07,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x20,0x00,0x10,0x00,0x08,0xFE,0x07,0x00,0x00,0x00,0x00

13、,0x00,0x00,0xFE,0x3F,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*LOVE*/;uchar code loveyou = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

14、,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0xFC,0x00,0xFE,0x01,0xFE,0x03,0xFE,0x07,0xFE,0x0F,0xFE,0x1F,0xFC,0x3F,0xF8,0x7F,0xFC,0x3F,0xFE,0x1F,0xFE,0x0F,0xFE,0x07

15、,0xFE,0x03,0xFE,0x01,0xFC,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*心形图案*/;uchar code hehe = 0x

16、00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x40,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,0xF0,0x0F,0x08,0x10,0x04,0x20,0x00,0x00,0x00,0x00,0xF0,0x3F,0x08,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0x

17、00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00,0xF0,0x3F,0x08,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x08,0x00,0xF0,0x3F,0x00,0x00,0x00,0x00,0x04,0x20,0x08,0x10,0xF0,0x0F,0x00,0x00,0x00,0x00,0xC0,0x01,0x40,0x01,0xC0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x

18、00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*呵呵o(_)o图案*/;unsigned char code hanzi = /- 欢 - 0x04,0x10,0x34,0x08,0xC4,0x06,0x04,0x01, 0xC4,0x82,0x3C,0x8C,0x20,0x40,0x10,0x30, 0x0F,0x0C,0xE8,0x03,0x08,0x0C,0x08,0x10, 0x28,0x60,0x18,0xC0,0x00,0x40,0x00,0x00,/- 迎 - 0x40,0x00,0x42,0x40,0x44,0x20,0xC8,0x1F, 0x0

19、0,0x20,0xFC,0x47,0x04,0x42,0x02,0x41, 0x82,0x40,0xFC,0x7F,0x04,0x40,0x04,0x42, 0x04,0x44,0xFE,0x63,0x04,0x20,0x00,0x00,/- 使 - 0x40,0x00,0x20,0x00,0xF8,0xFF,0x07,0x00, 0x04,0x80,0xF4,0x43,0x14,0x45,0x14,0x29, 0x14,0x19,0xFF,0x17,0x14,0x21,0x14,0x21, 0x14,0x41,0xF6,0xC3,0x04,0x40,0x00,0x00,/- 用 - 0x00

20、,0x80,0x00,0x60,0xFE,0x1F,0x22,0x02, 0x22,0x02,0x22,0x02,0x22,0x02,0xFE,0x7F, 0x22,0x02,0x22,0x02,0x22,0x42,0x22,0x82, 0xFF,0x7F,0x02,0x00,0x00,0x00,0x00,0x00,/- 神 - 0x08,0x01,0x88,0x00,0x49,0x00,0xEE,0xFF, 0x58,0x00,0x88,0x00,0x00,0x00,0xF8,0x1F, 0x88,0x08,0x88,0x08,0xFF,0xFF,0x88,0x08, 0x88,0x08,0

21、xFC,0x1F,0x08,0x00,0x00,0x00,/- 奇 - 0x40,0x00,0x40,0x00,0x44,0x00,0x44,0x3E, 0x64,0x12,0x54,0x12,0x4C,0x12,0x47,0x12, 0x4C,0x3F,0x54,0x42,0x74,0x80,0xC6,0x7F, 0x44,0x00,0x60,0x00,0x40,0x00,0x00,0x00,/- 魔 - 0x00,0x40,0x00,0x30,0xFE,0x8F,0x4A,0x80, 0xAA,0x5F,0x9A,0x4A,0xFE,0x2A,0xAA,0x1A, 0xCB,0x0F,0x

22、AA,0x7A,0xFE,0x8A,0x9A,0xAA, 0xAA,0x8F,0x6B,0x80,0x22,0xE0,0x00,0x00,/- 幻 - 0x80,0x20,0xC0,0x30,0xA0,0x28,0x98,0x24, 0x87,0x22,0x80,0x21,0xC4,0x30,0x04,0x60, 0x04,0x00,0x04,0x20,0x04,0x40,0x04,0x80, 0x04,0x40,0xFE,0x3F,0x04,0x00,0x00,0x00,/- 摇 - 0x10,0x02,0x10,0x42,0x10,0x81,0xFF,0x7F, 0x90,0x04,0x5

23、4,0x05,0xCC,0xF4,0xB4,0x44, 0x84,0x44,0xBC,0x7F,0x82,0x44,0xA2,0x44, 0x9B,0xF4,0x82,0x06,0x00,0x04,0x00,0x00,/- 摇 - 0x10,0x02,0x10,0x42,0x10,0x81,0xFF,0x7F, 0x90,0x04,0x54,0x05,0xCC,0xF4,0xB4,0x44, 0x84,0x44,0xBC,0x7F,0x82,0x44,0xA2,0x44, 0x9B,0xF4,0x82,0x06,0x00,0x04,0x00,0x00,/- 棒 - 0x10,0x04,0x10

24、,0x03,0xD0,0x00,0xFF,0xFF, 0x90,0x00,0x54,0x05,0x44,0x12,0xD4,0x15, 0x74,0x14,0x5F,0xFF,0xD4,0x14,0x54,0x15, 0x56,0x12,0x44,0x06,0x40,0x02,0x00,0x00,/- ! - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x7C,0x10,0xFE,0x3B, 0xFE,0x3B,0x7C,0x10,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0

25、x00,0x00,0x00,0x00;/*函数声明*/void display1(void);void display2(void);void display3(void);void display4(void);/*n(us)延时子程序*/void DelayUs(uint N) uint x; for(x=0; x10)disp+;num=0; /12个汉字分为3次显示完(每次显示4个),每中断10次切换 if(disp2)disp=0; DelayUs(5200); /此处延时时间依各硬件差别而各不相同,试着调整使得显示内容居中即可 for(i=0;i64;i+) P0=hanzidis

26、p*128+i*2; P2=hanzidisp*128+i*2+1; DelayUs(100); /*显示子程序2(LOVE)*/void display2(void) uchar i; DelayUs(4000); for(i=0;i64;i+) P0=lovei*2; P2=lovei*2+1; DelayUs(120); /*显示子程序3(心形图案)*/void display3(void) uchar i; DelayUs(4000); for(i=0;i64;i+) P0=loveyoui*2; P2=loveyoui*2+1; DelayUs(120); /*显示子程序4(呵呵o(_)o图案)*/void display4(void) uchar i; DelayUs(4000); for(i=0;i3)pic=0; /*END*/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1