线阵LED图文显示

线阵LED图文显示

ID:41279790

大小:187.85 KB

页数:20页

时间:2019-08-21

上传者:无敌小子
线阵LED图文显示_第1页
线阵LED图文显示_第2页
线阵LED图文显示_第3页
线阵LED图文显示_第4页
线阵LED图文显示_第5页
资源描述:

《线阵LED图文显示》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

2013年全国大学生电子设计竞赛线阵LED图文显示装置2013年7月22日组员许卫赵俊饶建玲20 摘要:本设计是利用人眼视觉暂留效应原理来实现的。通过直流电机带动线阵LED以合适的速度旋转,以MSP430G2553单片机为核心,来精确地控制LED的亮灭时间,从而实现LED的各种变换。本设计由MSP430控制电路模块,电机及其驱动模块,线阵LED驱动模块,亮度自动调节模块等主要模块组成。利用霍尔传感器来确定线阵LED的起始位置,使用取模软件来实现显示文图,通过光敏电阻来自动控制LED亮度,并运用按键切换来控制显示不同的内容。关键词:MSP430G2553视觉暂留线阵LED霍尔传感器光敏电阻Abstract:Thisdesignistousetheprincipleofpersistenceofvisioneffecttothehumaneye.DrivenbydcmotorlineararrayLEDrotatingataspeedofright,MSP430G2553single-chipmicrocomputerasthecore,todestroytheprecisecontroloftheLEDlighttime,soastorealizethetransformingoftheLED.ThisdesignbyMSP430controlcircuitmodule,motoranddrivermodule,lineararrayLEDdrivermodule,brightnessautomaticallyadjustthemoduleofmainmodules.UsinghallsensortodeterminethestartingpositionoflineararrayLED,usingmodulussoftwaretoimplementthedisplayfigure,throughthephotoconductiveresistancetoautomaticallycontroltheLEDbrightness,andusingthekeyswitchtocontrolthedisplaydifferentcontent.Keywords:MSP430G2553PersistenceofvisionLineararrayLEDHallsensorPhotosensitiveresistance20 目录目录1.系统方案选择和论证41.1课题任务及要求41.2系统方案论证及选择41.2.1电机的比较与选择41.2.2电机驱动电路的比较与选择51.2.3LED亮度控制电路比较与选择51.2.4供电方案的比较与选择52.理论分析与计算62.1线阵LED参数计算62.2线阵LED运动参数分析与计算62.3显示亮度自动调节分析与计算63.电路与程序设计73.1电路设计73.1.1系统总体方案设计73.1.2单元电路及原理分析73.1.4电路原理图93.2程序设计93.2.1程序功能描述与设计思路93.2.2程序总体流程图103.2.3程序清单104.测试方案与测试结果114.1测试条件与仪器114.2测试结果及分析115.结论116.参考文献11附录1:电路原理图12附录2:光敏电阻、L29812附录3:原器件清单1320 1.系统方案选择和论证1.1课题任务及要求(1)制作一个由16只LED构成的线状点阵及其控制电路,安装于可旋转的平台上,在平台的中心设置一个按键,用于功能的切换,电机带动平台以合适速度旋转。(2)开机时装置完成显示自检,能对点阵中16只LED逐个点亮,每只LED显示时间约为1秒,此时平台不旋转。(3)通过按键切换,实现16个同心圆图形分别顺序(由大到小)和逆序(由小到大)显示,每个同心圆图形显示时间为0.3秒左右。(4)LED显示亮度能依据环境亮度变化自动调节。2.发挥部分(1)通过按键切换,显示字符“TI杯”,要求字符显示稳定,无明显漂移。(2)通过按键切换,显示一个指针式秒表,该秒表以标志杆为起始标志,秒针随时间动态旋转,旋转一周的时长为60±1秒。(3)其它。1.2系统方案论证及选择1.2.1电机的比较与选择方案一:使用步进电机,步进电机停转时具有最大的转矩,而且每步的精度在3%~5%,并且误差不会累计到下一步,因而有较好的位置精度和运动重复性,但是其控制不当容易产生共振,且难以运转较高的速度。方案二:开关磁阻电机,结构简单,成本低,可用于高速运转,可控参数多,调速性能好,但是因为转矩是由脉冲转矩叠加而成,合成的转矩不是恒定转矩,噪声震动比一般电动机大。方案三:直流电机有优良的控制性能,其机械性能和调速特性均为平行的直线,且启动转矩大,效率高,过载能力强,调速方便动态性能好。通过对本次项目的综合考虑,故采用方案三。1.2.2电机驱动电路的比较与选择方案一:中功率三极管直接搭建。在电机驱动要求不高的地方可以由三极管直接搭建一个驱动电路。使用三极管搭建的电路,其电路简单,但功率和性能一般,集电极电流过大,电阻消耗的功率加大,造成发热,影响系统的性能,并且对输入信号要求较高,输出性能只能满足一般要求。方案二:使用L298N芯片驱动电机L298N既可以驱动直流电机也可以驱动步进电机,本设计中考虑到电机的带负载能力以及效率和调速方便等问题所以选择用直流电机。L298N电路简单,使用比较方便。通过比较,使用L298N芯片充分发挥了它的功能,能稳定地驱动直流电机,且价格不高,故选用L298N驱动电机1.2.3LED亮度控制电路比较与选择20 方案一:通过光敏二极管和一个2.7K的电阻一起控制NPN型三极管基极的电流,从而控制加在LED上面的电流,这样不需要在每个LED前面加限流电阻。只需要用一个限流电阻,电路简单。光敏二极管暗电流较小,有光时光电流较大。但是其效果并不明显,且电路不稳定。(图1)图1方案二::采用光敏电阻与TLC555搭建电路。用TLC555、电容、电位器组成振荡电路产生稳定的PWM波输出。而光敏电阻的变化引起输出PWM波占空比的变化,从而改变显示亮度。电路简单,且易于控制。通过比较选定此方案二作为环境亮度变化调节电路。1.2.4供电方案的比较与选择方案一:采用电刷供电。即在电机的转轴上手工增加一个电刷,通过电刷为系统供电。此方法能够让系统长期供电,但是由于增加了电刷,电机的摩擦增大,势必会使系统的功耗增加,且不易控制,比较麻烦。方案二:采用锂电池供电。即在电路板是直接附带一个锂电池,为系统供电。锂电池体积小,供电时间长,容易固定。使用时将电池固定在电路板,既解决旋转时因重力引起的重心不稳,同时也省去制作的时间。综合考虑本设计的电路模式,采用方案二。2.理论分析与计算2.1线阵LED参数计算LED与电阻串联,所以该限流电阻为:根据设计要求,Vcc=3.3v,Vled=1.8v,Von=0.6v,Iled=10mA;可求得的限流电阻为R=90Ω.为了方便最后电阻取为R=100Ω.2.2线阵LED运动参数分析与计算在电机的带动下,线阵LED依靠旋转平台进行旋转,在40毫秒之内运动的物体认得眼睛无法辨别,线阵LED就能很好的地显示图文。设电机周期为,我们取周期t为40毫秒。20 2.4显示亮度自动调节分析与计算采用TI的TLC555、电容,、电阻和光敏电阻等组成振荡电路产生稳定的PWM波输出。则产生PWM波的周期、充电时间及其占空比的计算公式如下:周期为:T=(R1+R2)C1高电平时间为:T1=R1C1经测试,光敏电阻的阻值在200到16K变化,正常光线下,阻值为2K,取R1为2K,占空比的变化范围较大。光敏电阻的变化引起输出PWM波占空比的变化,从而改变显示亮度。占空比越大,LED接通的时间越长,断开的时间越短,显示越亮。3.电路与程序设计3.1电路设计3.1.1系统总体方案设计MSP430G2553霍尔传感器线阵LED电机驱动L298亮度控制(光敏电阻)12V电源直流电机3.3V电源按键图2其总体设计如上图所示,霍尔传感器采集数据通过MSP430的处理控制电机的转速;MSP430G2553的控制通过按键的中断使LED显示不同的图文,当环境亮度改变时,由光敏电阻和NE555组成的占空比可调的电路自动改变LED的亮度,环境光线越亮,灯越亮,满足设计要求。3.1.2单元电路及原理分析亮度控制电路:采用NE555与光敏电阻搭建电路。用555,电阻,电容及二极管组成振荡电路,产生稳定的PWM波输出,而光敏电阻的变化输出PWM波占空比的变化,从而改变LED的显示亮度,实现亮度随外界的变化而变化。(图3)20 图3线阵LED控制电路:我们所做电路选用的控制芯片用是有20个引脚MSP430G2553,所以控制16个LED显然不够用,因此利用74HC595实现串转并来控制线阵LED.(图4)图4PWM产生及控制L298电路:采用两片LM358及电容电阻稳压二极管来构成三角波发生电路产生三角波,通过比较器LM311与一直流量比较产生PWM,通过调节其占空比来控制L298.(图5)图520 机驱动电路:L298是双H桥高电压大电流集成电路,直接采用TTL逻辑电平控制。通过外接信号来调节PWM.在一个PWM周期内,电机承受双极性电压,电机的速度和方向均有PWM决定。(图6)图63.1.4电路原理图见附录一。3.2程序设计见附录四。3.2.1程序功能描述与设计思路单片机MSP430G2553通过74HC595进行串转并来控制16个LED。初始化,LED自检后,逐个依次点亮;通过独立按键控制线阵LED显示不同的图文3.2.2程序总体流程图当系统上电单片机初始化后,线阵LED进行自检,此时16个LED逐个点亮,当按键按下时,LED根据程序的设计显示不同的图文,流程图如下:(图7)20 开始初始化LED自检按键按键次数tt=1同心圆由大到小t=2T=3同心圆由小到大TI杯t=4指针式秒表ynynyyynnn图七3.2.3程序清单见附录四。4.测试方案与测试结果4.1测试条件与仪器数字示波器万用表信号发生器4.2测试结果及分析20 本设计的基本要求均已完成,可以在运转时按按键切换显示的内容,但也存在值得改进的地方。旋转平台不太稳,导致显示出现稍许飘移,秒表指针显示也不能达到精确的60秒一周。因为单片机内部的DCO本来就存在误差,而延时又是用delay来延时的,这样误差更大,为了减小这些误差,应该使用外部晶振,并且用定时器来延时。5.结论经过多日的辛勤努力,系统架构设计合理,功能电路实现较好,系统性能优良、稳定,较好地达到了题目要求的各项指标。通过这次的项目,我们都学到了很多东西,因为这个项目主要针对的是软件方面,所以我们在软件方面下了很大功夫,有些程序在我们平时都没有训练过的,经过不断的摸索与实验,和其它同学交流,软件上有很大的进步。在硬件调试的过程中,我们也遇到很多问题,主要体现在线阵的平衡和稳定上面。由于时间紧,工作量大,系统还存在许多可以改进的地方。本次竞赛锻炼了我们各方面的能力,虽然我们遇到了很多困难和障碍,但总体上成功与挫折交替,困难与希望并存,我们将继续努力争取更大的进步。6.参考文献[1]秦龙编著.《MSP430单片机常用模块与综合系统实例精讲》.北京:电子工业出版社,2007.7[2]沈建华等.《MSP430系列16位超低功耗单片机实践与系统设计》.北京:清华大学出版社,2005.4[3]董诗白、华成英等.《模拟电子技术基础》.北京:高等教育出版社.2005.6附录1:20 附录2:光敏电阻、L298 光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。L298N是SGS公司生产的直流电机驱动集成电路。内部包含4通道逻辑驱动电路,可以方便地驱动两个直流电机,或一个两相步进电机。工作电压为46V,输出电压最高可达50V,可以直接通过电源来调节输出电压;输出电流可达2.5A,最大可以达到4A,可驱动电感性负载;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。L298N可接受标准TTL逻辑电平信号VSS,9脚VSS可接4.5~7V的电压。4脚VS接电源电压,VS电压范围VIH为+2.5~46V。1脚和15管脚下的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,此时OUT1,OUT2和OUT3,OUT4之间可分别接电动机。5、7、10、12脚接输入控制电平,控制电机正反转;ENA,ENB脚接控制使能端,控制电机的停转。L298逻辑功能表IN1IN2ENA电机状态××0停止000停止011逆时针101顺时针110停止20 附录3:原器件清单元器件名称元器器件型号元器件个数单片机MSP430G25531电机174HC59574HC5952电机驱动芯片L2981比较器LM3111集成运放LM3582光敏电阻1电源锂电池1传感器霍尔传感器1按键独立按键1电容若干电阻若干导线若干附录四:程序清单/*************************************************程序功能:线阵LED图文显示作者:许卫日期:2013.7.25Allrightsreserved!*************************************************/#include#defineucharunsignedchar#defineuintunsignedint/**74HC595引脚定义**/#defineL_DATABIT1#defineL_CLKBIT5#defineL_STRBIT4#defineL_OEBIT3/**全局变量定义**/uchart50ms,ts,tm=32,th=12;ucharcount=0,num;20 ucharClock_buff[]={"12:35:20"};ucharconstdisp_buff[64];ucharconstnum_buff[];ucharsort_buff1[64];ucharsort_buff2[64];/****延时函数****/voiddelay_ms(uinttime){uinti,j;for(i=time;i>0;i--)for(j=250;j>0;j--);}/****延时函数****/voiddelay_320us(uchartime){uinti,j;for(i=time;i>0;i--)for(j=77;j>0;j--);//320us}/****数组元素重新排序****/voidRe_sort(){uchari;for(i=0;i<64;i++)sort_buff1[63-i]=disp_buff[i];for(i=0;i<32;i++){sort_buff2[2*i]=sort_buff1[2*i+1];sort_buff2[2*i+1]=sort_buff1[2*i];}}/****单片机初始化函数****/voidmcu_init(){WDTCTL=WDTPW+WDTHOLD;BCSCTL1=CALBC1_1MHZ;//DCO设置为1MDCOCTL=CALDCO_1MHZ;20 BCSCTL3|=LFXT1S_0;IFG1&=~OFIFG;BCSCTL2|=SELM_1;//设置主时钟MCLK为DCO,且频率为1MHz,子时钟1M。}/****定时器初始化函数****/voidTIMER_init(){TACTL=TASSEL_2+TACLR;//SMCLK,Contmode使计数模式为增计数CCTL0=CCIE;//CCR0interruptenabledCCR0=50000;//50毫秒}/****P1中断端口初始化****/voidP1_port_init(){P1DIR&=~(BIT1+BIT5);//P1.1为霍尔中断P1.5按键中断P1SEL&=~(BIT1+BIT5);//第二功能P1REN|=BIT1+BIT5;//上拉电阻使能P1IE|=BIT1+BIT5;//设中断P1IES|=BIT1+BIT5;//下降沿中断P1IFG&=~(BIT1+BIT5);//中断标志清零}/****74HC595显示函数****/voiddisplay(ucharbit_flag,uintdisp_temp)//bit_flag为1,先写高位。为0,先写低位{unsignedinttemp;unsignedchari;P2DIR|=L_DATA+L_CLK+L_STR+L_OE;P2OUT&=~L_CLK;P2OUT&=~L_STR;P2OUT|=L_OE;temp=disp_temp;if(bit_flag){for(i=0;i<16;i++){if(temp&0x8000)P2OUT|=L_DATA;else20 P2OUT&=~L_DATA;P2OUT|=L_CLK;//上升沿数据移位P2OUT&=~L_CLK;temp<<=1;}}else{for(i=0;i<16;i++){if(temp&0x0001)P2OUT|=L_DATA;elseP2OUT&=~L_DATA;P2OUT|=L_CLK;//上升沿数据移位P2OUT&=~L_CLK;temp>>=1;}}P2OUT|=L_STR;//上升沿数据锁存P2OUT&=~L_STR;P2OUT&=~L_OE;//输出使能}/****写一个字符串****/voiddisp_ascii(uchar*p){unsignedinttemp;unsignedchari,j;for(j=0;*p!='';j++){for(i=0;i<8;i++)//8列{temp=num_buff[2*i+(*p-0x30)*16];temp<<=8;temp|=num_buff[2*i+1+(*p-0x30)*16];display(0,temp);delay_320us(1);//间隔320us}p++;}}20 /****开机自检函数****/voidTurn_on_test(){uinti;uinttemp=0x0001;for(i=0;i<16;i++){display(1,temp);//高电平点亮delay_ms(1000);//间隔1stemp<<=1;}}/****同心圆****/voiddraw_circle(){uinti;uinttemp;temp=0x8000;for(i=0;i<16;i++)//从小到大{display(1,temp);delay_ms(300);//间隔0.3stemp>>=1;}temp=0x0001;for(i=0;i<16;i++)//从大到小{display(1,temp);delay_ms(300);//间隔0.3stemp<<=1;}}/****TI杯程序****/voiddraw_TI_cup(ucharconst*p){uinti;uinttemp;p=&sort_buff2[0];for(i=0;i<32;i++)//32列{temp=*p++;//将一竖的两个字节合成一个字20 temp<<=8;temp|=*p++;display(0,temp);delay_320us(1);//间隔320us}}/*****秒针程序****/voiddraw_second_hand(){uinttemp1,temp2;temp1=0xfffc;temp2=0x0000;delay_320us(2*(60-ts));//延时,等待指向相应的位置display(1,temp1|0x0001);delay_320us(1);//在该亮的位置显示320usdisplay(1,temp2|0x0001);}/****主函数****/voidmain(void){mcu_init();TIMER_init();P1_port_init();Re_sort();//从新排序Turn_on_test();//开机自检_EINT();//开总中断while(1){};}#pragmavector=PORT1_VECTOR__interruptvoidP1_port(void){if(P1IFG&BIT5)//按键切换模式{delay_ms(30);if(P1IFG&BIT5)20 {P1IFG&=~(BIT5);count++;if(count>=5)count=1;while(!(P1IN&BIT5));}}if(P1IFG&BIT1){P1IFG&=~(BIT1);if(count==1){P1IE&=~BIT1;//关中断draw_circle();P1IE|=BIT1;//同心圆显示完后开中断}elseif(count==2)//每次霍尔中断就显示一次TI杯{P2OUT|=L_OE;draw_TI_cup(sort_buff2);P2OUT|=L_OE;}elseif(count==3){TACTL|=MC_1;//开始定时draw_second_hand();}elseif(count==4){Clock_buff[0]=ts%10+0x30;Clock_buff[1]=ts/10+0x30;Clock_buff[3]=tm%10+0x30;Clock_buff[4]=tm/10+0x30;Clock_buff[6]=th%10+0x30;Clock_buff[7]=th/10+0x30;disp_ascii(Clock_buff);}}}//TimerA0interruptserviceroutine#pragmavector=TIMER0_A0_VECTOR__interruptvoidTimer_A0(void){20 t50ms++;if(t50ms==20){t50ms=0;ts++;if(ts==60){ts=0;tm++;if(tm==60){tm=0;th++;if(th==24)th=0;}}}}ucharconstdisp_buff[64]={0x18,0x00,0x10,0x00,0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x10,0x04,0x10,0x04,0x1F,0xFC,0x10,0x04,0x10,0x04,0x00,0x00,0x00,0x00,0x10,0x40,0x11,0x80,0x16,0x00,0xFF,0xFF,0x12,0x00,0x51,0x20,0x40,0x40,0x40,0x80,0x43,0x00,0x4F,0xFF,0x70,0x00,0x41,0x00,0x40,0x80,0x40,0x60,0x40,0x30,0x00,0x00,};ucharconstnum_buff[]={0x00,0x00,0x07,0xF0,0x08,0x08,0x10,0x04,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00,/*"0",0*///数据已经处理0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x04,0x1F,0xFC,0x08,0x04,0x08,0x04,0x00,0x00,/*"1",1*/20 0x00,0x00,0x0E,0x0C,0x11,0x84,0x10,0x44,0x10,0x24,0x10,0x14,0x0E,0x0C,0x00,0x00,/*"2",2*/0x00,0x00,0x0C,0x70,0x12,0x88,0x11,0x04,0x11,0x04,0x10,0x04,0x0C,0x18,0x00,0x00,/*"3",3*/0x00,0x00,0x00,0x24,0x1F,0xFC,0x08,0x24,0x04,0x24,0x03,0x20,0x00,0xE0,0x00,0x00,/*"4",4*/0x00,0x00,0x10,0x70,0x10,0x88,0x11,0x04,0x11,0x04,0x10,0x84,0x1F,0x98,0x00,0x00,/*"5",5*/0x00,0x00,0x00,0x70,0x18,0x88,0x11,0x04,0x11,0x04,0x08,0x88,0x07,0xF0,0x00,0x00,/*"6",6*/0x00,0x00,0x10,0x00,0x1C,0x00,0x13,0x00,0x10,0xFC,0x10,0x00,0x1C,0x00,0x00,0x00,/*"7",7*/0x00,0x00,0x0E,0x38,0x11,0x44,0x10,0x84,0x10,0x84,0x11,0x44,0x0E,0x38,0x00,0x00,/*"8",8*/0x00,0x00,0x07,0xF0,0x08,0x88,0x10,0x44,0x10,0x44,0x08,0x8C,0x07,0x00,0x00,0x00,/*"9",9*/0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x03,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,/*":",10*/};20

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭