LED点阵论文Word下载.docx

上传人:b****6 文档编号:16617961 上传时间:2022-11-24 格式:DOCX 页数:22 大小:302.91KB
下载 相关 举报
LED点阵论文Word下载.docx_第1页
第1页 / 共22页
LED点阵论文Word下载.docx_第2页
第2页 / 共22页
LED点阵论文Word下载.docx_第3页
第3页 / 共22页
LED点阵论文Word下载.docx_第4页
第4页 / 共22页
LED点阵论文Word下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

LED点阵论文Word下载.docx

《LED点阵论文Word下载.docx》由会员分享,可在线阅读,更多相关《LED点阵论文Word下载.docx(22页珍藏版)》请在冰豆网上搜索。

LED点阵论文Word下载.docx

1.1显示部分……………………………………………………………….6

1.2驱动方式的选择………………………………………………………..6

1.3电源模块……………………………………………..............................7

2.总体方案……………………………………………….7

2.1设计目的……………………………………………………………….7

2.2总体设计……………………………………………………………….7

2.3单元电路设计…………………………………………………………8

2.3.1控制部分……………………………………………………………..8

2.3.1点阵显示部分………………………………………………………..9

3.系统软件设计………………………………………….7

3.1主程序流程………………………………………………………….13

4.测试与结果分析……………………………………...17

5.设计总结……………………………………………...18

6.参考资料……………………………………………...18

附录……………………………………………………………18

0AT89S51单片机的结构

尽管单片机比较简单,但要按五个基本组成部件来讲单片机的硬件结构和原理,也将是一件十分复杂的事。

其实也没有这种必要。

因此,通常讲述单片机结构原理时,总是从实际需要出发,只介绍与程序设计和系统扩展应用有关的内容。

0.1单片机内部组成

MCS-51单片机的典型芯片是8031、8051、8751。

8051内部有4KBROM,8751内部有4KBEPROM,8031片内无ROM;

除此之外,三者的内部结构及引脚完全相同。

因此以AT89S51为例,说明本系列单片机的内部组成。

(1)中央处理器(CPU)中央处理器是单片机的核心,完成运算和控制功能。

(2)内部数据存储器(内部RAM)8051AT89S51芯片中共有256个RAM单元,但其中后128单元被专用寄存器占用,能作为寄存器供用户使用的只是前128单元,用于存放可读写的数据。

(3)内部程序存储器(内部ROM)AT89S51共有4KB掩膜ROM,用于存放程序、原始数据或表格,因此称之为程序存储器,简称内部ROM。

(4)定时器/计数器AT89S51共有2个16位的定时器/计数器,以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。

(5)并行I/O口AT89S51共有四个8位的I/O口(P0、P1、P2、P3),以实现数据的并行输入输出。

(6)串行口AT89S51单片机有一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。

(7)中断控制系统AT89S51单片机的中断功能较强,以满足控制应用的需要。

AT89S51共有5个中断源,即外中断2个,定时/计数中断2个,串行中断1个。

全部中断分为高级和低级共二个优先级别[3]。

0.2定时/计数器

AT89S51单片机内部有两个16位的可编程定时/计数器,称为T0(T0)和T1(T1)。

2.2.1定时/计数器原理

加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;

一个是T0或T1引脚输入的外部脉冲源。

每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。

如果定时/计数器工作于定时模式,则表示定时时间已到;

如果工作于计数模式,则表示计数值已满,可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值[4]。

2.2.2定时/计数器的控制

1、工作方式寄存器TMOD

工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。

其格式如下:

图2.1TMOD各位定义

GATE:

门控位。

GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;

GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。

即此时定时器的启动条件,加上了或引脚为高电平这一条件。

C/T:

定时/计数模式选择位。

C/T=0为定时模式;

C/T=1为计数模式。

M1M0:

工作方式设置位。

定时/计数器有四种工作方式,由M1M0进行设置。

图2.2定时/计数器方式设置图

2、控制寄存器TCON

TCON的高4位用于控制定时/计数器的启动和中断申请。

图2.3TCON各位定义

vTF1(TCON.7):

T1溢出中断请求标志位。

T1计数溢出时由硬件自动置TF1为1。

CPU响应中断后TF1由硬件自动清0。

T1工作时,CPU可随时查询TF1的状态。

所以,TF1可用作查询测试的标志。

vTR1(TCON.6):

T1运行控制位。

TR1置1时,T1开始工作;

TR1置0时,T1停止工作。

TR1由软件置1或清0。

vTF0,TR0其功能与TF1,TR1类同。

2.2.3定时/计数器的工作方式

定时/计数器工作方式有四种:

方式0、方式1、方式2和方式3。

方式0:

13位定时器,方式1:

16位定时器。

方式2:

能重复置初始值的8位定时器。

TL0和TH0必须赋相同的值。

方式3:

只适用于定时器0,T0被拆成两个独立的8位定时器TL0,TH0。

由于这几种方式原理基本相同,本设计采用了方式2,现仅以方式2作介绍。

(1)方式2

方式2为自动重装初值的8位计数方式。

当M1M0=10时,T/C工作在方式2,构成1个自动重装载的T/C。

在方式0和方式1中,当计数满后,若要进行下一次定时/计数,需用软件向THx和TLx重新予置计数初值。

在方式2中THx和TLx被当作两个8位计数器,计数过程中,THx寄存8位初值并保持不变,由TLx进行8位计数。

计数溢出时,除产生溢出中断请求外,还自动将THx中的初值重新装到TLx中去,即重装载[5]。

其逻辑结构如图2.4所示。

 

(2)定时器的初始值的计算

对于不同的工作方式,计数器位数不同,故最大计数值M也不同:

M=213=8192方式1:

M=216=65536方式2:

M=28=256方式3:

定时器0分为2个8位计数器,每个M均为256。

因为定时/计数器是作加1计数,并在计满溢出时产生中断,因此初值X的计算如下:

X=(M–计数值)计算出来的结果X转换为16进制数后分别写入TL0(TL1)、TH0(TH1)。

需要注意的是,方式0时初始值写入时,对于TL不用的高3位应填入0[6,7,8]。

图2.4方式2逻辑图

0.3并行I/O口

单片机芯片内还有一项主要内容就是并行I/O口。

AT89S51共有四个8位的并行I/O口,即P0、P1、P2、P3。

每个口都包含一个锁存器,一个输出驱动器和输入缓冲器。

实际上它们已被归入专用寄存器之列,并且具有字节寻址和位寻址功能。

AT89S51单片机的四个I/O口都是8位双向口,这些口在结构和特性上是基本相同的,下面仅对P0口作介绍。

P0口的口线逻辑电路如图2.5所示。

由图可见,电路中包含有1个数据输出锁存器、2个三态数据输入缓冲器、1个数据输出的驱动电路和1个输出控制电路。

当对P0口进行写操作时,由锁存器和驱动电路构成数据输出通路。

由于通路中已有输出锁存器,因此数据输出时可以与外设直接连接,而不需再加数据锁存电路。

当P0口作为输出口使用时,内部的写脉冲加在D触发器的CP端,数据写入锁存器,并向端口引脚输出。

当P0口作为输入口使用时,应区分读引脚和读端口两种情况。

为此在口电路中有两个用于读入驱动的三态缓冲器。

所谓读引脚就是读芯片引脚的数据,这时使用下方的数据缓冲器,由“读引脚”信号把缓冲器打开,把端口引脚上的数据从缓冲器通过内部总线读进来。

使用传送指令(MOV)进行读口操作都是属于这种情况[9]。

图2.5P0口某位结构

1、方案论证与比较

1.1、显示部分

显示部分是本次设计最核心的部分,对于LED8*8点阵显示有以下两种方案:

方案一:

静态显示,将一帧图像中的每一个二极管的状态分别用0和1表示,若为0,则表示LED无电流,即暗状态;

若为1则表示二极管被点亮。

若给每一个发光二极管一个驱动电路,一幅画面输入以后,所LED的状态保持到下一幅画。

对于静态显示方式,所需的译码驱动装置很多,引线多而复杂,成本高,且可靠性也较低。

方案二:

动态显示,对一幅画面进行分割,对组成画面的各部分分别显示,是动态显示方式。

动态显示方式,可以避免静态显示的问题。

但设计上如果处理不当,易造成亮度低,闪烁问题。

因此合理的设计既应保证驱动电路易实现,又要保证图像稳定,无闪烁。

动态显示采用多路复用技术的动态扫描显示方式,复用的程度不是无限增加的,因为利用动态扫描显示使我们看到一幅稳定画面的实质是利用了人眼的暂留效应和发光二极管发光时间的长短,发光的亮度等因素.我们通过实验发现,当扫描刷新频率(发光二极管的停闪频率)为50Hz,发光二极管导通时间≥1ms时,显示亮度较好,无闪烁感.。

鉴于上述原因,我采用方案二

1.2、驱动方式的选择

并行控制驱动方式就是显示的数据是通过并行(8位)方式送入点(列)驱动电路。

每送入一个字节就完成了一个模块的一个行的数据置入,其优点是数据的刷新速度块,这就减轻了上一级控制系统的压力。

在同样的数据处理量的前提下,对处理速度要求的降低,就意味着对系统投入的降低。

同时处理速度的降低也相应地提高了系统的稳定性。

这一设计方案的特点是设计线路简洁,控制方便快速。

系统的整体投入成本比较低,这一设计方案将大大地提高系统的性能价格比。

但是,并行控制驱动方式的缺点是:

由于数据是并行输入的,这就使得单元内的线路接复杂。

由此增加了单元的印刷线路板的设计难度。

同时提高了印刷线路板的密度,对生产加工和调试提出了较高的要求。

所谓串行控制驱动方式就是显示的数据是通过串行方式送入点(列)驱动电路。

其特点是单元内的线路连接简单,这给印刷电路板的设计带来了方便。

同时也减少了印刷电路板的布线密度,从而为生产和调试带来了有利的一面。

然后,单元的可靠性也相应的提高了。

串行控制驱动方式可选用的芯片有:

MC409474LS595、74HC595、6B595、9094等等。

在本次设计中我们采用的芯片是74HC595、74LS38。

综合实验室的条件和性价比来考虑,我们采用方案二。

1.3、电源模块

方案一:

采用干电池作为LED点阵系统的电源,由于点阵系统耗电量较大,使用干电池需经常换电池,不符合节约型社会的要求。

点阵系统要悬挂在墙上,电池总量大,使用会有较大安全隐患。

方案二:

采用200W/5V直流稳压电源作为系统电源,不仅功率上可以满足系统需要,不需要更换电源,并且比较轻便,使用更加安全可靠

基于以上分析,我们决定采用方案二

2、系统设计

2.1、设计目的

(1)、能够对电子电路、电子元器件、印制电路板等方面的知识有进一步的认识,立对其进行测试与检查。

(2)、熟悉AT89C52单片机的内部结构和功能,合理使用其内部寄存器,能够完成相关软件编程设计工作。

(3)、为实现预期功能,能够对系统进行快速的调试,并能够对出现的功能故障进行分析,及时修改相关软硬件。

(4)、对软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。

(5)、完成硬件电路图的设计,并且学会使用PROTEL软件画出系统硬件连接电路图。

(6)、对软件和硬件进行调试,完成整个系统的设计。

2.2、总体设计

LED点阵总体框图如图1所示,点阵电路大体上可以分成微机本身的硬件、显示驱动电路、控制信号电路三部分。

控制电路部分包括一个51CPU和一些外围电路。

在整个电路当中此控制电路部分相当于一个上位机,它负责控制整个电路以及相应的程序的运行、与PC机的串行通信、以及给屏体电路部分发送命令。

点阵显示屏体、以及它的行和列的各个驱动电路。

由于两部分的电路在制板时可以放到一起,所以可以将其字库放到控制电路部分使用串行通信方式来与屏体电路部分进行数据和命令的传送。

此显示电路采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。

由行译码器给出的行选通信号,从第一行开始,按顺序依次对各行进行扫描(把该行与电源的一端接通)。

另一方而,根据各列锁存的数据,确定相应的列驱动器是否将该列与电源的另一端接通。

接通的列,就在该行该列点燃相应的LED;

未接通的列所对应的LED熄灭。

图1点阵显示的总体框图

2.3、单元电路设计

2.3.1、控制部分

控制部分采用3个按钮对其功能进行控制,其中包括切换、加速和复位三个功能。

2.3.2、点阵显示部分

点阵显示部分采用4个32mm的点阵块组成16*16点阵屏。

3、软件设计

主程序流程:

#include<

reg51.h>

intrins.h>

//要用到_nop_()

#defineuintunsignedint

#defineucharunsignedchar

ucharcodebmp[32*6]={//字模表敢于探索

{0x00,0x04,0x7E,0x04,0x40,0x04,0x20,0x7C,0xFF,0x22,0x44,0x22,0x44,0x22,0x7C,0x25,

0x44,0x14,0x7C,0x14,0x44,0x08,0x44,0x08,0xF4,0x14,0x4F,0x14,0x42,0x22,0x40,0x41,/*"

敢"

0*/

0x00,0x00,0xFC,0x1F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0x7F,0x80,0x00,

0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xA0,0x00,0x40,0x00,/*"

于"

1*/

0x04,0x00,0xE4,0x3F,0x24,0x20,0x24,0x25,0x9F,0x08,0x44,0x10,0x04,0x02,0x14,0x02,

0xEC,0x3F,0x07,0x02,0x04,0x07,0x84,0x0A,0x44,0x12,0x34,0x62,0x05,0x02,0x02,0x02,/*"

探"

2*/

0x80,0x00,0x80,0x00,0xFC,0x1F,0x80,0x00,0x80,0x00,0xFE,0x7F,0x42,0x40,0x21,0x24,

0xF8,0x03,0x80,0x01,0x60,0x08,0xFC,0x1F,0x80,0x10,0x88,0x04,0xA4,0x08,0x42,0x10,/*"

索"

3*/

};

//敢(0)于

(1)探

(2)索(3)

ucharcodedianqgcx[32*6]={//字模表勇敢追求

0xFC,0x0F,0x60,0x06,0x80,0x01,0xFC,0x1F,0x84,0x10,0xFC,0x1F,0x84,0x10,0xFC,0x1F,

0x84,0x10,0x44,0x10,0x40,0x00,0xFE,0x1F,0x20,0x10,0x10,0x10,0x08,0x0A,0x06,0x04,/*"

勇"

0x00,0x04,0x7E,0x04,0x40,0x04,0x20,0x7C,0xFF,0x22,0x44,0x22,0x44,0x22,0x7C,0x25,

0x00,0x04,0x04,0x02,0xC8,0x3F,0x48,0x20,0x40,0x20,0xC0,0x3F,0x4F,0x00,0x48,0x00,

0xC8,0x7F,0x48,0x40,0x48,0x40,0xC8,0x7F,0x48,0x40,0x14,0x00,0xE2,0x7F,0x00,0x00,/*"

追"

0x80,0x04,0x80,0x08,0x80,0x00,0xFE,0x3F,0x80,0x00,0x84,0x10,0x88,0x08,0x90,0x05,

0xC0,0x02,0xA0,0x04,0x90,0x08,0x88,0x10,0x86,0x60,0x80,0x00,0xA0,0x00,0x40,0x00,/*"

求"

//电(0)气

(1)工

(2)程(3)系(4)

ucharcodedianxyb[32*6]={//字模表电气工程系

0x80,0x00,0x80,0x00,0x80,0x00,0xFC,0x1F,0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,

0x84,0x10,0x84,0x10,0x84,0x10,0xFC,0x1F,0x84,0x50,0x80,0x40,0x80,0x40,0x00,0x7F,/*"

电"

0x08,0x00,0x08,0x00,0xFC,0x3F,0x04,0x00,0xF2,0x0F,0x01,0x00,0xFC,0x0F,0x00,0x08,

0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x50,0x00,0x50,0x00,0x60,0x00,0x40,/*"

气"

0x00,0x00,0x00,0x00,0xFE,0x3F,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,

0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xFF,0x7F,0x00,0x00,0x00,0x00,/*"

工"

0x10,0x00,0xB8,0x3F,0x8F,0x20,0x88,0x20,0x88,0x20,0xBF,0x3F,0x08,0x00,0x0C,0x00,

0x9C,0x7F,0x2A,0x04,0x2A,0x04,0x89,0x3F,0x08,0x04,0x08,0x04,0xC8,0x7F,0x08,0x00,/*"

程"

0x00,0x1F,0xFC,0x00,0x20,0x00,0x10,0x04,0x08,0x02,0xFC,0x01,0x80,0x00,0x60,0x08,

0x18,0x10,0xFE,0x3F,0x80,0x20,0x90,0x04,0x88,0x08,0x84,0x10,0xA2,0x20,0x40,0x00,/*"

系"

4*/

//sbitE1=P3^5;

//74HC154(18)-E1为0开列(col)输出显示允许控制信号端口

//sbitST_CP=P3^2;

//7*4HC595(12)-ST_CP上升沿--移位寄存器的数据进入数据存储寄存器输出锁存器的时钟信号端口

sbitMR=P2^3;

//74HC595(10)-MR为0将移位寄存器的数据清0

/*************************位定义区************************************************/

/**/

/**/

/*********************************************************************************/

ucharbase=0;

//在bmp地址中移动,从0到rows-15,每次加2,实现移动效果

//ucharcur=0;

//显示base位置以后的一个字符宽度,16列,每列16bit

uchartmp=0;

//临时变量

ucharrows=sizeof(bmp);

//"

"

单,片,机,仿,真共6个字符块,每个16*16,共rows=96列

ucharcol=0;

//列选线

uchardispram[2];

//数据缓冲位

ucharszxz=0;

//'

数组选择'

变量

uchartiaosu=9;

//调节速度

/************************************************/

///595的设置控制

sbithc595_ds=P2^0;

sbithc595_shcp=P2^1;

sbithc595_stcp=P2^2;

//sbithc595_oe=P2^3;

//////154数据输入

sbitABCD=P1;

sbitE1=P2^4;

sbitE2=P2^5;

sbitK1=P0^4;

//数组切换按键

sbitK2=P0^5;

//调速按键

///水银电阻判断方向

//P0=OXFF;

//D高电位

sbitfx1=P0^0;

sbitfx2=P0^1;

sbitfx3=P0^2;

sbitfx4=P0^3;

/*************************************************/

voidhc595_write_data(uchardata_ds)

{

ucha

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1