永发信息网

请问51单片机用12864显示的时候怎么显示汉字数组中的元素?

答案:2  悬赏:30  手机版
解决时间 2021-02-25 16:11
  • 提问者网友:富士山上尢
  • 2021-02-24 20:47
请问51单片机用12864显示的时候怎么显示汉字数组中的元素?
最佳答案
  • 五星知识达人网友:玩家
  • 2021-02-24 21:58
您好,您可以用以下程序来实现~

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);

}
希望您能满意!
全部回答
  • 1楼网友:蕴藏春秋
  • 2021-02-24 22:13
dtgf323
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯