找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1771|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

請(qǐng)教關(guān)于Keil C51單片機(jī)中的漢字?jǐn)?shù)組問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71233 發(fā)表于 2023-7-27 17:11 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
用到LCD屏,需要顯示漢字,因此需要漢字編碼數(shù)組。但是,keil可能對(duì)中文不太友好,所以出現(xiàn)如下的問題.
單片機(jī)用STC12C5A60S2。
先定義一個(gè)漢字索引數(shù)組:
  1. unsigned char code index_hanzi[] = {"年月日正一二"};
復(fù)制代碼
然后寫了一個(gè)搜索漢字的函數(shù):
  1. uchar find_hanzi(uchar *hz) // 搜索漢字索引,返回漢字的位置
  2. {
  3.   uchar i;
  4.   for (i = 0; i < (sizeof(index_hanzi) / 2); i++)
  5.   {
  6.     if (index_hanzi[i * 2] == *hz && index_hanzi[i * 2 + 1] == *(hz + 1))
  7.     {
  8.       return i;    }
  9.   }
  10.   return 255;
  11. }
復(fù)制代碼
然后用打印函數(shù)進(jìn)行檢驗(yàn):
  1.   printf("%d\r\n", (uint)find_hanzi("年"));
  2.   printf("%d\r\n", (uint)find_hanzi("月"));
  3.   printf("%d\r\n", (uint)find_hanzi("日"));
  4. printf("%d\r\n", (uint)find_hanzi("正"));
  5.   printf("%d\r\n", (uint)find_hanzi("一"));
  6.   printf("%d\r\n", (uint)find_hanzi("二"));
復(fù)制代碼
結(jié)果打印如下:

其中前三個(gè)漢字可以正常搜索到,而后面三個(gè)漢字無(wú)法在漢字?jǐn)?shù)組中搜索到。
使用其他漢字進(jìn)行檢驗(yàn),也出現(xiàn)同樣的問題,
就是一些漢字可以搜索得到,一些漢字無(wú)法搜索到,不知道是什么原因。
請(qǐng)各位大佬指教,謝謝!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:275826 發(fā)表于 2023-7-27 20:10 | 只看該作者
是你電腦系統(tǒng)問題吧,在我電腦里運(yùn)行正常,都能正確搜索到
回復(fù)

使用道具 舉報(bào)

板凳
ID:320306 發(fā)表于 2023-7-28 18:03 | 只看該作者
會(huì)不會(huì)你有別的程序,超出內(nèi)存范圍了?用靜態(tài)數(shù)組試試?
回復(fù)

使用道具 舉報(bào)

地板
ID:627942 發(fā)表于 2023-7-28 21:53 | 只看該作者
unsigned char code index_hanzi[] = {"年月日正\xfd一二"};
printf("%d\r\n", (uint)find_hanzi("正\xfd"));
有些漢字需要加\xfd,至于為什么,你可以網(wǎng)上查一下。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表