单片机 DB指令问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 17:23:20
TAB1A: DB ' 51单片机学习网(深圳学林电子有限公司) ' ;显示在第一行
TAB1C: DB '自学单片机第一站' ;显示在第三行
TAB1B: DB ' www.8951.COM ' ;显示在第二行
TAB1D: DB 'TEL 755-89956892' ;显示在第四行
问题就是单片机是以怎样形式来提取这些汉字,是以区位码提取的还是机内码提取的数据呢??这是在学习ST7920芯片时所遇到的疑难杂症,忘高手解答!谢谢
音乐飘渺迷人:
比如我要调用内部字库那只要对ddram进行写内部所要用的内部汉字的代码就行了吗?还有编译器提取中文字符串的时候,如DB '自学单片机第一站' ; 那它提取的是机内码还是国标码呢?我是这样理解的,单片机提取字符串的时候应该是机内码而不是国标码,但是它内带的字库不是为国标码吗?那这样提取出来的数据不是有误的了??谢谢了

那要看你的汉字使用的编码方式了。

我知道的支持直接显示汉字(不是输入汉字字模)的LCD都是用的汉字的区位码,就是两字节的汉字编码。所以我专为提取汉字的区位码而编了个小程序,使用很方便的。

如果你在单片机的编译器中直接用DB来定义汉字数据,我想那是不行的:首先你要知道你这个编译环境支持的字符编码方式,如果在编译环境中显示的汉字是两个字节编码方式的话,你在定义汉字内容时应该用DW而不是DB。

unsigned char code AC_TABLE[]={
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,
0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,
};
unsigned char code str2[]="深圳液晶fm12864m";
unsigned char code str1[]="故人西辞黄鹤楼,烟花三月下扬州。孤帆远影碧空尽,唯见长江天际流。";

void PutStr(unsigned char row,unsigned char col,unsigned char *puts)
{
WriteCommand(0x30);
WriteCommand(AC_TABLE[8*row+col]);
while(*puts != '\0')
{
if(col==8)
{
col=0;
row++;
}
if(ro