1、 1 2012年陕西省第三届大学生德州仪器(TI)杯模拟及模数混合电路应用设计竞赛 设计报告封面 学校编号 组(队)编号 选题编号 参赛队编号 (参赛学校填写) 说 明 1. 本页作为竞赛设计报告的封面和设计报告一同装订; 2. “参赛队编号”由参赛学校编写,其中“学校编号”应按照巡视员提供的组委会印制的学校编码填写;“组(队)编号”由参赛学校根据本校参赛队数按顺序编排,本科组数字编排范围(01-50),高职高专组数字编排范围(从60开始顺延);“选题编号”由参赛队员根据所选试题编号填写。例如:“0206B”或“2862F”。 3. 本页允许各参赛学校复印。 2 线阵LED图文显示装置(H题)
2、 摘要:本系统是利用人眼视觉暂留效应的线阵 LED 图文显示系统. 该系统由电机带动一列16个 LED 高速旋转, 以TI公司的超低功耗MCU MSP430G2553处理器为核心,精确控制 LED 的亮灭时间, 从而实现字符及简单动态画面的显示.。采用通用 LED 取模软件, 将要显示的内容取模转换为数字信号, 并将该信号传输给线阵LED。系统由MSP430G2553控制电路、直流电机及其驱动、线阵LED、标志杆等部分组成, 能够开机自动检测,通过按键切换来控制显示不同的内容, 根据环境亮度变化采用TI芯片TLC555输出PWM波自动调整LED亮暗。实验表明该系统达到了设计的各项要求。 关键词
3、:MSP430G2553 线阵LED 直流电机 图文显示 3 1 系统方案论证与比较 1.1 单片机G2553控制选择 采用TI公司的MSP430G2553,该单片机具有超低功耗及强大的处理能力,并有高性能模拟技术及丰富的片上外围模块,其构成系统工作稳定,具有方便高效的开发环境,因此在性价比、功耗、速度都优越于其他控制器。 1.2 电机的比较与选择 方案一:采用步进电机来带动旋转平台,步进电机是将电脉冲信号转变为角位移或线位移的控制元件,使得在速度、位置等控制领域用步进电机变的非常简单。故不选择。 方案二:运用直流电机带动旋转平台,直流动机具有调速性能好、起动容易、能够载重起动等优点,所以目前
4、直流电动机的应用仍然很广泛。 由于步进电机转速不易调整,而直流电机机械特性和调节特性的线性度好,调速范围广、维护方便,满足题目要求,所以我们选择直流电机带动旋转平台。 1.3 电机驱动电路比较与选择 方案一:中功率三级管直接搭建。在电机驱动要求不高的地方可以由三极管直接搭建一个驱动电路,使用三级关搭建的电机驱动电路电路简单,但功率和性能一般。对输入信号要求较高,输出性能只能满足一般要求。 方案二:使用单片机MSP430G2553 控制电机驱动芯片L298N。L298N的驱动能力强,输入电压可变化范围大,是一块专用直流电机驱动芯片。其各项性能都较好,但价格较高,在电机要求驱动器较高的地方使用较佳
5、。 在该系统中,带动旋转平台的直流电机使用L298N驱动模块,很容易实现对电机较稳的控制,故采用方案二。 1.4 亮度自动调节电路比较与选择 方案一:采用线性较好的光敏电阻,将光敏电阻串入控制电路的输出端再接入线阵LED灯,当光亮度变化时即可改变电流大小,从而达到亮暗调节。但是电路不稳定,故不采取此方案。 方案二:采用光敏电阻与TLC555搭建电路。用TLC555、电容、电位器组成振荡电路产生稳定的PWM波输出。而光敏电阻的变化引起输出PWM波占空比的变化,从而改变显示亮度。电路简单,且易于控制,因此选定此方案作为环境亮度变化调节电路。 2 理论分析与参数计算 2.1 线状点阵LED驱动参数分
6、析与计算 该线状点阵中LED驱动方法为普通的LED与电阻串联的方式来驱动点亮LED,该限流电阻计算公式如下: IFVFVccLEDLED 工作电流正向稳定电压电源电压限流电阻 根据设计要求, VVcc 3.3 , VVF 2.1 , mAIF 20 可求得限流电阻: 4 10520 2.13.3 mA VVR 经计算采用 100 电阻与LED串联即可。 2.2 线阵LED运动参数分析与计算 在电机的带动下,线阵 LED 依靠旋转平台进行旋转,设电机周期为t,LED完成需要时间为 1t ,软件延时为 2t ,它们之间存在下列关系: 21 ttt 只要保证 21 ttt ,经计算由 mst 40
7、, mst 352 得 mst 51 ,线阵 LED 就能很好的地显示图文。 2.3 指针式秒表分析与计算 指针秒表完全通过软件来控制显示,设电机周期为t,LED完成需要时间为 1t ,软件延时为 3t 、 4t ,存在下列关系: 431 tttt 保证 431 tttt 成立,确定LED完成需要时间为 mst 51 ,线阵LED就能很好的地显示秒表计时。 2.4 显示亮度自动调节分析与计算 采用TI的TLC555、电容 1C , 2C 、电阻 1R , 2R 和光敏电阻 3R 等组成振荡电路产生稳定的PWM波输出。则产生PWM波的周期、高电平及其占空比的计算公式如下: 232321 )2(7
8、.0 CRRRRRT 周期: 2)( 2323211 LnCRRRRRT 高电平时间: 21:TTq 占空比 光敏电阻的变化引起输出PWM波占空比的变化,从而改变显示亮度,即电流控制。控制电流大小计算如下: mAVVVR UUVccI LED 15100 3.0*22.13.3*2 8050 3 电路与程序设计 3.1 电路设计 3.1.1 系统总体方案设计 5 本系统将外接的12V电源给电机供电,4.2V电源为控制器供电,通过电源调压芯片LP2950-33LPR为系统提供3.3V电压。单片机按照一定的算法控制电机的转动,使电机转动稳定以完成各种控制动作,总体设计框图如图1。 图 1 3.1.
9、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亮度自动调节电路设计 通过采用
10、TI公司的芯片TLC555与光敏电阻搭建电路。用TLC555、电容、电位器组成振荡电路产生稳定的 PWM 波输出。而光敏电阻的变化引起输出 PWM波占空比的变化,从而改变显示亮度,实现亮度随外界环境变化而自动调节,亮度自动调节电路图见附图三。 3.1.5 起始标志杆检测电路设计 本电路采用霍尔传感器采集数据并检测标志杆,把霍尔传感器固定到旋转平台,一块小磁铁固定到标志杆上,并与霍尔传感器水平一条线放置。当旋转平台边缘上网霍尔传感器经过标志位的小磁铁时,传感器感应到磁场发生变化,同时产生输出电压脉冲,并将此脉冲送入单片机。起始标志杆检测电路图见附图四。 3.2 程序设计 3.2.1 主程序设计
11、当系统上电后单片机初始化后,先进行LED检测,按键触发计数选择显示不同的图文,程序则按照相应部分的程序算法执行,主程序流程图如图2。 6 图 2 4测试结果 4.1 测试仪器 示波器DS1302CA、万用表DT-9205 4.2测试结果完整性 1.完成制作一个由16只 LED构成的线状点阵及其控制电路,安装于可旋转的平台上,在平台的中心设置一个按键,用于功能的切换,电机带动平台以合适速度旋转。 2.开机时装置完成显示自检,能对点阵中16只LED逐个点亮,每只LED显示时间约为1秒,此时平台不旋转。 3.通过按键切换,实现16个同心圆图形分别顺序(由大到小)和逆序(由小到大)显示,每个同心圆图形
12、显示时间为0.3秒左右。 4.LED显示亮度能依据环境亮度变化自动调节。 5.通过按键切换,显示字符“TI杯”,要求字符显示较稳定,无明显漂移。 6.通过按键切换,显示一个指针式秒表,该秒表以标志杆为起始标志,秒针随时间动态旋转,旋转一周的时长为601秒。 4.3测试结果分析 经过测试,可以确定系统构架设计比较合理,可以很好确定旋转平台的中心,电路功能实现基本符合设计要求。 5 结束语 经过多日的辛勤努力,系统架构设计合理,功能电路实现较好,系统性能优良、稳定,较好地达到了题目要求的各项指标,在硬件调试的过程中,我们遇到很多问题。由于时间紧,工作量大,系统还存在许多可以改进的地方。本次竞赛锻炼
13、了我们各方面的能力,虽然我们遇到了很多困难和障碍,但总体上成功与挫7 折交替,困难与希望并存,我们将继续努力争取更大的进步。 参考文献: 1 秦龙编著.MSP430单片机常用模块与综合系统实例精讲.北京:电子工业出版社,2007.7 2 沈建华等.MSP430系列16位超低功耗单片机实践与系统设计.北京:清华大学出版社,2005.4 3 郁有文等.传感器原理及工程应用.西安:西安电子科技大学出版社.2008.6 4 张剑平编著.模拟电子技术教程.北京:清华大学出版社.2011.3 5 龙治红、谭本军编著。数字电子技术.北京:北京理工大学出版社.2010.7 8 附录一: 1.系统电源电路图(见
14、附图一) 附图一 2.单片机G2553控制电路图见附图二 附图二 9 3.亮度自动调节电路图(见附图三) 附录三 4.起始标志杆检测电路图(见附图四) 附图四 5.电机驱动电路图(见附图五) 附图五 10 附录二: #include /单片机头文件 #define CPU_F (double)1000000) #define delay_us(x) _delay_cycles(long)(CPU_F*(double)x/1000000.0) / 调用delay_ms(2000);延时2000MS #define delay_ms(x) _delay_cycles(long)(CPU_F*(do
15、uble)x/1000.0) / 调用delay_us(x); 延时 X us #define L_WR P1OUT /霍尔传感器 A04E 设置中断标志位 unsigned char const zimu,aa; unsigned char t=0; unsigned char m=0; unsigned char x=0,y=0; /* 函数名:关闭所有LED灯(操作硬件) 结 果:所有LED灯熄灭 */ void DISPLAY_OFF (void) delay_us(50);/显示停留 L_WR; H_WR; /*/ /* 参 数:16位显示数据(下高位)(d:上面8位,e:下面8位)
16、 */ void display(unsigned char const d,unsigned char const e) /第1列横向显示程序 11 unsigned char i,a,b; L_EN; a=d; b=e; for(i=0;i0;i-=2) display1(aai-2,aai-1); delay_ms(300); /*/ void LED_3() /TI杯显示 14 unsigned char a; unsigned int c=0; /数据指针 for(a=0;a1;i-) delay_us(1000); display(0xff,0xff); /TIMER(); /*
17、函数名:主函数 */ void main (void) / Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; OSCILLATOR_Init(); /时钟初始化 init(); /IO初始程序 Z_init(); /中断初始化 LDE_0(); /启动自检 开中断 while(1) 15 /*/ #pragma vector=PORT1_VECTOR /霍尔中断 _interrupt void port_1(void) if(P1IFG if(P1IFG if(t=5)t=1; P1IFG if(P1
18、IFG P1IFG if(t=1)LED_1(); if(t=2)LED_2(); if(t=3)LED_3(); if(t=4)LED_4(); /Timer A0 interrupt service routine #pragma vector=TIMER0_A0_VECTOR _interrupt void Timer_A0 (void) m+; if(m60)m=0; /* 字幕数组 */ unsigned char const aa = /从外到内,一次点亮 0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x0
19、0,0x40,0x00,0x80, 0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x80,0x00, ; 16 unsigned char const zimu = / (取码:从上到下从左到右,纵向8位下高位 ) /TI杯 0x04,0x02,0x04,0x01,0x84,0x00,0xE4,0x0F,/不 0x1C,0x00,0x84,0x00,0x04,0x01,0x04,0x06, 0x04,0x00,0x00,0x00,0x00,0x00, 0x10,0x04,0x10,0x03,0xd0
20、,0x00,0xFe,0x0F,/木 0x50,0x00,0x90,0x00,0x10,0x04,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*- 文字: I -*/ /*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/ 0x00,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F, 0x08,0x08,0x08,0x08,0x00,0x08,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*- 文字: T -*/ /*- 宋体12; 此字体下对应的点阵为:宽x高=8x16 -*/ 0x08,0x00,0x08,0x00,0x08,0x00,0xF8,0x0F, 0x08,0x00,0x08,0x00,0x08,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, ;