格雷码转二进制原理

  • 格式:wps
  • 大小:19.50 KB
  • 文档页数:3

下载文档原格式

  / 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

x^=x^1; return x; } static unsigned int graytodecimal(unsigned int x) { int i; for(i=0;(1 < <i) <sizeof(x)*8;i++) {
x^=x> > (1 < <i); } return x; } //以上代码实现了 unsigned int 型数据到自然二进制码的转换,最高可转换 32 位格雷码, 超出 32 位将溢出。将数据类型改为 int 型即可实现 31 位格雷码转换。 上述代码即可用于 vc 控制程序中,也可以用于单片机控制程序中。在单片机程序设计 时,若采用汇编语言编程,可以按相同的原理设计程序;若采用 c 语言编程,则可以直接利 用上述代码,但建议用 unsigned int 函数
码的其余各位与次高位自然二进制码的求法相类似。
三、二进制格雷码与自然二进制码互换的实现方法 1、自然二进制码转换成二进制格雷码
a)、软件实现法(参见示例工程中的 binary to gray) 根据自然二进制转换成格雷码的法则,可以得到以下的代码:
static unsigned int decimaltogray(unsig百度文库ed int x) {
return x^(x> > 1); }
//以上代码实现了 unsigned int 型数据到格雷码的转换,最高可转换 32 位自然二进制码, 超出 32 位将溢出。
static int decimaltogray( int x) {
return x^(x> > 1); }
//以上代码实现了 int 型数据到格雷码的转换,最高可转换 31 位自然二进制码,超出 31 位将溢出。
根据二进制格雷码转换成自然二进制码的法则,可以得到以下的三种代码方式: static unsigned int graytodecimal(unsigned int x) {
unsigned int y = x; while(x> > =1) y ^= x; return y; } static unsigned int graytodecimal(unsigned int x) { x^=x> > 16; x^=x> > 8; x^=x> > 4; x^=x> > 2;
其中采用循环二进制编码的绝对式编码器,其输出信号是一种数字排序,不是权重码, 每一位没有确定的大小,不能直接进行比较大小和算术运算,也不能直接转换成其他信号, 要经过一次码变换,变成自然二进制码,在由上位机读取以实现相应的控制。而在码制变换 中有不同的处理方式,本文着重介绍二进制格雷码与自然二进制码的互换。 一、格雷码(又叫循环二进制码或反射二进制码)介绍
上述代码即可用于 vc 控制程序中,也可以用于单片机控制程序中。在单片机程序设计 时,若采用汇编语言编程,可以按相同的原理设计程序;若采用 c 语言编程,则可以直接利 用上述代码,但建议用 unsigned int 函数。 b)、硬件实现法
根据自然二进制转换成格雷码的法则,可以得到以下电路图:
上图所示电路图即可用异或集成电路 74ls136 实现,也可以利用可编程器件 pld 等编程 实现。 2、二进制格雷码转换成自然二进制码 a)、软件实现法(参见示例工程中的 gray to binary )
在精确定位控制系统中,为了提高控制精度,准确测量控制对象的位置是十分重要的。目前, 检测位置的办法有两种:其一是使用位置传感器,测量到的位移量由变送器经 a/d 转换成数 字量送至系统进行进一步处理。此方法精度高,但在多路、长距离位置监控系统中,由于其 成本昂贵,安装困难,因此并不实用;其二是采用光电轴角编码器进行精确位置控制。光电 轴角编码器根据其刻度方法及信号输出形式,可分为增量式、绝对式以及混合式三种。而绝 对式编码器是直接输出数字量的传感器,它是利用自然二进制或循环二进制(格雷码)方式 进行光电转换的,编码的设计一般是采用自然二进制码、循环二进制码、二进制补码等。特 点是不要计数器,在转轴的任意位置都可读出一个固定的与位置相对应的数字码;抗干扰能 力强,没用累积误差;电源切断后位置信息不会丢失,但分辨率是由二进制的位数决定的, 根据不同的精度要求,可以选择不同的分辨率即位数。目前有 10 位、11 位、12 位、13 位、 14 位或更高位等多种。
在数字系统中只能识别 0 和 1,各种数据要转换为二进制代码才能进行处理,格雷码是 一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码, 它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反 非常方便。格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,自然二进制码可 以直接由数/模转换器转换成模拟信号,但某些情况,例如从十进制的 3 转换成 4 时二进制 码的每一位都要变,使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它是 一种数字排序系统,其中的所有相邻整数在它们的数字表示中只有一个数字不同。它在任意 两个相邻的数之间转换时,只有一个数位发生变化。它大大地减少了由一个状态到下一个状 态时逻辑的混淆。另外由于最大数与最小数之间也仅一个数不同,故通常又叫格雷反射码或 循环码。下表为几种自然二进制码与格雷码的对照表: 十进制数 自然二进制数 格雷码 十进制数 自然二进制数 格雷码
自然二进制码转换成二进制格雷码,其法则是保留自然二进制码的最高位作为格雷码的 最高位,而次高位格雷码为二进制码的高位与次高位相异或,而格雷码其余各位与次高位的 求法相类似。
2、二进制格雷码转换成自然二进制码 二进制格雷码转换成自然二进制码,其法则是保留格雷码的最高位作为自然二进制码的
最高位,而次高位自然二进制码为高位自然二进制码与次高位格雷码相异或,而自然二进制
0 0000 0000 8 1000 1100 1 0001 0001 9 1001 1101 2 0010 0011 10 1010 1111 3 0011 0010 11 1011 1110 4 0100 0110 12 1100 1010 5 0101 0111 13 1101 1011 6 0110 0101 14 1110 1001 7 0111 0100 15 1111 1000 二、二进制格雷码与自然二进制码的互换 1、自然二进制码转换成二进制格雷码