标题：从零开始学51单片机
基本信息
书名：从零开始学51单片机
作　者：贺亮　编著
出 版 社：电子工业出版社
出版时间：2012-9-1
版　次：1
页　数：269
字　数：455000
印刷时间：2012-9-1
开　本：16开
内容简介
本书由浅入深、全面、系统地介绍了单片机C51开发技术。本书提供了大量实例，供读者实战演练。另外，作者专门为每一章的内容设置了练习题，用来加深、巩固对每一章知识的理解，有些章节设置了扩展式的练习，留给读者去思考、提高。本书共分5篇。第1篇介绍单片机的发展史、应用领域、软件开发环境Keil C μVision3的搭建、硬件最小系统的制作、编程器的制作和STC烧录工具的使用；第2篇介绍51单片机C语言编程中常用的数据类型、运算符与表达式、流程控制语句、函数、数组和指针、结构体与共用体等；第3篇介绍51单片机的片内资源，包括单片机的I/O编程、中断系统、定时器/计数器、USART通用串行接口、片内EEPROM和看门狗；第4篇介绍增强型单片机的功能，包括第2通用串行接口USART2、同步外围串行接口SPI、PWM脉宽调制、A/D转换；第5篇设计了一个完整的应用实例，详细介绍了整个系统的开发过程，以提高读者实战水平。本书涉及面广，从C语言编程知识到硬件电路原理，再到单片机片内功能模块的配置和使用，最后到项目开发，几乎涉及51单片机开发的所有重要知识。本书抛开了单片机复杂的内部资源，弱化了对数量庞大的寄存器的讲解，把重点放在原理设计和功能实现上。
目录
第1篇 入门与提高
第1章 认识51系列单片机
1.1 单片机的发展史
1.2 单片机的应用
1.3 51单片机的开发环境——Keil μVision
1.4 快速掌握单片机的开发要点
1.5 STC89C51RC/RD+系列单片机
1.5.1 STC89C51系列单片机选型
1.5.2 常见的封装类型
1.6 STC89C51RC/RD+系列单片机的外部引脚
1.7 小结
1.8 习题
第2章 开发环境的搭建
2.1 软件开发环境
2.1.1 安装Keil C μVision3开发环境
2.1.2 增加对STC型号的支持
2.1.3 建立第一个工程
2.1.4 开发中经常用到的功能
2.2 必要的硬件环境
2.2.1 10元DIY单片机最小系统
2.2.2 动手制作一个编程器
2.3 STC烧录工具
2.4 小结
2.5 习题
第2篇 51单片机C语言编
第3章 单片机C语言的基本数据类型
3.1 常量与变量
3.2 基本数据类型
3.2.1 整型
3.2.2 长整型
3.2.3 字符型
3.2.4 位类型
3.2.5 浮点数
3.2.6 双精度浮点数
3.3 小结
3.4 习题
第4章 运算符与表达式
4.1 算术运算符与表达式
4.2 关系运算符与表达式
4.3 逻辑运算符与表达式
4.4 位运算符与表达式
4.5 赋值运算符与表达式
4.6 小结
4.7 习题
第5章 流程控制
5.1 条件语句if
5.1.1 条件语句if的3种表达方式
5.1.2 条件语句if嵌套
5.2 开关语句switch … case
5.2.1 开关语句的语法格式
5.2.2 开关语句的执行过程
5.2.3 注意事项
5.3 循环语句for
5.3.1 循环语句for的语法格式
5.3.2 循环语句for的执行过程
5.3.3 循环语句for嵌套
5.4 另一种循环语句while和do…while
5.4.1 循环语句while和do…while的语法格式
5.4.2 循环语句while和do…while的执行过程
5.5 无条件跳转语句goto
5.6 中断语句break/continue
5.6.1 中断语句break
5.6.2 中断语句continue
5.7 小结
5.8 习题
第6章 函数
6.1 定义函数的一般形式
6.2 函数的参数和返回值
6.2.1 函数的参数
6.2.2 函数的返回值
6.3 函数的调用
6.3.1 被调函数的声明
6.3.2 函数语句调用
6.3.3 函数表达式调用
6.3.4 作为函数的参数调用
6.3.5 函数的嵌套调用
6.3.6 函数的递归调用
6.4 单片机的特殊函数——中断函数
6.5 小结
6.6 习题
第7章 数组与指针
7.1 数组 71
7.1.1 一维数组
7.1.2 二维数组与多维数组
7.2 指针
7.2.1 指针的概念
7.2.2 定义和引用指针变量
7.2.3 指针和数组
7.3 小结
7.4 习题
第8章 结构体与共用体
8.1 结构体
8.1.1 什么是结构体
8.1.2 定义结构体变量
8.1.3 结构体变量的初始化
8.1.4 使用结构体
8.1.5 指向结构体类型数据的指针
8.1.6 将结构指针变量作为函数的参数
8.2 共用体
8.2.1 什么是共用体
8.2.2 定义共用体变量
8.2.3 使用共用体
8.3 小结
8.4 习题
第3篇 51单片机开发实战
第9章 IO端口编程
9.1 STC89C51RC-RD+系列单片机的I/O端口
9.2 I/O端口的工作模式
9.2.1 准双向口/弱上拉模式
9.2.2 输入/高阻模式
9.2.3 输出/开漏模式
9.2.4 配置I/O的工作模式
9.3 I/O输出实验
9.3.1 从点亮一个LED开始
9.3.2 闪动的LED
9.3.3 点亮更多的LED
9.3.4 点亮数码管
9.3.5 动态点亮数码管
9.3.6 控制3-8译码器
9.4 I/O输入实验
9.4.1 分离式按键
9.4.2 模拟实现计数器
9.4.3 矩阵键盘
9.5 小结
9.6 习题
第10章 中断系统和外部中断
10.1 中断的基本知识
10.1.1 什么是中断
10.1.2 使用中断的好处
10.2 中断源
10.3 中断寄存器
10.3.1 中断使能寄存器
10.3.2 中断优先级寄存器
10.3.3 定时器控制寄存器、外部中断标志
10.3.4 串行口控制寄存器
10.4 中断优先级
10.5 使用外部中断检测按键
10.5.1 低电平触发方式
10.5.2 下降沿触发方式
10.6 使用外部中断设计运动限位装置
10.6.1 硬件电路原理图
10.6.2 代码实现
10.7 小结
10.8 习题
第11章 定时器/计数器
11.1 定时器/计数器介绍
11.2 与定时器/计数器的有关的寄存器
11.2.1 工作方式寄存器TMOD
11.2.2 控制寄存器TCON
11.2.3 初值寄存器THx、TLx
11.3 定时器的工作模式
11.3.1 模式0
11.3.2 模式1
11.3.3 模式2（8位自动重装模式）
11.3.4 模式3
11.4 定时器中断实验
11.4.1 定时器秒表实验电路原理图
11.4.2 秒表实验控制流程
11.4.3 代码实现
11.5 简易电子琴演奏实验
11.5.1 电子琴实验的电路原理图
11.5.2 代码实现
11.6 小结
11.7 习题
第12章 USART通用串行口通信
12.1 通用串行口介绍
12.2 与通用串行口有关的寄存器
12.2.1 电源控制寄存器PCON
12.2.2 串行口控制寄存器SCON
12.2.3 数据缓存寄存器SBUF
12.2.4 中断控制位ES
12.3 通用串行口的工作模式
12.3.1 模式0，同步移位寄存器模式
12.3.2 模式1，波特率可变的8位数据异步收发
12.3.3 模式2，波特率固定的位数据异步收发
12.3.4 模式3，波特率可变的位数据异步收发
12.4 计算波特率
12.5 通过串行口和PC通信
12.5.1 串行口通信规范
12.5.2 串行口实验电路
12.5.3 实验控制流程
12.5.4 通信协议
12.5.5 代码实现
12.6 单片机串行口远距离通信
12.6.1 RS-485简介
12.6.2 485通信的实验电路
12.6.3 代码实现
12.7 小结
12.8 习题
第13章 访问内部EEPROM
13.1 EEPROM介绍
13.2 EEPROM的地址
13.3 与EEPROM有关的寄存器
13.4 EEPROM的常用操作
13.4.1 定义相关寄存器
13.4.2 读操作
13.4.3 扇区擦除操作
13.4.4 写操作
13.5 EEPROM应用实例
13.6 掉电时保存数据到EEPROM
13.6.1 实验电路图
13.6.2 代码实现
13.7 小结
13.8 习题
第14章 看门狗WDT
14.1 看门狗WDT介绍
14.2 看门狗控制寄存器WDT-CONTR
14.3 看门狗溢出时间
14.4 测试看门狗
14.5 小结
14.6 习题
第4篇 更多功能的单片机
第15章 STC12C5A60S2系列单片机
15.1 STC12C5A60S2系列单片机介绍
15.2 STC12C5A60S2系列单片机外部引脚
15.3 过渡到STC12C5A60S2系列的要点
15.4 小结
15.5 习题
第16章 通用串行接口 USART2
16.1 与通用串行口2有关的寄存器
16.1.1 控制寄存器S2CON
16.1.2 数据缓冲寄存器S2BUF
16.1.3 独立波特率发生寄存器BRT
16.1.4 辅助寄存器AUXR
16.1.5 与串行口2中断有关的寄存器
16.1.6 辅助寄存器1，AUXR1
16.2 使用串行口2与PC通信
16.2.1 串行口2实验电路
16.2.2 使用串行口2的步骤
16.2.3 代码实现
16.3 使用双串行口设计RS-485双向中继器
16.3.1 RS-485双向中继器的实验电路
16.3.2 代码实现
16.4 小结
16.5 习题
第17章 同步外围串行接口SPI
17.1 SPI简介
17.2 与SPI有关的寄存器
17.2.1 SPI控制寄存器SPCTL
17.2.2 SPI状态寄存器SPSTAT
17.2.3 SPI数据寄存器SPDAT
17.2.4 辅助寄存器1，AUXR1
17.3 SPI接口的通信方式
17.3.1 单主—单从方式
17.3.2 双器件互为主从方式
17.3.3 单主—多从方式
17.4 注意事项
17.4.1 作为主机的注意事项
17.4.2 作为从机的注意事项
17.4.3 总线争夺
17.4.4 写冲突
17.5 双CPU单主、单从通信实验
17.6 小结
17.7 习题
第18章 PWM脉宽调制
18.1 PWM简介
18.2 与PWM有关的寄存器
18.2.1 PCA工作模式寄存器CMOD
18.2.2 PCA控制寄存器CCON
18.2.3 PCA捕获/比较寄存器CCAPM0和CCAPM1
18.2.4 PCA的16位计数寄存器CL、CH
18.2.5 PCA捕捉/比较寄存器CCAPnL、CCAPnH
18.2.6 PWM寄存器PCA-PWM0、PCA-PWM1
18.2.7 辅助寄存器AUX1
18.3 PWM的设置
18.4 输出PWM的测试程序
18.4.1 实验电路
18.4.2 控制思想
18.4.3 代码实现
18.5 使用PWM方式控制步进电机
18.5.1 步进电机的工作原理
18.5.2 实验电路
18.5.3 代码实现
18.6 小结
18.7 习题
第19章 A/D转换
19.1 A/D转换简介
19.2 与A/D转换相关的寄存器
19.2.1 P1口模拟功能控制寄存器P1ASF
19.2.2 ADC控制寄存器ADC-CONTR
19.2.3 A/D转换结果寄存器ADC_RES/ADC_RESL
19.2.4 与A/D中断有关的寄存器
19.3 用A/D转换器检测电压实验
19.3.1 实验电路
19.3.2 代码实现
19.4 使用A/D转换检测档位开关
19.4.1 检测原理与实验电路
19.4.2 代码实现
19.5 A/D转换误差问题
19.6 小结
19.7 习题
第5篇 51单片机统合应用实例
第20章 综合应用实例
20.1 需求分析
20.1.1 系统结构
20.1.2 技术要求
20.2 系统设计
20.2.1 硬件电路设计
20.2.2 需要用到的单片机资源
20.2.3 软件设计思路
20.3 各子系统的工作流程
20.3.1 数据接收子系统、协议管理子系统
20.2.2 终端地址的使用与维护
20.2.3 集体上传控制
20.2.4 I/O处理子系统和工厂模式
20.2.5 电源管理子系统
20.4 软件编程、系统实现
20.4.1 完整的源代码
20.4.2 初始化部分代码
20.4.3 按键检测部分代码
20.4.4 地址管理部分代码
20.4.5 电压检测部分代码
20.4.6 串行口接收数据、处理协议的部分代码
20.4.7 休眠和唤醒的部分代码
20.5 小结
20.6 习题
[1]