原文地址 - https://www.arduino.cc/en/Tutorial/ASCIITable
ASCII字符表
本例展示了高級的串口打印功能,通過本功能可以在Arduino軟件(IDE)的串口監視器上生成一個字符和ASCII值的對應表,值分別用十進制、十六進制、八進制和二進制顯示。想了解更多關於ASCII字符的信息,請參看asciitable.com。
硬件需求
Arduino 或 Genuino 開發板
電路
無,但是開發板必須通過串口或者USB口連接到電腦。
代碼
程序在setup()等連接上串口以后,會一行一行的打印ASCII表直到最后一個可打印字符。打印完成后,設備進入while結構的死循環狀態。關閉和打開Aruino軟件(IDE)將會使開發板重啟並重新啟動程序。
/* ASCII表 用所有可能的格式輸出字節值: * 簡單的二進制值 * ASCII編碼的十進制、十六進制、八進制和二進制形式 想了解更多關於ASCII的知識, 參見 http://www.asciitable.com and http://en.wikipedia.org/wiki/ASCII 電路: 不需要外接電路。 編寫時間: 2006 作者:Nicholas Zambetti 更新:2012年4月9日 更新者: Tom Igoe 翻譯:蘇杭 翻譯日期:2016年12月14日 本示例代碼公布在公用網絡上. < http://www.zambetti.com > */ void setup() { //初始化串口並且等待端口開啟: Serial.begin(9600); while (!Serial) { ; // 等待串口連接。使用本地的USB端口才需要這樣。 } // 輸出帶有回車符號的標題 Serial.println("ASCII Table ~ Character Map"); } // 第一個看得見的ASCII字符"!"是數字23: int thisByte = 33; // 你也可以用單引號來寫ASCII字符。 // 例如字符"!"的ASCII值是33,因此你也可以這樣寫: //int thisByte = '!'; void loop() { // 原樣輸出數值,比如字符的簡單二進制形式。串口監視器把所有的字節碼顯示為ASCII字符, //因此第一個數字33將顯示'!'。 Serial.write(thisByte); Serial.print(", dec: "); // 用ASCII編碼十進制的字符形式輸出數值(十進制)。 // 十進制數是Serial.print()和Serial.println()默認的格式,因此不需要做改變 : Serial.print(thisByte); // 當然你樂意的話,也可以可以聲明以十進制格式輸出. //如果你把下面一句的注釋去掉和上面的效果是一樣的: // Serial.print(thisByte, DEC); Serial.print(", hex: "); // 輸出十六進制格式的字符串(十六進制): Serial.print(thisByte, HEX); Serial.print(", oct: "); // 輸出八進制格式的字符串(八進制); Serial.print(thisByte, OCT); Serial.print(", bin: "); // 輸出二進制形式的字符串(二進制) // 同時輸出回車換行: Serial.println(thisByte, BIN); // 如果輸出了最后一個可視字符 '~' 或 126, 停止: if (thisByte == 126) { // 你也可以用 if (thisByte == '~') { // 這個循環一直循環而且什么也不做 while (true) { continue; } } // 繼續下一個字符 thisByte++; }
輸出結果
ASCII Table ~ Character Map !, dec: 33, hex: 21, oct: 41, bin: 100001 ", dec: 34, hex: 22, oct: 42, bin: 100010 #, dec: 35, hex: 23, oct: 43, bin: 100011 $, dec: 36, hex: 24, oct: 44, bin: 100100 %, dec: 37, hex: 25, oct: 45, bin: 100101 &, dec: 38, hex: 26, oct: 46, bin: 100110 ', dec: 39, hex: 27, oct: 47, bin: 100111 (, dec: 40, hex: 28, oct: 50, bin: 101000 ), dec: 41, hex: 29, oct: 51, bin: 101001 *, dec: 42, hex: 2A, oct: 52, bin: 101010 +, dec: 43, hex: 2B, oct: 53, bin: 101011 ,, dec: 44, hex: 2C, oct: 54, bin: 101100 -, dec: 45, hex: 2D, oct: 55, bin: 101101 ., dec: 46, hex: 2E, oct: 56, bin: 101110 /, dec: 47, hex: 2F, oct: 57, bin: 101111 0, dec: 48, hex: 30, oct: 60, bin: 110000 1, dec: 49, hex: 31, oct: 61, bin: 110001 2, dec: 50, hex: 32, oct: 62, bin: 110010 3, dec: 51, hex: 33, oct: 63, bin: 110011 4, dec: 52, hex: 34, oct: 64, bin: 110100 5, dec: 53, hex: 35, oct: 65, bin: 110101 6, dec: 54, hex: 36, oct: 66, bin: 110110 7, dec: 55, hex: 37, oct: 67, bin: 110111 8, dec: 56, hex: 38, oct: 70, bin: 111000 9, dec: 57, hex: 39, oct: 71, bin: 111001 :, dec: 58, hex: 3A, oct: 72, bin: 111010 ;, dec: 59, hex: 3B, oct: 73, bin: 111011 <, dec: 60, hex: 3C, oct: 74, bin: 111100 =, dec: 61, hex: 3D, oct: 75, bin: 111101 >, dec: 62, hex: 3E, oct: 76, bin: 111110 ?, dec: 63, hex: 3F, oct: 77, bin: 111111 @, dec: 64, hex: 40, oct: 100, bin: 1000000 A, dec: 65, hex: 41, oct: 101, bin: 1000001 B, dec: 66, hex: 42, oct: 102, bin: 1000010 C, dec: 67, hex: 43, oct: 103, bin: 1000011 D, dec: 68, hex: 44, oct: 104, bin: 1000100 E, dec: 69, hex: 45, oct: 105, bin: 1000101 ...
另見
- increment, ++
- while()
- serial()
- Dimmer -移動鼠標來改變LED燈的亮度.
- Graph - 傳輸數據給電腦並且在進程中繪制圖形.
- Midi - 穿行傳輸音頻信息.
- MultiSerialMega - 使用Arduino和Genuino Mega的兩個可用的串口 .
- PhysicalPixel - 將數據發送到你的開發板,用程序或者Max/MSP來開關.
- ReadASCIIString - 解析一個用逗號分隔的數字型字符串來控制LED的亮度.
- SerialCallResponse - 用問答的方式發送多個數值.
- SerialCallResponseASCII - 用問答的方式發送多個數值,並且在發送前用ASCII碼編碼.
- SerialEvent - 演示如何使用 SerialEvent()函數.
- VirtualColorMixer - 用程序或者Max/MSP發送多個數值從Arduino到你的電腦.
最終版本編輯2015/07/28 SM
QQ 群
歡迎加入我們的大家庭 點擊加入 硬創聯盟 Arduino 群號 8580606
翻譯:硬創聯盟翻譯組翻譯員 – 蘇杭
審核:硬創聯盟翻譯組技術語文審核 - 神奇海螺,Lepton-華,成都阿傑