第五届湖工圆融杯参赛作品设计报告.docx

上传人:b****8 文档编号:10492456 上传时间:2023-02-14 格式:DOCX 页数:15 大小:167.08KB
下载 相关 举报
第五届湖工圆融杯参赛作品设计报告.docx_第1页
第1页 / 共15页
第五届湖工圆融杯参赛作品设计报告.docx_第2页
第2页 / 共15页
第五届湖工圆融杯参赛作品设计报告.docx_第3页
第3页 / 共15页
第五届湖工圆融杯参赛作品设计报告.docx_第4页
第4页 / 共15页
第五届湖工圆融杯参赛作品设计报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

第五届湖工圆融杯参赛作品设计报告.docx

《第五届湖工圆融杯参赛作品设计报告.docx》由会员分享,可在线阅读,更多相关《第五届湖工圆融杯参赛作品设计报告.docx(15页珍藏版)》请在冰豆网上搜索。

第五届湖工圆融杯参赛作品设计报告.docx

第五届湖工圆融杯参赛作品设计报告

第五届湖工“圆融杯”电子设计大赛

设计报告

 

参赛题目:

LED显示棒

参赛队号:

第一作者:

罗深武

队员姓名:

庄苛罗深武岳钱强

 

1引言

LED显示棒,又称摇摇棒,是一种利用视觉暂留效应制作的“高科技”玩具。

可以用“静如处子,动如脱兔”来形容它,即当静止时,它只是几个LED发光二极管(后简称LED),而一旦按照一定的频率去摇晃它,它就会随着位置的变化而变化(亮或灭),最终显示一幅图片或字符串。

本设计要求制作完成一个LED的显示棒。

要求LED灯线状排列,通过摇动时形成的亮灯扇形区域能够分辨出如:

“摇摇棒”“湖工”,LOVE之类的汉字或图案且可以用力摇晃对显示内容进行切换。

2系统设计方案

2.1设计思路

本系统要求设计一个LED显示棒,且需要有按键进行内容切换,它主要是由中央控制部分、LED驱动部分、LED显示部分以及电源部分组成,如图1所示:

图1:

LED显示棒系统框图

单片机将提取的字模进行存储,当接收到按键输入的指令时单片机就将相应的字模代码通过I/O口输出,使LED点亮,利用视觉暂留原理最终使图案完整的显示在摆动的显示屏中。

以下将对各模块的方案进行论证与比较:

2.2模块方案的论证与比较

2.2.1LED灯的选择

方案一:

传统LED发光二极管。

颜色多样,在可以同样显示图案的前提下使用它更为经济,但是颜色较为黯淡,不鲜亮。

方案二:

高亮LED发光二极管。

正如其名,它的亮度比传统二极管要亮,而且同样也有很多颜色,但是高亮LED的工作电流也要大于传统二极管。

因为考虑经济原因,我们选择方案一,经过比较,使用红色的LED使得显示画面比较明显、突出,使用3节1.5V纽扣电池为其供电,提供足够的电流。

2.2.2外部中断信号产生方式

通过外部中断可以控制数据开始传输的时刻。

方案一:

使用水银开关。

通过摇晃使得水银开关的水银来回滚动,利用这种接触产生的电平变化来触发中断,结合软件控制显示,制作简单,使用方便。

方案二:

使用光遮断器。

在棒上装一个可以摆动的用来遮挡光遮断器光线的细杆,细杆每左右摆动一次这个杆就会通过一次光遮断器,发生电平变化。

同样通过这种电平变化,结合软件控制显示。

本次设计中产生的中断是为了实现数据的单程传输。

原因一是技术及资源不够;二是如果使用光遮断器,其触发单片机的时刻处于正中间,不能解决画面因为返回与原来图片重叠的现象。

而使用水银开关,因为在可以来回滚动,所以很容易的在往返途中产生两次中断,方便指令控制,所以选择使用方案一。

2.2.3抗重影方案的选择

方案一:

使用外部中断控制数据传输时刻。

外部中断信号由惯性开关产生,触发方式为下降沿触发。

惯性开关左右两边的触点分别与单片机两个外部中断接口相连,默认为高电平,摇动的摆杆接地。

惯性开关处于不同位置进入不同的中断,从而决定何时送数据。

该方案简单易行,可以保证数据是单程传输的,避免了重影。

不摇动时把惯性开关处在左边就可以使LED棒熄灭,可以达到省电的效果。

方案二:

使用定时器与外部中断。

当我们在摆动手臂的时候,短时间内摆动位置和左右幅度不会有太大变化,利用我们手臂的这个运动规律,只要能得到棒从一侧摆动到另一侧的时间,然后把这个时间分成N份,在每一份的时间里显示不同的花样就能实现图形的显示。

设计中摇动的摆子与左右两个触点接触各一次的时间可以通过外部中断和定时器计算出来,然后用单片机的另一个定时器T1,其定时时间是T0的N分之一,每次中断依次显示一列,就可以得到预期显示的图案了。

该方法可以控制摇动频率低的时候不显示图形。

但程序的稳定性不高,图形之间的间隔不易确定,只要电源开关开着LED始终是点亮的。

本次设计要求显示的字符长度较短,使用方案一中的外部中断方法只要控制好延时就可以达到完整显示图案的目的,而且方案一中只使用了外部中断,它所占用的内存比方案二中既使用外部中断又使用两个定时器所占用的单片机资源要少,所以选择使用方案一。

2.2.4关于创新部分的讨论

本设计的最大特色就是可以使单列的LED组合灯通过一定频率的摇动在摆动的扇形区域内呈现出我们特定的字符或图形。

在实现基本要求的前提下,我们决定从硬件和软件两部分对此摇动棒进行特别改造,比如美化外形,实现画面的动态显示等。

3系统设计

3.1总体设计

经过分析论证,我们决定了系统各模块的最终方案,流程图如下:

图2:

LED显示棒系统原理框图

整套系统以AT89S52单片机为核心控制系统,使用16只LED灯作为显示屏,其中前24只直接与单片机I/O口相连,后8只由一个74HC595控制。

当惯性开关触发中断T1时,单片机向32只LED传送数据,依据人体的视觉暂留原理,随着显示棒的摆动前进,输出数据的列也不会立刻消失而是随着摆动逐渐显示在了形成的扇形区域。

(整体电路图见附录图1)

3.2单元电路设计

3.2.1按键模块

使用一个按键对显示的所有内容进行切换,通过按钮按下的次数确定显示的内容。

3.2.2LED显示模块

首先,我们根据LED点阵屏的显示原理:

点阵屏的显示分为行扫描与列扫描两种,列扫描是将我们的字模数组通过点阵屏的行驱动进行输入,然后通过列对每一行进行扫描,当列为低(高)电平、行为高(低)电平时则表示该点为图案的一部分,将其读出、显示。

它的顺序可以总结为:

行不断的送数据,每送完设置的信息后列进行读取,然后行再次送数据,列再次读取……依次循环下去,一幅完整的图案就显示在了显示屏上。

而本次设计的LED显示棒数据传输原理与LED点阵屏相似。

可以把LED显示棒看成是LED点阵屏中的一列。

为了使显示的图案清晰,我们使用了16个LED管将它们排成一列,整个屏在静止时也就相当于16行×1列。

数据传输时我们同样使用行送数据、列扫描。

在摆动过程中,应用视觉暂留原理,我们点亮的列不会很快的消失,而是随着摆动的方向继续向前移动,只要移动的速度高于视觉暂留的最短时间显示内容就不会熄灭,至此,一幅图案也就可以这样被“摆动”出来了。

3.2.3水银开关模块

当摇摇棒晃动时,水银开关开始工作。

整个摆动过程就是这样:

摆子摆到左边,禁止数据传输;摆到右边,开始数据传输……。

使用这种方法就可以让数据单程传输,解决了双程均传输时产生的重影,使得画面更加清晰、明了。

3.2.4单片机最小系统的设计

由于本次设计制作的是一个显示棒,基本要求就是要小巧、轻便,所以要将单片机的系统板简化设计。

它的最小系统包括晶体振荡电路、复位开关和电源部分。

图3为AT89S52单片机的最小系统。

图3AT89S52单片机最小系统

4软件设计

4.1软件设计思路

在摇动LED棒的时候单片机必须单程送数据否则显示的图形会产生重影,影响视觉效果。

因此当系统开始工作后通过惯性开关的位置来使单片机实现单程送数据给LED。

如果惯性开关位于右边,则进入外部中断T1并将一变量置1。

在变量为1期间让单片机以一定的频率将数据送给LED。

如果惯性开关位于左边,则进入外部中断T0并将变量置0,在这期间单片机不会送数据给LED。

在送数据时,数据送完后应延时一段时间来使摇动时显示的每个字不会太拥挤。

之后再立刻熄灭LED并开始重新判断惯性开关的位置(整体流程图见下图)。

4.2软件系统流程图

软件流程图

4.3动态图片的实现

设计中实现单个图形或者一个词组的显示方法是将要显示的内容一次性送出,延时一段时间后再进行第二次传送数据。

而要显示一个动态图片,仿照动画制作方法,先要将一个连贯的动作分为几幅独立的动作,分别提取字模,输出数据是一幅接一幅的连续送,当动作结束后延时一会,再进行第二次连贯动作的传输。

同样利用视觉暂留原理,当摇动显示棒时,几幅图接连出现覆盖前面的画面,相同的部分将一直显示,不同的部分就形成了动态的动作,以此一幅动态画面就出现了。

4.4软件实现功能的完善

本次设计的一个重难点是去除重影,我们的解决方法是使用外部中断让数据单程传输。

第二个难点是当显示如“欢迎使用摇摇棒“”这类较长字符时不能完整的显示在一次摇摆的扇形区域内。

通过反复试验,我们改变了送数据方式:

一个字符接一个字符传送,传送结束后再延时,通过不断调试实现了完整显示的功能,同时也解决了画面连续出现没有间断的问题。

综上,只要控制好数据传输方式以及每次传输数据间的延时就可以实现多

种数据的显示方法。

5系统测试

5.1设计要求部分的测试

1、基本显示部分:

能够清楚显示一些如“神奇摇摇棒”“LOVE”的字迹。

总之,本次设计基本实现了设计要求的全部功能。

5.2创新部分的测试

在摇晃的过程中可以实现如的o(∩_∩)o一个大笑脸。

6设计总结

本次设计完成了题目所需的基本内容,能够实现基本的图形的动态变换,考虑到显示棒使用盒式干电池供电较为麻烦的方面,我们又设计了专门的小型干电池供电,可以实现足够能量的供电。

这些创新点的增加都为本次设计增添不少趣味性和实用性。

在这连续的几十天中,我们体会到了酸甜苦辣种种滋味,有过不成功的失落感,也有实现功能后的成就感。

这些天我们查找资料、购买原件、灯下苦干,虽然很累,甚至想过放弃,但是对胜利的追逐始终支撑着我们精神充沛。

在这个项目的制作中,我们小队的团结合作、互相照料、互相理解的精神完全的体现出来,彼此之间的配合也十分的融洽,这些无不是我们完成制作的最好根据。

在讨论中我们不断的完善我们的方案,对每个组员提出的问题都仔细的分析推敲。

在这些因素的前提下,我们最终提前实现了所有的设计要求,让我们很是欣慰!

从报名参赛到比赛结束这段时间,对我们来说都是极大的锻炼,不仅在动手能力,理论学习能力上有了很大的提高,同时锻炼培养了我们的团队合作,相互沟通能力。

这次参赛,给我们最大的感觉就是累却快乐着……

参考文献:

[1]《电子技术基础数字部分》康华光编高等教育出版社

[2]《单片机C51程序设计教程与实验》祁伟杨亭编北京航空航天大学出版社

[3]《LED及其工程应用》杨清德康娅编人民邮电出版社

[4]《C程序设计》谭浩强编清华大学出版社

[5]《全国大学生电子设计竞赛试题精解选》陈永真编电子工业出版社

以及大量的网络电路资料。

附录:

附录1:

元器件明细表:

位号

名称

规格

数量

R1

电阻

10K

1

C1、C2

瓷片电容

30

2

C3

瓷片电容

104

1

C4、C5

电解电容

10uF

2

×

二集管

1N4148

3

Y1

晶振

12M

1

IC1

集成电路

AT89S52

1

集成电路插座

DIP40

1

S1

水银开关

1

LED1—LED16

发光二集管

5MM

16

电池盒

3节纽扣电池

1

PCB板

30×220MM

1

附录2:

电路图图纸

附录3:

部分源程序。

#include

#defineucharunsignedchar

#defineuintunsignedint    //宏定义

#defineKEYP3_0      //定义画面切换按键

ucharKY;      //KY作用在后面说明     

uchardisp;     //显示汉字指针

ucharpic=0,num=0;     //pic为按键次数;num为中断次数

ucharcodelove[]={

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,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,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*/

};

ucharcodeloveyou[]={

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,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,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,/*心形图案*/

};

ucharcodehehe[]={

0x00,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,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*呵呵o(∩_∩)o图案*/

};

unsignedcharcodehanzi[]={

//--欢--

     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,

     0x00,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,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,0xFC,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,0xAA,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,0x54,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,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,0x00,0x00,0x00,0x00

};

/*****函数声明*****/

voiddisplay1(void);

voiddisplay2(void);

voiddisplay3(void);

voiddisplay4(void);

/*****n(us)延时子程序*****/

voidDelayUs(uintN)

{

 uintx;

 for(x=0;x<=N;x++);

}

/*****中断服务程序*****/

voidintersvr0(void)interrupt0using1

{

 KY=~KY;      //每个摇动来回水银开关会在摆幅两端分别产生下降沿中断,只提取其中一次(从左向右摇才显示)

 if(KY==0)

 {

  num++;     //计算中断次数

  switch(pic)      //选择画面

  {

   case0:

{display1();}break;

   case1:

{display2();}break;

   case2:

{display3();}break;

   case3:

{display4();}break;

   default:

{display1();}  

  }

   }

}

/*****显示子程序1(汉字)*****/

voiddisplay1(void)

{

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1