- 單片機C語言程序設計實訓100例:基于STC8051+Proteus仿真與實戰
- 彭偉
- 875字
- 2022-05-05 20:18:21
1.9 字符編碼
在設計英文或數字等字符(字符串)顯示程序或串口收發信息等程序時,必須熟悉標準的ASCII編碼表。ASCII編碼(0x00~0x7F)如表1-12所示。由表1-12可知:
? 數字字符'0'~'9'的ASCII編碼為0x30~0x39,與數字0~9的ASCII編碼差值為0x30。兩者在相互轉換時可相0x30或者直接或'0'。
? 英文字符'A'~'Z'、'a'~'z'的ASCII編碼為0x41~0x5A、0x61~0x7A。英文字符在大小寫轉換時可大0x20(因為0x61-0x41=0x20)。
? 字符串結束標識符'\0'的ASCII編碼為0x00,即NUL或NULL(非打印字符)。
? 常用的空格字符(SP/SPACE)的ASCII編碼為0x20。
? 在向串口發送字符串時,常以回車符/換行符(CR/LF)為結束標志,回車符/換行符的ASCII編碼分別為0x0D、0x0A。
? 表1-12中前兩行所列出的其他特殊控制字符(Control Characters)雖然多數已被廢止,但有部分控制字符名稱仍應用于某些現代產品設計。
表1-12 ASCII編碼(0x00~0x7F)

例如,某種射頻讀卡器(RFID)模塊所設計的鏈路層協議以STX、ETX(文本起始符/結束符)作為數據幀的起始標識符,不過該廠商將STX與ETX的編碼定義為0x82與0x83。另外,表1-12中的應答與非應答字符(ACK/NAK/NACK),其概念仍應用于全書所有有關I2C器件的程序設計,所不同的是I2C協議中的應答與非應答僅僅是一個脈沖位(0/1),而不再是一個字節編碼。
在實際應用過程中,如果臨時要查詢某些字符編碼,包括中文字符編碼,可先用記事本(NotePad)輸入字符內容,然后用超級編輯器(UltraEdit)打開,切換到十六進制模式查看字符編碼。
用NotePad與UltraEdit獲取字符編碼如圖1-15所示。從圖1-15中可以看到,用NotePad輸入的字符(包括中文字符)以及在UltraEdit中查看的十六進制字符編碼的效果。UltraEdit不僅顯示了所輸入英文數字等字符的ASCII編碼(小于0x80),而且顯示了所輸入漢字的內碼。例如,“8051單片機C語言程序設計”的編碼為“38 30 35 31 B5 A5 C6 AC BB FA43 D3 EF D1 D4 B3 CC D0 F2 C9 E8 BC C6”。在圖1-15的標底色編碼部分,除“38 30 35 31”與“43”為數字與英文半角字符“8、0、5、1、C”的編碼以外,其他編碼全部大于或等于0xA0,且每兩字節(漢字內碼)表示一個漢字。8051單片機雖然支持在源程序中直接使用中文字符串或中英文混合字符串,且偶爾會編譯正常通過,但實際運行時卻會出現異常的情況,此時可考慮將中文字符串以編碼(漢字內碼)的方式提供。

圖1-15 用NotePad與UltraEdit獲取字符編碼
- 嵌入式軟件系統測試:基于形式化方法的自動化測試解決方案
- OpenStack Cloud Computing Cookbook(Fourth Edition)
- C語言最佳實踐
- Animate CC二維動畫設計與制作(微課版)
- Windows Server 2012 Unified Remote Access Planning and Deployment
- 程序員修煉之道:通向務實的最高境界(第2版)
- Corona SDK Mobile Game Development:Beginner's Guide(Second Edition)
- Mastering Web Application Development with AngularJS
- JSP程序設計實例教程(第2版)
- Extending Unity with Editor Scripting
- Emotional Intelligence for IT Professionals
- UML軟件建模
- 超簡單:Photoshop+JavaScript+Python智能修圖與圖像自動化處理
- Learn Linux Quickly
- Getting Started with Windows Server Security