目录第1章本设计的研究背景及目的要求 01.1凌阳单片机 01.2 LED(8×8)点阵模块简介 (1)第2章设计方案和基本原理 (3)2.1设计方案 (3)2.2 基本原理 (3)1. 8×8LED点阵的工作原理 (3)第3章程序设计 (6)3.1程序流程图 (6)3.2 程序代码 (6)第4章调试结果及分析 (8)4.1调试结果 (8)4.2结果分析 (9)第5章结论与体会 (10)参考文献 ..................................................................11附录 .................................................................. . (12)第1章本设计的研究背景及目的要求1.1凌阳单片机(1)来源随着单片机功能集成化的发展,其应用领域也逐渐地由传统的控制,扩展为控制处理数据处理以及数字信号处理,DSP(Digital Signal Processing)等领域。
凌阳的16位单片机就是为适应这种发展而设计的。
(2)构造它的CPU内核采用凌阳最新推出的Microcontroller and Signal Processor 16位微机处理器芯片,以下简称μ'nSP?。
围绕μ'nSP?所形成的16位μ'nSP?系列单片机,以下简称μ'nSP? 家族。
采用的是模块式集成结构,它以μ'nSP?内核为中心集成不同规模的ROM PAM和功能丰富的各种外设部件。
μ'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.各种分析仪,监护仪,超单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,声诊断设备及病床呼叫系统等等。
此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。
点阵模块简介8)1.2 LED(8×所示。
结构如图1-1点阵8X8LED图1-1 8X8点阵LED结构个发光二极管组成,且每个发光二极管是放置64点阵共需要8X8从图中可以看出,在行线和列线的交点上,当对应的某一列置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点LED的每一列显示成红色,称为红色8LED8×分别控制着RCOL1~RCOL8阵模块。
图中的列驱动,低电平有效;而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点亮,在下文中都是按照这种顺序。
8LED点阵电路原理图2-2 图双色8×2. SPCE061A控制双色8×8LED点阵显示SPCE061A可以通过给I/O送数据控制双色8×8LED点阵显示,比如把IOA0连接J32的第1个引针,IOB0连接J34的第1个引针时。
即把IOA0和RCOL8连接,IOB0和COM8连接,当要点亮从上到下第一行、从左到右第一列的一个LED,只需给IOA0送“0”。
2-3”就可以了,如图1送“IOB0给.显示2-3 SPCE061A图第3章程序设计3.1程序流程图如图3-1。
图3-1 程序流程图3.2 程序代码主要包括SPCE061A.h程序、SPCE061A.inc程序和main.c程序,其中SPCE061A.h 和SPCE061A.inc程序见附录。
#include SPCE061A.Hunsigned int i,j,k,num,m1=0;unsigned int kk=0,jj=0;unsigned char code zi[]={/*-- 文字: 东--*//*-- 宋体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};void delay(unsigned int num){while(--num)*P_Watchdog_Clear = C_WDTCLR;}void led_init(void){delay(50000);SCK_SCLK=1;LCK=0;G1_DATA=0;OE=1;delay(50);}uart_soft(unsigned char dat){unsigned char ii;for(ii=0;ii<8;ii++){SCK_SCLK=0;G1_DATA=dat&0x80;dat<<=1;SCK_SCLK=1;}}void main(){*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++){f or(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++;}}else num=0;/* if(++num>=6){num=0;m1++;}; if(m1>=16)m1=0;}}第4章调试结果及分析4.1调试结果调试步骤:语言编写。