520 likes | 716 Views
单片机原理及其应用. 主讲教师 赵琳. 第一章 单片机概述. 1.1 什么是单片机. 1.1.1 计算机的分类. 巨型机. 计算机. —— 多片机. 通用微机( PC 机). 微型机. 单片机. 一台能够工作的微机要有以下几个部分:. CPU : 中央处理器或微处理器. ROM : 只读存储器. RAM : 随机存储器. I/O : 输入 / 输出设备. 在个人计算机上这些部分被分成若干块芯片,安装在主板上。在单片机中,这些部分 全部被做到一块集成电路芯片中 了,称为 单片机 。. 随机 存储器 RAM. 只读 存储器 ROM.
E N D
单片机原理及其应用 主讲教师 赵琳
第一章 单片机概述 1.1 什么是单片机 1.1.1 计算机的分类 巨型机 计算机 ——多片机 通用微机(PC机) 微型机 单片机
一台能够工作的微机要有以下几个部分: • CPU:中央处理器或微处理器 • ROM:只读存储器 • RAM:随机存储器 • I/O:输入/输出设备 在个人计算机上这些部分被分成若干块芯片,安装在主板上。在单片机中,这些部分全部被做到一块集成电路芯片中了,称为单片机。
随机 存储器 RAM 只读 存储器 ROM 中央处理器 或 微处理器 CPU 中断 总线 定时/计数器 TIMER 输入/输出口 I/O 1.1.2 单片机的基本组成
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 单片机的分类 通用单片机和专用单片机 • 通用单片机 是一个基本芯片,内部资源比较丰富,性能全面且通用性强,覆盖多种应用需求。 • 专用单片机 针对某一种产品,或某一种控制应用而专门设计的。设计时已经使系统结构最简;软硬件资源利用最优;可靠性以及经济成本最佳。 本课程介绍MCS-51系列单片机,属通用单片机,其结构和原理对所有单片机都是适用的。
1.1.6 单片机系统、单片机应用系统、单片机开发系统 • 单片机系统 是在单片机芯片的基础上,扩展其它电路或芯片构成的具有一定应用功能的计算机系统。 • 单片机应用系统 为控制应用而设计,系统和控制对象结合在一起。 • 单片机开发系统 是单片机系统开发调试工具。
1.1.7 单片机的程序设计语言种类 机器语言:Machine Language 单片机应用系统只使用机器语言(指令的二进制代码,又称指令代码)。 机器语言指令组成的程序称目标程序。 汇编语言:AssembleLanguage 与机器语言指令所对应的英文单词缩写,称为指令助记符。汇编语言编写的程序称为汇编语言程序。 高级语言:High LevelLanguage 高级语言源程序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结构,处理能力大大提高
早期单片机 新型单片机 256字节 64—128字节 RAM 1—2k字节 8—16k字节 ROM 1—4k字节(212) 64k字节(216) 寻址范围 2.片内存储器的发展 片内是相对片外而言: 指集成在单片机芯片内的存储单元。 • 存储容量扩大
片内EPROM开始E2PROM化 EPROM:Erasable Programmable Read-Only Memory 可擦写可编程只读存储器 E2PROM:电可擦写可编程只读存储器 Electrically Erasable Programmable Read-Only Memory 能在正常工作电压下进行读写,并能在断电情况下,保持信息不丢失。 • 片内程序的保密措施
3.片内输入输出功能加强 • 早期单片机:并行输入/输出口、定时/计数器 • 现代:大功率输入/输出口,可直接驱动 FVD(荧光显示管) LCD(液晶显示器) LED(数码显示管) 片内集成 A/D、D/A转换器、CRT控制器,正弦波发生器等接口电路。 4.单片机制造工艺提高 5.片内ROM中固化应用软件和系统软件
片内ROM形式 I/O特性 中断源 计数器 并行口 无 寻址 EPROM E2PROM ROM ROM RAM 4kB 128B 8031 8051 8751 8951 64kB 2×16 4×8 5 8kB 256B 8052 8752 8952 8032 64kB 3×16 4×8 6 1.3 MCS-51单片机简介 • 51子系列:基本型 根据片内ROM的配置,对应芯片依次为 8031、8051、8751、8951 • 52子系列:增强型 对应芯片依次为 8032、8052、8752、8952
80C51系列 • 80C51是在8051芯片基础上发展起来的。 • 80C51与8051从外形看是完全一样的,引脚信号、总线等完全一致(完全兼容),保证在系统扩展和接口方面的一致性。 • 指令系统一致(兼容),保证软件的可移植性。 ◆ 80C51的制造工艺是在8051基础上进行了改进。
8051系列单片机采用的是HMOS工艺:高速度、高密度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 • 规则:逢二进一 • 特点:便于实现,不便记忆
位号: D7 D6 D5 D4 D3 D2 D1 D0 字节: MSB LSB • 字节:8个位 ◇有28个值(0~255) ◇ LSB:最低有效位,D0位 ◇ MSB:最高有效位,D7位
字:2字节,16位 ◇有216个值(0~65535) ◇ MSB:D15位 • 十六进制:方便人们对二进制数的阅读和书写 • 符号:0,1,···,9,A,B,C,D,E,F • 规则:逢十六进一 • 特点:4位二进制 → 1位十六进制
为区分不同进制,在数的结尾以一个字母标示:为区分不同进制,在数的结尾以一个字母标示: • 十进制:D(或不带字母) • 二进制:B • 十六进制:H
三种数制间的转换方法 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 -1 -2 -3 -4 65536 … 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1 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
余数 16 3901 低 13 → D 16 243 3 → 3 15 16 15 → F 高 0 (2)十进制→十六进制: • 十进制整数:除16取余法 例:求3901所对应的十六进制数。 故 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 0 ( 45H) 真值 例:负数 -101 0101B( - 55H) 机器数 101 0101B 1 ( D5H) 机器数通常有原码、反码和补码三种形式。
二、原码和反码 • 原码:最高位为符号位,数值为绝对值 • 反码: ◇ 正数的反码:与其原码相同 ◇ 负数的反码:原码的符号位不变(为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, 0 ≤X ≤ +127 ; [X]补= (正数和0的补码,是其本身) 28-|X|, -128 ≤X <0 ; 已知一个数 X,其 8 位字长的补码定义为: 负数的补码,就是用 1 0000 0000,减去该数字的绝对值 例:负数- 101 0101B (- 55H)
正数的补码、反码、原码均相同 • 负数的补码是反码加1(但“-0”与“-128”除外) • 8位二进制数,其原码、反码、补码所能表示的范围是不同的。 • 采用补码时,“0”只有一种表示方式,单字节表示的范围是:+127 ~ -128。
补码为:1111 1111B 求补得:1000 0001B 真值为: - 1 • 已知一个负数的补码求其真值的方法是: ◇ 对该补码求补(符号位不变,数值位取反加1)即得到该负数的原码(符号位+数值位); ◇ 依原码求真值。
原码易于被人们识别,但运算复杂,符号位需要单独处理;原码易于被人们识别,但运算复杂,符号位需要单独处理; • 补码虽不易被人们识别,但方便运算。 有符号数用补码表示后,计算机运算后的结果仍是补码; 符号位和数值位一起参加运算,符号位的进位略去不计。
[+19]补= 00010011B + [-7]补= 11111001B [X+Y]补=100001100B 1. 补码加法运算 [X+Y]补 = [X]补 + [Y]补 例: 已知X=+19,Y=-7,求X+Y的二进制值。 [X+Y]补 = [X]补 + [Y]补= [+19]补 + [-7]补 真值为:+0001100B
[+6]补= 00000110B + [-25]补= 11100111B [X+Y]补=11101101B 2. 补码减法运算 [X-Y]补 = [X]补 + [-Y]补 例: 已知X=+6,Y=+25,求X-Y的二进制值。 [X-Y]补 = [X]补 + [-Y]补= [+6]补 + [-25]补 真值为:-0010011B
对有符号数,采用补码时,8位数的表示范围是:对有符号数,采用补码时,8位数的表示范围是: -128~ +127 对无符号数,8位数的表示范围是: 0~ 255 (00000000 ~11111111) 注意 参加运算的数及运算结果不能超出8位数所能表示的范围,否则运算会出现溢出,运算结果就不正确。
1.5.2 编码 遵循一定的规则编制代码,称为编码。 计算机中数字、字母以和符号要进行二进制编码。
1. 8421BCD码 二进制码在1010B~1111B范围时,属于非法码。
◇ (压缩)BCD码:1个字节表示2位十进制数的编码
注意 要注意一个8位二进制代码表示的数究竟是二进制数?还是二进制编码的十进制数(BCD)?其值不同。 例如:00011000B,当作为二进制数时,其值为24;但作为2位BCD码时, 其值为18。 例如:00011100B,当作为二进制数时,其值为28;但不能作为BCD码,因为在8421BCD码中,它是个非 法码 。
0011 1000B + 0100 1001B 1000 0001B ≠1000 0111B 2. BCD运算 由于计算机总是把数当作二进制数来运算,若将BCD码直接交计算机去运算,结果可能会出错。 例:用BCD码求38+49。