怎样用C语言实现LED点阵显示汉字 年 的移动代码

如题所述

;FOR T598D
;*********LED 点阵显示示例程序***********************
CSLED EQU 8000H
CSc1 EQU CSLED ;列1~8 273
CSc2 EQU CSLED+1H ;列9~16 273
CSr1 EQU CSLED+2H ;行1~8 374
CSr2 EQU CSLED+3H ;行9~16 374

ORG 0000H

MOV SP,#60H
INIT: MOV A,#0H ;关闭LED列显示
MOV DPTR,#CSc1
MOVX @DPTR,A
MOV DPTR,#CSc2
MOVX @DPTR,A
MOV A,#0FFH ;关闭LED行显示
MOV DPTR,#CSr1
MOVX @DPTR,A
MOV DPTR,#CSr2
MOVX @DPTR,A

D: MOV R5,#00H ;设定汉字表格初始值
MOV R4,#01H ;设定列扫描初始值,从第一列开始
DISP:
MOV A,R5
RL ACC
MOV DPTR,#HZKE ;此处设定所要显示的字符
MOVC A,@A+DPTR
CPL ACC ;代码取反,决定显示的阴阳
MOV DPTR,#CSr1
MOVX @DPTR,A

MOV A,R5
RL ACC
INC ACC
MOV DPTR,#HZKE ;此处设定所要显示的字符
MOVC A,@A+DPTR
CPL ACC
MOV DPTR,#CSr2
MOVX @DPTR,A

MOV DPTR,#CSc1
MOV A,R4
MOVX @DPTR,A
RL ACC
MOV R4,ACC
INC R5
LCALL DELAY
MOV A,#00H ;清上次显示值
MOVX @DPTR,A ;关闭行、列
MOV A,#0FFH
MOV DPTR,#CSR1
MOVX @DPTR,A
CJNE R5,#8H,DISP ;判是否显示到第八列

MOV R5,#08H ;设定汉字表格初始值
MOV R4,#01H ;设定列扫描初始值,从第九列开始
DISP2:
MOV A,R5
RL ACC
MOV DPTR,#HZKE ;此处设定所要显示的字符
MOVC A,@A+DPTR
CPL ACC
MOV DPTR,#CSr1
MOVX @DPTR,A

MOV A,R5
RL ACC
INC ACC
MOV DPTR,#HZKE ;此处设定所要显示的字符
MOVC A,@A+DPTR
CPL ACC
MOV DPTR,#CSr2
MOVX @DPTR,A

MOV DPTR,#CSc2
MOV A,R4
MOVX @DPTR,A
RL ACC
MOV R4,ACC
INC R5
LCALL DELAY
MOV A,#00H ;清上次显示值
MOVX @DPTR,A ;关闭行、列
MOV A,#0FFH
MOV DPTR,#CSR2
MOVX @DPTR,A
CJNE R5,#10H,DISP2 ;判是否扫描到第十六列
SJMP D
;******** 延时子程序,协调字符显示速度 *************
DELAY: MOV R7,#1H
DL1: MOV R6,#00H
DL2: DJNZ R6,DL2
DJNZ R7,DL1
RET
;******** 字符点阵字库 ***************
; HZ16 字符编码排列
; 数 D7 R1 (0 2 --28 30)
; | |
; | |
; 据 D0 R8 (1 3 --29 31)
;
;运行zimo.exe程序,在参数设置里选择“纵向取模”,16*16点阵,宋体、小四号(12)
;取模方式为A51格式
;取完模之后,将16~32字节间隔插入1~15字节,详见下面示例字模。
;*****************************************************

;ZIMO程序生成的字模
;显示“爱迪克”
;HZAI:
; DB 00H,02H,4DH,69H,59H,49H, 6FH,59H, 0C9H,89H,99H,0E9H,89H,09H,0CH,00H
; DB 02H,04H,05H,09H,32H,0E2H,54H,54H, 48H, 58H,64H,44H, 02H,03H,02H,00H
;HZDI:
; DB 02H,82H,73H, 20H,00H,0FH, 09H,09H, 09H,0FFH,09H,09H,09H,0FH,00H,00H
; DB 02H,04H,0F8H,04H,02H,0FAH,12H,12H, 12H,0F2H,12H,12H,12H,0FAH,02H,00H
;HZKE:
; DB 0FFH,0BFH,0EFH,0BFH,0EFH,0BFH,0EFH,0BBH,0E0H,001H,0EFH,0FFH,0EFH,0FFH,0EFH,0FFH ;片
; DB 0E0H,00FH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0DFH,0EFH,0DFH,0EFH,0BFH,0EFH,07FH,0FFH
;******************************************************
; 转换后的字模
HZAI:
DB 00H,02H,02H,04H,4DH,05H,69H,09H,59H,32H,49H,0E2H,6FH,54H,59H,54H
DB 0C9H,48H,89H,58H,99H,64H,0E9H,44H,89H,02H,09H,03H,0CH,02H,00H,00H

HZDI:DB 02H,02H,82H,04H,73H,0F8H,20H,04H,00H,02H,0FH,0FAH,09H,12H,09H,12H
DB 09H,12H,0FFH,0F2H,09H,12H,09H,12H,09H,12H,0FH,0FAH,00H,02H,00H,00H

HZKE:DB 0FFH,0BFH,0EFH,0BFH,0EFH,0BFH,0EFH,0BBH,0E0H,001H,0EFH,0FFH,0EFH,0FFH,0EFH,0FFH ;片
DB 0EFH,0EFH,0EFH,0EFH,0E0H,00FH,0EFH,0EFH,0BFH,0EFH,07FH,0FFH,0DFH,0EFH,0DFH,0EFH
;****************************************************
END
这是程序请求帮忙修改
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-09
小朋友. 你至少要把你用的板子的datasheet给人家......

求一个8*8LED点阵汉字显示C语言程序(C52)
unsigned char code led0[]={};\/\/字码表,你自己把你要显示的字码放进去就可以了 void main(){ unsigned char w,i;while(1){ \/\/显示0 w=0x01; \/\/行变量为第一行 for(i=0;i<8;i++){ P1=w;\/\/行数据送P1口 P0=led0[i];delayms(1);\/\/列数据送P0口 w<<=1;\/\/向下移动一...

求助以下16*16LED点阵仿真图C语言编程,能显示汉字或数字
define uchar unsigned char \/\/定义无符号字符 define uint unsigned int \/\/定义无符号整数 void delay(uint); \/\/声明延时函数 void main(void){ uint i;uchar temp;while(1){ temp=0x01;for(i=0;i<8;i++) \/\/8个流水灯逐个闪动 { P1=~temp;delay(100); \/\/调用延时函数 temp...

求一个16*16的LED点阵屏滚动字幕的C语言程序,内容随便……单片机型号...
sbit LATCH1=P2^6;\/\/定义锁存使能端口 段锁存 sbit LATCH2=P2^7;\/\/ 位锁存 unsigned char const seg[]={0x00,0x6C,0x92,0x82,0x44,0x28,0x10,0x00};\/\/ 心的形状 unsigned char code wei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};\/\/分别对应相应的段亮 \/\/\/ void d...

在LED显示汉字,怎么做到可以三个汉字循环显示?怎么添加代码?
LED点阵显示屏采用16×16共256个象素的点阵,可通过万用表检测发光二极管的方法测试判断出该点阵的引脚分布。 我们把行列总线接在单片机的I\/0口,然后把上面分析到的扫描代码送入总线,就可以得到显示的汉字了。但是若将LED点阵的行列端口全部直接接入89S5 1单片机,则需要使用32条I\/0口,这样会造成I\/0口资源的耗尽,...

怎样用C语言编写出能够显示汉字的程序,给举个例子好吗?
fread(buffer,32,1,fp); \/\/取出汉字32字节的点阵字模存入buffer中(一个汉字)for (i=0;i〈16;i++) \/\/将32位字节的点阵按位在屏幕上打印出来(1:打印,0:不打印),显示汉字 for(n=0;n〈ROW;n++)for(j=0;j〈2;j++)for(k=0;k〈8;k++)for(m=0;m〈COL;m++)if ((...

急急急。。。跪求16x16点阵模块显示汉字的C语言程序
\/\/--定义SPI要使用的 IO--\/\/ sbit MOSIO = P3^4;sbit R_CLK = P3^5;sbit S_CLK = P3^6;\/\/---全局变量声明--\/\/ ulong column; \/\/点阵列 ulong row; \/\/点阵行 ulong dt;\/\/点阵显示数组 uchar code tab0[] = {0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08...

急!c语言如何显示汉字
以16*16点阵字库为例,通常的方法是:将文件工作指针移到需要的汉字字模处、将汉字库文件读入一2*16数组再用for循环一位位地显示。以使用VGAHI模式显示“我”字为例,程序如下:#include "graphics.h"#include "stdio.h"main(){ int i=VGA,j=VGAHI,k; unsigned char mat[16][2],chinease[3]="我"; ...

谁能用c语言 帮我编个 能实现显示汉字的程序 跪求 大神 来办忙啊 图...
这个事先要知道显示哪几个汉字,然后确定每个汉字控制哪几个亮点,这样才能显示出汉字来,这么简单的控制器,你不可能显示所有汉字吧,那要引入汉字库了。

单片机中,用点阵怎么实现数字的输出,其程序怎么编写???
点阵不管是显示汉字还是数字,一般都是将要显示的汉字或数字用字模提取软件转换出一个数组的内容,然后将这个数组复制到单片机的程序中,以下给你一些C语言程序参考,这个是16*16的点阵,还有就是提醒一下你,你用字模提取软件时要看清楚取码是从哪个方向开始的,然后写程序时也要对应:include <reg52.h...

c语言怎样才能输出中文???(最简单的方法)
定义一个字符串变量,在这个变量的值中就可以输入中文了。汉字是多字节的,一个char放不下,可以使用字符数组,但需要给数组分配空间,或者使用string。例如:include<stdio.h> int main(void){ char a[128];printf("请输入所需输出的汉字:");scanf("%s",a);printf("%s\\n",a);return 0;...

相似回答