单片机的机器码是二进制数,即机器本身只能识别二进制数,所以需对键盘中常用的数、符号进行编码。在日常生活中,编码问题是经常会遇到的。例如:电话号码、房间编号、班级和学号等。这些编码问题的共同特点是采用十进制来为用户、房间、班级和学生等编号,编码位数和用户数的多少有关。例如:一个两位十进制数的编码最多容许100家用户装电话。
在单片机中,由于机器只能识别二进制数,因此必须事先为键盘上所有数字、字母和符号进行二进制编码,以便机器对它们加以识别、存储、处理和传送。和日常生活中的编码问题一样,所需编码的数字、字母和符号越多,二进制数字的位数也越长。
下面介绍几种单片机中常用的编码。
1.BCD(Binary-Coded Decimal)码
BCD码是十进制数的二进制码,BCD码的种类较多,常用的有8421码、2421码、余3码和格雷码等。
8421码是BCD码中的一种,因组成它的4位二进制数码的权为8、4、2、1而得名。8421码是一种采用4位二进制数来代表十进制数码的代码系统。在这个代码系统中,十组4位二进制数分别代表了0~9中的十个数字符号。8421 BCD编码见表1-4。
其中,0000B~1001B为8421的基本代码系统,代表0~9,1010B~1111B为非法码,逢10需再进一个4位二进制数。
大家知道,4位二进制数共有16种组合,其中0000B~1001B为8421的基本代码系统,1010B~1111B未被使用,成为非法码或冗余码。10以上的所有十进制数至少需要二位8421码字(即8位二进制数字)来表示,而且不应出现非法码,否则就不是真正的BCD数。因此BCD数是由BCD码构成的,以二进制数形式出现,逢十进位,但它并不是一个真正的二进制数,因为二进制数是逢二进位的。
例如:十进制数45的BCD码形式为01000101B(即45H),而它的等值二进制数为00101101B(即2DH)。
8421码的主要特点是:
1)简单直观。从高到低各位的权分别为8、4、2、1。(www.xing528.com)
2)不允许出现1010~1111。这六个代码在8421码中是非法码。
3)BCD码可方便地表示一位或多位十进制数,对每位十进制数必须用四位二进制代码表示。
4)BCD编码既具有二进制数的形式,又保持了十进制数的特点,可以作为人机联系的一种中间表示,也可以用它直接进行运算。
表1-4 8421 BCD编码表
2.ASCII码(American Standard Coded for Information Interchange)
由于单片机内部只能识别和处理二进制代码,所以字符必须按照一定的规则用一组二进制编码来表示。常见的ASCII码用7位二进制表示一个字符,它包括10个十进制数字(0~9)、52个英文大写和小写字母(A~Z,a~z)、34个专用符号和32个控制符号,共计128个字符。
ASCII码在单片机中,通常一个字节存放一个字符,一个字节右边的7位表示不同的字符代码,而最左边一位可以作奇偶校验位,用来检查错误,也可以用于西文字元和汉字的区分标志。ASCII字符编码表见附录1。由表中可见,数字和英文字母都是按顺序排列的,只要知道其中一个的二进制代码,不需要查表就可以推导出其他数字或字母的二进制代码。
另外,如果将ASCII码中0~9十个数字的二进制代码去掉最高三位“011”,正好与它们的二进制值相同,这不但使十进制数字进入单片机后易于压缩成4位代码,而且也便于进一步的信息处理。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。