吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

二進制格雷碼與自然二進制碼的互換分析

454398 ? 來源:博客園 ? 作者: 半面人 ? 2020-09-23 16:23 ? 次閱讀

在精確定位控制系統中,為了提高控制精度,準確測量控制對象的位置是十分重要的。目前,檢測位置的辦法有兩種:其一是使用位置傳感器,測量到的位移量由變送器經A/D轉換成數字量送至系統進行進一步處理。此方法精度高,但在多路、長距離位置監控系統中,由于其成本昂貴,安裝困難,因此并不實用;其二是采用光電軸角編碼器進行精確位置控制。光電軸角編碼器根據其刻度方法及信號輸出形式,可分為增量式、絕對式以及混合式三種。而絕對式編碼器是直接輸出數字量的傳感器,它是利用自然二進制或循環二進制(格雷碼)方式進行光電轉換的,編碼的設計一般是采用自然二進制碼、循環二進制碼、二進制補碼等。特點是不要計數器,在轉軸的任意位置都可讀出一個固定的與位置相對應的數字碼;抗干擾能力強,沒用累積誤差;電源切斷后位置信息不會丟失,但分辨率是由二進制的位數決定的,根據不同的精度要求,可以選擇不同的分辨率即位數。目前有10位、11位、12位、13位、14位或更高位等多種。

其中采用循環二進制編碼的絕對式編碼器,其輸出信號是一種數字排序,不是權重碼,每一位沒有確定的大小,不能直接進行比較大小和算術運算,也不能直接轉換成其他信號,要經過一次碼變換,變成自然二進制碼,在由上位機讀取以實現相應的控制。而在碼制變換中有不同的處理方式,本文著重介紹二進制格雷碼與自然二進制碼的互換。

一、格雷碼(又叫循環二進制碼或反射二進制碼)介紹

在數字系統中只能識別0和1,各種數據要轉換為二進制代碼才能進行處理,格雷碼是一種無權碼,采用絕對編碼方式,典型格雷碼是一種具有反射特性和循環特性的單步自補碼,它的循環、單步特性消除了隨機取數時出現重大誤差的可能,它的反射、自補特性使得求反非常方便。格雷碼屬于可靠性編碼,是一種錯誤最小化的編碼方式,因為,自然二進制碼可以直接由數/模轉換器轉換成模擬信號,但某些情況,例如從十進制的3轉換成4時二進制碼的每一位都要變,使數字電路產生很大的尖峰電流脈沖。而格雷碼則沒有這一缺點,它是一種數字排序系統,其中的所有相鄰整數在它們的數字表示中只有一個數字不同。它在任意兩個相鄰的數之間轉換時,只有一個數位發生變化。它大大地減少了由一個狀態到下一個狀態時邏輯的混淆。另外由于最大數與最小數之間也僅一個數不同,故通常又叫格雷反射碼或循環碼。下表為幾種自然二進制碼與格雷碼的對照表:

二、二進制格雷碼與自然二進制碼的互換

1、自然二進制碼轉換成二進制格雷碼
自然二進制碼轉換成二進制格雷碼,其法則是保留自然二進制碼的最高位作為格雷碼的最高位,而次高位格雷碼為二進制碼的高位與次高位相異或,而格雷碼其余各位與次高位的求法相類似。


2、二進制格雷碼轉換成自然二進制碼
二進制格雷碼轉換成自然二進制碼,其法則是保留格雷碼的最高位作為自然二進制碼的最高位,而次高位自然二進制碼為高位自然二進制碼與次高位格雷碼相異或,而自然二進制碼的其余各位與次高位自然二進制碼的求法相類似。

三、二進制格雷碼與自然二進制碼互換的實現方法

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)、硬件實現法
根據自然二進制轉換成格雷碼的法則,可以得到以下電路圖:


上圖所示電路圖即可用異或集成電路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)、硬件實現法
根據二進制格雷碼轉換成自然二進制碼的法則,可以得到以下電路圖:


上圖所示電路圖即可用異或集成電路74ls136實現,也可以利用可編程器件PLD等編程實現。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2553

    文章

    51390

    瀏覽量

    756572
  • 編碼器
    +關注

    關注

    45

    文章

    3667

    瀏覽量

    135237
  • 數字系統
    +關注

    關注

    0

    文章

    145

    瀏覽量

    20907
  • 位置傳感器
    +關注

    關注

    3

    文章

    271

    瀏覽量

    27569
  • 定位控制系統

    關注

    0

    文章

    3

    瀏覽量

    6723
收藏 人收藏

    評論

    相關推薦

    什么是

    (Gray code),又叫循環二進制碼或反射二進制碼 在數字系統中只能識別0和1,各種數據要轉換為
    發表于 11-11 09:34 ?7420次閱讀
    什么是<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>

    二進制碼詳解

    的權為21=2,b2位的權為22=4,b3位的權為23=8,例: 0111= 0×8 + 1×4 + 1×2 + 1×1=7  一般情況下,十進制二進制碼之間的關系可表示為:(N)D= b3 W3 + b2 W2 + b1
    發表于 04-06 23:55

    二進制自然二進制碼互換

    變換,變成自然二進制碼,在由上位機讀取以實現相應的控制。而在制變換中有不同的處理方式,本文著重介紹二進制
    發表于 03-08 14:16

    簡介及格二進制的轉換程序

    *由上面的數據可看出.如果,按照序號01327645的方式遍歷.其編 * 實值是按自然數順序排列.反之,如果按此順序遍歷其
    發表于 04-22 09:00

    簡介及格二進制的轉換程序

    簡介及格二進制的轉換程序
    發表于 01-16 11:52 ?5059次閱讀

    二進制碼

    二進制碼   數字系統中的信息可分為兩類,一類是數值,另一類是文字符號(包括控制符)。  代碼:采用一定位數的二進制數碼來表示文字符號
    發表于 04-06 23:55 ?4629次閱讀
    <b class='flag-5'>二進制碼</b>

    采用減法計數簡化~十進制二進制碼變換

    采用減法計數簡化~十進制二進制碼變換
    發表于 04-10 10:06 ?657次閱讀
    采用減法計數簡化<b class='flag-5'>二</b>~十<b class='flag-5'>進制</b>一<b class='flag-5'>二進制碼</b>變換

    二進制碼——葛來變換器

    二進制碼——葛來變換器
    發表于 04-10 10:07 ?611次閱讀
    <b class='flag-5'>二進制碼</b>——葛來<b class='flag-5'>碼</b>變換器

    二進制編碼和二進制數據

    二進制編碼和二進制數據   二進制編碼是計算機內使用最多的制,它只使用兩個基本符號"0"和"1",并且通過由這兩個符號組成的
    發表于 10-13 16:22 ?4823次閱讀

    bcd二進制碼有什么區別

    二進制是由1和0兩個數字組成的,它可以表示兩種狀態,即開和關。所有輸入電腦的任何信息最終都要轉化為二進制。目前通用的是ASCII。最基本的單位為bit。BCD亦稱
    發表于 11-24 09:26 ?4.1w次閱讀

    二進制公式

    在一組數的編碼中,若任意兩個相鄰的代碼只有一位二進制數不同,則稱這種編碼為(Gray Code),另外由于最大數與最小數之間也僅一位數不同,即“首尾相連”,因此又稱循環
    的頭像 發表于 03-02 14:47 ?3.9w次閱讀
    <b class='flag-5'>二進制</b>轉<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>公式

    二進制的轉換

    ,又叫循環二進制碼或反射二進制碼
    的頭像 發表于 03-02 15:48 ?1.8w次閱讀
    <b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>與<b class='flag-5'>二進制</b>的轉換

    FPGA學習系列:33. 二進制二進制的設計

    錯誤或輸入錯誤。使用可以避免這種錯誤。有多種編碼形式。
    的頭像 發表于 08-28 16:16 ?3351次閱讀

    如何把二進制轉換為是如何判斷讀空寫滿呢?

    在傳遞讀寫時鐘域的指針使用來傳遞,如何把二進制轉換為
    的頭像 發表于 09-15 09:38 ?8382次閱讀
    如何把<b class='flag-5'>二進制</b>轉換為<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>?<b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>是如何判斷讀空寫滿呢?

    二進制轉換

    是一種循環二進制編碼,特點是相鄰數變化時只有一位數據跳變。
    的頭像 發表于 01-17 11:15 ?5401次閱讀
    <b class='flag-5'>格</b><b class='flag-5'>雷</b><b class='flag-5'>碼</b>與<b class='flag-5'>二進制</b>轉換
    百家乐体育直播| 海威百家乐官网赌博机| 利都百家乐国际赌场娱乐网规则 | 尊龙国际娱乐| 单机百家乐在线小游戏| 百家乐官网知敌便能制胜| 百家乐bp| 蓝盾百家乐官网的玩法技巧和规则 | 百家乐娱乐平台网77scs| 澳门百家乐官网游戏| 波克棋牌赢话费下载| 帝王百家乐新足球平台| 澳门百家乐官网博牌| 大发888娱乐场 d188| 百家乐博彩平台| 百家乐官网变牌器| 赌场风云主题曲| 丽星百家乐的玩法技巧和规则| 百家乐官网博赌场| 丰城市| 威尼斯人娱乐城游戏| 战神百家乐娱乐| 真人百家乐官网输钱惨了| 天津水果机遥控器| 百家乐赌法| 百家乐官网007| 华安县| 大发888王博被带走| 百家乐游戏机分析仪| 澳门百家乐官网游戏说明书| 娱乐城设计| 神娱乐百家乐的玩法技巧和规则 | 百家乐包赢| 百家乐官网押注方法| 百家乐官网是赌博吗| 大发888游戏代冲省钱技巧| 凯旋门百家乐娱乐城| 稳赢百家乐官网的玩法技巧| 曼哈顿娱乐城| 大发888宫网| 网络百家乐金海岸破解软件|