电子设计大赛报告.docx
- 文档编号:8965832
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:21
- 大小:747.83KB
电子设计大赛报告.docx
《电子设计大赛报告.docx》由会员分享,可在线阅读,更多相关《电子设计大赛报告.docx(21页珍藏版)》请在冰豆网上搜索。
电子设计大赛报告
2011年“裕兴杯”
北京工业大学嵌入式系统设计竞赛报告
竞赛选题:
LED三色平面显示器
团队成员:
08021227荣士龙
08021203沈晓宇
提交日期:
2011年11月26日
1、背景:
近年来,随着LED制造技术日趋成熟,LED的应用日渐广泛,且年
产值超过上千亿元,其应用遍及各个行业。
2、竞赛要求:
利用M0处理器和LED驱动芯片,实现R、G、B三色LED
平面方阵的彩色显示控制。
三、原理介绍:
串行通信:
指外设和计算机间使用一根数据信号线(另外需要地线,
可能还需要控制线),数据在一根数据信号线上一位一位
地进行传输,每一位数据都占据一个固定的时间长度。
I2C通信形式:
广播
数据组织形式:
地址+数据,对应地址从机响应。
主发送模式、主接收模式、从接收模式、从发送模式。
四、芯片介绍:
1、LPC1114:
LPC111x是基于ARMCortex-M0的微控制器,可用于高集成度和低功
耗的嵌入式应用。
ARMCortex-M0是第二代内核,它提供了一个简单的指令集,可以实现
确定性行为。
LPC111xCPU的工作频率高达50MHz。
LPC111x的外设包括:
高达32kB的Flash、8kB的数据存储器、一个
Fast-modePlus的
I2C接口、一个RS-485/EIA-485UART、2个SSP接口、4个通用定时
器,以及多达42个通用I/O引脚。
2、PCA9635驱动芯片:
电压工作范围为3.3V到5.5V
SDA/SCL输入噪声过滤
内部自带25MHz晶振,无需外部器件
可通过I2C总线可以对PCA9635进行软复位
16个LED驱动器,每个输出可编程为:
关;开;独立亮度控制;独立亮度控制+整体闪烁/明暗控制
1MHz快速模式(Fast-modePlus)I2C总线,SDA输出电流可高达30mA
256级独立亮度控制(97KHzPWM)
256级集体亮度控制(190HzPWM)
256级集体闪烁控制(闪烁频率在24Hz到10.73s之间可调)
图一LPC111X方框图
(1)PCA9635是一款通过I2C总线控制的16位LED驱动器(可设Fast-Mode,通信速率高达1M)。
(2)每个LED输出都有自己的8位分辨率(256级)固定频率的独立PWM控制器,该控制器运行在97KHz的频率下,占空比可由0%到99.6%可调,用以将LED设置到一个特定的亮度值
(3)ED输出驱动可以编程为在5V电压下吸收25mA灌电流的开漏模式及提供10mA拉电流的推挽模式,可直接驱动LED。
图二PCA9635引脚分布
图二PCA9635引脚说明
图三PCA9635参与编址的28个寄存器
5、作品设计思路
1、硬件电路设计:
我们将主控芯片LPC1114置于开发板上,用导线连接到我们的电路板,
将三片PCA9635插在电路板上。
主控芯片与三个驱动芯片通过I2C总线连
接。
我们采用的是共阳LED三色灯。
LED三色灯以8×8阵列形式排列,第
一行横向八个灯连接三片9635的LED0~LED7输出管脚,分别控制红、绿、
蓝三种颜色的产生。
第一列纵向八个灯分别连接三片9635的LED8~LED15
输出管脚,控制LED公共端引脚的导通。
图四电路焊接
2、软件程序设计:
调试平台:
LPCXpressoIDEv3.4
LPCXpressoIDE是一个针对LPC微控制器的高度集成的软件开发环境,它包含要求快速、廉价方式软件解决方案所需要的所有工具。
LPCXpresso基于许多LPC器件增强的Eclipse技术。
它的特征:
低成本、符合最新版本的行业标准GNU工具、专业的C优化库函数。
LPCXpressoIDE可以编写任意长度的可执行代码,并且支持代码优化。
图五软件界面
程序思想:
我们采用动态显示方式,将数字、字母、图形进行分时列扫描,
由于闪烁频率很高,所以显示出静态画面。
六、效果实现
1、基本功能:
实现了数字0~9,字母A~Z的显示,并可以产生颜色明暗变化,混色,
颜色及字符位置的改变。
2、创新部分:
实现了自创图形的显示,及色彩变化。
7、程序代码:
#include"LPC11xx.h"/*LPC11xxPeripheralRegisters*/
#include"type.h"
#include"i2c.h"
#defineB0x1e
#defineG0x0e
#defineR0x3e
externvolatileuint32_tI2CCount;
externvolatileuint8_tI2CMasterBuffer[BUFSIZE];
externvolatileuint8_tI2CSlaveBuffer[BUFSIZE];
externvolatileuint32_tI2CMasterState;
externvolatileuint32_tI2CReadLength,I2CWriteLength;
voidLED_display1(uint32_tcolour)
{
uint8_ti;
I2CWriteLength=26;//
I2CReadLength=0;
switch(colour)
{
caseR:
I2CMasterBuffer[0]=0x3E;
break;
caseG:
I2CMasterBuffer[0]=0x0D;
break;
caseB:
I2CMasterBuffer[0]=0xED;
break;
}
I2CMasterBuffer[1]=0x80;
I2CMasterBuffer[2]=0x00;
I2CMasterBuffer[3]=0x35;
I2CMasterBuffer[4]=0x00;
for(i=5;i<12;i++)
I2CMasterBuffer[i]=0x00;
I2CMasterBuffer[12]=0xff;
for(i=13;i<20;i++)
I2CMasterBuffer[i]=0xff;
I2CMasterBuffer[20]=0x80;
I2CMasterBuffer[21]=0x00;
I2CMasterBuffer[22]=0xa5;
I2CMasterBuffer[23]=0x5a;
I2CMasterBuffer[24]=0x08;
I2CMasterBuffer[25]=0x00;
I2CEngine();
}
voidLED_display2(uint32_tcolour)
{
uint8_ti;
I2CWriteLength=26;//
I2CReadLength=0;
switch(colour)
{
caseR:
I2CMasterBuffer[0]=0x3E;
break;
caseG:
I2CMasterBuffer[0]=0x0D;
break;
caseB:
I2CMasterBuffer[0]=0xED;
break;
}
I2CMasterBuffer[1]=0x80;
I2CMasterBuffer[2]=0x00;
I2CMasterBuffer[3]=0x35;
I2CMasterBuffer[4]=0x00;
for(i=5;i<12;i++)
I2CMasterBuffer[i]=0x00;
I2CMasterBuffer[12]=0xff;
for(i=13;i<20;i++)
I2CMasterBuffer[i]=0xff;
I2CMasterBuffer[20]=0x80;
I2CMasterBuffer[21]=0x00;
I2CMasterBuffer[22]=0x55;
I2CMasterBuffer[23]=0x59;
I2CMasterBuffer[24]=0xA8;
I2CMasterBuffer[25]=0xAA;
I2CEngine();
}
voidLED_display3(uint32_tcolour)
{
uint8_ti;
I2CWriteLength=26;//
I2CReadLength=0;
switch(colour)
{
caseR:
I2CMasterBuffer[0]=0x3E;
break;
caseG:
I2CMasterBuffer[0]=0x0D;
break;
caseB:
I2CMasterBuffer[0]=0xED;
break;
}
I2CMasterBuffer[1]=0x80;
I2CMasterBuffer[2]=0x00;//mode0
I2CMasterBuffer[3]=0x35;
I2CMasterBuffer[4]=0x00;
for(i=5;i<12;i++)
I2CMasterBuffer[i]=0x00;
I2CMasterBuffer[12]=0xff;
for(i=13;i<20;i++)
I2CMasterBuffer[i]=0xff;
I2CMasterBuffer[20]=0x80;
I2CMasterBuffer[21]=0x00;
I2CMasterBuffer[22]=0x65;
I2CMasterBuffer[23]=0x55;
I2CMasterBuffer[24]=0xa8;
I2CMasterBuffer[25]=0xaa;
I2CEngine();
}
voidLED_display4(uint32_tcolour)
{
uint8_ti;
I2CWriteLength=26;//
I2CReadLength=0;
switch(colour)
{
caseR:
I2CMasterBuffer[0]=0x3E;
break;
caseG:
I2CMasterBuffer[0]=0x0D;
break;
caseB:
I2CMasterBuffer[0]=0xED;
break;
}
I2CMasterBuffer[1]=0x80;
I2CMasterBuffer[2]=0x00;
I2CMasterBuffer[3]=0x35;
I2CMasterBuffer[4]=0x00;
for(i=5;i<12;i++)
I2CMasterBuffer[i]=0x00;
for(i=12;i<19;i++)
I2CMasterBuffer[19]=0xff;
I2CMasterBuffer[20]=0x80;
I2CMasterBuffer[21]=0x00;//
I2CMasterBuffer[22]=0x85;//5610quankai00diyipailiang01100101
I2CMasterBuffer[23]=0x58;//ffshan1111,55mie0101
I2CMasterBuffer[24]=0x00;//10,11,01xuantong,00mie
I2CMasterBuffer[25]=0x80;
I2CEngine();
}
voidLED_display6(uint32_tcolour)
{
uint8_ti;
I2CWriteLength=26;//
I2CReadLength=0;
switch(colour)
{
caseR:
I2CMasterBuffer[0]=0x3E;
break;
caseG:
I2CMasterBuffer[0]=0x0D;
break;
caseB:
I2CMasterBuffer[0]=0xED;
break;
}
I2CMasterBuffer[1]=0x80;
I2CMasterBuffer[2]=0x00;
I2CMasterBuffer[3]=0x35;
I2CMasterBuffer[4]=0x00;
for(i=5;i<12;i++)
I2CMasterBuffer[i]=0x00;
I2CMasterBuffer[12]=0xff;
for(i=13;i<20;i++)
I2CMasterBuffer[i]=0xff;
I2CMasterBuffer[20]=0x80;
I2CMasterBuffer[21]=0x00;//
I2CMasterBuffer[22]=0xa5;//5610quankai00diyipailiang01100101
I2CMasterBuffer[23]=0x5a;//ffshan1111,55mie0101
I2CMasterBuffer[24]=0x00;//10,11,01xuantong,00mie
I2CMasterBuffer[25]=0x01;
I2CEngine();
}
voidLED_display7(uint32_tcolour)
{
uint8_ti;
I2CWriteLength=26;//
I2CReadLength=0;
switch(colour)
{
caseR:
I2CMasterBuffer[0]=0x3E;
break;
caseG:
I2CMasterBuffer[0]=0x0D;
break;
caseB:
I2CMasterBuffer[0]=0xED;
break;
}
I2CMasterBuffer[1]=0x80;
I2CMasterBuffer[2]=0x00;
I2CMasterBuffer[3]=0x35;
I2CMasterBuffer[4]=0x00;
for(i=5;i<12;i++)
I2CMasterBuffer[i]=0x00;
I2CMasterBuffer[12]=0xff;
for(i=13;i<20;i++)
I2CMasterBuffer[i]=0xff;
I2CMasterBuffer[20]=0x80;
I2CMasterBuffer[21]=0x00;//
I2CMasterBuffer[22]=0x55;//5610quankai00diyipailiang01100101
I2CMasterBuffer[23]=0x59;//ffshan1111,55mie10
I2CMasterBuffer[24]=0xa8;//10,11,01xuantong,00mie
I2CMasterBuffer[25]=0x02;
I2CEngine();
}
intmain(void)
{
uint32_ti;
if(I2CInit((uint32_t)I2CMASTER)==FALSE)
{
while
(1);/*Fatalerror*/
}
stop();
while
(1)
{
for(i=80;i>0;i--)//9
{LED_display2(R);
LED_display9(R);
LED_display6(R);
LED_display1(R);
LED_display4(R);
}
for(i=80;i>0;i--)//8
{LED_display2(R);
LED_display3(R);
LED_display6(R);
LED_display1(R);
LED_display4(R);
}
for(i=200;i>0;i--)//7
{LED_display2(R);
//LED_display6(RED);
LED_display1(R);
}
for(i=80;i>0;i--)//6
{LED_display3(R);
LED_display6(R);
LED_display1(R);
LED_display4(R);
LED_display8(R);
}
for(i=80;i>0;i--)//5
{LED_display9(R);
LED_display6(R);
LED_display1(R);
LED_display4(R);
LED_display8(R);
}
for(i=130;i>0;i--)//4
{LED_display9(R);
LED_display6(R);
LED_display2(R);
}
for(i=80;i>0;i--)//3
{LED_display1(R);
LED_display7(R);
LED_display6(R);
LED_display8(R);
LED_display4(R);
}
for(i=80;i>0;i--)//2
{LED_display1(R);
LED_display7(R);
LED_display6(R);
LED_display10(R);
LED_display4(R);
}
for(i=400;i>0;i--)//1
LED_display2(R);
for(i=100;i>0;i--)//0
{LED_display1(R);
LED_display3(R);
LED_display2(R);
LED_display4(R);
}
}
}
八、心得体会:
通过参加这次比赛,我们感触很深,或许我们做的不是最好的,但是我要说我们努力了,无论比赛的结果如何,享受这个过程才是我们最大的收获。
首先要感谢我们团队所有成员,这段日子,我们一起奋斗,一起查资料,一起探索,我感受到了团队协作的力量,经过我们的不断钻研,不断思考才有了今天的成绩,其实相比下来,结果已经不是那么重要,更重要的是我们付出了,真正认真去对待了,过程中我们学到了知识,感受到了彼此的那份信任,这让我更加深切的体会到团结的力量。
其次,我要感谢我的老师们,在我们遇到苦难,百思不得其解的时候,是他们给了我们耐心的讲解。
最后,感谢主办方给了我们这次机会。
虽然比赛时间不长,但是从这次比赛中获得的宝贵知识和经验会让我受们用一生。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子设计 大赛 报告