📄 text1.c
字号:
//proteus仿真论坛:http://proteus.5d6d.com
#include<reg51.h>
#include<lcd drive.h>
#include<hzcl.c>
#define ulong unsigned long
#define uchar unsigned char
#define uint unsigned int
void delay(uint);
main()
{ uchar xdata* addx=0; //初始值指向U6的开始,用于读取U6中天龙八部的内码
ulong addf; //算得特定汉字在U0-U5中的位置
uint i; //存放汉字点阵的片内偏移地址
ulong k,l; //k存放内码的高8位,l存放内码的低八位
uchar phang=0,plie=0; //用于存放已显示汉字的个数
uchar* hzdot;//用于存放调整好的汉字点阵的数组首地址,直接用于显示的输入
E=1;
dspon();
cls();
sets(0);
cls(); //lcd初始化
do
{
P1=5; //选中U6,装天龙八部的内码的
while(((k=*addx)&0x80)==0x0) //识别该字符是ASCII码还是汉字码,ASCII码的最高位为0
{
if(k==0) while(1);//读到末尾标记/0的时候停止,死机
if(k==0x0d)
{plie=0;
phang++;
if(phang>3) {phang=0;delay(1000);cls();}
addx+=2;
}
}
addx++;
l=*addx;
addx++; //一个汉字的内码包括2个字节,下面的算法是根据汉字的内码来计算其在字库点阵中的位置
addf=((k-161)*94+(l-161))*32; //由内码计算汉字点阵首地址,k存放内码的高8位,l存放内码的低8位
P1=addf/0x10000; //计算汉字点阵所在的rom,片选
i=(addf%0x10000); //计算在汉字点阵被选中rom中的偏移地址地址
hzdot=hz32(i); //汉字点阵转向,转好后把调整好的汉字点阵放在全局变量graph32[]中
wrhz(hzdot,phang,plie,0); //显示汉字
plie++;
if(plie>7)
{phang++;plie=0;} //列满7则行加1
if(phang>3) //行满3则翻屏
{phang=0;delay(1000);cls();}
}while(1);
}
void delay(uint msecond)
{
uint n;
for(;msecond>0;msecond--)
for(n=300;n>0;n--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -