技术分享

当前位置:首页>文章中心>技术分享
全部 354 技术分享 334 单片机入门 20

单片机硬件基础(4)

作者:佚名   来源:网上搜集   时间:2009-10-19   访问量:1047

第四课:常用数字及逻辑电路

数字:
谈到数字,有很多同学可能会觉的很可笑,数字?不就是1234……..这些吗?是的,在日常的生活当中,我们用的一般都是十进制,但在计算机中,它只能识别二进制数,所以在这里我还得跟大家共同分析一下:
1、十进制:
十进制就是基数为“十”,所使用的数码为0~9共10个数字。逢十进一。是我们每天都会运用到的,在这里就不多谈了。
2、二进制:
二进制的基数为“二”,其使用的数码只有0和1两个。在计算机中容易实现,在常用的的实现方式中如:可以用电路的高电平表示1,低电平表示0;或者三极管截止时集电极的输出表示1,导通时集电极输出表示0。
3、十六进制:
由于二进制位数太长,不易记忆和收写,所以人们又提出了十六进制的书写形式。我们在汇编语言中多数用十六进制。  

二进制编码
二进制编码
在计算机中,是采用二进制数。因而,要在计算机中表示的数、字母、符号等都要以特定的二进制码来表示,这就是二进制编码。
一、二进制编码的十进制数:BCD码(Binary-Coded Decimal)
字母与字符的编码
字母和各种字符($、#……)也必须按特定的规则用二进制编码才能在机中表示。普通的是采用ASCII( American Standard Code for Information Interchange)码。0~9的ASCII码为30H~39H,大写字母A~Z的ASCII码为41H~5AH。
07112917142096.jpg

二进制数的运算

算术运算:加、减、乘、除
逻辑运算:与、或、异或、异
一、二进制加法
规则为:(1)0+0=0
(2)1+0=0+1=1
(3)1+1=0,进位1
(4)1+1+1=1,进位1
如: 1 1 0 1
1 0 1 1
--------------------
1 1 0 0 0


二进制减法
规则为:(1)0-0=0
(2)1-1=0
(3)1-0=1
(4)0-1=1,有借位
如:1 1 0 0 0 1 0 0
- 0 0 1 0 0 1 0 1
--------------------------------
1 0 0 1 1 1 1 1


二进制乘法
规则为:(1)0×0=0
(2)0×1=0
(3)1×0=0
(4)1×1=1
如: 1 1 1 1
× 1 1 0 1
------------------
1 1 1 1
0 0 0 0
1 1 1 1
1 1 1 1
-------------------------
1 1 0 0 0 0 1 1

二进制除法:除法是乘法的逆运算
0 0 0 1 1 1
----------------------
1 0 1 )1 0 0 0 1 1
1 0 1
-------------
0 1 1 1
1 0 1
----------------
1 0 1
1 0 1
---------
0

二进制逻辑运算

逻辑"与"的规则: 0与0=0
0与1=0
1与1=1

逻辑"或"的规则: 1或0=1
1或1=1
0或0=0
逻辑"异或"的规则:0异或0=1
0异或1=1
1异或1=0
逻辑"异"的规则: 0的异为1
1的异为0

带符号数的表示法

一、机器数与真值
通常用最高位作为符号位,若字长为8位即D7为符号位,D6~D0为数字位,
符号位用0表示正,用1表示负如X=(01011011)B=+91
X=(11011011)B=-91

二、原码
按上所述,正数的符号位用"0"表示,负数的符号位用"1"表示,这种表示法就称为原码。
X=+105 [X]原=01101001
X=-105 [X]原=11101001

三、反码
正数的反码表示与原码相同,最高位为符号位,用"0"表示正,其余位为数值位。
(+4)10=0 0 0 0 0 1 0 0
符号 二进制数值
(+31)10=0 0 0 1 1 1 1 1
(+127)10=0 1 1 1 1 1 1 1
而负数的反码表示为它的正数的按位取反(连符号位)而形成的。
(+4)10=0 0 0 0 0 1 0 0
(-4)10=1 1 1 1 1 0 1 1 ----反码表示
(+31)10=0 0 0 1 1 1 1 1
(-31)10=1 1 1 0 0 0 0 0 ----反码表示
(+127)10=0 1 1 1 1 1 1 1
(-127)10=1 0 0 0 0 0 0 0 ----反码表示
(+0)=0 0 0 0 0 0 0 0
(-0)=1 1 1 1 1 1 1 1 ----反码表示

四、补码
正数的补码表示与原码相同,即最高位为符号位,用"0"表示正,其余位为数值位。
如【+4】补=【+4】原=【+4】反=0 0 0 0 0 1 0 0
【+127】补=【+127】原=【+127】反=0 1 1 1 1 1 1 1
负数的补码表示为它的反码,并在其最后位(即最低位)加1形成。
如 【+4】原=0 0 0 0 0 1 0 0
【-4】反=1 1 1 1 1 0 1 1 是+4各位取反
【-4】补=1 1 1 1 1 1 0 0 反码+1
【+31】原=0 0 0 1 1 1 1 1

【-31】反=1 1 1 0 0 0 0 0
【-31】补=1 1 1 0 0 0 0 1
【+0】原=0 0 0 0 0 0 0 0
【-0】反=1 1 1 1 1 1 1 1
【-0】补=0 0 0 0 0 0 0 0
8位带符号数的补码特点:(1)【+0】补=【-0】补=0 0 0 0 0 0 0 0
(2)8位二进制补码所能表示的数值为+127~-128
(3)一个用补码表示的二进制数,最高位为符号位。当符号位为"0"(即正数)时,其余七位即为此数的二进制值;当符号位为"1"(即负数)时,其余几位不是此数的二进制值,把它们按位取反,且在最低位加1,才是它的二进制值。

如:【X】补=1 0 0 1 0 1 0 0 是负数,它的数值为0 0 1 0 1 0 0 按位取反,
得1 1 0 1 0 1 1,然后再加1为1 1 0 1 1 0 0=(108)10
当负数采用补码表示时,就可以把减法转换为加法。
例如: 64-10=64+(-10)=64+【-10】补
+64=0 1 0 0 0 0 0 0
10=0 0 0 0 1 0 1 0
【-10】补=1 1 1 1 0 1 1 0
减法运算: 64 0 1 0 0 0 0 0 0
-10 - 0 0 0 0 1 0 1 0

-------------- ----- -----------------------------------------------------------------------------------------------
54 0 0 1 1 0 1 1 0
补码加法:
64 0 1 0 0 0 0 0 0
+【-10】补 ------> (+) 1 1 1 1 0 1 1 0

-------------- ----- ----------------------------------------------------------------------------------------------
1 0 0 1 1 0 1 1 0
此1自然丢失。在8位字长的单字节运算中
第7位的进位,自然丢失。
例:34-68=34+【-68】补
【34】补=0 0 1 0 0 0 1 0
【+68】补=0 1 0 0 0 1 0 0
【-68】补=1 0 1 1 1 1 0 0
34 0 0 1 0 0 0 1 0
+(-68) + 1 0 1 1 1 1 0 0

-------------- ----- ------------------------------------->--------------------------------------------------------------
- 34 1 1 0 1 1 1 1 0 符号位为1,肯定结果为负,其数值部
分为0 1 0 0 0 1 0=34
所以结果是-34

在微型机中,凡是带符号数一律是用补码表示的,所以,其运算结果也是补码。当字长为8位时,其范围为+127~-128。当运算结果超出这个表达范围时,结果就不正确了,这就称为溢出。这时要用多字节来表示。

数字之间的互换:

在本节课中,理论上的二、十、十六的转换方式我就不多论述,有兴趣的同学可以去参考下这方面的书籍,在下面我为大家讲解一下计算机中科学型计算器的数字转换方法,在以后的编程中经常会用到的。  

二进制与十进制、十六进制的转换有专用的计算器。当你看到我编写的这份教材时,相信你也有了一台电脑,这时你可以点击开始然后点击程序再点附件这时我们会看到有一个计算器的程序,我们点击一下计算器,这时一个计算器的操作界面就出来了。如果你看到的是一个跟我们普通计算器一样的界面,这时你还需要进行一个小小的设定,点击计算器界面上的查看,这时会下拉一个菜单,即标准型,科学型,我们选择科学型,这时一个可进行二、十、十六进制运算的计算器就出来了。
    学了这么长时间有同学又会说了,老师,你总是跟我们讲这些,我们感觉好累的。同志们,我知道你们累,可是我更累呀,一字一字为你们编写这份教材,目的就是想你们能从我编写的这份教材中多学点东东,因为我前面所讲的都是至关重要的东西。好吧,既然有同学说累了,那我们就先休息一下,跟东方星老师用计算器先玩一下十六进制与十进制的转换吧。

刚才说到我们已打开了科学型的计算器,这时我们点击十六进制,然后点击计算器上的00,这时在计算器的显示屏上会显示00。记住:我们刚才输入的是十六进制,我们怎样把他转为十进制呢?这时我们选中十进制,这时显示屏上显示什么?还是0吧。哈哈,当然了,0用十六进制、十进制表示都是0啦。好,我们又把计算器设回到十六进制,然后输入7F,再点击十进制,这时显示什么?127,对吧。我们回想一下,我们前面说到的,00~7FH其实用十进制表示,是不是就是0~127,也就是我们所说的低128单元?你们再把80H~FFH转换一下,结果就不用我说了吧。

常用逻辑电路
在逻辑电路中,输入和输出只有两种状态,即高电平和低电平。通常以逻辑“1”和“0”表示电平高低。
1、  与门
是一个能够实现逻辑乘运算的、多端输入、单端输出的逻辑电路。
07112917162659.jpg

逻辑解释:
即如右边图所示,当开关A与B当中只有全部闭合(即为高电平1)时,才会有输出(即灯泡才会亮)所以在与门电路中,只有输入的全部条件为高电平“1”时输会有输出。
语言表达为:“有0出0,全1出1”

2、  或门
是一个能够实现逻辑加运算的、多端输入、单端输出的逻辑电路。
07112917183562.jpg

逻辑解释:
即如右边图所示,当开关A与B当中只要有一个开关闭合(即为高电平1)时,就会有输出(即灯泡才会亮)所以在或门电路中,只要输入的为高电平“1”就会有输出。
语言表达为:“有1出1,全0出0”。
3、  非门
是一个能够实现逻辑非运算的、单端输入、单端输出的逻辑电路。非就是反,就是否定,也就是输入与输出的状态总是相反。
07112917201140.jpg

逻辑解释:
如右边图所示,当开关K断开时灯亮,开关闭合时灯灭。如以开关断开为灯亮,开关接通为灭为结果,则开关K与灯泡的因果关系为非逻辑关系。
语言表达为:“有0出1,有1出0”。

复合逻辑门电路:
4.与非门
将一个与门与一个非门联接起来就构成了一个与非门。
根据与门和非门的逻辑功能,可以列出与非门逻辑关系真值表。其逻辑功能的特点是:“当输入全为1,输出为0;只要输入有0,输出就为1”。
真值表如下:
07112917222314.jpg

5.或非门
将一个或门与一个非门联接起来就构成了一个或非门。
根据或门和非门的逻辑功能,可以列出与非门逻辑关系真值表。其逻辑功能的特点是:“当输入全为0,输出为1;只要输入有1,输出就为0”。
真值表如下:  
07112917235532.jpg
6.异或门
异或门只有两个输入端和一个输出端,。
其逻辑功能的特点是:“当两个输入端一个为0,另一个为1时,当两个输入端均为1或均为0时,输出为0”。
真值表如下:
07112917252049.jpg

异或门的作用是:把两路信号进行比较,判断是否相同。当两路输入信号不同,即一个为高电平,一个为低电平时,输出为高电平。反之当两个输出端信号相同时,即为高电平或低电平时,输出为低电平”。

触发器:

触发器是计算机记忆装置的基本单元,它具有把以前的输入‘记忆’下来的功能,一个触发器能储存一位二进制代码。下面我们简单的来介绍计算机中常用的几中触发器。
1.R-S触发器
R-S触发器的逻辑符号如下图所示,它有两个输入端,两个输出端。其中,S为置位信号输入端,R为复位信号输入端;Q和Q非为输出端。规定Q为高、Q非为低时,该触发器为1状态;反之为0状态。其真值表如下。
07112917265124.jpg

2.D触发器
D触发器又称数据触发器,它的逻辑符号如下图所示,R、S分别为强制置0、置1端,触发器的状态是由时钟脉冲CLK上升沿到来时D端的状态决字。当D=1时,触发器为1状态;反之为0状态。其真值表如下
07112917280243.jpg
3.J-K触发器
J-K触发器的逻辑符号如下,R、S分别为强制置0、置1端。K为同步置0输入端,J为同步置1输入端。触发器的状态是由时钟脉冲CLK下降沿到来时J、K端的状态决定,其真值表如下
07112917291239.jpg
J-K触发器的逻辑功能比较全面,因此在各种寄存器、计算器、逻辑控制等方面应用最为广泛。但在某些情况,如二进制计数、移位、累加等,多用D触发器。由于D触发器线路简章,所以大量应用于移位寄存器等方面。

寄存器:

寄存器是由触发器组成的,一个触发器是一个一位寄存器。多个触发器就可以组成一个多位的寄存器。由于寄存器在计算机中的作用不同,从而被命名不同,常用的有缓冲寄存器、移位寄存器、计数器等。下面我们就简单的来介绍下这些寄存器的电路结构及工作原理。
1.缓冲寄存器
它是用来暂存某个数据,以便在适当的时间节拍和给定的计算步骤将数据输入或输出到其它记忆单元中去,下图是一个并行输入、并行输出的4位缓冲器的电路原理图,它由4个D触发器组成。
07112917562060.jpg
启动时,先在清零端加清零脉冲,把各触发器置0,即Q端为0。然后,把数据加到触发器的D输入端,在CLK时钟信号作用下,输入端的信息就保存在各触发器中(D0~D3)。


2.移位寄存器
移位寄存器能将所储存的数据逐位向左或向右移动,以达到计算机运行过程中所需的功能,请看下图
07112918150465.jpg
启动时,先在清零端加清零脉冲,使触发器输出置0。然后,第一个数据D0加到触发器1的串行输入端,在第一个CLK脉冲的上升沿Q0=Q0,Q1=Q2。Q3=Q0。其后,第二个数据D1加到串行输入端,在第二个CLK脉冲到达时,Q0=Q1,Q1=Q0,Q2=Q3=0。以此类推,当第四个CLK来到之后,各输出端分别是Q0=Q3,Q1=Q2,Q2=Q1,Q3=Q0。输出数据可用串行的形式取出,也可用并行开式取出。

3.计数器
计数器也是由若干个触发器组成的寄存器,它的特点是能够把存款在其中的数据加1或减1。计数器的种类也很多,有行波计数器、同步计数器等,下面我们就以行波计数器向大家作个介绍。
下图就是一个由J-K触发器组成的行波计数器的工作原理图。这种计数器的特点是:第一个时钟脉冲促使其最低有效位加1,使其由0变1;第二个时钟脉冲促使最低有效位由1变0。同时推动第二位,使其由0变1;同理,第二位由1变0时又去推动第三位,使其由0变1,这样有如水波前进一样逐位进位下去。
07112918303876.jpg
上图中各位的J、K输入端都是悬浮的,这相当于J、K输入端都是置1的状态,即各位都处于准备翻转的状态。只要时钟脉冲边沿一到,最右边的触发器就会翻转,即Q由0转为1或由1转为0。
上图中的这个计数器是4位的,因此可以计0~15的数。如果要计更多的数,需要增加位数,如8位计数器可计0~255的数,16位则可计0~65535的数。

4.三态门(三态缓冲器)
为减少信息传输线的数目,大多数计算机中的信息传输线均采用总线形式,即凡要传输的同类信息都走同一组传输线,且信息是分时传送的。在计算机中一般有三组总线,即数据总线、地址总线和控制总线。为防止信息相互干扰,要求凡挂在总线上的寄存器或存储器等,它的传输端不仅能呈现0、1两个信息状态,而且还应能呈现第三种状态——高阻抗状态(又称高阻状态),即此时好像它们的输出被断开,对总线状态不起作用,此时总线可由其它器件占用。三态门即可实现上述的功能,它除具有输入输出端之外,还有一控制端,请看下图。
07112918323038.jpg
当控制端E=1时,输出=输入,此时总线由该器件驱动,总线上的数据由输入数据决定;
当控制端E=0时,输出端呈高阻抗状态,该器件对总线不起作用。当寄存器输出端接至三态门,再由三态门输出端与总线连接起来,就构成三态输出的级冲寄存器。如下图所示就是一个4位的三态输出缓冲寄存器。由于这里采用的是单向三态门,所以数据只能从寄存器输出到数据总线。如果要实现双向传送,则要用双向三态门。
07112917142096.jpg
在这里有个问题问下大家,前面我们已把触发器,寄存器的概念跟大家讲解了一下,那么触发器、寄存器、存储器,这三者之间是一个什么样的关系呢?

答:通过前面的学习,我们知道触发器是计算机记忆装置的基本单元,一个触发器能储存一位二进制代码。寄存器是由触发器组成的。一个触发器就职一个一位的寄存器,多个触发器就可以组成一个多位的寄存器。存储器是由大量寄存器组成的,其中每一个寄存器就称为一个存储单元。它可以存放一个有独立意义的二进制代码。

上一篇:单片机硬件基础(5)

下一篇:单片机硬件基础(3)

发表评论:

评论记录:

未查询到任何数据!

在线咨询

点击这里给我发消息 咨询专员

在线咨询

咨询电话

18906103328

电话咨询

微信扫一扫

微信联系
返回顶部