8086汇编4位bcd码_二进制格雷码与自然二进制码的互换分析

c90eaa77585dc4ad4b4cbd0dc8b047ca.gif

在精确定位控制系统中,为了提高控制精度,准确测量控制对象的位置是十分重要的。目前,检测位置的办法有两种:其一是使用位置传感器,测量到的位移量由变送器经A/D转换成数字量送至系统进行进一步处理。此方法精度高,但在多路、长距离位置监控系统中,由于其成本昂贵,安装困难,因此并不实用;其二是采用光电轴角编码器进行精确位置控制。光电轴角编码器根据其刻度方法及信号输出形式,可分为增量式、绝对式以及混合式三种。而绝对式编码器是直接输出数字量的传感器,它是利用自然二进制或循环二进制(格雷码)方式进行光电转换的,编码的设计一般是采用自然二进制码、循环二进制码、二进制补码等。特点是不要计数器,在转轴的任意位置都可读出一个固定的与位置相对应的数字码;抗干扰能力强,没用累积误差;电源切断后位置信息不会丢失,但分辨率是由二进制的位数决定的,根据不同的精度要求,可以选择不同的分辨率即位数。目前有10位、11位、12位、13位、14位或更高位等多种。

 其中采用循环二进制编码的绝对式编码器,其输出信号是一种数字排序,不是权重码,每一位没有确定的大小,不能直接进行比较大小和算术运算,也不能直接转换成其他信号,要经过一次码变换,变成自然二进制码,在由上位机读取以实现相应的控制。而在码制变换中有不同的处理方式,本文着重介绍二进制格雷码与自然二进制码的互换。

一、格雷码(又叫循环二进制码或反射二进制码)介绍

  在数字系统中只能识别0和1,各种数据要转换为二进制代码才能进行处理,格雷码是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,自然二进制码可以直接由数/模转换器转换成模拟信号,但某些情况,例如从十进制的3转换成4时二进制码的每一位都要变,使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它是一种数字排序系统,其中的所有相邻整数在它们的数字表示中只有一个数字不同。它在任意两个相邻的数之间转换时,只有一个数位发生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。另外由于最大数与最小数之间也仅一个数不同,故通常又叫格雷反射码或循环码。下表为几种自然二进制码与格雷码的对照表:

a901b9274a5c1d98fcb02fb36b59391c.png

二、二进制格雷码与自然二进制码的互换 

1、自然二进制码转换成二进制格雷码 
自然二进制码转换成二进制格雷码,其法则是保留自然二进制码的最高位作为格雷码的最高位,而次高位格雷码为二进制码的高位与次高位相异或,而格雷码其余各位与次高位的求法相类似。 

b3831f36fe7a5d03aaa2a0cc83567bde.png

2、二进制格雷码转换成自然二进制码 二进制格雷码转换成自然二进制码,其法则是保留格雷码的最高位作为自然二进制码的最高位,而次高位自然二进制码为高位自然二进制码与次高位格雷码相异或,而自然二进制码的其余各位与次高位自然二进制码的求法相类似。

13086cd3f89f2d45dca578944fbb9b4a.png

三、二进制格雷码与自然二进制码互换的实现方法 

1、自然二进制码转换成二进制格雷码 
  A)、软件实现法(参见示例工程中的 Binary to Gray) 
根据自然二进制转换成格雷码的法则,可以得到以下的代码:

static unsigned int DecimaltoGray(unsigned int x)

{

return x^(x>>1);

}

//以上代码实现了unsigned int型数据到格雷码的转换,最高可转换32位自然二进制码,超出32位将溢出。

static int DecimaltoGray( int x)

{

return x^(x>>1);

}

//以上代码实现了 int型数据到格雷码的转换,最高可转换31位自然二进制码,超出31位将溢出。

上述代码即可用于VC控制程序中,也可以用于单片机控制程序中。在单片机程序设计时,若采用汇编语言编程,可以按相同的原理设计程序;若采用C语言编程,则可以直接利用上述代码,但建议用unsigned int函数。 
B)、硬件实现法 
根据自然二进制转换成格雷码的法则,可以得到以下电路图: 

ff1bce66dd363e3b7f27729974bb77d5.png

上图所示电路图即可用异或集成电路74ls136实现,也可以利用可编程器件PLD等编程实现。

2、二进制格雷码转换成自然二进制码 
A)、软件实现法(参见示例工程中的 Gray to Binary ) 
根据二进制格雷码转换成自然二进制码的法则,可以得到以下的三种代码方式:

· 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;

· x^=x^1;

· return x;

· }

· static unsigned int GraytoDecimal(unsigned int x)

· {

· int i;

· for(i=0;(1<

· {

· x^=x>>(1<

· }

· return x;

· }

//以上代码实现了unsigned int型数据到自然二进制码的转换,最高可转换32位格雷码,超出32位将溢出。将数据类型改为int型即可实现31位格雷码转换。 
上述代码即可用于VC控制程序中,也可以用于单片机控制程序中。在单片机程序设计时,若采用汇编语言编程,可以按相同的原理设计程序;若采用C语言编程,则可以直接利用上述代码,但建议用unsigned int函数。 
B)、硬件实现法 
根据二进制格雷码转换成自然二进制码的法则,可以得到以下电路图

9f22ba7565d7027de2acf1527f2ad415.png

今天的分享到这里就结束了,今天的内容是否对您有帮助呢,如果觉得我们的文章对您有帮助,劳烦您动动您的手指分享转发下我们的文章吧~

关注睿感电子科技订阅号~

带您玩转硬件,不迷路~

44c8a13e935e9385062fba099df727e5.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件工程结构化建模的方法和工具_软件工程系列-结构化设计方法2

本系列文章为笔记&#xff0c;内容根据北京大学《软件工程》MOOC 初始化模块结构图精化的启发式规则常见的启发式规则什么叫做“启发式”根据设计准则&#xff0c;从长期的软件开发实践中&#xff0c;总结出来的规则既不是设计目标&#xff0c;也不是设计时应该普遍遵循的原理常…

java四种权限的高低_Java(四种权限修饰符)

/*Java中有四种权限修饰符&#xff1a;public > protected > (default) > private同一个类(我自己) YES YES YES YES同一个包(我邻居) YES YES YES NO不同包子类(我儿子) YES YES NO NO不同包非子类(陌生人) YES NO NO NO注意事项&#xff1a;(default)并不是关键字“…

安全扫描失败无法上传_Apache Solr 未授权上传(RCE)漏洞的原理分析与验证

漏洞简介Apache Solr 发布公告&#xff0c;旧版本的ConfigSet API 中存在未授权上传漏洞风险&#xff0c;被利用可能导致 RCE (远程代码执行)。受影响的版本&#xff1a;Apache Solr6.6.0 -6.6.5Apache Solr7.0.0 -7.7.3Apache Solr8.0.0 -8.6.2安全专家建议用户尽快升级到安全…

php session页面传值,PHP session在页面间传递的问题

PHP session在页面间传递的问题:前提: 使用codeIgniter的框架, 使用PHP自带的session1. 在纯apache服务器上没有问题2. 在Nginx的apache模式下, 独立于codeIgniter框架外的页面无问题3. 在Nginx的apache模式下, 置于codeIgniter框架内的页面, 页面间session的传递有问题, 即一个…

html5怎么改为vue_Vue实战——编程式导航打开新窗口,登录状态本地存储

近日来&#xff0c;我陆续的分享了vue相关的系列文章&#xff0c;以新闻列表项目为载体&#xff0c;实战的方式介绍了vue及其周边的技术。本文承接前文&#xff0c;不断通过项目迭代的方式继续分享vue相关的知识。目前Vue实战系列文章已形成了目录&#xff0c;各位感兴趣的朋友…

python转cpp_python转c工具

广告关闭 腾讯云11.11云上盛惠 &#xff0c;精选热门产品助力上云&#xff0c;云服务器首年88元起&#xff0c;买的越多返的越多&#xff0c;最高返5000元&#xff01; compute.proto # python_out目录指定 xxxx_pb2.py的输出路径&#xff0c;我们指定为. 当前路径# grpc_pytho…

80端口为什么要备案_搞网站的你,不了解一下共享虚拟主机和备案问题

正文共&#xff1a;1474字 14图&#xff0c;预估阅读时间&#xff1a;4 分钟今天分享的这一切要从域名备案说起。先科普一下&#xff0c;平时我们访问网站都是用域名访问的&#xff0c;通过DNS服务器将域名解析为IP地址(你知道上网时输入的URL是怎么解析成IP地址的吗&#xff1…

jqprint获取打印页数_高年级应用题40道,假期快给孩子打印练习吧!(含答案)...

1.王爷爷家养的4头奶牛每个星期产奶896千克&#xff0c;平均1头奶牛每天产多少奶呢&#xff1f;2.4辆汽车3次运水泥960袋&#xff0c;平均每辆汽车每次运水泥多少袋&#xff1f;3.水波小学每间教室有3个窗户&#xff0c;每个窗户安装12块玻璃&#xff0c;9间教室一共安装多少块…

cstring移除指定字符串_从String中移除空白字符的多种方式!?差别竟然这么大!...

作者 | Hollis来源 | Hollis字符串&#xff0c;是Java中最常用的一个数据类型了。我们在日常开发时候会经常使用字符串做很多的操作。比如字符串的拼接、截断、替换等。这一篇文章&#xff0c;我们介绍一个比较常见又容易被忽略的一个操作&#xff0c;那就是移除字符串中的空格…

matlab 遗传优化算法_转载 | 遗传算法解决TSP问题的MATLAB实现

问题定义&#xff1a;巡回旅行商问题给定一组n个城市和俩俩之间的直达距离&#xff0c;寻找一条闭合的旅程&#xff0c;使得每个城市刚好经过一次且总的旅行距离最短。TSP问题也称为货郎担问题&#xff0c;是一个古老的问题。最早可以追溯到1759年Euler提出的骑士旅行的问题。1…

php 如何配置 redis,php 如何设置redis

php设置redis的方法&#xff1a;首先安装redis服务及PHP redis驱动&#xff1b;然后打开php.ini文件&#xff1b;接着增加内容为“extensionredis.so”&#xff1b;最后重启php-fpm或apache即可。PHP 设置使用 Redis安装开始在 PHP 中使用 Redis 前&#xff0c; 我们需要确保已…

java数组有跨类建立对象_Java性能优化的45个细节(珍藏版)

点击上面 蓝色字体关注我们技术 / 架构 / 职场 / 面试 关注即送&#xff1a;4000G 架构师视频来源&#xff1a;http://t.cn/EiP42VF在JAVA程序中&#xff0c;性能问题的大部分原因并不在于JAVA语言&#xff0c;而是程序本身。养成良好的编码习惯非常重要&#xff0c;能够显著地…

java 数据纠错,纠错码简介

纠错码是个什么东西引出网络中的通信基于TCP和UDP两个通信协议, 这大家都知道的, 什么TCP的三次握手等等, 面试经常被问到. 三次握手是为了保证连接的正确建立. 但是, 在通信的时候, 你如何保证你的消息正确送达了呢? 有人说了, 有收到请求的响应包. 但我说的不是这个,比如说,…

dataframe修改数据_数据处理进阶pandas入门(一)

前言NumPy作为数据处理的利器&#xff0c;在对数据进行科学计算、存储处理大型矩阵等方面为我们带来了极大的方便&#xff0c;但对于更进一步的数据分析任务&#xff0c;文件操作等方面显得有些吃力。于是&#xff0c;作为NumPy的进阶库pandas应运而生&#xff0c;在实际应用中…

java6个人抽奖抽三个人,基于Java的抽奖逻辑

小组在做一个抽奖系统&#xff0c;现在给我分配到了抽奖逻辑这方面的实现。EMMM&#xff0c;拿到分配的时候是懵B的。老大给的需求图给的关键表结构DROP TABLE IF EXISTS dd_annual_meeting_check;CREATE TABLE dd_annual_meeting_check (check_id int(255) NOT NULL AUTO_INCR…

python自动化教程_Python 任务自动化工具 tox 教程

1、tox 能做什么&#xff1f; 细分的用途包括&#xff1a; 创建开发环境 运行静态代码分析与测试工具 自动化构建包 针对 tox 构建的软件包运行测试 检查软件包是否能在不同的 Python 版本/解释器中顺利安装 统一持续集成&#xff08;CI&#xff09;和基于命令行的测试 创建和部…

php 添加inotify扩展,php inotify 扩展的安装

一、安装1) 从内核和目录里面查看是否支持inotify[rootnfs01 ~]# uname -r2.6.32-573.el6.x86_64[rootnfs01 ~]#** ls -l /proc/sys/fs/inotify/** -→主要查看下面有没有三个目录总用量 0-rw-r--r-- 1 root root 0 1月 21 13:03 max_queued_events-rw-r--r-- 1 root root…

简述python执行原理_Python程序的执行原理(1)(2)

Python程序的执行原理(1)&#xff08;2&#xff09; 1. 过程概述 Python先把代码&#xff08;.py文件&#xff09;编译成字节码&#xff0c;交给字节码虚拟机&#xff0c;然后虚拟机一条一条执行字节码指令&#xff0c;从而完成程序的执行。 2. 字节码 字节码在Python虚拟机程序…

python文本特征选择,机器学习--特征选择(Python实现)

特征选择就是从原始特征中选取一些最有效的特征来降低维度,&#xff0c;提高模型泛化能力减低过拟合的过程&#xff0c;主要目的是剔除掉无关特征和冗余特征&#xff0c;选出最优特征子集&#xff1b;常见的特征选择方法可以分为3类&#xff1a;过滤式(filter)、包裹式(wrapper…

用python画风车_python接口自动化()一)(实现一款简单的接口自动化框架)

python接口自动化一&#xff08;设计一款自己的接口自动化框架&#xff09; 一、起因&#xff1a; 前面学习过了python接口requests来进行接口测试&#xff0c;但是在框架选择上还是选择的unittest。当接口数量不怎么多时还好&#xff0c;但是当接口的量上去了&#xff0c;一切…