查看: 16918|回复: 11

告诉大家如何在Arduino里输出中文汉字

[复制链接]
  • TA的每日心情
    开心
    2015-7-21 10:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2016-5-9 21:28 | 显示全部楼层 |阅读模式
    制作一个电压表示例:第一步:建立一个新程序:
             打开Arduino的开发环境(关于板子的选择和串口的选择,略),选择:文件->新建
                                  
    在特定的目录建立一个存放源程序的目录,我建立的是E:\arduino 的目录,此时选择:文件->另存为:
    选择E:\arduino\   并把文件名起名为udemo
    此步的目的是为下一步建立中文字符串文件做准备;
    保存之后:
    目录就建立好了,
    第二步:建立中文字符串文件
             使用记事本(或其他类似文本编辑器),填写如下C代码:
      
    const char hz[][32]={
      
    "当前电压:",   //0-
      
    "Arduino 电压表演示程序", //1
      
    "使用串口液晶屏直接输出",         //2
      
    };
      
    使用记事本的“文件”->“另存为:”
    选择E:\arduino\udemo\ 目录,并将文件起名为hz.c,注意编码一定要选择“ANSI”,千万不要选择UTF8之类;
    点击保存,文件存好;
    备注:
             constchar hz[][32] 实际上是声明了一个字符串数组,每个字符串不能超过32字节(GB2312编码的汉字16),如果你要显示的汉字特别长,请修改32这个数字;
             此种方法实际上是将汉字全部提出到一个数组中,应用此类方式很容易实现国际版程序,即切换数组就可以实现不同语种的显示;
    【注意】:建立这个外挂文件的目的就是为了解决使用IDE编程环境无法编辑GB2312内码汉字的问题,请勿使用IDE编程环境打开编辑此文件,这样操作会将此文件改写为UTF8内码的文件!
    第三步:编辑主程序
             在开发环境中输入以下代码:
      
    #include"hz.c"
      
    void setup() {
      
       Serial.begin(9600);
      
       Serial.println(hz[1]);
      
       Serial.println(hz[2]);
      
    }
      
      
    void loop()
      
    {
      
       int sensorValue = analogRead(A0);
      
       float vol = sensorValue * 2.5 / 1024;
      
       Serial.print(hz[0]); Serial.print(vol, 2);  Serial.println("V");
      
       delay(150);
      
    }
      
    点击“上传”,之后打开串口,输出就是中文内容。
    udemo.jpg

  • TA的每日心情
    开心
    2015-7-21 10:02
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2016-5-9 21:29 | 显示全部楼层
    附上演示的代码。

    Udemo.rar

    173.58 KB, 下载次数: 243

  • TA的每日心情
    擦汗
    2019-1-26 16:31
  • 签到天数: 446 天

    [LV.9]以坛为家II

    发表于 2016-5-9 21:39 | 显示全部楼层
    活得精彩 发表于 2016-5-9 21:29
    附上演示的代码。

    你的最新版智能空气检测净化一体机也发到论坛呗~

    该用户从未签到

    发表于 2016-5-10 08:13 | 显示全部楼层
    如果能在编译预处理过程中加入一个自动转换的过程更好~
  • TA的每日心情
    开心
    2015-7-21 10:02
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2016-5-10 08:44 | 显示全部楼层
    Zoologist 发表于 2016-5-10 08:13
    如果能在编译预处理过程中加入一个自动转换的过程更好~

    怎么实现呢?望指导,谢谢!

    该用户从未签到

    发表于 2016-5-10 08:47 | 显示全部楼层
    活得精彩 发表于 2016-5-10 08:44
    怎么实现呢?望指导,谢谢!

    我也不知道呢

    不过预期是这样的

    代码中使用一个宏,或者其他的标记 ,例如  _Z("汉字内容")

    然后在预处理的时候搜索这个宏,然后替换成 GB 编码

    这样不会影响正常编译,也不会有太多限制,理论上应该是可行的
  • TA的每日心情
    开心
    2018-11-20 15:33
  • 签到天数: 248 天

    [LV.8]以坛为家I

    发表于 2016-5-10 20:25 来自手机 | 显示全部楼层
    以前以为不能呢,原来可以
  • TA的每日心情
    开心
    2018-3-12 11:12
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2018-1-27 12:36 | 显示全部楼层
    按照你说明的步骤执行,还是无法实现打印中文呢。
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    Blynk与m5stack basic以及uiflow的交互玩法
    Blynk与m5stack basic以及
    Blynk与m5stack basic以及uiflow的交互玩法 [准备工作我们假设玩家已经熟悉下面的准备
    【原创】 drawbot平面关节scara机械臂写字机 画画机器人直播...
    【原创】 drawbot平面关节
    这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太忙,一直没来得及
    error:'UTFT' does not mame a type这个错在那里?
    error:'UTFT' doe
    ********************************************************************************
    【原创】全球最小口袋3D打印机mini one直播教程贴
    【原创】全球最小口袋3D打
    最近闲得蛋疼,没事搞个掌上3D打印机,先放效果图吧。 搞了半天,终于能正常打印,
    哪种按钮传感器可以适用我的arduino装置
    哪种按钮传感器可以适用我
    我想做大概12个按钮并联的这么一个装置,具体交互行为如下:按一次按钮通过mp3模块发
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表