单片机原理及其应用 主讲教师 赵琳
第一章 单片机概述 1.1 什么是单片机 1.1.1 计算机的分类 巨型机 计算机 通用微机(PC机) ——多片机 微型机 单片机
一台能够工作的微机要有以下几个部分: CPU:中央处理器或微处理器 ROM:只读存储器 RAM:随机存储器 I/O:输入/输出设备 在个人计算机上这些部分被分成若干块芯片,安装在主板上。在单片机中,这些部分全部被做到一块集成电路芯片中了,称为单片机。
1.1.2 单片机的基本组成 中央处理器 或 微处理器 CPU 总线 只读 存储器 ROM 输入/输出口 I/O 定时/计数器 TIMER 1.1.2 单片机的基本组成 中央处理器 或 微处理器 CPU 总线 只读 存储器 ROM 输入/输出口 I/O 定时/计数器 TIMER 中断 随机 RAM
1.1.3 单片机的定义 单片机是指在一块芯片上集成以下主要部件: CPU、ROM、RAM、I/O口、定时器/计数器、中断系统等。 1.1.3 单片机的定义 单片机是指在一块芯片上集成以下主要部件: CPU、ROM、RAM、I/O口、定时器/计数器、中断系统等。 单片机是单片微型计算机的简称,即SCMC Single Chip Micro Computer 单片机也称为微控制器 MCU Micro Controller Unit 单片机又称为嵌入式微控制器 EMCU Embedded Micro Controller Unit
1.1.4 单片机的特点和优点 1、有优异的性价比 2、集成度高、体积小、可靠性高 3、控制功能强 4、系统扩展典型、规范
1.1.5 单片机的分类 通用单片机和专用单片机 通用单片机 是一个基本芯片,内部资源比较丰富,性能全面且通用性强,覆盖多种应用需求。 1.1.5 单片机的分类 通用单片机和专用单片机 通用单片机 是一个基本芯片,内部资源比较丰富,性能全面且通用性强,覆盖多种应用需求。 专用单片机 针对某一种产品,或某一种控制应用而专门设计的。设计时已经使系统结构最简;软硬件资源利用最优;可靠性以及经济成本最佳。 本课程介绍MCS-51系列单片机,属通用单片机,其结构和原理对所有单片机都是适用的。
1.1.6 单片机系统、单片机应用系统、单片机开发系统 是在单片机芯片的基础上,扩展其它电路或芯片构成的具有一定应用功能的计算机系统。 单片机应用系统 为控制应用而设计,系统和控制对象结合在一起。 单片机开发系统 是单片机系统开发调试工具。
1.1.7 单片机的程序设计语言种类 机器语言:Machine Language 单片机应用系统只使用机器语言(指令的二进制代码,又称指令代码)。 机器语言指令组成的程序称目标程序。 汇编语言:Assemble Language 与机器语言指令所对应的英文单词缩写,称为指令助记符。汇编语言编写的程序称为汇编语言程序。 高级语言:High Level Language 高级语言源程序C-51。
1.2 单片机发展概况 1971年Intel公司研制成功世界上第一台4位微处理器; 1973年Intel公司研制成功8080 8位微处理器; 1976年Intel公司推出MCS-48系列8位单片机; 80年代初在MCS-48单片机基础上推出MCS-51单片机。
主要单片机厂商 Intel公司 8048、8051(8位);8096(16位);80960(32位) Motorola公司 MC-6801(8位);68H16(16位);68HC332(32位) 美国Zilog公司;日本NEC公司;荷兰Philips公司等 由于8位单片机基本能满足目前大多数应用系统的要求,所以目前8位单片机仍是应用主流。
1.CPU的发展 CPU字长:8位、16位、32位 时钟频率:6MHz、 12MHz 、20MHz 双CPU结构,处理能力大大提高
2.片内存储器的发展 片内是相对片外而言: 指集成在单片机芯片内的存储单元。 存储容量扩大 早期单片机 新型单片机 RAM ROM 寻址范围 64—128字节 256字节 1—2k字节 1—4k字节(212) 8—16k字节 64k字节(216)
能在正常工作电压下进行读写,并能在断电情况下,保持信息不丢失。 片内EPROM开始E2PROM化 EPROM:Erasable Programmable Read-Only Memory 可擦写可编程只读存储器 E2PROM:电可擦写可编程只读存储器 Electrically Erasable Programmable Read-Only Memory 能在正常工作电压下进行读写,并能在断电情况下,保持信息不丢失。 片内程序的保密措施
3.片内输入输出功能加强 4.单片机制造工艺提高 5.片内ROM中固化应用软件和系统软件 早期单片机:并行输入/输出口、定时/计数器 现代:大功率输入/输出口,可直接驱动 FVD(荧光显示管) LCD(液晶显示器) LED(数码显示管) 片内集成 A/D、D/A转换器、CRT控制器,正弦波发生器等接口电路。 4.单片机制造工艺提高 5.片内ROM中固化应用软件和系统软件
1.3 MCS-51单片机简介 51子系列:基本型 根据片内ROM的配置,对应芯片依次为 8031、8051、8751、8951 52子系列:增强型 对应芯片依次为 8032、8052、8752、8952 片内ROM形式 无 ROM EPROM E2PROM 8031 8051 8751 8951 8032 8052 8752 8952 4kB RAM 128B 寻址 64kB 计数器 并行口 中断源 I/O特性 2×16 4×8 5 8kB 256B 3×16 6
80C51系列 80C51是在8051芯片基础上发展起来的。 80C51与8051从外形看是完全一样的,引脚信号、总线等完全一致(完全兼容),保证在系统扩展和接口方面的一致性。 指令系统一致(兼容),保证软件的可移植性。 ◆ 80C51的制造工艺是在8051基础上进行了改进。
8051系列单片机采用的是HMOS工艺:高速度、高密度 80C51系列单片机采用的是CHMOS工艺:高速度、高密度、低功耗; 即80C51系列是一种低功耗单片机,常用的产品有: ﹡ Intel的:80C31、80C51、87C51,80C32、 80C52、87C52等; ﹡ ATMEL的:89C51、89C52等; ﹡ Philips、华邦、Dallas 、STC 、Siemens(Infineon)等公司的许多产品 。
80S51系列 ISP在线编程功能 最高工作频率提高到33MHz 全新的加密算法 完全兼容全部51子系列产品 典型产品为 ATMEL的89S51
1.4 单片机的应用 一、 单片机在仪器仪表中的应用:智能仪器、医疗器械、色谱仪 二、 工业应用:电机控制、工业机器人、过程控制、数字控制、智能传感器等。 三、 民用方面:电子玩具、录像机、数码机 四、 通讯方面:程控交换机、网关、网卡、手机等 五、导弹与控制:导弹控制、智能武器装置 六、数据处理:打印机、移动硬盘、优盘 七、汽车方面:点火控制、变速器控制、排气控制、防滑刹车等。
1.5 数制和码制的简单回顾 1.5.1 数制:是计数的规则。 十进制:是日常生活中最熟悉的进位计数制。 符号:0,1,···,9 规则:逢十进一 二进制:是在计算机中采用的进位计数制。 符号:0,1 规则:逢二进一 特点:便于实现,不便记忆
字节:8个位 位号: 字节: MSB LSB D7 D6 D5 D4 D3 D2 D1 D0 ◇ 有28个值(0~255) ◇ MSB:最高有效位,D7位
字:2字节,16位 十六进制:方便人们对二进制数的阅读和书写 符号:0,1,···,9,A,B,C,D,E,F 规则:逢十六进一 ◇ 有216个值(0~65535) ◇ MSB:D15位 十六进制:方便人们对二进制数的阅读和书写 符号:0,1,···,9,A,B,C,D,E,F 规则:逢十六进一 特点:4位二进制 → 1位十六进制
为区分不同进制,在数的结尾以一个字母标示: 十进制:D(或不带字母) 二进制:B 十六进制:H
部分自然数的3种进制表示 十进制 二进制 十六进制 0000B 0H 9 1001B 9H 1 0001B 1H 10 1010B AH 2 0000B 0H 9 1001B 9H 1 0001B 1H 10 1010B AH 2 0010B 2H 11 1011B BH 3 0011B 3H 12 1100B CH 4 0100B 4H 13 1101B DH 5 0101B 5H 14 1110B EH 6 0110B 6H 15 1111B FH 7 0111B 7H 16 10000B 10H 8 1000B 8H 17 10001B 11H
三种数制间的转换方法 1、二进制和十进制间的转换 (1)二进制→十进制: 按权相加法:将各位二进制的权值乘上系数,相加 例:求二进制数11010.101相应的十进制数。 11010.101 B =1×24+1×23 + 0×22 +1×21 +0×20 +1×2-1 +0×2-2 +1×2-2 =26.625
常用二进制的权 16 … 13 12 11 10 9 8 7 6 5 4 3 2 1 0 65536 … 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1 -1 -2 -3 -4 0.5 0.25 0.125 0.0625
(2)十进制→二进制: 十进制整数:除2取余法 低 高 直到商为零
十进制小数:乘2取整法 例:将十进制纯小数0.562转换成误差不大于2-6的二进制数。 高 低
2、十六进制和十进制间的转换 (1)十六进制→十进制: 按权相加法 例:求十六进制数7A.58H相应的十进制数。 7A.58 H =7×161+A×160 +5×16-1 +8×16-2 =122.34375
(2)十进制→十六进制: 十进制整数:除16取余法 例:求3901所对应的十六进制数。 3901 16 243 15 余数 13 3 → F → D → 3 高 低 故 3901= F3DH 十进制小数:乘16取整法(类似于十进制转二进制小数)
3、二进制和十六进制间的转换 例:把二进制数1101111100011.100101转换为十六进制数。 0001 1011 1110 0011.1001 0100 =1BE3.94H 例:把十六进制数3AB.7A5转换为二进制数。 3AB.7A5 H =0011 1010 1011.0111 1010 0101B
1.5.3 计算机中带符号数的表示 一、机器数及其真值 数本身称为真值 数在计算机内的表示形式称为机器数 真值 例:正数 +100 0101B(+45H) 机器数 100 0101B ( 45H) 真值 例:负数 -101 0101B( - 55H) 机器数 101 0101B 1 ( D5H) 机器数通常有原码、反码和补码三种形式。
◇ 负数的反码:原码的符号位不变(为1),其余位取反 二、原码和反码 原码:最高位为符号位,数值为绝对值 反码: ◇ 正数的反码:与其原码相同 ◇ 负数的反码:原码的符号位不变(为1),其余位取反 带符号正数 +100 0101B (+45H),原码为 0100 0101B (45H),反码为0100 0101B (45H) 带符号负数 - 101 0101B (-55H),原码为 1101 0101B (D5H),反码为1010 1010B (AAH) 采用原码和反码表示时,符号位不能同数值一道参加运算。
二进制数的模: 二进制数的补码: 三、补码 计算机中,带符号数的运算均采用补码。 设二进制数的位数为n,则模为2n。 例:8 位二进制数的模为 2^8,即 256。 二进制数的补码: 正数不变,负数即用模减去绝对值。
已知一个数 X,其 8 位字长的补码定义为: [X]补 = X, 0 ≤X ≤ +127 ; 28 -|X|, -128 ≤X <0 ; (正数和0的补码,是其本身) 负数的补码,就是用 1 0000 0000,减去该数字的绝对值 例:负数 - 101 0101B (- 55H)
真 值 原 码 反 码 补 码 +127 0111 1111B 0111 1111B(7FH) +126 0111 1110B 0111 1110B(7EH) ··· +1 0000 0001B 0000 0001B(01H) +0 0000 0000B 0000 0000B(00H) -0 1000 0000B 1111 1111B -1 1000 0001B 1111 1110B 1111 1111B(FFH) -126 1000 0010B(82H) -127 1000 0001B(81H) -128 --------- 1000 0000B(80H)
正数的补码、反码、原码均相同 负数的补码是反码加1(但“-0”与“-128”除外) 8位二进制数,其原码、反码、补码所能表示的范围是不同的。 采用补码时,“0”只有一种表示方式,单字节表示的范围是:+127 ~ -128。
已知一个负数的补码求其真值的方法是: ◇ 对该补码求补(符号位不变,数值位取反加1)即得到该负数的原码(符号位+数值位); ◇ 依原码求真值。 补码为:1111 1111B 求补得:1000 0001B 真值为: - 1
原码易于被人们识别,但运算复杂,符号位需要单独处理; 补码虽不易被人们识别,但方便运算。 有符号数用补码表示后,计算机运算后的结果仍是补码; 符号位和数值位一起参加运算,符号位的进位略去不计。
1. 补码加法运算 [X+Y]补 = [X]补 + [Y]补 例: 已知X=+19,Y=-7,求X+Y的二进制值。 [X+Y]补 = [X]补 + [Y]补 = [+19]补 + [-7]补 [+19]补 = 00010011B + [-7]补 = 11111001B [X+Y]补 =100001100B 真值为:+0001100B
2. 补码减法运算 [X-Y]补 = [X]补 + [-Y]补 例: 已知X=+6,Y=+25,求X-Y的二进制值。 [X-Y]补 = [X]补 + [-Y]补 = [+6]补 + [-25]补 [+6]补 = 00000110B + [-25]补 = 11100111B [X+Y]补 = 11101101B 真值为:- 0010011B
注意 参加运算的数及运算结果不能超出8位数所能表示的范围,否则运算会出现溢出,运算结果就不正确。 对有符号数,采用补码时,8位数的表示范围是: -128 ~ +127 对无符号数,8位数的表示范围是: 0 ~ 255 (00000000 ~ 11111111)
1.5.2 编码 遵循一定的规则编制代码,称为编码。 计算机中数字、字母以和符号要进行二进制编码。
BCD码----十进制数的二进制编码
1. 8421BCD码 二进制码在1010B~1111B范围时,属于非法码。 十进制数 BCD码 0000B 5 0101B 1 0001B 0000B 5 0101B 1 0001B 6 0110B 2 0010B 7 0111B 3 0011B 8 1000B 4 0100B 9 1001B 二进制码在1010B~1111B范围时,属于非法码。
◇ (压缩)BCD码:1个字节表示2位十进制数的编码 0000B 1 0001B 2 0010B 3 0011B 4 0100B 5 0101B 6 0110B 7 0111B 8 1000B 9 1001B 十进制数 BCD码 10 0001 0000B 11 0001 0001B 12 0001 0010B ··· 20 0010 0000B 21 0010 0001B 97 1001 0111B 98 1001 1000B 99 1001 1001B
注意 要注意一个8位二进制代码表示的数究竟是二进制数?还是二进制编码的十进制数(BCD)?其值不同。 例如:00011000B,当作为二进制数时,其值为24;但作为2位BCD码时, 其值为18。 例如:00011100B,当作为二进制数时,其值为28;但不能作为BCD码,因为在8421BCD码中,它是个非 法码 。
2. BCD运算 由于计算机总是把数当作二进制数来运算,若将BCD码直接交计算机去运算,结果可能会出错。 例:用BCD码求38+49。 0011 1000B + 0100 1001B 1000 0001B ≠1000 0111B
解决办法 —— BCD调整 目的:将二进制加法运算的结果修正为BCD码加法运算的结果。 规则 : ◇ 若和的低4位大于9或低4位向高4位发生了进位,则低4位加6修正。 ◇ 若高4位大于9或高4位的最高位发生了进位,则高4位加6修正。
ASCII码 (美国标准信息交换码) ----字符的编码 由于微机不仅要处理数字信息,还要处理大量的字母 和符号信息(统称为字符), ASCII码是字符的编码。 ASCII码有7位二进制码构成,共128个字符编码。 常用字符的ASCII码 字符 ASCII码 30H A 41H a 61H SP(空格) 20H 1 31H B 42H b 62H CR(回车) 0DH 2 32H C 43H c 63H LF(换行) 0AH ∶ BEL(响铃) 07H 9 39H Z 5AH z 7AH BS(退格) 08H