单片机向串口发送汉字,超级终端为啥显示是乱码?
单片机向串口发送汉字,超级终端为啥显示是乱码?效果如下:
绀哄姛浠浇鑽风數鍘嬫槸: 1497mV
Channel '1' voltage is 1835mV
Channel '2' voltage is 1270mV
鍔犻€熷害浼犳劅鍣ㄧ數鍘嬫槸: 2426mV
Channel '4' voltage is 1524mV
Channel '5' voltage is 4mV
Channel '6' voltage is 657mV
鐢垫睜鐢靛帇鏄? 2394mV
Channel '8' degree is 160.139800
绀哄姛浠浇鑽风數鍘嬫槸: 1497mV
Channel '1' voltage is 1835mV
Channel '2' voltage is 1270mV
鍔犻€熷害浼犳劅鍣ㄧ數鍘嬫槸: 2426mV
Channel '4' voltage is 1524mV
Channel '5' voltage is 4mV
Channel '6' voltage is 657mV
鐢垫睜鐢靛帇鏄? 2394mV
Channel '8' degree is 160.139800
看看是不是OXFD影响啊?
我往电脑发串口数据用Hterm中文就是乱码 用国产的串口软件就可以显示 编码问题 软件不支持中文~~~~~~~~~~~~ 换成串口调试助手应该就可以了吧。 见下面的图片,不要勾选“传入数据转换位7ASCII码",就能正常显示中文了。
有些串口调试工具反而不能正常显示中文。
解决了,原来还是字符编码问题。
手工转码:
char sgy_jsd_volt={0xBC,0xD3,0xCB,0xD9,0xB6,0xC8,0xB5,0xE7,0xD1,0xB9,0xD6,0xB5,0xCA,0xC7,0x0};//“加速度电压值是”汉字转ASC码
char sgy_bat_volt={0xB5,0xE7,0xB3,0xD8,0xB5,0xE7,0xD1,0xB9,0xD6,0xB5,0xCA,0xC7,0x0};//“电池电压值是”汉字转ASC码
char sgy_tempre_volt={0xD0,0xBE,0xC6,0xAC,0xB5,0xC4,0xC4,0xDA,0xB2,0xBF,0xCE,0xC2,0xB6,0xC8,0xD6,0xB5,0xCA,0xC7,0x0};//“芯片温度值是”汉字转ASC码
sprintf(main_buf,"Channel '%d': %s %5.1fmV\r\n",i,sgy_jsd_volt, voltage);
SimUart1_WriteString(main_buf,strlen(main_buf));
Channel '1' voltage is 4.8mV
Channel '2' voltage is 4.8mV
Channel '3': 加速度电压值是 9.6mV
Channel '4' voltage is 9.6mV
Channel '5' voltage is 0.0mV
Channel '6' voltage is 4.8mV
Channel '7': 电池电压值是 1134.1mV
Channel '8': 芯片的内部温度值是34.9
页:
[1]