8X8_LED点阵显示的设计

8X8_LED点阵显示的设计
8X8_LED点阵显示的设计

专业综合课程设计报告

第1章系统概述

LED点阵显示系统中各模块的显示方式有静态和动态显示两种。静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可显示各种图形或文字信息。本文将介绍一种采用单片机AT89S51进行控制的8*8LED点阵。该点阵可实现动态显示数字0~9及字符A~Z的功能。

1.1设计任务及目的

利用8*8LED点阵显示数字0~9和26个英文字符的字样。采用AT89S51单片机作为整个控制搭电路的核心,并编制软件程序,实现动态轮流显示。通过此设计来巩固单片机硬件系统的设计及软件系统的编程,通过设计将平时所学知识付诸实践,提高动手能力。

第2章系统硬件设计与分析

本系统从经济性,电路结构,系统性能等多方面考虑,选用如下主要元器件:

单片机AT89S51、电阻10K和100欧、三极管8550、按钮开关、共阳8*8LED 点阵显示块、稳压块7805。

2.1 电源电路

本设计实验所需电源为直流五伏电压源,采用的是固定式三端稳压器7805还实现。其线路接线图如图1所示:

图1 电源电路

2.2 复位电路

单片机在启动运行时需要复位,使CPU以及其他功能部件处于一个确定的初始状态,并从这个状态开始工作,另外,在单片机工作过程中,如果出现死机时,也必须对单片机进行复位,使其重新开始工作。本设计中采用按键复位电路,复位电路如图2所示:

图2 复位电路

2.3 主体电路

通过单片机AT89S51的P0口和P1口去驱动点阵LED芯片块。电路如图3所

示:

图3 主体电路

2.4 硬件电路连线

1. 把“单片机系统”区域中的P0.0~P0.7端口分别通过八个100欧电阻连接到“点阵模块”区域中的“L1-L8”端口上;

2.把“单片机系统”区域中的P1.0~P1.7端口通过三极管8550和10K电阻连接到“点阵模块”区域中的“S1-S8”端口上。

2.5 显示部分

1. 8X8 点阵LED工作原理说明

图4为8×8点阵LED外观及引脚图,其等效电路如图(2)所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则Y0=1,X 0=0即可。应用时限流电阻可以放在X轴或Y轴。

图4 8×8点阵LED外观及引脚图

其等效电路图如下:

图5 8×8点阵LED等效电路

2. 点阵LED扫描法介绍

点阵LED一般采用扫描式显示,实际运用分为三种方式:

(1)点扫描;

(2)行扫描;

(3)列扫描。

若使用第一种方式,其扫描频率必须大于16×64=1024Hz,周期小于1ms即可。若使用第二和第三种方式,则频率必须大于16×8=128Hz,周期小于7.8ms 即可符合视觉暂留要求。此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。

4.1数字的编码

各个数字对应的编码如下:

{0x0C,0x12,0x12,0x12,0x12,0x12,0x0C,0x00},/*"0",0*/ //显示数字`0`/

{0x04,0x06,0x04,0x04,0x04,0x04,0x0E,0x00},/*"1",1*/ //显示数字`1`/

{0x0C,0x12,0x10,0x08,0x04,0x02,0x1E,0x00},/*"2",2*/ //显示数字`2`/

{0x0C,0x12,0x10,0x0C,0x10,0x12,0x0C,0x00},/*"3",3*/ //显示数字`3`/

{0x08,0x0C,0x0C,0x0A,0x0A,0x1E,0x08,0x00},/*"4",4*/ //显示数字`4`/

{0x1E,0x02,0x02,0x0E,0x10,0x10,0x0E,0x00},/*"5",5*/ //显示数字`5`/ {0x0C,0x12,0x02,0x0E,0x12,0x12,0x0C,0x00},/*"6",6*/ //显示数字`6`/ {0x1E,0x12,0x10,0x08,0x04,0x04,0x04,0x00},/*"7",7*/ //显示数字`7`/ {0x0C,0x12,0x12,0x0C,0x12,0x12,0x0C,0x00},/*"8",8*/ //显示数字`8`/ {0x0C,0x12,0x12,0x1C,0x10,0x12,0x0C,0x00},/*"9",9*/ //显示数字`9`/ 4.2字母的编码

各个字母所对应的编码如下:

{0x0C,0x12,0x12,0x12,0x1E,0x12,0x12,0x00},/*"A",0*/ //显示字母`A`/ {0x0E,0x12,0x12,0x0E,0x12,0x12,0x0E,0x00},/*"B",1*/ //显示数字`B`/ {0x0C,0x12,0x02,0x02,0x02,0x12,0x0C,0x00},/*"C",2*/ //显示数字`C`/ {0x0E,0x12,0x12,0x12,0x12,0x12,0x0E,0x00},/*"D",3*/ //显示数字`D`/ {0x1E,0x02,0x02,0x0E,0x02,0x02,0x1E,0x00},/*"E",4*/ //显示数字`E`/ {0x1E,0x02,0x02,0x0E,0x02,0x02,0x02,0x00},/*"F",5*/ //显示数字`F`/ {0x0C,0x12,0x02,0x1A,0x12,0x12,0x0C,0x00},/*"G",6*/ //显示数字`G`/ {0x12,0x12,0x12,0x1E,0x12,0x12,0x12,0x00},/*"H",7*/ //显示数字`H`/ {0x0E,0x04,0x04,0x04,0x04,0x04,0x0E,0x00},/*"I",8*/ //显示数字`I`/ {0x10,0x10,0x10,0x10,0x12,0x12,0x0C,0x00},/*"J",9*/ //显示数字`J`/ {0x12,0x12,0x0A,0x06,0x0A,0x12,0x12,0x00},/*"K",10*/ //显示数字`K`/ {0x02,0x02,0x02,0x02,0x02,0x02,0x1E,0x00},/*"L",11*/ //显示数字`L`/ {0x12,0x1E,0x1E,0x12,0x12,0x12,0x12,0x00},/*"M",12*/ //显示数字`M`/ {0x12,0x16,0x16,0x1A,0x1A,0x12,0x12,0x00},/*"N",13*/ //显示数字`N`/ {0x1E,0x12,0x12,0x12,0x12,0x12,0x1E,0x00},/*"O",14*/ //显示数字`O`/ {0x0E,0x12,0x12,0x0E,0x02,0x02,0x02,0x00},/*"P",15*/ //显示数字`P`/ {0x0C,0x12,0x12,0x12,0x16,0x1A,0x1C,0x00},/*"Q",16*/ //显示数字`Q`/

{0x0E,0x12,0x12,0x0E,0x06,0x0A,0x12,0x00},/*"R",17*/ //显示数字`R`/

{0x0C,0x12,0x02,0x0C,0x10,0x12,0x0C,0x00},/*"S",18*/ //显示数字`S`/ {0x1E,0x04,0x04,0x04,0x04,0x04,0x04,0x00},/*"T",19*/ //显示数字`T`/ {0x12,0x12,0x12,0x12,0x12,0x12,0x0C,0x00},/*"U",20*/ //显示数字`U`/ {0x12,0x12,0x12,0x12,0x0C,0x0C,0x0C,0x00},/*"V",21*/ //显示数字`V`/ {0x12,0x12,0x12,0x12,0x1E,0x1E,0x12,0x00},/*"W",22*/ //显示数字`W`/ {0x12,0x12,0x0C,0x0C,0x0C,0x12,0x12,0x00},/*"X",23*/ //显示数字`X`/ {0x11,0x11,0x0A,0x04,0x04,0x04,0x04,0x00},/*"Y",24*/ //显示数字`Y`/

{0x1E,0x10,0x08,0x0C,0x04,0x02,0x1E,0x00},/*"Z",25*/ //显示数字`Z`/ {0x08,0x3E,0x7F,0x24,0x1A,0x49,0x78,0x00},/*"老",0*/

{0x72,0x24,0xFE,0xAE,0xEE,0x24,0x22,0x21},/*"师",0*/

{0x0A,0xEA,0x9F,0xFA,0x4A,0x44,0x6A,0x51},/*"好",0*/

4.3 程序流程图

开始

4.4 完整程序

TF0=1吗?

有复位键按下?

TF0=0

N

Y

Y

TMOD 初始化

TR0置1 启动T0

调用数组赋给P0

Cnta++ Cntb++

Cntb=57?

Cnta=8? Y

N

Y

N

#include

#define uchar unsigned char

#define uint unsigned int

#include

unsigned char code tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code tab2[]={0x10,0xFE,0x92,0x92,0xFE,0x92,0x10,0x10}; void delayms( uint a)

{

uchar i;

while(a--)

for(i=0;i<10;i++);

}

void main()

{

uchar i;

P0=0xfe;

P3=0x10;

while(1)

{

for(i=0;i<8;i++)

{

P0=~tab1[i];

P3=~tab2[i];

delayms(10);

}

}

}

此字为:中

附录C 元件清单

元件名称规格数量备注AT89C51单片机一块附底座晶振12MHZ 一块

NPN三极管9012 八支

8×8点阵共阳LED

共阳一块

显示器

按钮开关一个四脚或两脚

极性电容10uf、0.01uf 一个、一个瓷片电容30pf 两个

电阻1kΩ、470Ω八个、八个电源插座一个

相关主题
相关文档
最新文档