第1章 单片机技术基础 1
1.1 单片机与嵌入式系统概述 1
1.1.1 单片机的起源与发展 1
1.1.2 单片机的特点与应用领域 2
1.1.3 嵌入式系统 2
1.2 国内常见的单片机简介 3
1.2.1 Intel系列单片机 3
1.2.2 Motorola系列单片机 3
1.2.3 Atmel系列单片机 4
1.2.4 Microchip系列单片机 4
1.2.5 其他系列单片机 5
1.3 ARM公司及ARM单片机 5
1.3.1 ARM公司简介 5
1.3.2 ARM单片机 5
1.4 单片机系统中使用的数制 6
1.4.1 十进制、二进制与十六进制计数方法 6
1.4.2 不同数制之间的转换 7
1.4.3 单片机系统中有符号数的表示方法 9
1.5 单片机系统常用的编码 9
1.5.1 ASCII码 10
1.5.2 BCD码 10
1.6 AT89S51单片机简介 11
习题 13
第2章 AT89S51单片机的硬件结构 14
2.1 AT89S51单片机的组成 14
2.2 AT89S51单片机CPU的结构 14
2.3 AT89S51单片机系统的存储器组织 15
2.3.1 程序存储器 16
2.3.2 数据存储器 16
2.4 AT89S51单片机引脚及功能 23
2.5 AT89S51的时钟电路 27
2.5.1 时钟电路 27
2.5.2 单片机的工作周期 27
2.6 AT89S51的复位电路 28
2.7 节电运行方式 29
习题 31
第3章 指令系统及汇编语言程序设计 32
3.1 AT89S51单片机寻址方式 32
3.1.1 指令的格式 32
3.1.2 寻址方式 32
3.2 AT89S51单片机指令系统 35
3.2.1 数据传送类指令 35
3.2.2 算术运算类指令 39
3.2.3 逻辑运算类指令 42
3.2.4 程序分支指令 45
3.2.5 位操作类指令 46
3.2.6 空操作指令 48
3.3 汇编语言程序设计方法 48
3.3.1 汇编语言伪指令 48
3.3.2 汇编语言语句格式 50
3.3.3 汇编语言程序设计步骤 50
3.3.4 汇编语言程序设计实例 51
习题 69
第4章 AT89S51单片机的内部资源 72
4.1 AT89S51单片机中断系统 72
4.1.1 单片机的中断源 72
4.1.2 中断系统的控制 73
4.1.3 中断响应过程与响应时间 76
4.1.4 中断服务程序设计 77
4.1.5 多外部中断源系统设计 78
4.2 AT89S51单片机定时/计数器 81
4.2.1 定时/计数器的控制 82
4.2.2 定时/计数器的4种工作方式 83
4.2.3 定时/计数器计数时对输入信号的要求 85
4.2.4 定时/计数器应用编程实例 85
4.3 AT89S51单片机串行接口 89
4.3.1 串行通信基础知识 90
4.3.2 AT89S51串行口的结构与控制 91
4.3.3 AT89S51串行口的4种工作方式 93
4.3.4 AT89S51串行口波特率设置方法 96
4.3.5 多机系统通信原理 98
4.3.6 RS-232和RS-422A/485通信接口 99
4.3.7 串行口应用编程实例 106
习题 116
第5章 单片机系统的外部存储器与译码电路设计 118
5.1 AT89S51单片机最小系统组成 118
5.2 单片机的时序 118
5.2.1 单片机读取指令和执行时序 119
5.2.2 单片机访问外部存储器的时序 120
5.3 半导体存储器 121
5.3.1 随机存取存储器(RAM) 122
5.3.2 只读存储器(ROM) 122
5.3.3 非易失性存储器(NVRAM) 122
5.3.4 存储器的主要参数 122
5.3.5 并行接口存储器容量的计算 123
5.4 单片机系统译码电路的设计方法 123
5.4.1 单片机系统的地址、数据和控制总线 123
5.4.2 线选译码法 125
5.4.3 专用译码器74LS138译码法 126
5.4.4 使用可编程逻辑器件GAL16V8或GAL20V8进行译码电路 129
5.5 单片机系统存储器的扩展 132
5.5.1 程序存储器(EPROM/E2PROM/Flash)的扩展技术 132
5.5.2 单片机系统数据存储器(SRAM/E2PROM/Flash)的扩展 133
习题 137
第6章 AT89S51单片机并行接口扩展技术 138
6.1 键盘/显示器 138
6.1.1 键盘的工作原理 138
6.1.2 数码管显示器LED简介 142
6.2 逻辑门电路扩展I/O口以及系统总线的驱动方法 143
6.2.1 用74LS245和74LS273扩展8位并行I/O口 143
6.2.2 通过串行口扩展I/O口 145
6.2.3 系统总线的驱动 147
6.3 可编程接口芯片扩展I/O口 148
6.3.1 81C55及其扩展键盘/显示接口技术 148
6.3.2 82C55A及其与打印机的接口 159
6.3.3 专用可编程键盘/显示器接口芯片8279及应用 171
6.4 单片机与D/A转换器的接口 181
6.4.1 D/A转换器的工作原理与技术指标 181
6.4.2 DAC0832与单片机的接口 183
6.5 单片机与A/D转换器的接口 186
6.5.1 A/D转换器的分类与工作原理 186
6.5.2 ADC0809及其与AT89S51单片机的接口 189
6.6 DS12C887及其与单片机的接口技术 191
6.6.1 DS12C887简介 191
6.6.2 DS12C887的内部结构 191
6.6.3 DS12C887引脚分配及功能 194
6.6.4 D S12C887与AT89S51单片机的接口 196
习题 199
第7章 串行总线技术 200
7.1 I2C总线接口 200
7.1.1 I2C总线简介 200
7.1.2 I2C总线的工作原理 201
7.1.3 E2PROM芯片AT24C0XB简介 206
7.1.4 AT89S51单片机与AT24C0XB的接口及编程举例 210
7.2 SPI总线技术 217
7.2.1 SPI总线简介 217
7.2.2 SPI接口芯片X5045简介 220
7.2.3 AT89S51单片机与X5045的接口及编程方法 227
7.2.4 Microwire简介 230
7.3 1-Wire总线 230
7.3.1 1-wire总线简介 230
7.3.2 1-Wire总线的工作原理 231
7.3.3 数字温度传感器DS18B20简介 234
7.3.4 基于DS18B20的温度测量系统设计 241
7.4 CAN总线 247
7.4.1 CAN总线概述 247
7.4.2 CAN总线控制器SJA1000 250
7.4.3 CAN总线驱动器PCA82C250 260
7.4.4 CAN总线接口设计及编程举例 262
7.4.5 CAN总线系统的应用 268
7.5 USB接口 268
7.5.1 USB接口的机械特性 269
7.5.2 基于USB接口的设备开发 270
7.5.3 USB-to-UART转换芯片FT232RL 270
7.5.4 单片机系统与计算机USB接口设计实例 272
7.6 串行接口的键盘/LED及LCD显示电路设计 273
7.6.1 串行接口芯片CH451及其组成的键盘/LED显示接口电路设计 273
7.6.2 串行接口的LCD显示电路设计 286
习题 299
第8章 单片机技术实验教学与开发工具简介 301
8.1 易学单片机实验教学系统 301
8.1.1 易学单片机实验教学系统的特点 301
8.1.2 易学单片机实验教学系统的结构和功能 302
8.1.3 易学单片机实验教学系统的集成开发环境 305
8.2 Proteus 311
8.2.1 ISIS简介 312
8.2.2 Proteus仿真实例 313
8.3 单片机高级语言程序开发环境μVision3简介 329
8.3.1 μVision3简介 330
8.3.2 使用μVision3进行单片机程序开发的方法 331
8.3.3 Keil C51与ANSI C的差别 337
8.4 印制电路板设计工具软件Protel 99 SE简介 340
8.4.1 Protel 99 SE的功能 341
8.4.2 Altium Designer简介 342
附录 AT89S51单片机指令表 344
参考文献 349