打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
单片机基础知识与应用

单片机基础知识-码制


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

小结    

(1)、任何一种数制表示的数都可以写成按位权展开的多项式之和。
N=dn-1bn-1+dn-2bn-2+dn-3bn-3+……d-mb-m式中:n——整数的总位数。
m——小数的总位数。
d下标——表示该位的数码。
b——表示进位制的基数。
b上标——表示该位的位权。


(2)、计算机中常用的进位计数制 


(3)、计数制的书写规则

    ①在数字后面加写相应的英文字母作为标识。 
如:二进制数的100可写成100B 十六进制数100可写成100H
    ②在括号外面加数字下标。
如:(1011)2 表示二进制数的1011
  (2DF2)16 表示十六进制数的2DF2 

4、二进制编码
  在计算机中,是采用二进制数。因而,要在计算机中表示的数、字母、符号等都要以特定的二进制码来表示,这就是二进制编码。
5、二进制编码的十进制数

    BCD码(Binary-Coded Decimal)
6、字母与字符的编码
  字母和各种字符($、#……)也必须按特定的规则用二进制编码才能在机中表示。普通的是采用ASCII( American Standard Code for Information Interchange)码。0~9的ASCII码为30H~39H,大写字母A~Z的ASCII码为41H~5AH。
7、二进制,十进制,十六进制数码对照

 


8、二进制数的运算:

(1)算术运算:加、减、乘、除
(2)逻辑运算:与、或、异或、异

1、二进制加法
规则为:

(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


2、二进制减法
规则为:

(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


3、二进制乘法
规则为:

(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

4、二进制除法:除法是乘法的逆运算
    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

5、二进制逻辑运算

(1)逻辑'与'的规则:

0与0=0
0与1=0
1与1=1

(1)逻辑'或'的规则:

1或0=1
1或1=1
0或0=0
(1)逻辑'异或'的规则:

0异或0=1
0异或1=1
1异或1=0
(1)逻辑'非'的规则:

0的非为1
1的非为0

6、带符号数的表示法

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

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

(3)、反码
 正数的反码表示与原码相同,最高位为符号位,用'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 ----反码表示

(4)、补码
 正数的补码表示与原码相同,即最高位为符号位,用'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。当运算结果超出这个表达范围时,结果就不正确了,这就称为溢出。这时要用多字节来表示。

7、数字之间的互换:

(1)十进制整数转换为二进制整数
  采用基数2连续去除该十进制整数,直至商等于“0”为止,然后逆序排列余数。
(2)十进制小数转化为二进制小数
  连续用基数2去乘以该十进制小数,直至乘积的小数部分等于“0”,然后顺序排列每次乘积的整数部分。
(3)十进制整数转换为八进制整数或十六进制整数
  采用基数8或基数16连续去除该十进制整数,直至商等于“0”为止,然后逆序排列所得到的余数。
(4)十进制小数转换为八进制小数或十六进制小数
  连续用基数8或基数16去乘以该十进制小数,直至乘积的小数部分等于“0”,然后顺序排列每次乘积的整数部分。
(5)二、八、十六进制数转换为十进制数
  用其各位所对应的系数,按“位权展开求和”的方法就可以得到。其基数分别为2、8、16。
(6)二进制数转换为八进制数
  从小数点开始分别向左或向右,将每3位二进制数分成1组,不足3位数的补0,然后将每组用1位八进制数表示即可。
(7)八进制数转换为二进制数
  将每位八进制数用3位二进制数表示即可。
(8)二进制数转换为十六进制数
  从小数点开始分别向左或向右,将每4位二进制数分成1组,不足4位的补0,然后将每组用一位十六进制数表示即可。
(9)十六进制数转换为二进制数


ipcb.com小编

下面是例子哦~

【例1】将十进制整数(105)10转换为二进制整数,采用“除2倒取余”的方法,过程如下:
2 ︳105 
2 ︳52 余数为1
2 ︳26 余数为0
2 ︳13 余数为0
2 ︳6 余数为1
2 ︳3 余数为0
2 ︳1 余数为1
0 余数为1
所以,(105)10=(1101001)2

【例2】将十进制小数(0.8125)10转换为二进制小数,采用“乘2顺取整”的方法,过程如下:
0.8125×2=1.625 取整数位1
0.625×2=1.25 取整数位1 
0.25×2=0.5 取整数位0
0.5×2=1.0 取整数位1
  所以,(0.8125)10=(0.1101)2如果出现乘积的小数部分一直不为“0”,则可以根据精度的要求截取一定的位数即可。

【例3】将十进制整数(2347)10转换为十六进制整数,采用“除16倒取余”的方法,过程如下:
16 ︳2347 
16 ︳146 余数为11(十六进制数为B)
16 ︳ 9 余数为2
0 余数为9
   所以,(2347)10=(92B)16

BCD码是什么?

BCD码

    用二进制数来表示十进制数的表示方法,CD有两种形式,pack BCD(压缩的BCD码)和 unpack BCD(非压缩BCD)。

1.pack BCD(压缩的BCD码)

  它是一种用四位二进制数表示十进制数. 首先是用四位二制数表示个数,然后用四位二进制数表示十位, 然后百位...。

比如:251需要三个四位二进制数表示。 1表示为0001;5表示为0101;2表示为0010。

最后251的BCD数据表示为0010 0101 0001。

2.unpack BCD.(非压缩BCD码)

非压缩的BCD码用8位二进制数表示一个十进制数位,其中低4位是BCD码,高4位是0。


ASCII和BCD码对照表:

 


小结    

      BCD码:BCD(Binary Coded Decimal)是用二进制编码表示的十进制数,十进制数采用0~9十个数字,是人们最常用的。在计算机中,同一个数可以用两种BCD格式来表示:①压缩的BCD码 ②非压缩的BCD码

  压缩的BCD码:
  压缩的BCD码用4位二进制数表示一个十进制数位,整个十进制数用一串BCD码来表示。

      例如:

十进制数59表示成压缩的BCD码为0101 1001,

十进制数1946表示成压缩的BCD码为0001 1001 0100 0110。

  非压缩的BCD码:
  非压缩的BCD码用8位二进制数表示一个十进制数位,其中低4位是BCD码,高4位是0。

     例如:十进制数78表示成压缩的BCD码为0000 0111 0000 1000。

     从键盘输入数据时,计算机接收的是ASCII码,要将ASCII码表示的数转换成BCD码是很简单的,只要把ASCII码的高4位清零即可。




单片机应用领域

      目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。

  单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:

1.在智能仪器仪表上的应用
  单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示波器,各种分析仪)。

2.在工业控制中的应用
  用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。

3.在家用电器中的应用
  可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。

4.在计算机网络和通信领域中的应用
  现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。

5.单片机在医用设备领域中的应用
  单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。

  此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。


ipcb.com小编

单片机学习?

      目前,很多人对汇编语言并不认可。可以说,掌握用C语言单片机编程很重要,可以大大提高开发的效率。不过初学者如果不了解一下单片机的汇编语言,在单片机领域是比较致命的。如果不考虑单片机硬件资源,在KEIL中用C胡乱编程,结果只能是出了问题无法解决!可以肯定的说,最好的C语言单片机工程师都是从汇编走出来的编程者因为单片机的C语言虽然是高级语言,但是它不同于台式机个人电脑上的VC++什么的单片机的硬件资源不是非常强大,不同于我们用VC、VB等高级语言在台式PC上写程序毕竟台式电脑的硬件非常强大,所以才可以不考虑硬件资源的问题。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
数制与编码
二进制数及其他
1.2 数据的表示和类型
第1章_2 计算机运算基础
PLC的数制和编码
进制之间的转换
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服