第1章 微控制器的原理及C8051F系列 1
1.1 微控制器的发展历史 1
1.2 微控制器系统简介 2
1.3 微控制器的发展 3
1.4 8位机发展的3个技术飞跃 4
1.5 从C8051F看8位单片机发展之路 5
1.6 C8051F系列产品优势和分类 11
1.6.1 C8051F系列产品优势 11
1.6.2 C8051F系列分类 16
第2章 C8051F系列单片机结构 20
2.1 C8051F系列单片机总体体系结构 20
2.2 CIP-51微控制器 24
2.3 存储器组织 25
2.3.1 程序存储器 26
2.3.2 数据存储器 26
2.3.3 通用寄存器 27
2.3.4 位寻址空间 27
2.3.5 堆栈 27
2.3.6 片内数据存储器读写实例 27
2.4 特殊功能寄存器 29
2.5 FLASH存储器 32
2.5.1 非易失性数据存储 34
2.5.2 安全选项 34
2.6 外部数据存储器和片内XRAM 36
2.6.1 端口选择和配置 37
2.6.2 复用和非复用选择 38
2.6.3 存储器模式选择 39
2.6.4 时序 40
2.7 时钟系统 42
2.7.1 时序与时钟 42
2.7.2 设计和使用时钟时应考虑的问题 43
2.7.3 时钟控制寄存器 44
2.7.4 外部振荡器举例 45
2.7.5 系统时钟初始化编程实例 46
2.8 复位电路 47
2.8.1 复位原理 47
2.8.2 C8051F系列的8种复位源 49
2.9 中断系统 51
2.10 电源管理 54
2.11 JTAG 54
2.12 端口原理参数和交叉开关 56
2.12.1 C8051F端口特点 56
2.12.2 交叉开关原理和简化规则 57
2.12.3 C8051F04x系列的I/O功能和优先权交叉开关译码器 59
2.12.4 配置端口 61
2.12.5 交叉开关引脚分配示例 62
2.13 模拟外设组成部分 63
2.13.1 ADC0的组成及其控制(以C8051F040为例) 64
2.13.2 ADC0的工作方式 65
2.13.3 ADC0编程实例 66
第3章 C51的程序结构与数据类型 70
3.1 C语言与C8051F系列单片机 70
3.1.1 C语言的特点与C语言向单片机移植 70
3.1.2 C51编译器 71
3.2 C51的程序结构 72
3.2.1 C51的一般格式 72
3.2.2 C51语言程序的基本结构 74
3.3 C51的数据类型 76
3.3.1 数据与数据类型 76
3.3.2 常量 77
3.3.3 变量 80
3.3.4 C51构造数据类型 86
3.3.5 C51的指针 95
第4章 C51的运算符及数据的存储模式 109
4.1 C51的单词及运算符 109
4.1.1 C51的单词 109
4.1.2 C51的运算符 114
4.2 数据的存储类型和存储模式 124
4.2.1 C8051F系列单片机的存储器 124
4.2.2 C51存储类型与C8051F系列单片机存储器 125
4.2.3 存储模式 125
4.3 C51对SFR、可寻址位、存储器和I/O口的地址访问 128
4.3.1 C51对SFR的定义 128
4.3.2 C51对可寻址位的定义 128
4.3.3 C51对存储器和I/O口的绝对地址访问 129
第5章 C51的函数、控制语句及程序设计 131
5.1 C51的函数 131
5.1.1 函数的分类 131
5.1.2 函数的说明 132
5.1.3 函数的参数和返回值 139
5.1.4 函数的调用 142
5.1.5 数组、指针与函数调用 147
5.1.6 内部函数和外部函数 153
5.1.7 C51库函数介绍 154
5.2 C51的控制语句 157
5.2.1 if语句 157
5.2.2 switch/case语句 159
5.2.3 循环结构流程控制语句 161
5.3 C51的预处理器 169
5.3.1 包含文件伪指令 169
5.3.2 伪指令宏 170
5.3.3 条件编译伪指令 174
5.3.4 编译器伪指令 174
5.3.5 #error伪指令 175
5.4 C51语言和汇编语言的混合编程 175
5.4.1 C51语言和汇编语言的性能比较 175
5.4.2 混合编程的注意事项 176
5.4.3 在不同存储模式下的混合编程 177
第6章 C8051F单片机系统基础应用实验 182
6.1 开发工具的主要技术指标 182
6.2 Cygnal单片机开发工具集成开发环境使用说明 184
6.3 Cygnal C8051F单片机实验 185
6.4 在C8051F020单片机上的初级软件实验(汇编语言) 186
6.4.1 无符号数十进制加法实验 186
6.4.2 数据传送实验 187
6.4.3 数据排序实验 188
6.4.4 整数二翻十实验 190
6.4.5 查表实验 193
6.5 步进电机控制实验(C语言) 194
6.6 压力测试实验(C语言) 198
6.6.1 压力测试实验目的和工作原理 198
6.6.2 程序函数和程序 200
6.6.3 调试方法和程序清单 201
6.7 单总线数字温度传感器测温应用实验(C语言) 204
6.8 点阵液晶显示实验(C语言) 212
6.8.1 实验目的 212
6.8.2 实验设备 212
6.8.3 实验所需函数和程序框图 220
6.8.4 调试方法和实验程序 221
6.9 直流电机转速测量控制实验 231
6.10 利用DAC在电阻负载上输出可变频、可变幅值波形 233
6.10.1 输出可变频、可变幅值方波参考程序 233
6.10.2 输出可变频、可变幅值锯齿波参考程序 234
6.10.3 输出可变频可变幅值正弦波参考程序 235
第7章 C8051F与传感器接口及数据处理 238
7.1 A/D转换器相关概念 238
7.2 C8051F931与Si1120光感应器的应用 240
7.2.1 Si1120光感应器特征 240
7.2.2 工作原理 241
7.2.3 模式选择 242
7.2.4 LED和LED电流的选择 244
7.2.5 机械和光学应用 245
7.3 C8051F与水电站大坝的电阻式传感器接口与测量 245
7.3.1 常用电阻式传感器 246
7.3.2 底层模块中电阻式传感器硬件方案 250
7.3.3 恒流源、放大器和A/D模块接口设计 252
7.3.4 底层模块中电阻式传感器系统软件设计 255
7.3.5 系统测试结果及误差分析 262
7.4 C8051F与土建及水电站大坝的振弦式传感器接口与测量 264
7.4.1 振弦式传感器 264
7.4.2 底层振弦式传感器测量模块系统的硬件设计 268
7.4.3 CPU和通信接口设计 271
7.4.4 振弦式传感器激振及频率测量程序设计 272
7.5 C8051F040在溶解氧项目中的应用 275
7.5.1 溶解氧检测的光学氧法 275
7.5.2 光学氧法检测原理 275
7.5.3 检测仪的机械结构 276
7.5.4 系统电路设计 276
7.5.5 系统软件设计 281
7.5.6 系统测试效果 287
第8章 C8051F与驱动LED专用电路接口设计 290
8.1 HD7279A驱动七段码显示 290
8.2 具有I2C的LM92和SAA1064测温显示电路的设汁 302
8.2.1 LM92和SAA1064概述 302
8.2.2 功能说明 304
8.2.3 典型应用 305
8.2.4 LM92测温应用参考C程序 307
8.2.5 LM92测温应用参考汇编程序 313
第9章 C8051F的USB转UART桥接控制器 322
9.1 CP2110的USB转UART桥接器 322
9.1.1 CP2110的系统概述 322
9.1.2 电气特性 325
9.1.3 USB功能控制器和收发器 326
9.1.4 异步串行数据总线(UART)接口 327
9.1.5 一次可编程ROM 329
9.1.6 调压器 330
9.2 用专用芯片CP2101进行USB接口转换设计 331
9.2.1 进行USB接口转换设计需要解决的问题 331
9.2.2 硬件电路设计 332
9.2.3 CP2101的特性和原理 333
9.2.4 USB接口主机CAN节点的通信软件设计 337
9.2.5 上位机USB基本通信软件设计 338
9.2.6 PC上串口通信实现 339
9.2.7 MSComm控件实现 342
9.2.8 串口应用 343
9.3 用专用接口芯片ISP1581实现USB接口电路的设计 344
9.3.1 硬件设计 345
9.3.2 系统软件设计 346
第10章 具有USB的C8051F应用系统 348
10.1 USB系统拓扑结构 348
10.2 C8051F326/7功能及软硬件设计 350
10.2.1 C8051F326/7具有USB的C8051全速USB、16KB FLASH微控制器系统概述 350
10.2.2 C8051F326/7系统设计 354
10.2.3 FIFO管理 358
10.2.4 功能配置和控制 359
10.3 利用C8051F340的USBXpress开发包进行USB通信设计 362
10.4 基于USB总线的多路电话录音系统 366
10.5 基于C8051F320心电监护系统设计 371
10.6 C8051F320的数据采集系统USB接口设计 373
10.7 C8051F320 SOC与AM45DB321构成数据采集存储系统 376
第11章 C8051F040与LCD、触摸屏接口设计 380
11.1 工程智能仪器介绍 380
11.1.1 智能仪器的工作原理 380
11.1.2 智能仪器的功能特点 381
11.1.3 智能仪器的发展趋势 381
11.2 LCD液晶显示技术 382
11.2.1 LCD液晶显示原理 382
11.2.2 LCD液晶显示技术分类 383
11.2.3 LCD的缺陷 384
11.2.4 液晶电视系统的复杂性 385
11.3 大坝传感器的测量系统硬件设计 386
11.3.1 基本构成 386
11.3.2 系统初始化实例 387
11.3.3 LCD液晶显示器模块设计 388
11.3.4 LCD与CPU的接口和LCD显示器控制程序 391
11.3.5 外部存储器接口电路 395
11.3.6 存储器实用程序 397
11.4 驱动LCD的CP24XX专用芯片与C8051F接口简介 397
11.5 触摸屏模块接口电路设计 400
11.5.1 触摸屏工作原理 400
11.5.2 四线式电阻式触摸屏原理 400
11.5.3 ADS7843及接口电路 402
11.5.4 软件设计 403
11.6 触摸屏(ADS7846)接口和线性校准设计实例 410
第12章 C8051F300系统及SPI应用 414
12.1 C8051F300系统功能概述 414
12.2 C8051F系列串行外设接口SPI介绍 417
12.2.1 C8051F040中SPI总线的信号说明 418
12.2.2 C8051F040的SPI功能概述 420
12.3 C8051F30X系列软件SPI应用实例说明 422
12.4 SPI软件实例清单 425
第13章 多C8051F微处理器系统应用 444
13.1 多CPU嵌入式系统的设计方法 444
13.1.1 多CPU系统中的数据共享 444
13.1.2 利用串行总线实现多CPU之间的通信 445
13.1.3 CAN总线多CPU远程传输可靠性的设计和实现方法 446
13.2 双CPU的CAN总线中继器设计 450
13.2.1 CAN总线中继器概述 450
13.2.2 双MCU的CAN总线中继器硬件系统设计 452
13.2.3 中继器的通信协议设计 454
13.2.4 中继器MCU状态控制设计 455
13.2.5 中继器系统的实时性分析 456
13.2.6 CAN总线中继器的软件设计 456
第14章 C8051F系统的存储器接口 470
14.1 存储器及其分类 470
14.1.1 只读存储器 470
14.1.2 随机存储器 471
14.2 C8051F片内外部数据存储器 473
14.2.1 外部数据存储器分类与MCU的接口 473
14.2.2 片内数据存储器读写实例 476
14.3 铁电存储器(FRAM)结构及应用 477
14.3.1 FRAM的发现 477
14.3.2 铁电存储原理 478
14.3.3 铁电存储器的基本结构及工作原理 479
14.3.4 铁电随机存储器的优点 480
14.3.5 FRAM的应用领域 480
14.3.6 常见Ramtron FRAM产品 481
14.3.7 集成FRAM的微控制器 482
14.3.8 FRAM的最新产品FM22L16 483
14.4 微处理器内部的FLASH在线编程 483
14.4.1 现有的FLASH及编程方法 484
14.4.2 在线实时自编程的原理和实现方案 485
第15章 C8051F040的CAN总线通信应用 490
15.1 现场总线的技术 490
15.1.1 现场总线技术概述 490
15.1.2 CAN总线概念 491
15.1.3 CAN总线特点 493
15.1.4 CAN总线技术规范 494
15.1.5 报文传送和帧结构 495
15.2 CAN总线远程控制网络硬件系统的设计与实现 498
15.2.1 系统总体介绍及结构分析 498
15.2.2 通用CAN节点设计 499
15.3 CAN总线远程控制网络软件系统的设计和实现 501
15.3.1 Bosch C_CAN规范简介 501
15.3.2 C_CAN主要部分说明 502
15.3.3 通信配置 505
15.3.4 消息的处理 506
15.3.5 中断的控制 508
15.3.6 位时序的配置 509
15.3.7 CAN通信程序软件设计实例 512
15.4 CAN总线两点之间通信实例程序清单 516
第16章 I2C总线和实时时钟接口设计 530
16.1 I2C技术产生背景 530
16.2 I2C总线技术概况 531
16.2.1 I2C版本协议的简述 532
16.2.2 I2C原理 533
16.3 具有I2C总线PCF8563实时时钟/日历芯片 538
16.3.1 PCF8563概述 538
16.3.2 PCF8563功能描述 540
16.3.3 综合实验的实时时钟模块接口 547
16.3.4 C8051F040对S-3530A的基本操作 547
16.3.5 实时时钟模块程序 551
第17章 C8051F系统低功耗 560
17.1 低功耗原理 560
17.1.1 从工艺角度分析功耗 560
17.1.2 从晶体管特性曲线分析动态功耗 561
17.1.3 从CPU管理工作角度分析系统功耗 562
17.1.4 系统后备功能 566
17.2 C8051F电源管理技术及功耗计算 567
17.2.1 关键点和降低功耗的方法 567
17.2.2 降低电源电压和CIP-51处理器电源管理方式 569
17.2.3 功耗计算 571
17.2.4 低功耗MCU系统中要注意的问题 572
17.3 整体系统低功耗要解决的问题 572
17.3.1 放大器低功耗设计 572
17.3.2 电源供给 574
17.3.3 存储器的低功耗运行 576
17.3.4 液晶显示屏 577
第18章 C8051F系列的综合应用实例 580
18.1 SPI接口应用——ISD4004语音录放芯片 580
18.1.1 SPI总线 580
18.1.2 ISD4004语音芯片 582
18.1.3 ISD4004的应用 584
18.2 智能的锂离子电池充电器设计 594
18.2.1 锂离子电池充电工作原理及充电器的设计 595
18.2.2 智能化锂离子电池充电器硬/软件设计 599
18.3 用C8051F020串行FLASH扩展大容量数据存储器 618
18.3.1 硬件简介 618
18.3.2 工作原理 621
18.3.3 硬件原理图和程序清单 622
18.3.4 程序清单 622
参考文献 628