初级组杨一聪LED旋转灯论文.docx
《初级组杨一聪LED旋转灯论文.docx》由会员分享,可在线阅读,更多相关《初级组杨一聪LED旋转灯论文.docx(14页珍藏版)》请在冰豆网上搜索。
![初级组杨一聪LED旋转灯论文.docx](https://file1.bdocx.com/fileroot1/2023-1/21/f8449be9-22db-47ee-be20-cba8286ccb19/f8449be9-22db-47ee-be20-cba8286ccb191.gif)
初级组杨一聪LED旋转灯论文
旋转LED广告屏
目录
目录···································································1
1.LED旋转灯在实际中的意义·············································2
2.显示原理······························································3
3.系统硬件电路的设计····················································3
3.1硬件系统框图····················································3
3.2硬件基本架构····················································4
3.3显示模块说明····················································4
3.4红外说明························································5
4.相关电路图····························································5
4.1单片机引脚图····················································5
4.2电路转换························································6
4.3复位电路························································6
4.4振······························································6
5.程序的设计····························································7
5.1程序设计的分析··················································7
5.2完整的C程序····················································7
5.2.1程序流程图·················································7
5.2.2源程序·····················································8
6.不足与改进····························································12
7.本次试验所用元件······················································13
1.LED旋转灯在实际中的意义
LED特点和优点
LED的内在特征决定了它是最理想的光源去代替传统的光源,它有着广泛的用途。
体积小
LED基本上是一块很小的晶片被封装在环氧树脂里面,所以它非常的小,非常的轻。
耗电量低
LED耗电非常低,一般来说LED的工作电压是2-3.6V。
工作电流是0.02-0.03A。
这就是说:
它消耗的电不超过0.1W。
使用寿命长
在恰当的电流和电压下,LED的使用寿命可达10万小时
高亮度、低热量
环保
LED是由无毒的材料作成,不像荧光灯含水银会造成污染,同时LED也可以回收再利用。
坚固耐用
LED是被完全的封装在环氧树脂里面,它比灯泡和荧光灯管都坚固。
灯体内也没有松动的部分,这些特点使得LED可以说是不易损坏的。
LED与其他灯的对比
LED灯的光谱几乎全部集中与可见光频段,其发光效率可达80~90%。
将LED灯与普通白炽灯、螺旋灯及T5三基色荧光经行对比,结果显示:
普通白炽灯的光效为121m/W,寿命小于8000小时,T5荧光灯则为961m/W,寿命大于100000小时有人还预测,未来的LED灯寿命上限将无穷大。
由于LED灯的种种优势,使得其在现在的各个领域里运用越来越广泛。
2.显示原理
旋转灯是利用视觉暂留效应设计出来的,物体在快速运动时,当人眼看到的影像消失后,人言仍能继续保留其影像0.1—0.4秒左右的图像,这种现象被称为视觉暂留现象。
是人眼具有的一种性质。
人眼观看物体时,成像于视网膜并由视神经输入人脑,感觉到物体的像。
但当物体移去时,视神经对物体的印象不会立即消,而要延续0.4秒的时间,人眼的这种性质被称为“眼睛的视觉暂留”。
假设我们设定我们的眼睛的暂留时间为0.4秒,如果我们的16个LED旋转一周的时间快过0.4秒,那么我们看到的图像就是这一列LED在各个位置显示的图像的叠加。
如果我们用定时器把LED旋转一周各个位置分割出180份,让它在相应的位置显示相应的图像,那么我们就可以得到一个累加的图像效果了。
3.系统硬件电路的设计
3.1硬件系统框图
3.2硬件基本架构
由两大部分组成:
底板和旋转板。
底板安装电机、电源、红外发射管及开关,旋转板安装单片机、LED、红外接收管等。
底板采用两组电源,一组单独为电机供电,另一组为其他元件供电。
3.3显示模块说明
为了展现字体的不同颜色,达到五彩
缤纷的效果,这里我们采用双色的LED,
双色LED有三个管脚,最长的管脚接VCC,
另两个管脚接单片机的I/O口。
接单片机
的两个管脚长短也不同,较长的接P1,
较短的接P2。
本设计采用8个并排双色
LED,利用人眼的“视觉暂留效应”
显示文字及图案。
如图所示。
3.4红外说明
对射式U型槽光耦
具有相应速度快,驱动简
单,安装容易,易于单片
机通信等特点。
如图所示,
当上电之后,光耦的光敏三极管的集电极时输出低电平,当有物体挡住了光敏三极管感应的红外光线时,光敏三极管的集电极和发射极处于高阻态,所以集电极输出高电平,当光敏三极管再次感应到红外光源的时候,集电极再次输出低电平,从而给单片机一个中断信号。
接收管装在旋转灯的末端,发射管则安装在底板上。
4相关的电路图
4.1单片机引脚图
4.2电源转换图
4.3复位电路图
4.4晶振
5程序的设计
5.1程序设计的分析
由于电机的转速不均匀,只根据时间来确定led灯的位置就显得不切实际,肯定会由于误差而打乱显示的字符。
这里我们采用自适应的算法,让led的闪亮频率与旋转的频率同步。
此自适应的算法在外部中断里面处理,先给定时器T0一个合适的初值,通过定时器T0处理程序给T0的中断的次数计数,当旋转一周完成后,根据实际中断次数与预设的180比较,根据比较结果,在外部中断处理程序中对T0的初值进行修正,直到定时器T0的中断次数达到180为止。
如此一来就如同有一个反馈信号一样,在不停的反馈的调节定时器的初值,旋转一周所产生的中断次数始终保持在设定的180,这样就可以稳定地在某个地方显示内容了。
而且整个调节过程是动态的,程序中并不需要知道旋转一周的具体时间值。
算法用了一个很简单的数学公式:
k=k+(s-180)
当s>180时,修正值k增大,使定时器T0的时间值增大,随之s值减小。
当s<180时,修正值k减小,使定时器T0的时间值减小,随之s值增大。
当s=180时,修正值不产生变化。
5.2完整的C程序
5.2.1程序流程图
5.2.2源程序
##########程序##########
显示内容:
华工AUTO显示功能:
滚动改变颜色
#include
unsignedcharcodeletter_A[11]={0xf1,0xe7,0xf7,0xf7,0xd7,0xf7,0xf7,0xe7,0xf1,0xff,0xff};//字母“A”的编码
unsignedcharcodeletter_U[11]={0xdf,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xdf,0xff};//字母“U”的编码
unsignedcharcodeletter_T[11]={0xdf,0xdf,0xdf,0xdf,0xdf,0xc1,0xdf,0xdf,0xdf,0xdf,0xff};//字母“T”的编码
unsignedcharcodeletter_O[11]={0xc1,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xc1,0xff};//字母“O”的编码
unsignedcharcodehua[21]={0xed,0xed,0xed,0xed,0xed,0xe1,0xed,0xed,0xef,0x07,0xef,0xef,
0xe0,0xe5,0xe5,0xe5,0xe5,0xf7,0xf7,0xf7,0xff};//“华”的编码
unsignedcharcodegong[21]={0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xc1,0xdd,0xdd,
0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xff,0xff};//“工”的编码
unsignedintn,p,s=0;//n表示定时器T0中断次数,s表示定时器T0的初值
intk=0;//k用于初值校正
unsignedchari=0,j=0;
voidshow1(unsignedcharm);//显示函数1
voidshow2(unsignedcharm);//显示函数2
voidshow11(unsignedcharm);//显示函数11
voidshow22(unsignedcharm);//显示函数22这四个显示函数具有滚动,变色的关系
voidInit();//初始化函数
voidmain()
{
Init();
while
(1)
{
for(p=0;p<5000;p++)
{
if(i>=11)i=0;
if(s>=12&&s<23)show1(0);//若位置在24度——//46度,显示“O”
if(s>=28&&s<39)show1
(1);//若位置在56度——//78度,显示“T”
if(s>=46&&s<57)show1
(2);//若位置在92度——//114度,显示“U”
if(s>=62&&s<73)show1(3);//若位置在124度——//146度,显示“A”
if(j>=21)j=0;
if(s>=107&&s<128)show2(0);//若位置在214度——//256度,显示“华”
if(s>=140&&s<161)show2
(1);//若位置在280度——//322度,显示“工”
}
for(p=0;p<5000;p++)//改变显示颜色
{
if(i>=11)i=0;
if(s>=12&&s<23)show11(0);
if(s>=28&&s<39)show11
(1);
if(s>=46&&s<57)show11
(2);
if(s>=62&&s<73)show11(3);
if(j>=21)j=0;
if(s>=107&&s<128)show22(0);
if(s>=140&&s<161)show22
(1);
}
for(p=0;p<5000;p++)//变回原来的颜色,并逆时针方向滚动20度
{
if(i>=11)i=0;
if(s>=22&&s<33)show1(0);
if(s>=38&&s<49)show1
(1);
if(s>=56&&s<67)show1
(2);
if(s>=72&&s<83)show1(3);
if(j>=21)j=0;
if(s>=117&&s<138)show2(0);
if(s>=150&&s<171)show2
(1);
}
for(p=0;p<5000;p++)//再改变颜色
{
if(i>=11)i=0;
if(s>=22&&s<33)show11(0);
if(s>=38&&s<49)show11
(1);
if(s>=56&&s<67)show11
(2);
if(s>=72&&s<83)show11(3);
if(j>=21)j=0;
if(s>=117&&s<138)show22(0);
if(s>=150&&s<171)show22
(1);
}
}
}
voidInit()
{
TMOD=0x01;//定时器T0的控制设为方式2
EA=1;//开总中断控制
ET0=1;//定时器T0的中断允许位
TH0=(65535-5000)/256;//定时器T0的初值
TL0=(65535-5000)%256;
TR0=1;//开定时器T0
EX0=1;//INTO中断允许位
IT0=1;//开外部中断0
}
voidexter0()interrupt0//外部中断函数
{
k=k+(s-180);//k位校正值,当定时中断过快,k增大,则定时器T0初//值n增大,从而减慢中断
n=n+k;
i=0;//i清零,重新显示
j=0;//j清零,重新显示
s=0;//中断次数清零,更新显示下一周
}
voidexter1()interrupt1//定时器T0中断函数
{
TH0=(65535-n)/256;
TL0=(65535-10)%256;
s++;//每中断一次,中断次数加1
}
voidshow1(unsignedcharm)
{
switch(m)
{
case0:
P1=0xff;P1=letter_O[i];i++;break;//显示“O”
case1:
P1=0xff;P1=letter_T[i];i++;break;//显示“T”
case2:
P2=0xff;P2=letter_U[i];i++;break;//显示“U”
case3:
P2=0xff;P2=letter_A[i];i++;break;//显示“A”
}
}
voidshow2(unsignedcharm)
{
switch(m)
{
case0:
P1=0xff;P1=hua[j];j++;break;//显示“华”
case1:
P2=0xff;P2=gong[j];j++;break;//显示“工”
}
}
voidshow11(unsignedcharm)//和show1比较,改变颜色
{
switch(m)
{
case0:
P2=0xff;P2=letter_O[i];i++;break;
case1:
P2=0xff;P2=letter_T[i];i++;break;
case2:
P1=0xff;P1=letter_U[i];i++;break;
case3:
P1=0xff;P1=letter_A[i];i++;break;
}
}
voidshow22(unsignedcharm)//和show2比较,改变颜色
{
switch(m)
{
case0:
P2=0xff;P2=hua[j];j++;break;
case1:
P1=0xff;P1=gong[j];j++;break;
}
}
6不足与改进
1.在硬件安装过程中,旋转板上元件的供电问题困扰了我们。
经过长时间认真的思考与讨论,我们决定让电源的正极通过电机的转轴接到旋转板的VCC,而电源的负极通过安装在底板的两个电刷接到旋转板的GND。
但是效果不那么好,有接触不良的迹象。
2.本来打算用两块纽扣电池串联起来(6V)给电机供电,但是由于电流供应不足以使电机工作,于是用4块五号干电池串联起来代替。
3.由于我们队单片机的了解还不够深入和时间有限,我们放弃了实现“通过人机交互来转换广告词”这个功能。
4.程序方面。
此课题对单片机定时器、中断的要求较高。
搞懂这些知识花费了不少的心思。
搜集资料的时候看到别人写的程序真的可以说是看天书。
经过一点一点的摸索,终于可以搞懂这其中的奥秘,自己也可以编码自己想显示的字符。
5.最后,没能把LED广告屏成功制造出来,单片机并没有按照我们预期的目标去工作,我们也没能找到具体的问题到底出在哪里。
虽然失败了,但是,通过这个以前从没涉足过的竞赛,我们学到了很多知识,也学会了如何进行团队合作,这也对我们以后学习新知识打下基础。
7本次试验所用元件
元件
规格或型号
数量
AT89S52单片机
1
单片机座
1
双色LED
8
直流电机
1
晶振
12M
1
瓷片电容
33uF
2
电容
330uF
2
10uF
1
电阻
1K欧
8
10K欧
2
220欧
1
红外对管
一对
电源指示灯
IN4007
1
稳压器
7805
1
5号干电池
1.5V
8
开关
3
万能板
2