16×16点阵LED显示汉字
16x16led点阵滚动汉字显示设计

0x42,0x44,0x42,0x46,0x4A,0x3C,0x44,0x00,/*"能"*/
0x00,0x00,0x0F,0xF0,0x08,0x10,0x0F,0xF0,
0x08,0x10,0x0F,0xF0,0x00,0x00,0xFF,0xFE,
0x02,0x80,0x02,0x40,0x04,0x40,0x04,0x20,
0x08,0x10,0x10,0x18,0x20,0x0E,0x40,0x04,/*"大"*/
0x08,0x20,0x08,0x20,0x08,0x20,0x4B,0xFE,
0x4A,0x22,0x4A,0x22,0x4A,0x22,0x4A,0x22,
if(k>112) k=0;
}
}
有什么问题可能联系版主,关注微博即可联系。本人新浪微博地址:/1858560312
0x4A,0x22,0x4A,0x22,0x4A,0x22,0x12,0x2E,
0x12,0x24,0x20,0x20,0x40,0x20,0x80,0x20,/*"帅"*/
0x00,0x00,0x7F,0xFC,0x00,0x10,0x1F,0x90,
0x10,0x90,0x1F,0x90,0x10,0x90,0x00,0x04,
下图是电路图连接图下面是74hc1544线16线译码器引脚说明以及地址全能输入对应的输出表
下面给大家介绍下我制作的16*16led点阵设计,希望与各位电子爱好者共同讨论,共同进步。
下图是电路图连接图
下面是74HC1544线-16线译码器引脚说明,以及地址/全能输入对应的输出表。
16×16点阵LED汉字动态显示

a f g e d c h b
实验说明:
a a a a a a a a
a
h b
bitsel(0) bitsel(7)
segment[7..0]
bitout[7..0]
16×16点阵LED汉字动态显示
4学时 学时 实验内容: 实验内容: 点阵LED动态显示自己的名字 用16×16点阵 × 点阵 动态显示自己的名字
第1行,第1列 行 列
16×16点阵显示 × 点阵显示
第1行,第16列 行 列
r0-r3
第16行,第1列 行 列
第16行,第16列 行 列
点阵LED显示器的每一行发光管的阳极接在一起作为 显示器的每一行发光管的阳极接在一起作为 点阵 数据线D,每一列发光管的阴极接在一起作为列线B, 数据线 ,每一列发光管的阴极接在一起作为列线 , 因此,要使某一点亮, 因此,要使某一点亮,就必须让该点所在的行线为高 电平,同时让该点所在的列线为低电平。 电平,同时让该点所在的列线为低电平。 实验板上点阵的各行可分别控制, 实验板上点阵的各行可分别控制, 用16个行控制信号 个行控制信号 来控制16行,使用4个列控制信号来控制 列,实验 来控制 行 使用 个列控制信号来控制16列 个列控制信号来控制 板上已经提供了一个4- 译码器 因此只使用4 译码器, 板上已经提供了一个 -16译码器,因此只使用 个信号即可控制点阵的16列 个信号即可控制点阵的 列。由于不是一个控制信号 控制一个点阵点, 控制一个点阵点,因此需要将需将欲显示的字一列一 列的显示。 列的显示。 若列控制信号r0-r3等于 “0000”,则经过 -16 例:若列控制信号 等于 ,则经过4- 译 码器后,点阵的第一列会等于‘0’。此时若同时16 码器后,点阵的第一列会等于‘ 。此时若同时 行中的某些行为‘ ,则对应的点阵会亮。 行中的某些行为‘1’,则对应的点阵会亮。
16-16点阵LED显示汉字总汇编语言

LED16X16点阵显示课程设计报告学院专业班级学生姓名指导老师二0一0年十二月一、设计目的本次课程设计目的剖析试验箱,利用微机接口芯片8255,并行控制LED点阵显示;其次就是掌握8088微机系统与LED点阵显示模块之间接口电路设计及编程,了解LED点阵显示的基本原理和如何来实现汉字的的循环左移显示。
二、设计内容利用598H试验系统扩展接口CZ7座,在控制板MC1上以并行通信的方式控制LED 点阵显示。
要求自建字库,编制程序实现点阵循环左移显示汉字,并要求通过protues仿真软件画出电路图,运行程序。
三、硬件电路设计整个电路由8088CPU,两片8255,1个74ls373,1个74LS138,1个16×16的LED,5个7407。
该电路可静态显示1个16*16位的汉字,也可循环显示。
1、8255Intel8255A是一种通用的可编程序并行I/O接口芯片,又称“可编程外设接口芯片”,是为Intel8080/8085系列微处理据设计的,也可用于其它系列的微机系统。
可由程序来改变其功能,通用性强、使用灵活。
通过8255A,CPU可直接同外设相连接,是应用最广的并行I/O接口芯片。
其中含3个独立的8位并行输入/输出端口,各端口均具有数据的控制和锁存能力。
可通过编程设置各端口的工作方式和数据传送方向(入/出/双向)。
2、138译码器译码器是组合逻辑电路的一个重要的器件,74LS138的输出是低电平有效,故实现逻辑功能时,输出端不可接或门及或非门,74LS138与前面不同,其有使能端,故使能端必须加以处理,否则无法实现需要的逻辑功能。
发光二极管点亮只须使其正向导通即可,根据LED的公共极是阳极还是阴极分为两类译码器,即针对共阳极的低电平有效的译码器;针对共阴极LED的高电平输出有效的译码器。
3、373锁存器74LS373是低功耗肖特基TTL8D锁存器,内有8个相同的D型(三态同相)锁存器,由两个控制端(11脚G或EN;1脚OUT、CONT、OE)控制。
89S51单片机的16×16点阵汉字显示的设计

• 134•针对LED 点阵显示汉字需要占用单片机多个并行口的问题,提出了基于89S51单片机的16×16点阵汉字显示设计,利用74HC138和74HC595对单片机并行口进行扩展,从硬件设计、软件设计方案等关键环节,分别进行了详细讨论。
随着单片机技术的发展,LED 点阵屏作为文字和图形显示的新型媒体,由于亮度高、耗能低、色彩鲜艳、寿命长等特点,迅速出现在学校、医院、车站等场所。
但LED 点阵显示需要占用单片机多个并行口,而通用移位寄存器74HC595T 和译码器74HC138,可以实现对单片机IO 的扩展,从而节约了大量的并口资源。
本设计详细介绍了74HC138和74HC595芯片在1616×16点阵LED 显示屏的应用。
1 电路总体设计16×16点阵汉字显示电路如图1所示,它由一片16×16点阵LED 显示屏、两片74HC138构成的行控制单元、两片74HC595构成的列控制单元及AT89S51单片机构成。
列控制单元用于输入数据,而行控制单元用于逐行扫描。
图1 系统总体结构1.1 16×16点阵工作原理本设计采用的是共阴16×16点阵显示模块。
它由256只发光二极管按一定规律安装成方阵,从内部结构如图2所示,可以看出,总共有16行和16列,每行的发光二极管阴极相连,每列的发光二极管阳极相连。
在行和列的交叉处有一个发光二极管,要使其中任一个二极管发光,则其对应行为低电位,而对应的列为高电位即可。
1.2 行控制单元行控制单元的控制原理是:先使第一行Y 0为低电平,其余行为高电平,显示第一行数据;然后第二行Y 1为低电平,其余行电平,显示第二行数据。
按照这个规律每行以较快的速度不断进行刷新,由于发光二极管的余辉效应和人的视觉暂留现象两个因素,给人的印象就是一组静态的数据,不会产生闪烁感。
动态显示能够节省I/O 端口,且功耗低。
本设计采用74HC138三位译码器。
16x16点阵LED滚动显示汉字

#include <iom8515v.h>#include <macros.h>/*RCS2--->PC0CCS1--->PC1CCS2--->PC2RCS1--->PC3'=1*/#define RCS1_1 PORTC |= BIT(PORTC3>#define RCS2_1 PORTC |= BIT(PORTC0>#define CCS1_1 PORTC |= BIT(PORTC1>#define CCS2_1 PORTC |= BIT(PORTC2>#define RCS1_0 PORTC &=~BIT(PORTC3>#define RCS2_0 PORTC &=~BIT(PORTC0>#define CCS1_0 PORTC &=~BIT(PORTC1>#define CCS2_0 PORTC &=~BIT(PORTC2>#define DOTLEDPORT PORTAunsigned int RollCount=0。
unsigned int SecondCount=0。
unsigned char SecondFlag=0。
const unsigned char DOTLEDBIT[]={0xfe ,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,}。
unsigned char ScanDOTLEDCount=0。
unsigned char DOTLEDBuffer[32]。
#pragma interrupt_handler timer1_ovf_isr:7void timer1_ovf_isr(void>{TCNT1H = 0xFE。
TCNT1L = 0x0C。
//点阵LED扫描过程if(ScanDOTLEDCount<8>{DOTLEDPORT=DOTLEDBIT[ScanDOTLEDCount%8]。
汉字显示16X16点阵2

16X16点阵汉字显示89C51(测试OK)1汉字显示的原理:我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。
即国标汉字库中的每一个字均由256点阵来表示。
我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。
事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素我们以显示汉字“大”为例,来说明其扫描原理:在UCDOS中文宋体字库中,每一个字由16行16列的点阵组成显示。
如果用8位的AT89C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分。
一般我们把它拆分为上部和下部,上部由8*16点阵组成,下部也由8*16点阵组成。
在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的p00---p 07口。
方向为p00到p07 ,显示汉字“大”时,p05点亮,由上往下排列,为p0.0 灭,p0.1 灭, p0.2 灭p0.3 灭, p0.4 灭, p0.5 亮,p0.6 灭,p0.7 灭。
即二进制00000100,转换为16进制为 04h.。
上半部第一列完成后,继续扫描下半部的第一列,为了接线的方便,我们仍设计成由上往下扫描,即从p27向p20方向扫描,从上图可以看到,这一列全部为不亮,即为00000000,16进制则为00h。
然后单片机转向上半部第二列,仍为p05点亮,为00000100,即16进制04 h.这一列完成后继续进行下半部分的扫描,p21点亮,为二进制00000010,即16进制02h.依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“大”的扫描代码为:04H,00H,04H,02H,04H,02H,04H,04H04H,08H,04H,30H,05H,0C0H,0FEH,00H05H,80H,04H,60H,04H,10H,04H,08H04H,04H,0CH,06H,04H,04H,00H,00H由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。
基于AT89C55的16x16LED点阵汉字显示设计

重庆三峡学院课程设计报告书题目:基于AT89C55的16*16LED点阵汉字显示设计学院(系):年级专业:学号:学生姓名:指导教师:教师职称:完成日期2012年11月30日目录摘要 (3)第一章引言 (4)1.1 设计任务 (4)1.2 设计目的 (4)1.3 设计方案 (4)第二章硬件系统设计 (4)2.1AT89C55简介 (4)2.2原理电路 (5)2.3驱动电路 (6)2.4显示模块 (9)第三章软件系统设计 (10)3.1点阵显示主程序 (10)3.2点整显示子程序 (13)3.3电路仿真 (19)第四章实验结果与分析 (21)第五章总结 (21)致谢 (22)元件清单表 (22)参考目录 (22)基于AT89C55的16*16LED点阵汉字显示设计摘要:以单片机AT89C55芯片设计16*16LED点阵汉字显示设计,系统由控制模块、显示模块、驱动模块三大部分组成。
阐述了AT89C55的LED显示功能。
运用keil 软件进行编程与调试,利用Proteus 7 Professional软件进行绘制硬件电路图且进行仿真。
结果表明该电路可以正确显示汉字,具有移动显示效果。
具有很好的实用意义。
关键词:单片机、LED点阵显示、动态显示第一章引言1.1 设计任务1.基本要求:设计一个8*8或16*16的点阵控制系统,能够在显示器上显示任何想要的字符或图形。
具有一定的显示效果。
2.扩展要求:扩展为4个8*8或16*16LED点阵。
3.用keil软件进行编程与调试,利用Proteus 7 Professional软件进行绘制硬件电路图且进行仿真。
1.2 设计目的通过课程设计使学生较系统地掌握单片机控制系统设计的基本理论,熟练掌握51系列单片机的编程方法,学生在接近实际工作环境下,能够完成一个简单的单片机控制系统的设计。
设计一个16*16的点阵控制系统,能够在显示器上显示任何想要的字符或图形,有一定的动态显示效果。
16x16点阵显示汉字

LOOP:MOV R7,#00
;初始化列显示数据
MOV R6,20H
MOV R1,#16H
;是否显示完成一个汉字
MAIN:MOV A,R6
;主程序入口
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
INC R6
MOV A,R6
MOVC A,@A+DPTR
MOV P2,AINC R616*16 Nhomakorabea阵显示汉字
1
判断点阵是共 8*8点阵连接 阴还是共阳级 为16*16点阵
端口连接方法 和显示原理
测试哪个方向 是行,哪个方 向是列
是否可完成一 个汉字显示及 字模软件应用
动态显示汉字 原理
2
8*8点阵连接为16*16点阵
3
4
端口连接方法和显示原理
因为单片机的I/O口是有限的,所以LED汉字的显示 使用到了动态扫描,一般行数据用到了P0,P2口,列 数据用到了P1口并且用了一个4-16线译码器。因为 我们每次只需要点亮一列并延时一段时间,就可以使 我们认为汉字是一直在显示的。
DJNZ 22H,LOOP2
AJMP START
DELAY:MOV R4,#01
;延时程序
D1:MOV R3,#20
DJNZ R3,$
DJNZ R4,D1
RET
TAB: XXXXXXXXXXXXXXXXXXXXXXXXXXX
13
14
制作:W.K.
15
DELAY:MOV R1,#2 D1: MOV R2,#10
DJNZ R2,$ DJNZ R1,D1 RET TAB: DB 0x10,0x80,0x10,0x80,0x50,0x80,0x50, 0xFC,0x7D,0x54,0x52,0x54,0x90,0x54, 0x10,0x94 DB 0x1C,0x94,0xF1,0x24,0x52,0x24,0x10, 0x44,0x10,0x44,0x10,0x84,0x11,0x28, 0x10,0x10 END
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以下程序在16×16点阵LED上依次显示“梅川酷子”四个字,分别用正向显示和反向显示,间隔两秒钟变换一次,电路图和效果图下图所示。
AT89 c52晶振频率为24MHz,用T0定时,改变变量flag值,从而让程序确定显示哪个汉字和显示方式(正向or反向)。
#include <atmel\regx52.h>或者#include <reg51.h>
#define int8 unsigned char
#define int16 unsigned int
#define int32 unsigned long
int8 flag;
/*
flag变量
MSB 7 6 5 4 3 2 1 0 LSB
× ××
Bit5=1,Bit4=0 时,负向显示
Bit5=0,Bit4=1 时,负向显示
Bit[2..0]74HC138的片选信号
*/
int8 n;
int8 code table[][32]={
{0x88,0x00,0x88,0x00,0x88,0x7F,0x48,0x00,0xDF,0x1F,0xA8,0x10,0x9C,0x1 2,0xAC,0x14,0xEA,0x7F,0x8A,0x12,0x89,0x14,0x88,0x10,0x88,0x7F,0x08,0x 10,0x08,0x14,0x08,0x08},/*"梅",0*/
{0x08,0x20,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x2 1,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x08,0x21,0x04,0x 21,0x04,0x20,0x02,0x00},/*"川",1*/
{0x00,0x08,0xFE,0x08,0x28,0x0A,0x28,0x7E,0xFE,0x0A,0xAA,0x09,0xAA,0xF F,0xEA,0x00,0x86,0x00,0x82,0x7E,0xFE,0x42,0x82,0x42,0x82,0x42,0xFE,0x 7E,0x82,0x42,0x00,0x00},/*"酷",2*/
{0x00,0x00,0xF8,0x1F,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x0 1,0x00,0x41,0xFE,0xFF,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x 01,0x40,0x01,0x80,0x00}/*"子",3*/
};
void delay(void);
void main(void){
int8 i;
int8 j;
int8 index;
flag=0x10;
n=0;
//定时器T0初始化
TMOD=0x01;
TH0=0xb1;
TL0=0xe0;
ET0=1;
EA=1;
TR0=1;
while(1)
{
index=flag&0x03;
if((flag&0x30)==0x10)
{ //正向显示
for(i=0;i<8;i++)
{ //显示上半屏
P0=table[index][2*i];
//左上
P2=i|0x08;
delay();
P0=table[index][2*i+1];
//右上
P2=i|0x10;
delay();
}
for(i=8;i<16;i++)
{ //显示下半屏
P0=table[index][2*i];
//左下
P2=(i-8)|0x20;
delay();
P0=table[index][2*i+1];
//右下
P2=(i-8)|0x40;
delay();
}
}
if((flag&0x30)==0x20)
{ //反向显示
for(i=0;i<8;i++)
{
P0=~(table[index][2*i]);
//左上
P2=i|0x08;
delay();
P0=~(table[index][2*i+1]);
//右上
P2=i|0x10;
delay();
}
for(i=8;i<16;i++)
{
P0=~(table[index][2*i]);
//左下
P2=(i-8)|0x20;
delay();
P0=~(table[index][2*i+1]);
//右下
P2=(i-8)|0x40;
delay();
}
}
}
}
void delay(void){
int16 i;
for(i=0;i<50;i++);
}
void timer0() interrupt 1 using 3
{
TF0=0;
TH0=0xb1;
TL0=0xe0;
//10ms中断一次
if(n<200)
{
n++;
}
else
{ //2秒改变一次
switch(flag)
{
case 0x10:
{
flag=0x11;//下次显示正向“川”
break;
}
case 0x11:
{
flag=0x12;//下次显示正向“酷”
break;
}
case 0x12:
{
flag=0x13;//下次显示正向“子”
break;
}
case 0x13:
{
flag=0x20;//下次显示负向“川”
break;
}
case 0x20:
{
flag=0x21;//下次显示负向“梅”
break;
}
case 0x21:
{
flag=0x22;//下次显示负向“酷”
break;
}
case 0x22:
{
flag=0x23;//下次显示负向“子”
break;
}
case 0x23:
{
flag=0x10;//下次显示正向“梅”
break;
}
}
n=0;
}
}。