88LED点阵显示汉字课程设计.docx
- 文档编号:27845276
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:18
- 大小:341.76KB
88LED点阵显示汉字课程设计.docx
《88LED点阵显示汉字课程设计.docx》由会员分享,可在线阅读,更多相关《88LED点阵显示汉字课程设计.docx(18页珍藏版)》请在冰豆网上搜索。
88LED点阵显示汉字课程设计
第1章本设计的研究背景及目的要求
1.1凌阳单片机
(1)来源
随着单片机功能集成化的发展,其应用领域也逐渐地由传统的控制,扩展为控制处理数据处理以及数字信号处理,DSP(DigitalSignalProcessing)等领域。
凌阳的16位单片机就是为适应这种发展而设计的。
(2)构造
它的CPU内核采用凌阳最新推出的MicrocontrollerandSignalProcessor16位微机处理器芯片,以下简称µ’nSP™。
围绕µ’nSP™所形成的16位µ’nSP™系列单片机,以下简称µ’nSP™家族。
采用的是模块式集成结构,它以µ’nSP™内核为中心集成不同规模的ROMPAM和功能丰富的各种外设部件。
µ’nSP™内核是一个通用的和结构。
除此之外的其它功能模块均为可选结构。
以及这种结构可大可小可有可无,借助这种通用结构附加可选结构的积木式的构成,便可成为各种系列的派生产品,以适合不同场合,这样做无疑会使每种派生产品具有更强的功能和更低的成本。
µ’nSP™家族有有以下特点:
体积小,集成度高,可靠性好易于扩展。
µ’nSP™家族把各功能把各功能部件模块化地集成在一个芯片里。
内部采用总线结构,因为减少了各功能部件之间的连接,提高了其可靠性和抗干扰能力,另外,模块化的结构易于系列的扩展,以适应不同用户的需求。
具有较强的中断处理能力。
µ’nSP™家族的中断系统支持10个中断向量及10余个中断源,适合实时应用领域。
高性能价格比:
µ’nSP™家族片内带有高寻址能力的ROM,静态RAM和多功能的I/O口,另外µ’nSP™的指令系统提供出具有较高运算速度的16位,16位的乘法运算指令和内积运算指令,为其应用添加了DSP功能,使得µ’nSP™家族运用在复杂的数字信号处理方面既很便利又比专用的DSP芯片廉价。
优点:
功能强、效率高的指令系统:
µ’nSP™的指令系统的指令格式紧凑,执行迅速,并且其指令结构提供了对高级语言的支持,这可以大大缩短产品的开发时间。
低功耗、低电压:
µ’nSP™家族采用CMOS制造工艺,同时增加了软件激发的弱振方式,空闲方式和掉电方式,极大地降低了其功耗,另外,µ’nSP™家族的工作电压范围大,能在低电压供电时正常工作,且能用电池供电,这对于其在野外作业等领域中的应用具有特殊的意义。
(3)应用领域
凌阳单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:
1.在智能仪器仪表上的应用
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
例如精密的测量设备(功率计,示波器,各种分析仪)。
2.在工业控制中的应用
用单片机可以构成形式多样的控制系统、数据采集系统。
例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
3.在家用电器中的应用
可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。
4.在计算机网络和通信领域中的应用
现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
5.单片机在医用设备领域中的应用
单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。
此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。
1.2LED(8×8)点阵模块简介
8X8点阵LED结构如图1-1所示。
图1-18X8点阵LED结构
从图中可以看出,8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如图4所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:
一根竖柱:
对应的列置1,而行则采用扫描的方法来实现。
一根横柱:
对应的行置0,而列则采用扫描的方法来实现。
第2章设计方案和基本原理
2.1设计方案
1.设计现象:
所有的8×8LED全部显示成红色,接着熄灭所有LED;显示东北石油大学向右移动,直到全部溢出,然后熄灭所有LED;如此循环显示。
2.硬件连接图
IOA7~IOA0连接GRE-的1~8;IOA15~IOA8连接RED-的1~8;IOB0~IOB7连接COM+的1~8,即用8pin排线分别连接J26和J33、J27和J32、J28和J34。
硬件连接图如图2-1。
注意硬件连接图中J26与J33、J27与J32时的连接顺序(J27(或者J26)的第0号引针连接J32(或者J33)的第8号引针)。
图2-1硬件连接图
2.2基本原理
1.8×8LED点阵的工作原理
双色8×8LED点阵是由64个双色LED构成,用它可以显示英文字符、数字和一些简单的图片和简单的汉字。
实验箱双色8×8LED点阵电路原理图如图2-2,用行驱动和列驱动可以点亮LED点阵模块。
图中RCOL1~RCOL8分别控制着8×8LED的每一列显示成红色,称为红色LED的列驱动,低电平有效;而GCOL1~GCOL8分别控制着8×8LED的每一列显示成绿色,称为绿色LED的列驱动,同样是低电平有效;COM1~COM8是他们的数据口,当送入其中一个口高电平时,相应行的LED被点亮,而当送入其中一个口低电平时,相应行LED就会被熄灭,所以也称为行驱动。
比如,当想要第一行(从下到上)的第一个LED显示成红色的时候,只需送RCOL1一个低电平,而且送COM1一个高电平即可,也即选中红色的第一列(从右到左),并给第一行(从下到上)送一个高电平,就可以使得第一行第一列(同前)的LED显示成红色。
注意J32、J33和J34中引针的接法,1号引针引出的是RCOL8、GCOL8和COM8,这是因为在8×8LED点阵的实物图中,如果按照从上到下的顺序RCOL8、GCOL8控制第一列LED点亮,按照从左到右的顺序COM8控制第一行LED点亮,在下文中都是按照这种顺序。
图2-2双色8×8LED点阵电路原理图
2.SPCE061A控制双色8×8LED点阵显示
SPCE061A可以通过给I/O送数据控制双色8×8LED点阵显示,比如把IOA0连接J32的第1个引针,IOB0连接J34的第1个引针时。
即把IOA0和RCOL8连接,IOB0和COM8连接,当要点亮从上到下第一行、从左到右第一列的一个LED,只需给IOA0送“0”
给IOB0送“1”就可以了,如图2-3。
图2-3SPCE061A显示
第3章程序设计
3.1程序流程图
如图3-1。
图3-1程序流程图
3.2程序代码
主要包括SPCE061A.h程序、SPCE061A.inc程序和main.c程序,其中SPCE061A.h和SPCE061A.inc程序见附录。
#include"SPCE061A.H"
unsignedinti,j,k,num,m1=0;
unsignedintkk=0,jj=0;
unsignedcharcodezi[]={
/*--文字:
东--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=8x8--*/
0x08,0x40,0x0C,0x40,0x08,0x40,0x17,0xFC
/*--文字:
北--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=8x8--*/
0x00,0x00,0x7F,0xFC,0x00,0x10,0x1F,0x90
/*--文字:
石--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=8x8--*/
0x01,0x00,0x01,0x04,0x7F,0xFE,0x02,0x00
/*--文字:
油--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=8x8--*/
0x10,0x80,0x10,0x80,0x20,0x80,0x7C,0xFC
/*--文字:
大--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=8x8--*/
0x10,0x00,0x11,0xFC,0x10,0x08,0x10,0x10
/*--文字:
学--*/
/*--宋体12;此字体下对应的点阵为:
宽x高=8x8--*/
0x01,0x00,0x01,0x80,0x01,0x00,0x01,0x00
};
voiddelay(unsignedintnum)
{
while(--num)
*P_Watchdog_Clear=C_WDTCLR;
}
voidled_init(void)
{
delay(50000);
SCK_SCLK=1;
LCK=0;
G1_DATA=0;
OE=1;
delay(50);
}
uart_soft(unsignedchardat)
{
unsignedcharii;
for(ii=0;ii<8;ii++)
{
SCK_SCLK=0;
G1_DATA=dat&0x80;
dat<<=1;
SCK_SCLK=1;
}
}
voidmain()
{
*P_IOA_Dir=0xFFFF;
*P_IOA_Attrib=0xFFFF;
*P_IOA_Data=0xFFFF;
*P_IOB_Dir=0xFFFF;
*P_IOB_Attrib=0xFFFF;
*P_IOB_Data=0xFFFE;
led_init();
while
(1)
{
*P_Watchdog_Clear=C_WDTCLR;
for(jj=0;jj<=15;jj++)
{
for(k=1;k<=6;k++)
{
for(i=0;i<2;i++)uart_soft(~zi[kk+i]);
kk=kk+32;
}
kk=jj+2;
LCK=0;LCK=1;
P0=jj+1+m1;
kk=kk+jj;
}
kk=0;
if(num<=60){if(++num<=16){m1++;}}
elsenum=0;/*if(++num>=6){num=0;m1++;};
if(m1>=16)m1=0;
}
}
第4章调试结果及分析
4.1调试结果
调试步骤:
1.编程要求:
主程序利用C语言编写。
2.实现功能:
利用SPCE061A控制双色8×8LED点阵的显示。
先测试8×8LED点阵模块每个LED是否显示正常,测试完成后,显示东北石油大学六个汉字,要求汉字循环向右移动。
在调试过程中,出现六个汉字显示不完整,字的大小超出了点阵模块的尺寸范围,显示速度太快,达不到具体的期望效果.经过多次调试和程序的修改最终实现了"东北石油大学"六个汉字的循环显示.
4.2结果分析
出现的原因主要有:
1.延迟时间太短。
2.数值属性没有设置好。
3.定时器初值没有设置好。
第5章结论与体会
通过为期一周的课程设计,不仅检验了我们的单片机理论知识,而且很好的将理论联系实际.在指导教师康老师,高老师等各位老师的精心辅导下,我们顺利的完成了这次课程设计,在这里我由衷感谢他们为这次课程设计所付出的辛勤与汗水.
在完成这次课程设计的过程中,我翻阅了大量的参考资料,从而丰富了关于单片机方面的知识,最重要的是,在这其中让我学会解决问题的能力,从刚开始的无从下手,到翻阅参考资料及咨询辅导老师,到一点一点组织材料,最终完成了这次课程设计.
短短一周的课程设计即将落幕.在这里,再次感谢各位指导教师!
同时感谢校方以及院系领导为我们提供这个锻炼的平台,让我们做到学以致用,也为即将步入社会大门,做好铺垫!
参考文献
[1]罗亚非等,凌阳16位单片机应用基础[M],北京航空航天大学出版社,2005年5月
[2]SPCE061A英文数据手册v0.8[Z],凌阳大学计划网站
[3]实验箱使用说明书[Z],凌阳大学计划网站
[4]内藏SPLC501控制器图形液晶显示模组使用手册[Z],凌阳大学计划网站
[5]SPR4096A数据手册[Z],凌阳大学计划网站
[6]unSPIDE2.0.0简述[Z],凌阳大学计划网站
[7]IDEUserguide[Z],凌阳大学计划网站
附录
驱动程序:
SPCE061A.inc程序如下:
.DEFINEP_IOA_Data0x7000
.DEFINEP_IOA_Buffer0x7001
.DEFINEP_IOA_Dir0x7002
.DEFINEP_IOA_Attrib0x7003
.DEFINEP_IOA_Latch0x7004
.DEFINEP_IOB_Data0x7005
.DEFINEP_IOB_Buffer0x7006
.DEFINEP_IOB_Dir0x7007
.DEFINEP_IOB_Attrib0x7008
.DEFINEP_TimerA_Data0x700A
.DEFINEP_TimerA_Ctrl0x700B
.DEFINEP_TimerB_Data0x700C
.DEFINEP_TimerB_Ctrl0x700D
.DEFINEP_TimeBase_Setup0x700E
.DEFINEP_Timebase_Setup0x700E
.DEFINEP_TimeBase_Clear0x700F
.DEFINEP_Timebase_Clear0x700F
.DEFINEP_INT_Ctrl0x7010
.DEFINEP_INT_Clear0x7011
.DEFINEP_INT_Mask0x702D
.DEFINEP_INT_Ctrl_New0x702D
.DEFINEP_ADC0x7014
.DEFINEP_ADC_Ctrl0x7015
.DEFINEP_ADC_MUX_Ctrl0x702B
.DEFINEP_ADC_MUX_Data0x702C
.DEFINEP_ADC_LINEIN_Data0x702C
.DEFINEP_ADC_LineIn_Data0x702C
.DEFINEP_DAC_Ctrl0x702A
.DEFINEP_DAC10x7017
.DEFINEP_DAC20x7016
.DEFINEC_WDTCLR0x0001//P_Watchdog_Clear
.DEFINEC_LVD24V0x0000//P_LVD_Ctrl
.DEFINEC_LVD28V0x0001//P_LVD_Ctrl
.DEFINEC_LVD32V0x0002//P_LVD_Ctrl
.DEFINEC_LVD36V0x0003//P_LVD_Ctrl
.DEFINEC_Fosc_20x0000//P_TimerA_Ctrl
.DEFINEC_Fosc_2560x0001//P_TimerA_Ctrl
.DEFINEC_32768Hz0x0002//P_TimerA_Ctrl
.DEFINEC_8192Hz0x0003//P_TimerA_Ctrl
.DEFINEC_4096Hz0x0004//P_TimerA_Ctrl
.DEFINEC_A10x0005//P_TimerA_Ctrl
.DEFINEC_A00x0006//P_TimerA_Ctrl
.DEFINEC_Ext10x0007//P_TimerA_Ctrl
.DEFINEC_2048Hz0x0000//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_1024Hz0x0008//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_256Hz0x0010//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_TMB1Hz0x0018//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_4Hz0x0020//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_2Hz0x0028//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_B10x0030//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_Ext20x0038//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_Off0x0000//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_D10x0040//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_D20x0080//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_D30x00C0//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_D40x0100//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_D50x0140//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_D60x0180//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_D70x01C0//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_D80x0200//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_D90x0240//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_D100x0280//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_D110x02C0//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_D120x0300//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_D130x0340//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_D140x0380//P_TimerA_Ctrl,P_TimerB_Ctrl
.DEFINEC_TA_Div_20x03C0//P_TimerA_Ctrl
.DEFINEC_TB_Div_20x03C0//P_TimerB_Ctrl
SPCE061A.h程序如下:
#defineP_IOA_Data(volatileunsignedint*)0x7000
#defineP_IOA_Buffer(volatileunsignedint*)0x7001
#defineP_IOA_Dir(volatileunsignedint*)0x7002
#defineP_IOA_Attrib(volatileunsignedint*)0x7003
#defineP_IOA_Latch(volatileunsignedint*)0x7004
#defineP_IOB_Data(volatileunsignedint*)0x7005
#defineP_IOB_Buffer(volatileunsignedint*)0x7006
#defineP_IOB_Dir(volatileunsignedint*)0x7007
#defineP_IOB_Attrib(volatileunsignedint*)0x7008
#defineP_TimerA_Data(volatileunsignedint*)0x700A
#defineP_TimerA_Ctrl(volatileunsignedint*)0x700B
#defineP_TimerB_Data(volatileunsignedint*)0x700C
#defineP_TimerB_Ctrl(volatileunsignedint*)0x700D
#defineP_TimeBase_Setup(volatileunsignedint*)0x700E
#defineP_Timebase_Setup(volatileunsignedint*)0x700E
#defineP_TimeBase_Clear(volatileunsignedint*)0x700F
#defineP_Timebase_Clear(volatileunsignedint*)0x700F
#defineP_INT_Ctrl(volatileunsignedint*)0x7010
#defineP_INT_Clear(volatileunsignedint*)0x7011
#defineP_INT_Mask(volatileunsignedint*)0x702D
#defineP_INT_Ctrl_New(v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 88 LED 点阵 显示 汉字 课程设计