單片機中數制與數制的轉換是怎樣實現的

2022-05-24     大方老師單片機

原標題:單片機中數制與數制的轉換是怎樣實現的

單片機中數制與數制的轉換是怎樣實現的

\\\插播一條:我自己在今年年初錄製了一套還比較系統的入門單片機教程,想要的同學找我--)免費的。最近比較閒,帶做畢設,帶學生參加省級以上比///

單片機中數制與數制的轉換是怎樣實現的

關於數制之間的轉換,其實在數字電路的書中會講到,也很容易理解。在我們生活中,十進位經常被我們用:0,1,2,3,4,5,6,7,8,9,逢十進一。那在單片機運用中,常見數制有:二進位、八進位、十進位、十六進位。

在單片機編程中經常應用到二進位和十六進位。比如現在有八LED燈,在某一時刻,前四個燈全亮,後四個燈全滅LED正極接電源,那麼51單片P1八個口控LED的亮(輸出低電LED亮,高電LED滅),前四LED分別連P1.0~P1.3,後四個連P1.4~P1.7。這一段的代碼用二進位和十六進位分別可以這樣編寫:

二進位代碼:

P1.0=0;P1.1=0P1.2=0;P1.3=0;P1.4=1;P1.5=1;P1.6=1;P1.7=1;

十六進位代碼P1=0xF0;

由此可見,單片機中利用到多個串口時,編程使用十六進位比較方便,另外如果要循環移位常用十六進位。單片機中利用到單個串口時,編程使用二進位比較方便

一、進位簡略介;

1、二進位:使用數碼只01兩個數字,逢二進一

一般使用單片IO輸出兩種狀態:高電平、低電平。一般0表示低電平1表示高電平。編程控制就是以這個概念來編寫程序邏輯。如果3.3V系統,高電平就3.3V,如果5V,那高電平就5V,低電平0V。如果做輸出口的話,就是單片機通過軟體置位相關寄存器讓埠置高電平或低電平,達到電平輸出的目的,如果做輸入口,就是單片機捕捉埠的電平然後置位相關寄存器,然後軟體讀取寄存器01,達到輸入作用。

2、八進位:使用數碼0~7共八個數字,逢八進一

3、十進位:使用數碼0~9共十個數字,逢十進一

4、十六進位:數碼0~9A~F共十六個數,逢十六進一

十六進位在單片機中經常使用,程序中會用到,通訊會用到,程序生成HEX文件也是十六進位的。bin文件是二進位文件。

二、進位間的轉換

1、二進位與十進位之間的轉;

二進位轉十進位:把二進位數按權展開、相加即得十進位數

十進位轉二進:十進位數2取余法,即十進位數2,餘數為權位上的數,得到的商值繼續2,依此步驟繼續向下運算直到商0為止。

2、二進位與八進位之間的轉換;

二進位轉八進位:3位二進位數按權展開相加得1位八進位數3位二進位轉成八進位是從右到左開始轉換,不足時0

八進位轉成二進位:八進位數通過2取余法,得到二進位數,對每個八進位3個二進位,不足時在最左邊補零。

3、二進位與十六進位之間的轉換;

二進位轉十六進位:與二進位轉八進位方法近似,八進位是取三合一,十六進位是取四合一4位二進位轉成十六進位是從右到左開始轉換,不足時0

十六進位轉二進位:十六進位數通過2取余法,得到二進位數,對每個十六進位4個二進位,不足時在最左邊補零。

4、十進位與八進位與十六進位之間的轉換

十進位轉八進位或者十六進位有兩種方法第一:間接法把十進位轉成二進位,然後再由二進位轉成八進位或者十六進位。直接法把十進位轉八進位或者十六進位依照

綠色圖標で】liutianwang123

文章來源: https://twgreatdaily.com/zh/9f50e3adf8a578f88ad339c022c4ab61.html