51单片机用汇编语言驱动16*16点阵显示“机电工程系”汉字

如题所述

硬件线路没要求的话,简单 

;16X16LED点阵流动显示

;逐列、逆向(低位开始)扫描

ORG 0000H

AJMP MAIN

ORG 0030H

MAIN: MOV DPTR,#TAB ;字码表初址赋值

MOV R1,#00H ;列控制码

MOV R4,#96 ;移动" "及"机电工程系"6个字符,共96列

CM: MOV R5,#5 ;每屏反复显示5次

MOV R3,#16 ;列数

C1: MOV R2,#0 ;取码指针

C16: MOV P0,#00H

MOV P2,#00H ;关显示

CLR P3.0

MOV A,R2

MOVC A,@A+DPTR ;取当前列显示字码的第一个字节

MOV P0,A ;送1~8行控制口

INC R2

MOV A,R2

MOVC A,@A+DPTR ;取当前列的显示字码的第二个字节

MOV P2,A ;送9~15行控制口

INC R2

MOV P1,R1 ;送列控制码

INC R1

    ACALL D1MS ;显示2MS

ACALL D1MS

DJNZ R3,C16 ;一屏16列是否显示完

MOV R3,#16

DJNZ R5,C1 ;未显示5次,继续

INC DPTR ;一屏反复显示5次完,字码表初值加2

INC DPTR

DJNZ R4,CM ;96列未移动完,继续

AJMP MAIN ;96列移动完,返回,重新从" "开始显示

D1MS: MOV R6,#2

MOV R7,#248

DJNZ R7,$

DJNZ R6,$-4

RET

TAB:   ;(0)  (1) 机(2) 电(3) 工(4) 程(5) 系(6)

DB 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H;

DB 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H;" ",0

DB 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H;

DB 000H, 000H, 000H, 000H, 000H, 000H, 000H, 000H;" ",1

DB 000H, 008H, 040H, 00CH, 040H, 006H, 0FEH, 07FH;

DB 0FEH, 07FH, 020H, 023H, 020H, 032H, 000H, 01CH;

DB 0E0H, 00FH, 0F0H, 003H, 0D0H, 00FH, 0F0H, 01FH;

DB 030H, 010H, 000H, 010H, 000H, 01CH, 000H, 01CH;"机",2

DB 000H, 000H, 000H, 000H, 0E0H, 001H, 0E0H, 007H;

DB 020H, 007H, 020H, 005H, 0FEH, 03FH, 0FEH, 07FH;

DB 090H, 042H, 010H, 042H, 0F0H, 043H, 0F0H, 041H;

DB 000H, 040H, 000H, 078H, 000H, 038H, 000H, 000H;"电",3

DB 000H, 000H, 000H, 010H, 000H, 010H, 000H, 010H;

DB 020H, 010H, 020H, 010H, 020H, 010H, 0E0H, 01FH;

DB 0F0H, 00FH, 010H, 008H, 010H, 008H, 010H, 008H;

DB 000H, 008H, 000H, 008H, 000H, 008H, 000H, 000H;"工",4

DB 080H, 010H, 080H, 018H, 090H, 00CH, 090H, 006H;

DB 0F8H, 0FFH, 0FCH, 0FFH, 04CH, 026H, 040H, 024H;

DB 070H, 025H, 078H, 025H, 048H, 03FH, 0E8H, 03FH;

DB 0B8H, 012H, 0B8H, 012H, 000H, 010H, 000H, 010H;"程",5

DB 000H, 000H, 000H, 000H, 000H, 040H, 008H, 074H;

DB 048H, 034H, 068H, 006H, 078H, 047H, 0D8H, 0FDH;

DB 0CCH, 0FEH, 066H, 002H, 026H, 00BH, 000H, 01BH;

DB 000H, 032H, 000H, 020H, 000H, 000H, 000H, 000H;"系",6

END

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-07-12
{
/* 以下是 '机' 的 16点阵宋体 字模,32 byte */
0x10,0x00,0x11,0xF0,0x11,0x10,0x11,0x10,
0xFD,0x10,0x11,0x10,0x31,0x10,0x39,0x10,
0x55,0x10,0x55,0x10,0x91,0x10,0x11,0x12,
0x11,0x12,0x12,0x12,0x12,0x0E,0x14,0x00,
};
{
/* 以下是 '电' 的 16点阵宋体 字模,32 byte */
0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,
0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,
0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,
0x21,0x0A,0x01,0x02,0x01,0x02,0x00,0xFE,
};
{
/* 以下是 '工' 的 16点阵宋体 字模,32 byte */
0x00,0x00,0x00,0x00,0x7F,0xFC,0x01,0x00,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
0x01,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,
};
{
/* 以下是 '程' 的 16点阵宋体 字模,32 byte */
0x08,0x00,0x1D,0xFC,0xF1,0x04,0x11,0x04,
0x11,0x04,0xFD,0xFC,0x10,0x00,0x30,0x00,
0x39,0xFE,0x54,0x20,0x54,0x20,0x91,0xFC,
0x10,0x20,0x10,0x20,0x13,0xFE,0x10,0x00,
};
{
/* 以下是 '系' 的 16点阵宋体 字模,32 byte */
0x00,0xF8,0x3F,0x00,0x04,0x00,0x08,0x20,
0x10,0x40,0x3F,0x80,0x01,0x00,0x06,0x10,
0x18,0x08,0x7F,0xFC,0x01,0x04,0x09,0x20,
0x11,0x10,0x21,0x08,0x45,0x04,0x02,0x00,
};
第2个回答  2015-10-10
http://wenku.baidu.com/view/46afa4dbce2f0066f53322b5?fr=prin 用取模软件把你的这些字取模,替换文档里的字就好了,纵向取模
第3个回答  2011-06-15
这个!关键是你想怎么实现!可惜咱汇编不会啊!c语言不行吗

51单片机用汇编语言驱动16*16点阵显示“机电工程系”汉字
MAIN:MOVDPTR,#TAB;字码表初址赋值 MOVR1,#00H;列控制码 MOVR4,#96;移动" "及"机电工程系"6个字符,共96列 CM:MOVR5,#5;每屏反复显示5次 MOVR3,#16;列数 C1:MOVR2,#0;取码指针 C16:MOVP0,#00H MOVP2,#00H;关显示 CLRP3.0 MOVA,R2 MOVCA,@A+DPTR;取当前列显示字码的第一...

求一款51单片机16*16点阵显示静态汉字的C例程
sbit en=P3^7; \/\/1602的使能控制线 \/*P2口接1602的D0~D7,注意不要接错了顺序,我以前可在这上面吃过亏~*\/ uchar code table[]="???"; \/\/要显示的内容1放入数组tablel uchar code table1[]="???"; \/\/要显示的内容2放入数组table1 void delay(uint n) \/\/延时函数 { u...

...C语言编写程序,使液晶显示器显示16*16点阵汉字,请问怎么编写,谢谢...
include"at89x51.h"unsigned char code led[]={0x10,0x04,0x10,0x03,0xD0,0x00,0xFF,0xFF,0x90,0x00,0x18,0x1D,0xF7,0x13,0x14,0x11,0x54,0x15,0x94,0x19,0x14,0x51,0x14,0x91,0xF6,0x7F,0x04,0x11,0x00,0x01,0x00,0x00,0x04,0x04,0x04,0x02,0x04,0x01,0xC4,0xF...

51单片机16*16点阵4个汉字LED屏显示 请帮忙修改下程序,其他都不变...
LED上下移动很简单,麻烦一点的是左右移动。程序懒得写了,给你个思路吧,你在内存中开辟(16÷8+1)×16=48个字节的缓存。每行3个字节,实际显示2个字节的内容。在定时器中断中定时扫描列的内容。第一次中断,从行缓存头上开始,每行送16个BIT,共16行,第二次中断,从行缓存头上开始,每行送17...

求51单片机控制的16*16点阵代码
\/\/这是16*16点阵 显示一个字的代码。。。 临时写的。。。include <reg52.h> include <intrins.h> define IOdata \/\/数据口定义 define uchar unsigned char sbit row0 \/\/0行 定义 sbit row1 \/\/1行 定义 sbit col0 \/\/0列 定义 sbit col1 \/\/1列 定义 uchar code word_tab[][32]= {...

51单片机c语言控制16*16LED行共阳点阵显示“朱”字,用proteus模拟无法显...
www.dzkfw.com.cn\/myxin\/51c_language.chm 单片机c语言

51单片机下,谁能教我一下 16X16点阵怎么 让字移动起来啊?
多建一个缓冲区,将移位的数据从缓冲区读出加入到显示字符的最后一位,前面的数据移动一位,移动那一位数据加在前一位数据的最后一位。缓冲区的数据移完后再加入,一般是8位的数据。也就是说移8次加载一次数据到缓冲区。

我想编写16*16点阵的左移程序。用C语言,51单片机。你能否帮我编一个小...
{ for(n=0;n<32;n++) \/\/ for(m=0;m<8;m++) \/\/重复显示8次 { temp=0;\/\/ 不加此条,流动飞快 for(num=n;num<16+n;num++){ WriteByte(tab[2*num+1]);WriteByte(tab[2*num+0]);P1=temp;ST_CP=0;ST_CP=1;delay_ms(1);temp++;if(temp==16)temp=0;} } } } ...

你好,51单片机16*16点阵滚动显示程序能不能发个给我,谢谢了!
} tim=time; while(tim--) display(1); } } 追问 程序编译有错误呢? 我是用的4个8*8点阵拼的16*16的点阵,这个程序能行吗? 追答 我是用的是4个8*8点阵拼的16*16的点阵,可以的,那程序有点问题,就是那xin我把他删了,你改下就可以了。 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 其他...

【51单片机系列】proteus中创建16x16LED点阵
首先,文章详细介绍了在Proteus中测试8x8点阵的电流方向和行列控制接口的方法,结果表明红色点阵电流方向为上->下,蓝色、绿色和橘色点阵为下->上,红色点阵接口为上列下行,其他颜色点阵为上行下列。其次,文章提供了使用8x8点阵制作16x16点阵的详细步骤,包括创建、分解、复制、制作Symbol等操作,最终得到16x...

相似回答