1616点阵屏流动显示设计.docx

上传人:b****6 文档编号:6255957 上传时间:2023-01-04 格式:DOCX 页数:18 大小:613KB
下载 相关 举报
1616点阵屏流动显示设计.docx_第1页
第1页 / 共18页
1616点阵屏流动显示设计.docx_第2页
第2页 / 共18页
1616点阵屏流动显示设计.docx_第3页
第3页 / 共18页
1616点阵屏流动显示设计.docx_第4页
第4页 / 共18页
1616点阵屏流动显示设计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

1616点阵屏流动显示设计.docx

《1616点阵屏流动显示设计.docx》由会员分享,可在线阅读,更多相关《1616点阵屏流动显示设计.docx(18页珍藏版)》请在冰豆网上搜索。

1616点阵屏流动显示设计.docx

1616点阵屏流动显示设计

 

课程论文

 

题目:

16×16点阵屏流动显示

 

学生姓名:

殷焱

学生学号:

1008030320

系别:

电气信息工程学院

专业:

电子信息工程

年级:

10级

任课教师:

权循忠

电气信息工程学院制

2012年11月

摘要:

本设计采用4个8×8LED点阵构成16×16的LED点阵显示器,以STC89C52单片机为核心,控制显示器移动显示任意字符及部分自定义图案,显示器通过74HC138位驱动,74HC595移位寄存器为段驱动使其可以移动显示出动态画面,达到动态显示的效果。

关键字:

LED点阵屏、51单片机、流动显示

一、硬件系统设计

   本系统采用AT89C52单片机作控制器,整个电路主要由单片机控制及其接口电路、驱动显示电路、电源电路等部分组成。

为了简化显示屏电路,降低成本,本系统在单片机部分不加字库存储器。

而在PC机上编辑汉字和字符显示信息,并将其转换为相应的点阵显示数据,然后通过串口(采用RS-232通信标准)送给单片机存储并进行显示处理。

图1所示为其硬件系统原理图。

图1硬件系统原理图

1.1单片机控制电路

本系统由AT89C52构成单片机最小应用系统.同时配有11.0592MHz晶振和按键复位电路等。

1.216x64点阵显示器的设计

   图2是一种8x8的LED点阵单色行共阳模块的内部结构图,其单点工作电压Uf为1.8V,正向电流IF为8~10mA。

当某一行线为高电平而某一列线为低时,其行列交叉的点就被点亮;而当其某一列线为高时,其行列交叉的点为暗;当某一行线为低电平时,无论列线如何,对应这一行的点全部为暗。

   用四个8x8点阵显示可构成16x16点阵显示器,其连接方法如图3所示。

图中,将(A)和(B)的8列、(C)和(D)的8列分别对应相连,同时将(A)和(C)的8行、(B)和(D)的8行分别对应相连。

即可形成一个16行(每一行有16个LED)、16列(每一列也有16个LED)的16x16点阵显示器,可将这256个点称为一页,这样,显示字符时。

只要对一页中对应的亮灭进行控制即可。

   

 

2LED点阵显示器的扫描驱动

   LED显示屏驱动电路的设计应与所用控制系统相配合。

驱动通常分为动态扫描型及静态锁存型驱动二大类。

本文以动态扫描型驱动电路的设计为例来进行分析。

动态扫描型驱动方式是指显示屏上的16行发光二极管共用一组列驱动寄存器,然后通过行驱动管的分时工作,来使每行LED的点亮时间占总时间的1/16。

只要每行的刷新速率大于50Hz,利用人眼的视觉暂留效应,人们就可以看到一幅完整的文字或画面。

   AT89S52单片机有四个I/O口(P0、P1、P2、P3),每个I/O口有8位,如果都采用并行输出,显然不能满足要求,因此,本设计中的行扫描驱动采用并口输出,而场扫描驱动采用串口输出。

2.1行扫描驱动

   由于16x64点阵显示器有16行,为充分利用单片机的接口,本电路中加入了一个4-16线译码器74LS154,其输入是一个16进制码,解码输出为低态扫描信号,它们的管脚示意图如图4所示。

把74LS154的G1和G2引脚接地,然后以A、B、C、D四脚为输入端。

就会形成16种不同的输入状态,分别为0000~1111,然后使每种状态只控制一路输出,即会有16路输出。

   如果一行64点全部点亮,则通过74LS154的电流将达640mA,而实际上,74LS154译码器提供不了足够的吸收电流来同时驱动64个LED同时点亮,因此,应在74LS154每一路输出端与16x64点阵显示器对应的每一行之间用一个三极管来将电流信号放大,本文选用的是达林顿三极管TIP127。

这样,74LS154某一输出脚为低电平时,对应的三极管发射极为高电平,从而使点阵显示器的对应行也为高电平。

2.2列扫描驱动

   本系统场扫描驱动电路的设计可用串入并出的通用集成电路74HC595来作为数据锁存。

74HC595是一个八位串行输入三态并行输出的移位寄存器,其管脚见图4所示,其中SI是串行数据的输入端,RCK是存储寄存器的输入时钟,SCK是移位寄存器的输入时钟,Q'H是串人数据的输出,G是对输人数据的输出使能控制,QA~QH为串入数据的并行输出。

从SI口输入的数据可在移位寄存器的SCK脚上升沿的作用下输入到74HC595中。

并在RCK脚的上升沿作用下将输入的数据锁存在74HC595中,这样,当G为低电平时,数据便可并行输出。

为了避免与PC机串口输入的数据相互干扰,也可使用模拟串口P1.4~P1.7来分别输出串行数据、移位时钟SCK、存储信号RCK和并行输出的使能信号G。

   为了消除电源电压的波动及行扫描管压降(第一行点亮的点数不同,将引起管压降的变化,从而影响通过LED管的电流)的变化对LED显示屏亮度的影响,设计时可采用列恒流驱动电路,可选用三极管8550和外围元件构成列恒流驱动电路,并通过调整100kΩ可调电阻使三极管处于放大状态,同时将集电极电流调整为10mA,从而使点亮对应点阵时通过LED的电流不变。

2.3扫描显示工作过程

将8片74HC595进行级连,可共用一个移位时钟SCK及数据锁存信号RCK。

这样,当第一行需要显示的数据经过8x8=64个SCK时钟后便可将其全部移入74HC595中,此时还将产生一个数据锁存信号RCK将数据锁存在74HC595中,并在使能信号G的作用下,使串入数据并行输出,从而使与各输出位对应的场驱动管处于放大或截止状态;同时由行扫描控制电路产生信号使第一行扫描管导通,相当于第一行LED的正端都接高,显然,第一行LED管的亮灭就取决于74HC595中的锁存信号;此外,在第一行LED管点亮的同时,再在74HC595中移入第二行需要显示的数据,随后将其锁存,同时由行扫描控制电路将第一行扫描管关闭而接通第二行,使第二行LED管点亮,以此类推,当第十六行扫描过后再回到第一行,这样,只要扫描速度足够高,就可形成一幅完整的文字或图像。

三、总体电路布局

图5总体电路布局

 

二、软件系统设计

本系统的软件设计流程图如图5所示,该显示程序以常用的左移为例来进行设计。

2.1、流程图:

 

N

 

Y

 

2.2、程序代码:

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharyid,h;//YID为移动计数器,H为行段计数器。

uintzimuo;//字模计数器

ucharcodehanzi[];//汉字字模

ucharBUFF[18];//缓存

voidin_data(void);//调整数据

voidrxd_data(void);//发送数据

voidsbuf_out();//16段扫描

unsignedcodesw[16]={0x00,0x01,0x02,0x03,

0x04,0x05,0x06,0x07,

0x08,0x09,0x0a,0x0b,

0x0c,0x0d,0x0e,0x0f};//16行段码

voidmain(void)

{

uchari,d=2;

yid=0;

zimuo=0;

while

(1)

{

while(yid<16)//数据移位。

{

for(i=0;i

{

sbuf_out();

}

yid++;//移动一步

}

yid=0;

zimuo=zimuo+32;//后移一个字,

if(zimuo>=1056)//总数减7个字。

zimuo=0;

}

}

voidsbuf_out()

{

for(h=0;h<16;h++)//16行扫描

{

in_data();//调整数据

rxd_data();//串口发送数据

P1=0x7f;//关闭显示。

P1_7=1;//锁存为高,595锁存信号

P1=sw[h];//送段码

}

}

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

voidin_data(void)

{

chars;

for(s=8;s>=0;s--)//h为向后先择字节计数器,zimuoo为向后先字计数器

{

BUFF[2*s+1]=hanzi[zimuo+32*s+2*h];

//把第一个字模的第一个字节放入BUFF0中,第二个字模和第一个字节放入BUFF2中

BUFF[2*s]=hanzi[zimuo+1+32*s+2*h];

//把第一个字模的第二个字节放入BUFF1中,第二个字模的第二个字节放入BUFF3中

}

}

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

voidrxd_data(void)//串行发送数据

{

chars;

ucharinc,tempyid,temp;

if(yid<8)

inc=0;

else

inc=1;

for(s=0+inc;s<16+inc;s++)//发送8字节数据

{

if(yid<8)

tempyid=yid;

else

tempyid=yid-8;

temp=(BUFF[s]>>tempyid)|(BUFF[s+1]<<(8-tempyid));

//h1左移tempyid位后和h2右移8-tempyid相或,取出移位后的数据。

SBUF=temp;//把BUFF中的字节从大到小移位相或后发送输出。

while(!

TI);TI=0;//等待发送中断

}

}

ucharcodehanzi[]=

{

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--文字:

老--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x00,0x40,0x10,0x40,0x3F,0xFE,0x10,0x40,0x08,0x40,0x04,0x40,0x7F,0xFF,0x01,0x80,

0x00,0x40,0x0C,0x30,0x03,0x2C,0x00,0xE3,0x20,0x20,0x20,0x20,0x3F,0xC0,0x00,0x00,

/*--文字:

师--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x00,0x10,0x7F,0xD0,0x04,0x12,0x04,0x12,0x7F,0xD2,0x44,0x52,0x44,0x52,0x44,0x52,

0x44,0x52,0x44,0x4A,0x54,0x4A,0x24,0x48,0x04,0x04,0x04,0x02,0x04,0x01,0x04,0x00,

/*--文字:

,--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x08,0x00,0x04,0x00,0x00,

/*--文字:

你--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x00,0x90,0x01,0x90,0x20,0x88,0x7F,0xC8,0x20,0x44,0x12,0x2C,0x02,0x16,0x0A,0x45,

0x12,0xC4,0x12,0x44,0x22,0x24,0x62,0x24,0x22,0x14,0x02,0x84,0x01,0x04,0x00,0x00,

/*--文字:

好--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x00,0x08,0x3F,0x88,0x10,0x08,0x08,0x08,0x04,0x3F,0x04,0x24,0x04,0x24,0x7F,0xE4,

0x04,0x22,0x04,0x26,0x04,0x18,0x04,0x10,0x04,0x28,0x04,0x64,0x05,0x22,0x02,0x01,

/*--文字:

--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x00,0x80,0x01,0xC0,0x03,0xE0,0x03,0xE0,0x03,0xE0,0x01,0xC0,0x01,0xC0,0x01,0xC0,

0x00,0x80,0x00,0x80,0x00,0x00,0x01,0xC0,0x01,0xC0,0x00,0x80,0x00,0x00,0x00,0x00,

/*--文字:

我--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x02,0x60,0x0A,0x1C,0x12,0x10,0x12,0x10,0x02,0x10,0x7F,0xFF,0x02,0x10,0x12,0x10,

0x14,0x70,0x0C,0x1C,0x04,0x13,0x0A,0x10,0x49,0x90,0x50,0x10,0x60,0x14,0x40,0x08,

/*--文字:

是--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x00,0x00,0x0F,0xF0,0x08,0x10,0x0F,0xF0,0x08,0x10,0x0F,0xF0,0x00,0x00,0x7F,0xFF,

0x00,0x80,0x00,0x90,0x1F,0x90,0x00,0x90,0x00,0xA8,0x00,0xC4,0x7F,0x02,0x00,0x00,

/*--文字:

电--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

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

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

/*--文字:

工--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x00,0x00,0x3F,0xFC,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,

0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x7F,0xFF,0x00,0x00,0x00,0x00,

/*--文字:

三--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x00,0x00,0x00,0x00,0x3F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFC,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x00,0x00,0x00,0x00,

/*--文字:

班--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x00,0x80,0x7E,0x9F,0x08,0x84,0x08,0x84,0x08,0x84,0x08,0xA4,0x7E,0xBF,0x08,0xA4,

0x08,0x94,0x08,0x84,0x08,0x84,0x08,0x5C,0x08,0x43,0x7F,0x20,0x00,0x10,0x00,0x08,

/*--文字:

的--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x01,0x08,0x01,0x08,0x01,0x04,0x3F,0x3E,0x20,0xA2,0x20,0xA2,0x20,0x62,0x21,0x3E,

0x22,0x22,0x26,0x22,0x24,0x22,0x20,0x22,0x20,0x3E,0x14,0x22,0x08,0x02,0x00,0x00,

/*--文字:

殷--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x00,0x10,0x1E,0x10,0x12,0x7C,0x12,0x44,0x11,0x7C,0x71,0x44,0x00,0xFC,0x3F,0x04,

0x11,0x04,0x12,0x7C,0x0C,0x44,0x08,0x44,0x14,0x42,0x72,0x52,0x21,0xA1,0x00,0x00,

/*--文字:

焱--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x00,0x80,0x18,0x80,0x0C,0x88,0x03,0x48,0x0C,0x24,0x78,0x18,0x24,0x06,0x04,0x08,

0x24,0x28,0x14,0x9A,0x06,0x8A,0x0A,0x19,0x0A,0x24,0x11,0x44,0x70,0x82,0x20,0x61,

/*--文字:

,--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x08,0x00,0x04,0x00,0x00,

/*--文字:

我--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x02,0x60,0x0A,0x1C,0x12,0x10,0x12,0x10,0x02,0x10,0x7F,0xFF,0x02,0x10,0x12,0x10,

0x14,0x70,0x0C,0x1C,0x04,0x13,0x0A,0x10,0x49,0x90,0x50,0x10,0x60,0x14,0x40,0x08,

/*--文字:

的--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x01,0x08,0x01,0x08,0x01,0x04,0x3F,0x3E,0x20,0xA2,0x20,0xA2,0x20,0x62,0x21,0x3E,

0x22,0x22,0x26,0x22,0x24,0x22,0x20,0x22,0x20,0x3E,0x14,0x22,0x08,0x02,0x00,0x00,

/*--文字:

学--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x10,0x80,0x31,0x08,0x13,0x30,0x09,0x10,0x7F,0xFE,0x20,0x02,0x17,0xF1,0x02,0x00,

0x01,0x00,0x7F,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x40,0x00,0x80,

/*--文字:

号--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x0F,0xF8,0x08,0x08,0x08,0x08,0x08,0x08,0x0F,0xF8,0x00,0x00,0x7F,0xFF,0x00,0x10,

0x00,0x1

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

当前位置:首页 > 医药卫生 > 基础医学

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

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