第1章 绪论 1
1.1 单片机基础知识 1
1.1.1 单片机的结构和特点 1
1.1.2 单片机的发展 2
1.1.3 单片机芯片技术的发展趋势 2
1.2 单片机应用 4
1.2.1 单片机应用方向 4
1.2.2 单片机应用系统的分类 5
1.3 51系列单片机 6
1.3.1 MCS-51系列单片机 6
1.3.2 AT89系列单片机 7
1.3.3 各种衍生品种的51单片机 8
1.4 其他系列单片机 10
1.5 其他嵌入式处理器简介 12
习题1 13
第2章 AT89S51单片机的结构与组成 14
2.1 AT89S51单片机的内部结构及信号引脚 14
2.1.1 AT89S51单片机结构 14
2.1.2 信号引脚 16
2.1.3 中央处理器CPU 17
2.1.4 存储器 19
2.1.5 I/O 口及相应的特殊功能寄存器 24
2.2 时钟电路与CPU 时序 27
2.2.1 时钟电路 27
2.2.2 CPU时序 27
2.3 AT89S51单片机的复位 29
2.4 AT89S51单片机的节电方式 30
2.4.1 空闲方式 31
2.4.2 掉电方式 31
2.5 Flash的串行编程和三级加密 32
习题2 34
第3章 指令与汇编语言程序设计 35
3.1 指令系统概述 35
3.1.1 MCS-51汇编指令的格式 36
3.1.2 指令中的符号标识及注释符 36
3.2 寻址方式 37
3.2.1 寄存器寻址 37
3.2.2 直接寻址 37
3.2.3 寄存器间接寻址 38
3.2.4 立即寻址 39
3.2.5 变址寻址 39
3.2.6 相对寻址 39
3.2.7 位寻址 40
3.2.8 MCS-51寻址方式小结 40
3.3 MCS-51指令说明 41
3.3.1 数据传送指令 41
3.3.2 算术操作指令 45
3.3.3 逻辑操作及移位类指令 49
3.3.4 控制转移指令 52
3.3.5 位操作类指令 57
3.3.6 访问I/O 口指令的使用说明 58
3.4 MCS-51伪指令 59
3.5 MCS-51汇编语言程序设计 61
3.5.1 顺序结构程序设计 61
3.5.2 分支程序设计 62
3.5.3 循环程序设计 63
3.5.4 子程序设计 66
习题3 69
第4章 C51程序设计 72
4.1 Keil C51编程语言 72
4.1.1 Keil C51的函数和程序结构 72
4.1.2 C51和标准C的函数差别 74
4.2 C51 的数据类型、运算符、表达式 76
4.2.1 C51的基本数据类型 76
4.2.2 C51变量、常量、指针 77
4.2.3 C51的复杂数据类型 81
4.2.4 C51的运算符和表达式 83
4.3 C51的程序流控制语句 86
4.4 编译预处理命令 88
4.4.1 宏定义 88
4.4.2 条件编译 88
4.4.3 文件包含 89
4.4.4 数据类型的重新定义 90
4.5 C51的编程技巧 90
4.6 KeilC51库函数原型列表 91
4.7 C51编程实例 94
4.7.1 本的输入/输出 94
4.7.2 C51软件延时 95
习题4 96
第5章 AT89S51中断系统 97
5.1 中断概述 97
5.2 AT89S51中断系统 98
5.2.1 AT89S51中断源 98
5.2.2 AT89S51 中断控制 100
5.2.3 中断响应 101
5.3 中断系统的编程 102
5.3.1 中断服务程序的结构 102
5.3.2 C51中断函数 102
5.3.3 中断应用举例 103
5.4 外部中断源的扩展 107
5.4.1 用定时器T0、T1作为外部中断扩展 107
5.4.2 用中断与查询相结合的方法扩展外部中断 107
习题5 108
第6章 AT89S51/S52单片机的定时器/计数器 109
6.1 定时器的内部结构 109
6.1.1 方式寄存器TMOD 110
6.1.2 控制寄存器TCON 111
6.1.3 定时器的工作方式 111
6.2 定时器应用举例 113
6.2.1 定时控制、脉宽检测 113
6.2.2 电压/频率转换 117
6.3 定时器/计数器T2 118
6.3.1 T2的状态控制寄存器T2CON 119
6.3.2 T2的工作方式 119
6.4 监视定时器 123
6.4.1 WDT的原理 123
6.4.2 AT89S51内部的WDT 123
6.4.3 AT89S5 1掉电和空闲状态时的WDT 123
6.4.4 WDT的软件技术 124
习题6 124
第7章 AT89S51的串行通信及其应用 126
7.1 概述 126
7.1.1 串行通信的字符格式 126
7.1.2 串行通信的数据通路形式 127
7.1.3 串行通信的传输速率 127
7.1.4 串行通信的总线标准与接口 128
7.2 51单片机的串行通信接口 132
7.2.1 通用的异步接收/发送器UART 132
7.2.2 串行口的控制寄存器 133
7.2.3 串行接口的工作方式 134
7.2.4 波特率设计 136
7.3 串行通信应用举例 138
7.3.1 方式0应用设计键盘显示接口 138
7.3.2 双机、多机通信应用 139
7.3.3 单片机与微机的串行通信 149
7.3.4 单片机在GSM无线通信网络中的应用 152
7.4 CAN总线串行通信技术 157
7.4.1 CAN总线系统构成 158
7.4.2 CAN总线的报文类型与帧结构 159
7.4.3 CAN的总线技术 164
7.4.4 CAN控制器SJA1000 165
7.4.5 CAN总线收发器82C50 172
7.4.6 CAN总线系统智能节点 173
习题7 175
第8章 51单片机系统扩展技术 176
8.1 并行总线扩展技术 177
8.1.1 并行总线技术 177
8.1.2 存储器的并行扩展 178
8.1.3 I/O接口的并行扩展 184
8.2 串行总线扩展技术 190
8.2.1 I2C串行总线 190
8.2.2 SPI总线 196
8.2.3 1-Wire 单总线 201
习题8 208
第9章 单片机与外设接口技术 210
9.1 键盘接口技术 210
9.1.1 键盘的基本工作原理 210
9.1.2 键盘工作方式 212
9.2 显示器接口技术 215
9.2.1 LED显示器 215
9.2.2 LCD点阵液晶显示器及其接口 222
9.3 D/A转换接口技术 228
9.3.1 后向通道概述 228
9.3.2 D/A转换器的技术指标 229
9.3.3 12位电压输出型串行D/A转换器TLV5616 230
9.3.4 电压/电流转换电路设计 232
9.4 A/D转换接口技术 232
9.4.1 前向通道概述 232
9.4.2 A/D转换器工作原理及分类 233
9.4.3 串行A/D转换器TLC1542的应用 234
9.4.4 8位A/D及D/A转换器PCF8591 236
9.5 红外遥控 239
9.5.1 红外遥控系统 239
9.5.2 遥控发射器及其编码 239
9.5.3 遥控信号接收 240
习题9 242
第10章 系统设计及抗干扰技术 243
10.1 单片机应用系统的开发过程 243
10.1.1 技术方案论证 243
10.1.2 硬件系统的设计 244
10.1.3 应用软件的设计 245
10.1.4 硬件、软件系统的调试 245
10.1.5 程序的固化 245
10.2 单片机硬件系统的设计 245
10.2.1 元件的选取 245
10.2.2 硬件电路的设计原则 246
10.2.3 单片机资源的分配 246
10.2.4 印制电路板的设计 247
10.3 单片机软件系统的设计 248
10.3.1 任务的确定 248
10.3.2 软件结构的设计 248
10.4 单片机系统抗干扰技术 248
10.4.1 硬件抗干扰措施 248
10.4.2 软件抗干扰措施 250
第11章 Keil C51软件的使用 253
11.1 工程文件的建立及设置 253
11.1.1 工程文件的建立和编译、连接 253
11.1.2 设置工程文件的属性 256
11.2 程序调试 259
11.2.1 常用调试命令 259
11.2.2 在线汇编 260
11.2.3 断点设置 261
11.3 Keil程序调试窗口 261
11.3.1 存储器窗口 261
11.3.2 观察窗口 262
11.3.3 工程窗口寄存器页 262
11.3.4 外围接口窗口 263
附录A MCS-51指令表 264
附录B ASCII码表 269