原文地址 - https://www.arduino.cc/en/Tutorial/ASCIITable

ASCII字符表

本例展示了高级的串口打印功能,通过本功能可以在Arduino软件(IDE)的串口监视器上生成一个字符和ASCII值的对应表,值分别用十进制、十六进制、八进制和二进制显示。想了解更多关于ASCII字符的信息,请参看asciitable.com

硬件需求

Arduino 或 Genuino 开发板

电路

无,但是开发板必须通过串口或者USB口连接到电脑。

代码

程序在setup()等连接上串口以后,会一行一行的打印ASCII表直到最后一个可打印字符。打印完成后,设备进入while结构的死循环状态。关闭和打开Aruino软件(IDE)将会使开发板重启并重新启动程序。

  1. /*
  2. ASCII表
  3.  
  4. 用所有可能的格式输出字节值:
  5. * 简单的二进制值
  6. * ASCII编码的十进制、十六进制、八进制和二进制形式
  7.  
  8. 想了解更多关于ASCII的知识, 参见 http://www.asciitable.com and http://en.wikipedia.org/wiki/ASCII
  9.  
  10. 电路: 不需要外接电路。
  11.  
  12. 编写时间: 2006
  13. 作者:Nicholas Zambetti
  14. 更新:2012年4月9日
  15. 更新者: Tom Igoe
  16. 翻译:苏杭
  17. 翻译日期:2016年12月14日
  18. 本示例代码公布在公用网络上.
  19.  
  20. < http://www.zambetti.com >
  21.  
  22. */
  23. void setup() {
  24. //初始化串口并且等待端口开启:
  25. Serial.begin(9600);
  26. while (!Serial) {
  27. ; // 等待串口连接。使用本地的USB端口才需要这样。
  28. }
  29.  
  30. // 输出带有回车符号的标题
  31. Serial.println("ASCII Table ~ Character Map");
  32. }
  33.  
  34. // 第一个看得见的ASCII字符"!"是数字23:
  35. int thisByte = 33;
  36. // 你也可以用单引号来写ASCII字符。
  37. // 例如字符"!"的ASCII值是33,因此你也可以这样写:
  38. //int thisByte = '!';
  39.  
  40. void loop() {
  41. // 原样输出数值,比如字符的简单二进制形式。串口监视器把所有的字节码显示为ASCII字符,
  42. //因此第一个数字33将显示'!'。
  43. Serial.write(thisByte);
  44.  
  45. Serial.print(", dec: ");
  46. // 用ASCII编码十进制的字符形式输出数值(十进制)。
  47. // 十进制数是Serial.print()和Serial.println()默认的格式,因此不需要做改变 :
  48. Serial.print(thisByte);
  49. // 当然你乐意的话,也可以可以声明以十进制格式输出.
  50. //如果你把下面一句的注释去掉和上面的效果是一样的:
  51.  
  52. // Serial.print(thisByte, DEC);
  53.  
  54. Serial.print(", hex: ");
  55. // 输出十六进制格式的字符串(十六进制):
  56. Serial.print(thisByte, HEX);
  57.  
  58. Serial.print(", oct: ");
  59. // 输出八进制格式的字符串(八进制);
  60. Serial.print(thisByte, OCT);
  61.  
  62. Serial.print(", bin: ");
  63. // 输出二进制形式的字符串(二进制)
  64. // 同时输出回车换行:
  65. Serial.println(thisByte, BIN);
  66.  
  67. // 如果输出了最后一个可视字符 '~' 或 126, 停止:
  68. if (thisByte == 126) { // 你也可以用 if (thisByte == '~') {
  69. // 这个循环一直循环而且什么也不做
  70. while (true) {
  71. continue;
  72. }
  73. }
  74. // 继续下一个字符
  75. thisByte++;
  76. }

输出结果

  1. ASCII Table ~ Character Map
  2. !, dec: 33, hex: 21, oct: 41, bin: 100001
  3. ", dec: 34, hex: 22, oct: 42, bin: 100010
  4. #, dec: 35, hex: 23, oct: 43, bin: 100011
  5. $, dec: 36, hex: 24, oct: 44, bin: 100100
  6. %, dec: 37, hex: 25, oct: 45, bin: 100101
  7. &, dec: 38, hex: 26, oct: 46, bin: 100110
  8. ', dec: 39, hex: 27, oct: 47, bin: 100111
  9. (, dec: 40, hex: 28, oct: 50, bin: 101000
  10. ), dec: 41, hex: 29, oct: 51, bin: 101001
  11. *, dec: 42, hex: 2A, oct: 52, bin: 101010
  12. +, dec: 43, hex: 2B, oct: 53, bin: 101011
  13. ,, dec: 44, hex: 2C, oct: 54, bin: 101100
  14. -, dec: 45, hex: 2D, oct: 55, bin: 101101
  15. ., dec: 46, hex: 2E, oct: 56, bin: 101110
  16. /, dec: 47, hex: 2F, oct: 57, bin: 101111
  17. 0, dec: 48, hex: 30, oct: 60, bin: 110000
  18. 1, dec: 49, hex: 31, oct: 61, bin: 110001
  19. 2, dec: 50, hex: 32, oct: 62, bin: 110010
  20. 3, dec: 51, hex: 33, oct: 63, bin: 110011
  21. 4, dec: 52, hex: 34, oct: 64, bin: 110100
  22. 5, dec: 53, hex: 35, oct: 65, bin: 110101
  23. 6, dec: 54, hex: 36, oct: 66, bin: 110110
  24. 7, dec: 55, hex: 37, oct: 67, bin: 110111
  25. 8, dec: 56, hex: 38, oct: 70, bin: 111000
  26. 9, dec: 57, hex: 39, oct: 71, bin: 111001
  27. :, dec: 58, hex: 3A, oct: 72, bin: 111010
  28. ;, dec: 59, hex: 3B, oct: 73, bin: 111011
  29. <, dec: 60, hex: 3C, oct: 74, bin: 111100
  30. =, dec: 61, hex: 3D, oct: 75, bin: 111101
  31. >, dec: 62, hex: 3E, oct: 76, bin: 111110
  32. ?, dec: 63, hex: 3F, oct: 77, bin: 111111
  33. @, dec: 64, hex: 40, oct: 100, bin: 1000000
  34. A, dec: 65, hex: 41, oct: 101, bin: 1000001
  35. B, dec: 66, hex: 42, oct: 102, bin: 1000010
  36. C, dec: 67, hex: 43, oct: 103, bin: 1000011
  37. D, dec: 68, hex: 44, oct: 104, bin: 1000100
  38. E, dec: 69, hex: 45, oct: 105, bin: 1000101
  39.  
  40. ...

另见

最终版本编辑2015/07/28 SM

QQ 群

欢迎加入我们的大家庭  点击加入 硬创联盟 Arduino 群号 8580606

翻译:硬创联盟翻译组翻译员 – 苏杭
审核:硬创联盟翻译组技术语文审核 - 神奇海螺,Lepton-华,成都阿杰

ASCIITable: 演示 Arduino 串口输出的进阶功能的更多相关文章

  1. Arduino 串口输出LM35温度

    #include "stdlib.h" float temp = 0.0; float maxtemp = 0.0; float mintemp =100.0; // the se ...

  2. arduino串口输出问题

  3. 从0移植uboot(五) _实现串口输出

    串口作为一种非常简单的通信方式,才是嵌入式系统调试的王道,通过设置串口输出,我们可以将程序运行的情况直接通过串口线输出到屏幕上,对于这种异常重要的功能,uboot原生就提供了支持,但为此我们需要做一些 ...

  4. Arduino 串口通讯参考笔记 - Serial 类库及相关函数介绍

    声明: 本ID发布的所有文章及随笔均为原创,可随意转载,单转载文章必须注明作者 aiyauto 及包含原文出处地址 http://www.cnblogs.com/aiyauto/p/7071712.h ...

  5. (转) 从0移植uboot(五) _实现串口输出

    ref : https://www.cnblogs.com/xiaojiang1025/p/6500520.html 串口作为一种非常简单的通信方式,才是嵌入式系统调试的王道,通过设置串口输出,我们可 ...

  6. Arduino串口的一些高级用法

    1.配置串口通信数据位.校验位.停止位通常我们使用Serial.begin(speed)来完成串口的初始化,这种方式,只能配置串口的波特率.而使用Serial.begin(speed, config) ...

  7. Arduino 串口的一些高级用法

    来源: 1.配置串口通信数据位.校验位.停止位 通常我们使用Serial.begin(speed)来完成串口的初始化,这种方式,只能配置串口的波特率. 而使用Serial.begin(speed, c ...

  8. Arduino - 串口操作函数与示例代码大全

    来源:https://blog.csdn.net/iracer/article/details/50334041 Arduino - 串口操作函数与示例代码大全 本文总结了Arduino常用串口操作函 ...

  9. TI CC2541的串口输出.

    http://blog.csdn.net/feilusia/article/details/47431659 基本上看上面这个博客的. 重点是: 1. 关闭流控, 在npi.h里面, 将 #defin ...

随机推荐

  1. 【JavaScript忍者秘籍】定时器

  2. The import javax.servlet cannot be resolved

    在STS中,突然把配置的Tomcat删除,换另外一个Tomcat使用时,出现:The import javax.servlet cannot be resolved.这个错误可能是服务器自带的serv ...

  3. 解决织梦DEDEcms指定arclist的特定ID排序的方法

    转载网址:http://blog.hrseo.net/xuexi/184.html 替换/include/taglib/arclist.lib.php这个文件,下载链接: http://pan.bai ...

  4. http 学习 1-1 chapter1-HTTP概述

    Web浏览器.服务器和相关的Web应用程序都是通过HTTP相互通信的.HTTP是现代全球因特网中使用的公共语言. 1.1HTTP – 因特网的多媒体信使 HTTP使用的是可靠的数据传输协议,确保数据在 ...

  5. Winform绑定数据源的几种方式?

    第一种:DataSet ds=new DataSet (); this.dataGridView1.DataSource=ds.Table[0]; 第二种:DataTable dt=new DataT ...

  6. 【引】objective-c,3:关于block

    原文参考博文: http://blog.devtang.com/2013/07/28/a-look-inside-blocks/ http://www.cnblogs.com/kesalin/arch ...

  7. linux apache 配置URL地址栏大小写不敏感配置

    1.apache配置 解决如下:把mod_speling.so放到apache目录下的 lib中... 然后修改http.conf文件, 加入:LoadModule speling_module /u ...

  8. 安装第三方Python模块,增加InfoPi的健壮性

    这3个第三方Python模块是可选的,不安装的话InfoPi也可以运行. 但是如果安装了,会增加InfoPi的健壮性. 目录 1.cchardet    自动检测文本编码 2.lxml    用于解析 ...

  9. Python底层socket库

    Python底层socket库将Unix关于网络通信的系统调用对象化处理,是底层函数的高级封装,socket()函数返回一个套接字,它的方法实现了各种套接字系统调用.read与write与Python ...

  10. How to create/restore a slave using GTID replication in MySQL 5.6

    MySQL 5.6 is GA! Now we have new things to play with and in my personal opinion the most interesting ...