SoC单片机原理与应用(第二版) - 中国高校教材图书网
|
|
书名: |
SoC单片机原理与应用(第二版)
|
ISBN: | 9787302461562 |
条码: | |
作者: |
鲍可进、赵念强、申屠浩、陈向益
相关图书
|
装订: | 0 |
印次: | 1-1 |
开本: | 0 |
定价: |
¥49.50
折扣价:¥47.03
折扣:0.95
节省了2.475元
|
字数: |
|
出版社: |
清华大学出版社 |
页数: |
|
发行编号: | |
每包册数: |
|
出版日期: |
2017-03-01 |
|
内容简介: |
本书以C8051F020为例介绍SoC型的单片机原理及应用,该系列单片机具有与MCS51完全兼容的指令内核和丰富的外设接口及片内资源。书中详细叙述了该单片机的基本结构、指令系统及用C51语言对片内资源的编程方法、C8051F单片机应用系统的开发方法及实验项目等方面的内容。书中提供大量习题、实验题、应用实例及程序源码,以供读者练习; 同时作者还提供了用于教学的PPT教案。 全书内容自成体系,语言通俗流畅,结构合理紧凑。本书既可作为高等院校单片机课程的教材及实验指导书,也可作为相关电子技术人员的参考书。
|
作者简介: |
|
章节目录: |
第1章概述 1.1单片机的发展概况 1.1.1单片机的发展历史 1.1.2典型的8位单片机产品 1.2单片机的应用及发展趋势 1.2.1单片机的应用 1.2.2单片机的发展趋势 习题1 第2章SoC单片机的结构与原理 2.1C8051F系列单片机总体结构 2.1.1C8051F系列单片机简介 2.1.2CIP51内核 2.1.3C8051F020单片机的片上资源 2.2C8051F020存储器组织 2.2.1程序存储器 2.2.2内部数据存储器 2.2.3特殊功能寄存器 2.2.4位寻址区 2.2.5外部RAM和片内XRAM 2.3中断系统 2.3.1中断概念 2.3.2C8051F中断系统 2.4端口输入/输出 2.4.1优先权交叉开关译码器 2.4.2端口0~3的I/O初始化 2.4.3端口4~7 2.4.4端口特殊功能寄存器 2.4.5交叉开关引脚分配示例 2.4.6片上资源配置工具Config的应用 2.5电源管理方式 2.5.1空闲方式 2.5.2停机方式 2.6复位与时钟 2.6.1复位源 2.6.2上电/掉电复位 2.6.3外部复位 2.6.4内部复位 2.6.5系统时钟 习题2 第3章51单片机编程语言 3.1单片机的编程语言概述 3.2CIP51指令介绍 3.2.1寻址方式 3.2.251指令集 3.3汇编语言 3.3.1伪指令 3.3.2顺序程序设计 3.3.3分支程序设计 3.3.4循环程序设计 3.3.5子程序设计 3.4C51语言 3.4.1C51关键字 3.4.2C51变量定义 3.4.3C51数据类型 3.4.4C51指针类型 3.4.5C51函数定义 3.4.6C51程序设计的注意事项 习题 3 第4章SoC单片机的片内功能部件 4.1定时器/计数器 4.1.1定时器/计数器的一般结构和工作原理 4.1.2定时器/计数器T0和T1 4.1.3定时器/计数器T2和T4 4.1.4定时器T3 4.2可编程计数器阵列 4.2.1PCA0交叉开关配置 4.2.2PCA0的特殊功能寄存器 4.2.3PCA0定时器/计数器 4.2.4PCA0捕捉/比较模块 4.2.5PCA0应用举例 4.3UART通信接口 4.3.1串行通信及基础知识 4.3.2串行接口的组成和特性 4.3.3串行接口的工作方式 4.3.4波特率设计 4.3.5串行口应用编程 4.3.6多机通信原理及应用 习题4 第5章模/数和数/模转换器 5.1模/数转换器 5.1.1模数转换原理和性能指标 5.1.2C8051F020的ADC0功能结构 5.1.3模拟多路选择器和PGA 5.1.4ADC的工作方式 5.1.5ADC0 可编程窗口检测器 5.1.6ADC1(8位ADC) 5.1.7模数转换举例 5.2数/模转换器 5.2.1数模转换原理及性能指标 5.2.2C8051F020的DAC功能
|
精彩片段: |
|
书 评: |
第5章
模/数和数/模转换器
A/D转换器简写为ADC(Analog to Digital Converter),是一种能把模拟量转换成相应的数字量的电子器件。D/A转换器简写为DAC(Digital To Analog Converter),与A/D转换器相反,它能把数字量转换成相应的模拟量。在单片机控制系统中,经常需要用到A/D和D/A转换器。它们的功能及其在实时控制系统中的地位如图51所示。由图可见,被控实体的过程信号可以是电量(如电流、电压等),也可以是非电量(如温度、压力、传速等),其数值是随时间连续变化的。各种模拟量都可以通过变送器或传感器变换成相应的数字量送给单片机。单片机对过程信息进行运算和处理,把过程信息进行当地显示或打印等,同时将处理后的数字量送给D/A转换器,转换成相应的模拟量去对被控系统进行控制和调整,使系统处于*佳工作状态。
图51单片机实时控制系统示意图
上述分析表明: A/D转换器在单片机控制系统中主要用于数据采集,向单片机提供被控对象的各种实时参数,以便单片机对被控对象进行监视和控制决策; D/A转换器用于模拟控制,通过机械或电气手段对被控对象进行调整和控制。因此,A/D、D/A转换器是架设在单片机和被控实体之间的桥梁,在单片机控制系统占有极其重要的地位。
C8051F020是混合信号型单片机,在片内集成了模/数(A/D)和数/模(D/A)转换电路。下面分别进行叙述。
5.1模/数转换器
A/D是将模拟量转换成数字量的器件。模拟量可以是电压、电流等电信号,也可以是声、光、压力、湿度、温度等随时间连续变化的非电的物理量。非电的模拟量可通过合适的传感器(如光电传感器、压力传感器、温度传感器)转换成电信号。
C8051F020片内包含一个9通道的12位的模数转换器ADC0和8通道8位的模数转换器ADC1。
5.1.1模数转换原理和性能指标
1. 转换原理
A/D转换器的种类很多,根据转换原理可以分计数式、并行式、双积分式、逐次逼近式等。计数式A/D转换器结构简单,但转换速度也很慢,所以很少采用。并行A/D转换器的转换速度*快,但因结构复杂而造价较高,只用于那些转换速度极高的场合。双积分式A/D转换器抗干扰能力强,转换精度也很高,但速度不够理想,常用于数字式测量仪表中。计算机中广泛采用逐次逼近式A/D转换器作为接口电路,它的结构不太复杂,转换速度也较高。下面仅对逐次逼近式和双积分式A/D转换器的转换原理作简单介绍。
图52逐次逼近式A/D原理框图
1) 逐次逼近式A/D转换器
逐次逼近式A/D也称逐次比较法A/D。它由结果寄存器、D/A、比较器和置位控制逻辑等部件组成,原理框图如图52所示。
这种A/D采用对分搜索法逐次比较、逐步逼近的原理来转换,整个转换过程是个“试探”过程。控制逻辑先置1结果寄存器*高位Dn-1然后经D/A转换得到一个占整个量程一半的模拟电压Vs,比较器将此Vs和模拟输入电压Vx比较,若Vx>Vs则保留此位Dn-1(为1),否则清0Dn-1位。然后控制逻辑置1结果寄存器次高位Dn-2,连同Dn-1一起送D/A转换,得到的Vs再和Vx比较,以决定Dn-2位保留为1还是清0,以此类推。*后,控制逻辑置1结果寄存器*低位D0,然后将Dn-1、Dn-2、……、D0一起送D/A转换。转换得到的结果Vs和Vx比较,决定D0位保留为1还是清0。
至此,结果寄存器的状态便是与输入的模拟量Vx对应的数字量。
2) 双积分式的A/D转换器
双积分式也称二重积分式,其实质是测量和比较两个积分的时间,它的工作原理如图53所示,一个是对模拟输入电压积分的时间T0,此时间往往是固定的; 另一个是以充电后的电压为初值,对参考电源Vref反向积分,积分电容被放电至零所需的时间Ti(Vref与Vi符号相反)。反向积分的斜率是固定的。模拟输入电压Vi与参考电压Vref之比,等于上述两个时间之比。由于Vref、T0固定,而放电时间Ti可以测出,因而可计算出模拟输入电压的大小。
图53双积分式A/D转换器工作原理图
由于T0、Vref为已知的固定常数,因此反向积分时间Ti与输入模拟电压Vi在T0时间内的平均值成正比。输入电压Vi愈高,VA愈大,Ti就愈长。在Ti开始时刻,控制逻辑同时打开计数器的控制门开始计数,直到积分器恢复到零电平时,计数停止。则计数器所计出的数字即正比于输入电压Vi在T0时间内的平均值,于是完成了一次A/D转换。
由于双积分型A/D转换是测量输入电压Vi在T0时间内的平均值,所以对常态干扰(串模干扰)有很强的抑制作用,尤其对正负波形对称的干扰信号,抑制效果更好。
双积分型的A/D转换器具有电路简单、抗干扰能力强、精度高等优点。但转换速度比较慢,常用的A/D转换芯片的转换时间为毫秒级。例如12位的积分型A/D芯片ADCET12BC,其转换时间为1ms。因此适用于模拟信号变化缓慢,采样速率要求较低,而对精度要求较高,或现场干扰较严重的场合。例如常在数字电压表中采用该芯片进行A/D采样。
2. 性能指标
衡量A/D性能的主要参数是:
1) 分辨率(resolution)
分辨率是指输出的数字量变化一个相邻的值所对应的输入模拟量的变化值; 取决于输出数字量的二进制位数。一个n位的A/D转换器所能分辨的*小输入模拟增量定义为满量程值的2-n倍。例如,满量程为10V的8位A/D芯片的分辨率为10V×2-8=39mV; 而16位的A/D是10V×2-16=153μV。
2) 满刻度误差(full scale error)
满刻度误差也称增益误差,即输出全1时输入电压与理想输入量之差。
3) 转换速率(conversion rate)
转换速度是指完成一次A/D转换所需时间的倒数,是一个很重要的指标。A/D转换器型号不同,转换速度差别很大。选用A/D转换器型号视应用需求而定,在被控系统的时间允许的情况下,应尽量选用便宜的逐次比较型A/D转换器。
4) 转换精度(conversion accuracy)
A/D转换器的转换精度由模拟误差和数字误差组成。模拟误差是比较器、解码网络中的电阻值以及基准电压波动等引起的误差,数字误差主要包括丢失码误差和量化误差,前者属于非固定误差,由器件质量决定,后者和A/D输出数字量的位数有关,位数越多,误差越小。
5.1.2C8051F020的ADC0功能结构
C8051F020的ADC0子系统就是一个100ksps、12位分辨率的逐次逼近寄存器型ADC。ADC0的*高转换速度为100ksps,其转换时钟来源于系统时钟分频,分频值保存在寄存器ADC0CF的ADCSC位。C8051F020的ADC0子系统功能框图如图54所示,它包括一个9通道的可编程模拟多路选择器(AMUX0)、一个可编程增益放大器(PGA0)和一个100ksps、12位分辨率的逐次逼近寄存器型ADC,ADC中集成了跟踪保持电路和可编程窗口检测器。AMUX0、PGA0、数据转换方式及窗口检测器都可用软件通过特殊功能寄存器来控制。ADC0所使用的电压基准将在5.3节专门介绍。只有当ADC0控制寄存器中的AD0EN位被置1时ADC0子系统(ADC0、跟踪保持器和PGA0)才被允许工作。当AD0EN位为0时,AD0C子系统处于低功耗关断方式。
图54ADC0子系统功能框图
从ADC0的功能框图可以看出,ADC0的运行主要与图上标的10个SFR有关。8个外部输入的模拟量可以通过配置寄存器AMX0CF设定为单端输入或双端输入; 8个外部输入的模拟量和一个内部温度传感器量通过通道选择寄存器AMX0SL设定在某一时刻通过多路选择器; 从多路选择器出来的模拟量通过配置寄存器ADC0CF设定ADC转换速度和对模拟量的放大倍数; 由控制寄存器ADC0CN对ADC进行模拟量转换的启动、启动方式、采样保持、转换结束、数字量格式等进行设定; 12位的转换好的数字量存放在数据字寄存器ADC0H、ADC0L中; ADC0中提供了可编程窗口检测器,通过上下限寄存器ADC0GTH、ADC0GTL、ADC0LTH、ADC0LTL设定所需要的比较极限值。
在进行模拟量转换前设定好以上SFR,CPU就按设定好的模式在模拟量转换好时用指令读出数据寄存器中的数字量或在中断服务程序中读取数字量,然后再进行下一次的转换。ADC0的电气特性见附录C。
5.1.3模拟多路选择器和PGA
模拟多路选择器AMUX(Analog Multiplexer)中的8个通道用于外部测量,而第九通道在内部被接到片内温度传感器。这9个模拟通道通过通道选择寄存器AMX0SL和配置寄存器AMX0CF进行选择和配置,可以将AMUX输入对编程为工作在差分或单端方式。这就允许用户对每个通道选择*佳的测量技术,甚至可以在测量过程中改变方式。在系统复位后AMUX的默认方式为单端输入。表51给出了每种配置下各通道的功能。
配置寄存器AMX0CF的格式如下:
其中,各位的含义如下:
位7~4——未使用。读= 0000b; 写=忽略。
位3(AIN67IC)——AIN6、AIN7输入对配置位。
0: AIN6和AIN7为独立的单端输入。
1: AIN6和AIN7为(分别为)+、-差分输入对。
位2(AIN45IC)——AIN4、AIN5输入对配置位。
0: AIN4和AIN5为独立的单端输入。
1: AIN4、AIN5为(分别为)+、-差分输入对。
位1(AIN23IC)——AIN2、AIN3输入对配置位。
0: AIN2和AIN3为独立的单端输入。
1: AIN2、AIN3为(分别为)+、-差分输入对。
位0(AIN01IC)——AIN0、AIN1输入对配置位。
0: AIN0和AIN1为独立的单端输入。
1: AIN0、AIN1为(分别为)+、-差分输入对。
注: 对于被配置成差分输入的通道,ADC0数据字格式为2的补码。
通道选择寄存器AMX0SL的格式如下:
其中,各位的含义如下:
位7~4——未使用。读= 0000b; 写=忽略。
位3~0(AMX0AD3~0)——AMUX0地址位。
0000~1111,根据表51选择ADC输入的通道。
表51模拟通道配置
AMX0AD30
000000010010001101000101011001111xxx
AMX0CF
位3~0
0000AIN0AIN1AIN2AIN3AIN4AIN5AIN6AIN7温度传感器
0001+ (AIN0)
- (AIN1)AIN2AIN3AIN4AIN5AIN6AIN7温度传感器
0010AIN0AIN1+ (AIN2)
- (AIN3)AIN4AIN5AIN6AIN7温度传感器
0011+ (AIN0)
- (AIN1)+ (AIN2)
- (AIN3)
AIN4AIN5AIN6AIN7温度传感器
0100AIN0AIN1AIN2AIN3+ (AIN4)
- (AIN5)AIN6AIN7温度传感器
0101+ (AIN0)
- (AIN1)AIN2AIN3+ (AIN4)
- (AIN5)AIN6AIN7温度传感器
0110AIN0AIN1+ (AIN2)
- (AIN3)+ (AIN4)
- (AIN5)AIN6AIN7温度传感器
0111+ (AIN0)
- (AIN1)+ (AIN2)
- (AIN3)+ (AIN4)
- (AIN5)AIN6AIN7温度传感器
1000AIN0AIN1AIN2AIN3AIN4AIN5+ (AIN6)
- (AIN7)温度传感器
1001+ (AIN0)
- (AIN1)AIN2AIN3AIN4AIN5+ (AIN6)
- (AIN7)温度传感器
1010AIN0AIN1+ (AIN2)
- (AIN3)AIN4AIN5+ (AIN6)
- (AIN7)温度传感器
1011+ (AIN0)
- (AIN1)+ (AIN2)
- (AIN3)AIN4AIN5+ (AIN6)
- (AIN7)温度传感器
1100AIN0AIN1AIN2AIN3+ (AIN4)
- (AIN5)+ (AIN6)
- (AIN7)温度传感器
1101+ (AIN0)
- (AIN1)AIN2AIN3+ (AIN4)
- (AIN5)+ (AIN6)
- (AIN7)温度传感器
1110AIN0AIN1+ (AIN2)
- (AIN3)+ (AIN4)
- (AIN5)+ (AIN6)
- (AIN7)温度传感器
1111+ (AIN0)
- (AIN1)+ (AIN2)
- (AIN3)+ (AIN4)
- (AIN5)+ (AIN6)
- (AIN7)温度传感器
在表51中可看出,从多路选择器出来的哪一个通道和单端或差分输入由通道选择寄存器AMX0SL和配置寄存器AMX0CF进行选择和配置,表左边的垂直方向表示配置寄存器AMX0CF低4位值,指出各通道的单端还是差分输入,表上边的水平方向表示通道选择寄存器AMX0SL的低4位,选择9路输入的中的某一路。
PGA(Programmable Gain Amplifier)即可编程增益放大器,它对AMUX输出信号的放大倍数由ADC0配置寄存器ADC0CF中的AMP0GN2~0确定。PGA增益可以用软件编程为0.5、1、2、4、8或16,复位后的默认增益为1。注意,PGA0的增益对温度传感器也起作用。
配置寄存器ADC0CF的格式如下:
其中,各位的含义如下:
位7~3 (AD0SC4~0)——ADC0 SAR转换时钟周期控制位。
SAR转换时钟来源于系统时钟,由下面的方程给出
AD0SC=SYSCLKCLKSAR0-1
其中AD0SC表示AD0SC4~0中保持的数值,CLKSAR0表示所需要的ADC0 SAR时钟(注: ADC0 SAR时钟应小于或等于2.5MHz)。
位2~0 (AMP0GN2~0)——ADC0内部放大器增益(PGA)。
000: 增益= 1
001: 增益= 2
010: 增益= 4
011: 增益= 8
10x: 增益= 16
11x: 增益= 0.5
5.1.4ADC的工作方式
1. 转换过程
ADC0的转换过程由控制寄存器ADC0CN来设置和控制的。
控制寄存器ADC0CN的格式如下:
其中,各位的含义如下:
位7 (AD0EN)——ADC0使能位。
0: ADC0禁止。ADC0处于低耗停机状态。
1: ADC0使能。ADC0处于活动状态,并准备转换数据。
位6 (AD0TM)——ADC跟踪方式位。
0: 当ADC被使能时,除了转换期间之外一直处于跟踪方式。
1: 由AD0CM1~0定义跟踪方式。
位5 (AD0INT)——ADC0转换结束中断标志。该标志必须用软件清0。
0: 从*后一次将该位清0后,ADC0还没有完成一次数据转换。
1: ADC完成了一次数据转换。
位4 (AD0BUSY)——ADC0忙标志位。
读:
0: ADC0转换结束或当前没有正在进行的数据转换。AD0INT在AD0BUSY的下降沿被置1。
1: ADC0正在进行转换。
……
|
其 它: |
|
|
|