官术网_书友最值得收藏!

1.2 單片機基礎知識

在日常的生活當中,人們習慣用十進制來表示數,但計算機只能識別二進制數。二進制是計算機中數制的基礎。

1.2.1 數制與數制間的轉換

1. 數制

按進位的原則進行計數,稱為進位計數制,簡稱“數制”。數制有多種,在計算機中常用的有十進制數、二進制數和十六進制數。

(1)十進制數

按“逢十進一”的原則進行計數,它的基數為“十”,所使用的數碼為0~9共10個數字。對于任意4位十進制數,都可以寫成如下形式:

D3D2D1D0=D3×103+D2×102+D1×101+D0×100

式中,D3、D2、D1、D0稱為數碼;10為基數;103、102、101、100是各位數碼的“位權”,該式稱為按位權展開式。

例:30681=3×104+0×103+6×102+8×101+1×100

(2)二進制數

按“逢二進一”的原則進行計數,它的基數為“二”,其使用的數碼只有0和1兩個。二進制數在計算機中容易實現,可以用電路的高電平表示“1”,低電平表示“0”。或者用三極管截止時集電極的輸出表示“1”,導通時集電極輸出表示“0”。

對于任意一個4位二進制數,都可以寫成如下形式:

B3 B 2 B 1 B 0=B 3×23+B 2×22+B 1×21+B 0×20

式中,B 3、B 2、B 1、B 0 稱為數碼;2為基數;23、22、21、20 是各位數碼的“位權”。

例:(1101)2=1×23+1×22+0×21+1×20=13

由于二進制運算實行的借進位規則是“逢二進一,借一當二”,因此二進制的運算規則相當簡單。

加法:0+0=0;0+1=1;1+0=1;1+1=10

減法:0-0=0;1-0=1;1-1=0;10-1=1

乘法:0×0=0;0×1=0;1×0=0;1×1=1

除法:0÷1=0;1÷1=1

例:求(1101)2×(101)2的值。

因此,可得(1101)2 ×(101)2=(100001)2

(3)十六進制數

由于二進制位數太長,不易記憶和書寫,因此人們又提出了十六進制的書寫形式。在單片機的C語言程序設計中經常用到十六進制數。

按“逢十六進一”的原則進行計數,它的基數為“十六”,所使用的數碼共有16個:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E和F。其中,A、B、C、D、E和F所代表的數的大小相當于十進制的10、11、12、13、14和15。對于任意4位一個十六進制數,都可以寫成如下形式:

H3 H 2 H 1 H 0=H 3×163+H 2×162+H 1×161+H 0×160

式中,H 3、H 2、H 1、H 0稱為數碼;16為基數;163、162、161、160是各位數碼的“位權”。

例:(120B)16=1×163+2×162+0×161+11×160=4619

2. 數制間的轉換

將一個數由一種數制轉換成另一種數制稱為數制間的轉換。

(1)十進制數轉化為二進制數

十進制數轉化為二進制數采用“除2取余法”,即將十進制數依次除以2,并依次記下余數,一直除到商為0,最后把全部余數按相反次序排列,就能得到二進制數。

例:把十進制數45轉化為二進制數。

因此可得45=(101101)2

(2)二進制數轉化為十進制數

二進制數轉化為十進制數采用“位權法”,即把各非十進制數按位權展開,然后求和。

例:把(1011)2轉化為十進制數。

(1011)2=1×23+0×22+1×21+1×20=11

(3)二進制數轉化為十六進制數

將二進制數轉化為十六進制數的規則是,從右向左,每4位二進制數轉化為1位十六進制數,不足部分用0補齊。

例:把(101101101101)2轉化為十六進制數。

把(101101101101)2寫成下面形式:

所以,(101101101101)2=(B6D)16

(4)十六進制數轉化為二進制數

十六進制數轉化為二進制數的方法是,從左到右將待轉換的十六進制數中的每個數碼依次用4位二進制數表示。

例:將十六進制數(31AB)16轉化為二進制數將每位十六進制數寫成4位二進制數,即

因此可得,(31AB)16=(0011000110101011)2

1.2.2 單片機中數的表示方法及常用數制的對應關系

1. 數的表示方法

為了便于書寫,特別是方便編程時書寫,規定在數字后加一個字母以示區別。二進制后加B;十六進制后加H;十進制后面加D,其中D可以省略。

例:3BH=00111011B=59D=59

2. 常用數制的對應關系

表1-1列出了常用數值的各種數制間的對應關系。這在單片機C語言程序設計中經常用到,需要熟練掌握。

1.2.3 邏輯數據的表示

表1-1 常用數制的對應關系

為了使計算機具有邏輯判斷能力,就需要邏輯數據,并能對它們進行邏輯運算,得出一個邏輯式的判斷結果。每個邏輯變量或邏輯運算的結果產生邏輯值,該邏輯值只能取“真”或“假”兩個值。判斷成立時為“真”,判斷不成立時為“假”。在計算機內常用“0”和“1”表示這兩個邏輯值,“0”表示假,“1”表示真。因此,在邏輯電路中,輸入和輸出只有兩種狀態,即高電平“1”和低電平“0”。

圖1-5 二極管與電阻構成的邏輯“與”電路

最基本的邏輯運算有邏輯“與”、邏輯“或”及邏輯“非”3種。

1. 邏輯“與”

邏輯“與”也稱之為邏輯乘,最基本的“與”運算有兩個輸入量和一個輸出量。圖1-5所示為二極管與電阻構成的邏輯“與”電路。其中,A、B為輸入端,Y為輸出端,+5V電壓經R1、R2分壓,在E點得到+3V的電壓。

(1)邏輯“與”的實現原理

當A、B兩端同時輸入低電平(0V)時,由于E點電壓為3V,因此,二極管 VD1、VD2都導通,E點電壓馬上降到0.7V(低電平)。也就是說,當A、B兩端同時輸入低電平“0”時,Y端輸出低電平“0”。

當A端輸入低電平(0V),B端輸入高電平(5V)時,由于E點電壓為3V,因此,二極管VD1馬上導通,E點電壓馬上降到0.7V(低電平),而二極管VD2處于截止狀態。此時,Y端輸出低電平“0”。

當A端輸入高電平(5V),B端輸入低電平(0V)時,二極管VD1截止,二極管VD2則處于導通狀態,E點仍為0.7V(低電平)。此時,Y端輸出低電平“0”。

當A、B兩端同時輸入高電平(5V)時,二極管 VD1、VD2都不能導通,E點電壓為3V(高電平)。此時,Y端輸出高電平“1”。

由此可見,只有當輸入端均為高電平時,輸出端才會輸出高電平;只要有一個輸入端輸入低電平,輸出端就會輸出低電平。這就是邏輯“與”運算的特點。

(2)真值表

真值表列出電路的各種輸入值和對應的輸出值,可以直觀地看出電路的輸入與輸出之間的關系。表1-2列出了邏輯“與”的真值表。

表1-2 邏輯“與”的真值表

(3)邏輯表達式與運算規則

邏輯“與”的表達式為

Y =A·B

邏輯“與”的運算規則可總結為“有0為0,全1出1”。

2. 邏輯“或”

邏輯“或”也稱為邏輯加,最基本的邏輯“或”運算有兩個輸入量和一個輸出量。它的邏輯表達式為

Y =A+B

邏輯“或”的運算規則可總結為“有1為1,全0出0”。

3. 邏輯“非”

邏輯“非”即取反,它的邏輯表達式為

Y =

邏輯“非”的運算規則可總結為“1的反為0,0的反為1”。

若在一個邏輯表達式中出現多種邏輯運算,可用小括號指定運算的次序;無小括號時按邏輯“非”、邏輯“與”和邏輯“或”的順序執行。

1.2.4 單片機中常用的基本術語

下面通過一個例子來說明單片機是如何表示數的。

一盞燈要么“亮”,要么“滅”,只有兩種狀態。如果規定用燈亮為“1”,滅為“0”,那么一盞燈可以表示的數為0和1,共21=2個數。

兩盞燈可以有“滅滅”、“滅亮”“亮滅”和“亮亮”共4種狀態,即“00”、“01”、“10”和“11”,而二進制數00、01、10和11分別相當于十進制數的0、1、2和3。所以,兩盞燈可以表示的數為0、1、2和3,共22=4個數。

三盞燈的全部狀態可以表示為,“000”、“001”、“010”、“011”、“100”、“101”、“110”和“111”,所以,三盞燈可以表示的數為0、1、2、3、4、5、6和7,共23=8個數。

同樣地,八盞燈一共可以表示28=256個數。

1. 位

通過前面的例子可知,一盞燈亮滅或電平的高低可以代表兩種狀態,即“0”和“1”。實際上這就是一個二進制位。位(Bit)是計算機中所能表示的最小數據單位。

2. 字節

相鄰的8位二進制碼稱為一個字節(Byte),用B表示。字節是一個比較小的單位,常用的還有KB和MB等,它們之間的關系如下:

1MB=1024KB=1024×1024B

3. 字長

字節是計算機內部進行數據處理的基本單位。它由若干位二進制碼組成,通常與計算機內部的寄存器、運算器、數據總線的寬度一致。每個字所包含的位數稱為字長。若干個字節定義為一個字,不同類型的單片機有不同的字長。8051內核的單片機是8位機,它的字長為8位,其內部的運算器等都是8位的,每次參加運算的二進制位只有8位。

主站蜘蛛池模板: 香港| 曲麻莱县| 宝清县| 东平县| 来安县| 平罗县| 锡林郭勒盟| 岗巴县| 柘荣县| 梅州市| 偏关县| 三明市| 新建县| 寻乌县| 淳安县| 驻马店市| 习水县| 民勤县| 吉木萨尔县| 永嘉县| 河北区| 镇宁| 通化县| 山阴县| 长武县| 色达县| 阳谷县| 宁城县| 泊头市| 潢川县| 普陀区| 卓资县| 革吉县| 偏关县| 京山县| 抚顺市| 仲巴县| 辽中县| 寿光市| 富宁县| 绥芬河市|