16x16点阵课程设计1616点阵LED电子显示屏的设计文档格式.docx

上传人:b****6 文档编号:17460197 上传时间:2022-12-01 格式:DOCX 页数:21 大小:592.32KB
下载 相关 举报
16x16点阵课程设计1616点阵LED电子显示屏的设计文档格式.docx_第1页
第1页 / 共21页
16x16点阵课程设计1616点阵LED电子显示屏的设计文档格式.docx_第2页
第2页 / 共21页
16x16点阵课程设计1616点阵LED电子显示屏的设计文档格式.docx_第3页
第3页 / 共21页
16x16点阵课程设计1616点阵LED电子显示屏的设计文档格式.docx_第4页
第4页 / 共21页
16x16点阵课程设计1616点阵LED电子显示屏的设计文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

16x16点阵课程设计1616点阵LED电子显示屏的设计文档格式.docx

《16x16点阵课程设计1616点阵LED电子显示屏的设计文档格式.docx》由会员分享,可在线阅读,更多相关《16x16点阵课程设计1616点阵LED电子显示屏的设计文档格式.docx(21页珍藏版)》请在冰豆网上搜索。

16x16点阵课程设计1616点阵LED电子显示屏的设计文档格式.docx

理论设计、调试与仿真、撰写设计报告等。

其中理论设计又包括选择总体方案,硬件系统设计、软件系统设计;

硬件设计包括单元电路,选择元器件及计算参数等;

软件设计包括模块化层次结构图,程序流程图。

程序设计是课程设计的关键环节,通过调试进一步完善程序设计,使之达到课题所要求的指标,使理论设计更接近于实际产品。

课程设计的最后要求是写出设计总结报告,把理论设计内容,调试的过程及性能指标的测试结果进行全面的总结

指导教师:

田野

日期:

2013.7.5

三、课程设计进度计划及检查情况记录表

序号

日期

计划完成内容

实际完成内容

1

6-25

实训动员、准备工作及选题

全部完成

2

6-27

总体方案设计

完成

3

硬件设计及仿真

4

6-28

软件设计与调试

5

整机测试及撰写报告

6

7-5

答辩与总结

四、成绩评定与评语

指导教师:

日期:

专业设计的主动性与平时表现(20%)

独立思考能力与动手能力(40%)

专业设计完成情况(40%)

专业设计成绩

一、总体设计方案

1.1总体设计

1.1.1工作原

(5)实现利用AT89S51单片机控制的LED图文屏正常工作。

1.1.2硬件部分总体设计

根据功能要求,采用AT89C51单片机,动态显示的设计方法,同时为简化设计,减少硬件数量,显示数据的传输采用串行传输方式,列扫描地址用P1口控制,

总体结构框图如下:

图1-1系统总体结构框图

1.2硬件设计

系统的组成,硬件的选用,芯片的特点

1.2.18051系列的单片机

AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

图片见下图:

图1-289C51管脚图

(1).管脚说明

VCC:

供电电压。

GND:

接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

(2)P3口也可作为AT89C51的一些特殊功能口,如下表所示:

口管脚备选功能

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)

P3.3/INT1(外部中断1)

P3.4T0(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;

当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出

1.2.2单片机AT89C51最小系统

单片机采用12M晶振作为时钟源,复位采用上电复位和按键复位两种方式

仿真原理图如下:

图1-3最小系统

1.2.3串行口扩展I/O口

为了减少对I/O口的占用,数据传送采用AT89C51串行口方式0中断外接同步移位寄存器74HC595扩展出一个8位并行口实现8位数据并行传输。

图1-4I/O口扩展

74HC595管脚说明:

74595的数据端:

QA--QH:

八位并行输出端,可以直接控制数码管的8个段。

QH'

:

级联输出端。

我将它接下一个595的SI端。

SI:

串行数据输入端。

74595的控制端说明:

/SCLR(10脚):

低点平时将移位寄存器的数据清零。

通常我将它接Vcc。

SCK(11脚):

上升沿时数据寄存器的数据移位。

QA-->

QB-->

QC-->

...-->

QH;

下降沿移位寄存器数据不变。

(脉冲宽度:

5V时,大于几十纳秒就行了。

我通常都选微秒级)

RCK(12脚):

上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。

通常我将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。

我通常都选微秒级),更新显示数据。

/G(13脚):

高电平时禁止输出(高阻态)。

如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。

比通过数据端移位控制要省时省力。

1.2.416*16点阵行、列驱动

为实现16*16点阵移动显示功能,在显示时采用逐列扫描、2*8数据行输入方式进行显示,列驱动采用两个74HC138级联为4译16译码器,并用P1.0~P1.3进行完成译码,实现逐列扫描,行数据输入采用两个74HC373数据锁存器实现16位异步输出,仿真原理图如下:

图1-5行驱动

图1-6列驱动

1.2.516*16点阵制作

设计时必须掌握点阵工作原理方能进行更深层设计。

16x16LED点阵其实就是4块8x8点阵LED级联而成的,因此特给出8×

8点阵LED的工作原理。

(1)为8×

8点阵LED外观及引脚图,其等效电路如图

(2)所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮。

例如如果想使左上角LED点亮,则Y0=1,X0=0即可。

应用时限流电阻可以放在X轴或Y轴。

而16x16就是在8x8原理的基础上将四块8x8级联而成,如图:

图1-78×

8点阵LED外观及引脚图

图1-88×

8点阵LED等效电路

图1-9(a)四块8x8点阵LED级联16*16连接示意图

图1-9(b)四块8x8点阵LED级联成16x16点阵

LED点阵的显示文字图形原理:

LED驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。

以16×

16点阵为例,把所有同一行的发光管的阴极连在一起,把所有同一列的发光管的阳极连在一起(共阴的接法),先送出对应第1列发光管亮灭的数据并锁存,然后选通第1列使其燃亮一定的时间,然后熄灭;

再送出第2列的数据并锁存,然后选通第2列使其燃亮相同的时间,然后熄灭;

….第16列之后,又重新燃亮第1列,反复轮回。

当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。

该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。

显示数据可通过单片机的P0,,P2口接驱动电路传输到点阵行引脚。

点阵的移动

以下以16×

16点阵为例介绍点阵的移动。

要显示一个字符,该字符的点阵数据可以列向(纵向)16点组字,又可以行向(横向)16点组字。

无论哪一种组字方法,都既可以显示字符的水平方向的移动,又可以显示竖直方向的移动。

本设计主要采用汉字的左移,所以以下只作左移显示的解释

列扫描方式左移动:

列向组字显示字符水平方向的移动(左滚动)

延长数组法。

将原来字符点阵数组的16个数据重复一遍延长,点阵数组的数据个数为32个。

每扫描一帧取8个数据显示,下一帧取数要在数组中后移一个数取数。

循环一遍扫16帧。

可以假想有两块16×

16的点阵模块(共32帧)水平平行排列,用一个恰好能罩住16列点阵的中空方框去罩这个点阵,第1(第1帧)罩住最左边数起第一列开始的16列,就扫描显示这16列;

第2次(第2帧)使方框右移一列,罩住做左边数起第2列开始的16列,就扫描显示这16列;

·

这样每扫描完一帧使方框右移一列,最后第16次(第16帧)时,罩住左边数起的第16列开始的16列,就扫描显示这16列。

如此完成16帧画面的扫描显示,也就完成了整个一次移动循环扫描、之后反复循环,即可呈现显示字符沿水平向左移动的图像

因为是列向组字(列扫描方式,点阵数据为行码,上边为低位下面为高位),希望显示移动的一个字符,第1次扫描从行码的点阵数组中取第1~16个数据,送行码输出口,对应于这8个数据,同时用列码输出口输出列码,分别控制第1~16列。

扫描完前16个数据之后,第2次扫描从点阵数组中取第3~18个数据(第18个数据与第1个数据同),送行码输出口,对应于这16个数据,同时用列码输出口输出列码,仍分别控制扫第1~16列。

第3次扫描从点阵数组中取第5~20个数据(第20个数据码与第2个数据码相同)扫描·

如此实现字符向左移动。

以上完成一个图形移动的方法,也可以看成是移动16个不同的字形。

如图2.13所示,首先扫描第一个字型,同样是16行,16次扫描,16次显示;

完成一个字型的扫描以后,再扫描第二个字型;

完成第二个字型的扫描之后,再扫描第三个字型·

依此类推,即可产生该文字的左移的感觉。

1.3软件设计

1.3.1静态显示流程

静止显示是所有显示方式中最简单的一种。

单片机上电复位,先调用显示程序,在发送点阵数据给单片机时,根据已经制作好的显示屏的结构特征,即一屏能显示1个汉字,显示时是将按组顺序存储的点阵数据,按列扫描依次取出,逐列亮LED。

在一屏汉字显示完毕后,循环显示一段时间后,字符数据地址偏移32个字节,接着显示下一屏数据,其流程图如图所示。

图1-10静态显示流程图

1.3.2动态显示流程

先调用显示程序,显示“培养”一个字符,显示之后马上熄灭,接着调用延时程序,延时约1秒钟,然后以左移的方式显示事先写在芯片里的2个字节,等到全都显示完毕,转向while死循环,又从显示“培养”开始一个新的周期。

程序流程图如图4-1所示

图1-11动态显示流程图

1.3.3列扫描显示流程:

首先准备一个要显示的字符(32字节数据),扫描一列输出2字节(16位)数据,延时显示100us,然后熄灭本列,防止窜行显示,逐列扫描完16列后重复扫描10次以上以保证能有足够显示时间。

扫描一列显示一列点阵

延时1毫秒

是否移完15列

灭本列点阵

移到下一列,字符数据地址加2

准备一个字符数据

程序入口

移到第一列,重新加载本字符数据首地址

字符数据首地址是否重新加载20次

返回

图1-12显示子程序流程图

二、设计内容

2.1系统硬件原理图与仿真

系统总体原理图如图2-1;

图2-1系统总体原理图

系统仿真截图如图2-2;

图2-2系统部分仿真截图

动态移动显示字符如图2-3

图2-3动态显示字符截图

静态闪动显示图案如图2-4;

图2-4静态闪动显示字符截图

2.2程序清单

文件一:

16161.c

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

文件名:

16161.c

文件描述:

16*16点阵显示

处理器:

AT89C51

编译环境:

keilv4

修改时间:

2013.6.28

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

#include<

reg51.h>

#include"

ziku.h"

#defineY_portP1

#defineC373_LE_LOW(){HC373_LE1=0;

HC373_LE2=0;

}

sbitHC595_SCLK=P2^1;

//同步移位寄存器锁存控制端

sbitHC373_LE1=P3^3;

//#1锁存器锁存控制端

sbitHC373_LE2=P3^2;

//#2锁存器锁存控制端

ucharflag=1;

uchari;

codeucharY[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,

0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};

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

函数说明:

串口方式0配置

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

voidUART_init()

{

SCON=0x00;

//串口工作方式0

IE=0x90;

//串口中断使能

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

端口初始化

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

voidPORT_init()

HC595_SCLK=0;

HC373_LE1=0;

HC373_LE2=0;

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

程序总初始化

voidinit()

UART_init();

PORT_init();

延时

voiddelay10u(intus)

uintb;

while(us--)

for(b=0;

b<

2;

b++)

{;

}

显示16*16点阵

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

voiddisplay(uchar*word)

{

uchara;

ucharj;

uchartime=25;

while(time--){//单个字符闪烁显示循环

a=0;

for(j=0;

(j<

=15);

j++){//行扫描

Y_port=Y[j];

for(i=0;

(i<

=1);

i++){///列8*2扫描,点亮一行点阵

flag=0;

SBUF=word[a++];

delay10u(3);

//传送到串口缓冲区

}

i++){//灭一行点阵

SBUF=0x00;

}

函数说明:

入口函数

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

intmain()

{uintk;

init();

while

(1){

for(k=0;

k<

=160;

k=k+2)

display(word+k);

for(;

200;

k++)

{

display(xiao);

delay10u(100);

display(space);

}

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

串口ISR

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

voidUARTISR(void)interrupt4using3

SCON&

=0xfd;

//HC373_LE1=0;

C373_LE_LOW();

HC595_SCLK=1;

if(i==0)

HC373_LE1=1;

else

HC373_LE2=1;

HC595_SCLK=0;

文件二:

ZIKU.h

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

文件名:

文件说明:

定义要显示的字符

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

#ifndef_ZIKU_H

#define_ZIKU_H

#defineuintunsignedint

#defineucharunsignedchar

codeucharword[160]={0x00,0x00,0x00,0x00,0x7F,0xFE,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x3F,0xFE,0x20,0x82,0x20,0x82,0x20,0x82,0x20,0x82,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,//"

田"

00x04,0x00,0x04,0x00,0x04,0x7E,0x04,0x92,0x0C,0x92,0x34,0x92,0x04,0x92,0x04,0x92,0x44,0x92,0x84,0x92,0x7F,0x92,0x04,0x9E,0x04,0x80,0x04,0xE0,0x04,0x00,0x00,0x00,//"

导"

10x00,0x40,0x04,0x40,0x04,0x44,0x04,0x44,0x04,0x54,0x04,0x64,0x04,0x45,0xFF,0xC6,0x04,0x44,0x04,0x64,0x04,0x54,0x04,0x44,0x04,0x44,0x04,0x40,0x00,0x40,0x00,0x00,//"

辛"

20x00,0x84,0x00,0x84,0x00,0x84,0xFC,0x84,0x44,0x9F,0x44,0x84,0x44,0x84,0x47,0xF4,0x44,0x84,0x44,0x84,0x44,0x9F,0xFC,0x84,0x00,0x84,0x00,0x84,0x00,0x84,0x00,0x00,//"

苦"

30x00,0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x40

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

当前位置:首页 > 法律文书 > 判决书

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

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