8413|12

483

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

快来看~!东京热为什么不是想象的那么热? [复制链接]

10芯积分
本帖最后由 yl20084784 于 2016-5-22 18:10 编辑

今天调试了一天的一块晶联讯的一块12832屏幕出现了一个比较奇葩的现象。在这里求助大家帮忙分析一下;
我需要在屏幕上显示一段汉字
调用了个函数如下:
display_GB2312_string(2,60,"东京");  结果显示不正常,
然后我通过查询“东京热”这三个字的机内码,然后弄了个数组
uchar string1[]={0xb6,0xab,0xbe,0xa9,0xc8,0xc8};//每个汉字对应两个uchar
在通过这种形式:
display_GB2312_string(2,3,string1);显示正常

然后各自猜想验证...点头绪都没有。
在主函数里面同时调用两种形式
display_GB2312_string(2,3,string1);
display_GB2312_string(2,60,"东京");

显示效果如下图:

然后通过MDK调试发现中文字符串“东京”被MDK转换成了如下的字符串

不科学啊,一个汉字应该是对应连个char的啊,怎么变成3个了?还完全牛头不对马嘴了?
这是怎么回事啊?
是MDK设置有问题?还是哪里有点问题啊?求助路过大神点拨~~~
MDK设置了GB2312编码方式(其他几种也测试了,不正常)


22.png (10.49 KB, 下载次数: 0)

22.png
此帖出自stm32/stm8论坛

最新回复

差点没让我把这个帖子给禁止了....... 标题党,罪该万死  详情 回复 发表于 2016-5-23 11:15
点赞 关注
 

回复
举报

483

帖子

0

TA的资源

纯净的硅(初级)

来自 2楼
 
好吧,刚我自己解决了:
这个问题反映了MDK软件在设置编码方式的时候,对于已经编好的代码转换出了点问题。
所以解决办法是参考网上的以为网友的办法,把这个main.c文件用notpad++转换为GB2312在保存就OK了,中间如果还有问题,在设置MDK编码方式为GB2312,再来一道。
看来大家也不喜欢东京热啊,是不是太热了啊
此帖出自stm32/stm8论坛
 
 

回复

483

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
怎么召唤大神啊
此帖出自stm32/stm8论坛
 
 

回复

483

帖子

0

TA的资源

纯净的硅(初级)

4
 
简单的说这个问题就是MDK为毛把中文字符串转换出问题了?怎么修正啊?
此帖出自stm32/stm8论坛
 
 
 

回复

483

帖子

0

TA的资源

纯净的硅(初级)

5
 
为什么没人看东京热啊?
此帖出自stm32/stm8论坛
 
 
 

回复

6040

帖子

195

TA的资源

版主

6
 
UTF-8编码每个汉字占3个字节
如果你的程序支持Unicode就好了
Unicode编码的文件其实更通用
GB2312之类编码的文件只能在中文的系统中查看,到其他语言系统的机器上就是乱码
此帖出自stm32/stm8论坛

点评

主要是这个显示屏带的字库是用GB2312编码的  详情 回复 发表于 2016-5-23 09:41
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

7
 
东京热 6666
此帖出自stm32/stm8论坛

点评

进来是不是很失望没福利啊  详情 回复 发表于 2016-5-23 10:01
 
 
 

回复

23

帖子

2

TA的资源

一粒金砂(中级)

8
 
#include "reg51.h"       //包含头文件
//#include "mingjiao.h"
sbit LE1=P2^0;           //位选573锁存器使能
sbit LE2=P2^1;           //段选573锁存器使能
sbit bz=P3^7;
#define uchar unsigned char
#define uint  unsigned int

uchar temp,num;          //定义变量
//**************************************************************************************************
delay(uint time)              //int型数据为16位,所以最大值为65535            
{
  uint  i,j;                  //定义变量i,j,用于循环语句
  for(i=0;i      for(j=0;j<50;j++);       //for循环,循环
   }
//定时器中断子程序
//**************************************************************************************************
t0() interrupt 1 using 1
{
  TH0=0x3c;         //重置定时器初值
  TL0=0xb0;
  if(temp>=19)      //满20次,即20次*50ms=1s
   {
     temp=0x00;     //重置temp为0
     //num++;         //显示变化一次
     bz=1;
        delay(100);  //mingjiao();
         //P1=~num;       //将变化次数放在P1控制的LED上显示
   }
  else
   {
     temp++;        //每进一次中断,temp加1
   }
}
//**************************************************************************************************
//主函数
//**************************************************************************************************
main()
{
   TMOD=0x01;    //0b00000001  用的是定时器0,工作在方式1(16位寄存器)
                 //要实现定时50ms,(65536-T0)x12/12000000=0.05s得T0=15536即0x3cb0
   TH0=0x3c;     //装定时器初值高8位
   TL0=0xb0;     //装定时器初值低8位
   TR0=1;        //启动定时器0
   ET0=1;        //开定时器0中断
   EA=1;         //开总中断

   while(1);     //死循环,等待定时器中断
}
此帖出自stm32/stm8论坛

点评

这是啥?  详情 回复 发表于 2016-5-23 09:31
 
 
 

回复

483

帖子

0

TA的资源

纯净的硅(初级)

9
 
嵌入式追溯者 发表于 2016-5-22 22:32
#include "reg51.h"       //包含头文件
//#include "mingjiao.h"
sbit LE1=P2^0;           //位选573锁 ...

这是啥?
此帖出自stm32/stm8论坛
 
 
 

回复

483

帖子

0

TA的资源

纯净的硅(初级)

10
 
lcofjp 发表于 2016-5-22 18:51
UTF-8编码每个汉字占3个字节
如果你的程序支持Unicode就好了
Unicode编码的文件其实更通用
GB2312之类编 ...

主要是这个显示屏带的字库是用GB2312编码的
此帖出自stm32/stm8论坛
 
 
 

回复

483

帖子

0

TA的资源

纯净的硅(初级)

11
 

进来是不是很失望没福利啊
此帖出自stm32/stm8论坛
 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

12
 
差点没让我把这个帖子给禁止了.......
标题党,罪该万死
此帖出自stm32/stm8论坛

点评

拉下人气。不过问题已经解决了  详情 回复 发表于 2016-5-23 11:52
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

483

帖子

0

TA的资源

纯净的硅(初级)

13
 
辛昕 发表于 2016-5-23 11:15
差点没让我把这个帖子给禁止了.......
标题党,罪该万死

拉下人气。不过问题已经解决了
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表