用到LCD屏,需要显示汉字,因此需要汉字编码数组。但是,keil可能对中文不太友好,所以出现如下的问题. 单片机用STC12C5A60S2。 先定义一个汉字索引数组: - unsigned char code index_hanzi[] = {"年月日正一二"};
复制代码然后写了一个搜索汉字的函数: - uchar find_hanzi(uchar *hz) // 搜索汉字索引,返回汉字的位置
- {
- uchar i;
- for (i = 0; i < (sizeof(index_hanzi) / 2); i++)
- {
- if (index_hanzi[i * 2] == *hz && index_hanzi[i * 2 + 1] == *(hz + 1))
- {
- return i; }
- }
- return 255;
- }
复制代码然后用打印函数进行检验: - printf("%d\r\n", (uint)find_hanzi("年"));
- printf("%d\r\n", (uint)find_hanzi("月"));
- printf("%d\r\n", (uint)find_hanzi("日"));
- printf("%d\r\n", (uint)find_hanzi("正"));
- printf("%d\r\n", (uint)find_hanzi("一"));
- printf("%d\r\n", (uint)find_hanzi("二"));
复制代码结果打印如下:
其中前三个汉字可以正常搜索到,而后面三个汉字无法在汉字数组中搜索到。 使用其他汉字进行检验,也出现同样的问题, 就是一些汉字可以搜索得到,一些汉字无法搜索到,不知道是什么原因。 请各位大佬指教,谢谢! |