线阵LED图文显示装置论文文档格式.docx
《线阵LED图文显示装置论文文档格式.docx》由会员分享,可在线阅读,更多相关《线阵LED图文显示装置论文文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
![线阵LED图文显示装置论文文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/11/9ec884e1-5524-4860-b915-104be3eb7b45/9ec884e1-5524-4860-b915-104be3eb7b451.gif)
使用单片机MSP430G2553控制电机驱动芯片L298N。
L298N的驱动能力强,输入电压可变化范围大,是一块专用直流电机驱动芯片。
其各项性能都较好,但价格较高,在电机要求驱动器较高的地方使用较佳。
在该系统中,带动旋转平台的直流电机使用L298N驱动模块,很容易实现对电机较稳的控制,故采用方案二。
1.4亮度自动调节电路比较与选择
采用线性较好的光敏电阻,将光敏电阻串入控制电路的输出端再接入线阵LED灯,当光亮度变化时即可改变电流大小,从而达到亮暗调节。
但是电路不稳定,故不采取此方案。
方案二:
采用光敏电阻与TLC555搭建电路。
用TLC555、电容、电位器组成振荡电路产生稳定的PWM波输出。
而光敏电阻的变化引起输出PWM波占空比的变化,从而改变显示亮度。
电路简单,且易于控制,因此选定此方案作为环境亮度变化调节电路。
2理论分析与参数计算
2.1线状点阵LED驱动参数分析与计算
该线状点阵中LED驱动方法为普通的LED与电阻串联的方式来驱动点亮LED,该限流电阻计算公式如下:
根据设计要求,,,可求得限流电阻:
经计算采用电阻与LED串联即可。
2.2线阵LED运动参数分析与计算
在电机的带动下,线阵LED依靠旋转平台进行旋转,设电机周期为,LED完成需要时间为,软件延时为,它们之间存在下列关系:
只要保证,经计算由,得,线阵LED就能很好的地显示图文。
2.3指针式秒表分析与计算
指针秒表完全通过软件来控制显示,设电机周期为,LED完成需要时间为,软件延时为、,存在下列关系:
保证成立,确定LED完成需要时间为,线阵LED就能很好的地显示秒表计时。
2.4显示亮度自动调节分析与计算
采用TI的TLC555、电容,、电阻,和光敏电阻等组成振荡电路产生稳定的PWM波输出。
则产生PWM波的周期、高电平及其占空比的计算公式如下:
光敏电阻的变化引起输出PWM波占空比的变化,从而改变显示亮度,即电流控制。
控制电流大小计算如下:
3电路与程序设计
3.1电路设计
3.1.1系统总体方案设计
本系统将外接的12V电源给电机供电,4.2V电源为控制器供电,通过电源调压芯片LP2950-33LPR为系统提供3.3V电压。
单片机按照一定的算法控制电机的转动,使电机转动稳定以完成各种控制动作,总体设计框图如图1。
图1
3.1.2系统电源设计
系统需要12V、3.3V电源,采用12V开关电源给直流电机供电,需要的3.3V电压则从4.2V锂电池通过TI公司的电源调压芯片LP2950-33LPR位系统提供3.3V电压,系统电源电路图见附图一。
3.1.3单片机G2553控制电路的设计
控制电路主要有单片机MSP430G2553、串并转换芯片74HC164、16个限流电阻和16个LED组成的。
单片机很好地利用软件程序发送串行数据,通过串并转换芯片把从单片机发出的数据通过限流电阻并行送到16个LED,控制线阵LED显示图文,单片机G2553控制电路图见附图二。
3.1.4亮度自动调节电路设计
通过采用TI公司的芯片TLC555与光敏电阻搭建电路。
而光敏电阻的变化引起输出PWM波占空比的变化,从而改变显示亮度,实现亮度随外界环境变化而自动调节,亮度自动调节电路图见附图三。
`3.1.5起始标志杆检测电路设计
本电路采用霍尔传感器采集数据并检测标志杆,把霍尔传感器固定到旋转平台,一块小磁铁固定到标志杆上,并与霍尔传感器水平一条线放置。
当旋转平台边缘上网霍尔传感器经过标志位的小磁铁时,传感器感应到磁场发生变化,同时产生输出电压脉冲,并将此脉冲送入单片机。
起始标志杆检测电路图见附图四。
3.2程序设计
3.2.1主程序设计
当系统上电后单片机初始化后,先进行LED检测,按键触发计数选择显示不同的图文,程序则按照相应部分的程序算法执行,主程序流程图如图2。
图2
4测试结果
4.1测试仪器
示波器DS1302CA、万用表DT-9205
4.2测试结果完整性
1.完成制作一个由16只LED构成的线状点阵及其控制电路,安装于可旋转的平台上,在平台的中心设置一个按键,用于功能的切换,电机带动平台以合适速度旋转。
2.开机时装置完成显示自检,能对点阵中16只LED逐个点亮,每只LED显示时间约为1秒,此时平台不旋转。
3.通过按键切换,实现16个同心圆图形分别顺序(由大到小)和逆序(由小到大)显示,每个同心圆图形显示时间为0.3秒左右。
4.LED显示亮度能依据环境亮度变化自动调节。
5.通过按键切换,显示字符“TI杯”,要求字符显示较稳定,无明显漂移。
6.通过按键切换,显示一个指针式秒表,该秒表以标志杆为起始标志,秒针随时间动态旋转,旋转一周的时长为60±
1秒。
4.3测试结果分析
经过测试,可以确定系统构架设计比较合理,可以很好确定旋转平台的中心,电路功能实现基本符合设计要求。
5结束语
经过多日的辛勤努力,系统架构设计合理,功能电路实现较好,系统性能优良、稳定,较好地达到了题目要求的各项指标,在硬件调试的过程中,我们遇到很多问题。
由于时间紧,工作量大,系统还存在许多可以改进的地方。
本次竞赛锻炼了我们各方面的能力,虽然我们遇到了很多困难和障碍,但总体上成功与挫折交替,困难与希望并存,我们将继续努力争取更大的进步。
参考文献:
[1]秦龙编著.《MSP430单片机常用模块与综合系统实例精讲》.北京:
电子工业出版社,2007.7
[2]沈建华等.《MSP430系列16位超低功耗单片机实践与系统设计》.北京:
清华大学出版社,2005.4
[3]郁有文等.《传感器原理及工程应用》.西安:
西安电子科技大学出版社.2008.6
[4]张剑平编著.《模拟电子技术教程》.北京:
清华大学出版社.2011.3
[5]龙治红、谭本军编著。
《数字电子技术》.北京:
北京理工大学出版社.2010.7
附录一:
1.系统电源电路图(见附图一)
附图一
2.单片机G2553控制电路图见附图二
附图二
3.亮度自动调节电路图(见附图三)
附录三
4.起始标志杆检测电路图(见附图四)
附图四
5.电机驱动电路图(见附图五)
附图五
附录二:
#include<
msp430g2553.h>
//单片机头文件
#defineCPU_F((double)1000000)
#definedelay_us(x)__delay_cycles((long)(CPU_F*(double)x/1000000.0))//调用delay_ms(2000);
延时2000MS
#definedelay_ms(x)__delay_cycles((long)(CPU_F*(double)x/1000.0))//调用delay_us(x);
延时Xus
#defineL_WRP1OUT&
=~BIT5
#defineH_WRP1OUT|=BIT5
#defineL_CLKP2OUT&
=~BIT0
#defineH_CLKP2OUT|=BIT0
#defineL_DAT0P2OUT&
=~BIT1
#defineH_DAT0P2OUT|=BIT1
#defineL_DAT1P2OUT&
=~BIT2
#defineH_DAT1P2OUT|=BIT2
#defineL_ENP2OUT&
=~BIT3
#defineH_ENP2OUT|=BIT3
//#defineKEYP1;
//霍尔传感器A04E设置中断标志位
unsignedcharconstzimu[],aa[];
unsignedchart=0;
unsignedcharm=0;
unsignedcharx=0,y=0;
/*********************************************************************************************
函数名:
关闭所有LED灯(操作硬件)
结果:
所有LED灯熄灭
**********************************************************************************************/
voidDISPLAY_OFF(void)
{
delay_us(50);
//显示停留
L_WR;
H_WR;
}
/**********************************************************************************************/
参数:
16位显示数据(下高位)(d:
上面8位,e:
下面8位)
voiddisplay(unsignedcharconstd,unsignedcharconste)//第1列横向显示程序
{
unsignedchari,a,b;
L_EN;
a=d;
b=e;
for(i=0;
i<
8;
i++)
{
L_CLK;
if((a&
0x80)==0x80)
H_DAT0;
else
L_DAT0;
if((b&
H_DAT1;
L_DAT1;
H_CLK;
a<
<
=1;
b<
}
H_EN;
DISPLAY_OFF();
}
voiddisplay1(unsignedcharconstd,unsignedcharconste)//第1列横向显示程序
a=e;
b=d;