1、初级组杨一聪LED旋转灯论文旋转LED广告屏目录目录11.LED旋转灯在实际中的意义22.显示原理33.系统硬件电路的设计3 3.1硬件系统框图3 3.2硬件基本架构4 3.3显示模块说明4 3.4红外说明54.相关电路图5 4.1单片机引脚图5 4.2电路转换6 4.3复位电路6 4.4振65.程序的设计7 5.1程序设计的分析7 5.2完整的C程序7 5.2.1程序流程图7 5.2.2源程序86.不足与改进127.本次试验所用元件131.LED旋转灯在实际中的意义 LED特点和优点 LED的内在特征决定了它是最理想的光源去代替传统的光源,它有着广泛的用途。 体积小 LED基本上是一块很小的
2、晶片被封装在环氧树脂里面,所以它非常的小,非常的轻。 耗电量低 LED耗电非常低,一般来说LED的工作电压是2-3.6V。工作电流是0.02-0.03A。这就是说:它消耗的电不超过0.1W。 使用寿命长 在恰当的电流和电压下,LED的使用寿命可达10万小时 高亮度、低热量 环保 LED是由无毒的材料作成,不像荧光灯含水银会造成污染,同时LED也可以回收再利用。 坚固耐用 LED是被完全的封装在环氧树脂里面,它比灯泡和荧光灯管都坚固。灯体内也没有松动的部分,这些特点使得LED可以说是不易损坏的。LED与其他灯的对比LED灯的光谱几乎全部集中与可见光频段,其发光效率可达8090%。将LED灯与普通
3、白炽灯、螺旋灯及T5三基色荧光经行对比,结果显示:普通白炽灯的光效为121m/W,寿命小于8000小时,T5荧光灯则为961m/W,寿命大于100000小时有人还预测,未来的LED灯寿命上限将无穷大。 由于LED灯的种种优势,使得其在现在的各个领域里运用越来越广泛。2.显示原理 旋转灯是利用视觉暂留效应设计出来的,物体在快速运动时,当人眼看到的影像消失后,人言仍能继续保留其影像0.10.4秒左右的图像,这种现象被称为视觉暂留现象。是人眼具有的一种性质。人眼观看物体时,成像于视网膜并由视神经输入人脑,感觉到物体的像。但当物体移去时,视神经对物体的印象不会立即消,而要延续0.4秒的时间,人眼的这种
4、性质被称为“眼睛的视觉暂留”。 假设我们设定我们的眼睛的暂留时间为0.4秒,如果我们的16个LED旋转一周的时间快过0.4秒,那么我们看到的图像就是这一列LED在各个位置显示的图像的叠加。如果我们用定时器把LED旋转一周各个位置分割出180份,让它在相应的位置显示相应的图像,那么我们就可以得到一个累加的图像效果了。3.系统硬件电路的设计3.1硬件系统框图3.2硬件基本架构由两大部分组成:底板和旋转板。底板安装电机、电源、红外发射管及开关,旋转板安装单片机、LED、红外接收管等。底板采用两组电源,一组单独为电机供电,另一组为其他元件供电。3.3显示模块说明为了展现字体的不同颜色,达到五彩缤纷的效
5、果,这里我们采用双色的LED,双色LED有三个管脚,最长的管脚接VCC,另两个管脚接单片机的I/O口。接单片机的两个管脚长短也不同,较长的接P1,较短的接P2。本设计采用8个并排双色LED,利用人眼的“视觉暂留效应”显示文字及图案。如图所示。3.4红外说明对射式U型槽光耦具有相应速度快,驱动简单,安装容易,易于单片机通信等特点。如图所示,当上电之后,光耦的光敏三极管的集电极时输出低电平,当有物体挡住了光敏三极管感应的红外光线时,光敏三极管的集电极和发射极处于高阻态,所以集电极输出高电平,当光敏三极管再次感应到红外光源的时候,集电极再次输出低电平,从而给单片机一个中断信号。接收管装在旋转灯的末端
6、,发射管则安装在底板上。4相关的电路图 4.1单片机引脚图 4.2电源转换图 4.3复位电路图 4.4晶振5程序的设计 5.1程序设计的分析由于电机的转速不均匀,只根据时间来确定led灯的位置就显得不切实际,肯定会由于误差而打乱显示的字符。这里我们采用自适应的算法,让led的闪亮频率与旋转的频率同步。此自适应的算法在外部中断里面处理,先给定时器T0一个合适的初值,通过定时器T0处理程序给T0的中断的次数计数,当旋转一周完成后,根据实际中断次数与预设的180比较,根据比较结果,在外部中断处理程序中对T0的初值进行修正,直到定时器T0的中断次数达到180为止。如此一来就如同有一个反馈信号一样,在不
7、停的反馈的调节定时器的初值,旋转一周所产生的中断次数始终保持在设定的180,这样就可以稳定地在某个地方显示内容了。而且整个调节过程是动态的,程序中并不需要知道旋转一周的具体时间值。 算法用了一个很简单的数学公式:k=k+(s-180) 当s180时,修正值k增大,使定时器T0的时间值增大,随之s值减小。 当s180时,修正值k减小,使定时器T0的时间值减小,随之s值增大。 当s=180时,修正值不产生变化。5.2完整的C程序 5.2.1程序流程图 5.2.2源程序#程序#显示内容:华工 AUTO 显示功能:滚动 改变颜色#include unsigned char code letter_A1
8、1=0xf1,0xe7,0xf7,0xf7,0xd7,0xf7,0xf7,0xe7,0xf1,0xff,0xff; /字母“A”的编码unsigned char code letter_U11=0xdf,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xdf,0xff; /字母“U”的编码unsigned char code letter_T11=0xdf,0xdf,0xdf,0xdf,0xdf,0xc1,0xdf,0xdf,0xdf,0xdf,0xff; /字母“T”的编码unsigned char code letter_O11=0xc1,0xdf,0xd
9、f,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xc1,0xff; /字母“O”的编码unsigned char code hua21=0xed,0xed,0xed,0xed,0xed,0xe1,0xed,0xed,0xef,0x07,0xef,0xef, 0xe0,0xe5,0xe5,0xe5,0xe5,0xf7,0xf7,0xf7,0xff; /“华”的编码 unsigned char code gong21=0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xdd,0xc1,0xdd,0xdd, 0xdd,0xdd,0xdd,0xdd,0
10、xdd,0xdd,0xdd,0xff,0xff; /“工”的编码unsigned int n,p,s=0; /n表示定时器T0中断次数,s表示定时器T0的初值 int k=0; /k用于初值校正unsigned char i=0,j=0;void show1(unsigned char m); /显示函数1void show2(unsigned char m); /显示函数2void show11(unsigned char m); /显示函数11void show22(unsigned char m); /显示函数22 这四个显示函数具有滚动,变色的关系void Init(); /初始化函数
11、void main() Init(); while(1) for(p=0;p=11) i=0; if(s=12&s=28&s=46&s=62&s=21) j=0; if(s=107&s=140&s161) show2(1); /若位置在280度 /322度,显示“工” for(p=0;p=11) i=0; if(s=12&s=28&s=46&s=62&s=21) j=0; if(s=107&s=140&s161) show22(1); for(p=0;p=11) i=0; if(s=22&s=38&s=56&s=72&s=21) j=0; if(s=117&s=150&s171) show2(
12、1); for(p=0;p=11) i=0; if(s=22&s=38&s=56&s=72&s=21) j=0; if(s=117&s=150&s171) show22(1); void Init() 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; /开外部中断0void exter0() interrupt 0 /外部中断函数 k=k+
13、(s-180); /k位校正值,当定时中断过快,k增大,则定时器T0初 /值n增大,从而减慢中断 n=n+k; i=0; /i清零,重新显示 j=0; /j清零,重新显示 s=0; /中断次数清零,更新显示下一周void exter1() interrupt 1 /定时器T0中断函数 TH0=(65535-n)/256; TL0=(65535-10)%256; s+; /每中断一次,中断次数加1void show1(unsigned char m) switch(m) case 0:P1=0xff;P1=letter_Oi;i+;break; /显示“O” case 1:P1=0xff;P1=
14、letter_Ti;i+;break; /显示“T” case 2:P2=0xff;P2=letter_Ui;i+;break; /显示“U” case 3:P2=0xff;P2=letter_Ai;i+;break; /显示“A” void show2(unsigned char m) switch(m) case 0:P1=0xff;P1=huaj;j+;break; /显示“华” case 1:P2=0xff;P2=gongj;j+;break; /显示“工” void show11(unsigned char m) /和show1比较,改变颜色 switch(m) case 0:P2=
15、0xff;P2=letter_Oi;i+;break; case 1:P2=0xff;P2=letter_Ti;i+;break; case 2:P1=0xff;P1=letter_Ui;i+;break; case 3:P1=0xff;P1=letter_Ai;i+;break; void show22(unsigned char m) /和show2比较,改变颜色 switch(m) case 0:P2=0xff;P2=huaj;j+;break; case 1:P1=0xff;P1=gongj;j+;break; 6不足与改进1.在硬件安装过程中,旋转板上元件的供电问题困扰了我们。经过长
16、时间认真的思考与讨论,我们决定让电源的正极通过电机的转轴接到旋转板的VCC,而电源的负极通过安装在底板的两个电刷接到旋转板的GND。但是效果不那么好,有接触不良的迹象。2.本来打算用两块纽扣电池串联起来(6V)给电机供电,但是由于电流供应不足以使电机工作,于是用4块五号干电池串联起来代替。3.由于我们队单片机的了解还不够深入和时间有限,我们放弃了实现“通过人机交互来转换广告词”这个功能。4.程序方面。此课题对单片机定时器、中断的要求较高。搞懂这些知识花费了不少的心思。搜集资料的时候看到别人写的程序真的可以说是看天书。经过一点一点的摸索,终于可以搞懂这其中的奥秘,自己也可以编码自己想显示的字符。5.最后,没能把LED广告屏成功制造出来,单片机并没有按照我们预期的目标去工作,我们也没能找到具体的问题到底出在哪里。虽然失败了,但是,通过这个以前从没涉足过的竞赛,我们学到了很多知识,也学会了如何进行团队合作,这也对我们以后学习新知识打下基础。7本次试验所用元件 元件规格或型号数量AT89S52单片机1单片机座1双色LED8直流电机1晶振12M1瓷片电容33uF2电容330uF210uF1电阻1K欧810K欧2220欧1红外对管一对电源指示灯IN40071稳压器780515号干电池1.5V8开关3万能板2
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1