描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121361258
内容简介
本书以89S51 为典型机,主要论述单片机的基本结构与工作原理,以及单片机应用系统的设计与开发方法。全书内容分为13 章,内容包括概述、单片机的结构和工作原理、指令系统、单片机C51 语言程序设计基础、中断系统、定时器/计数器、单片机的串行口UART、单片机常用并行接口技术、串行总线接口技术、单片机应用系统开发环境、基于嵌入式实时操作系统的单片机程序设计方法、基于RTX51的乐曲编辑器和发生器设计、数控电流源设计。书后附录给出了18 个单片机课程设计课题,以及单片机89S51 的指令系统。本书从工程应用出发,突出单片机应用技术的新颖性和实用性;此外,本书为任课教师免费提供电子课件。
目 录
第1章 概述 1
1.1 单片机概念与发展过程 1
1.1.1 单片机概念 1
1.1.2 单片机技术发展过程 1
1.1.3 单片机技术发展方向 3
1.1.4 常用数制与编码 4
1.2 单片机应用领域与嵌入式系统概念 5
1.2.1 单片机应用领域 6
1.2.2 嵌入式系统概念 6
1.3 单片机应用系统开发过程简述 8
1.3.1 单片机编程语言 8
1.3.2 单片机应用系统结构 9
1.3.3 单片机应用模式 10
1.3.4 单片机应用系统开发过程简介 11
1.4 本书特点与教材使用建议 12
1.4.1 本书编写指导思想 13
1.4.2 本书特点 15
1.4.3 教材使用建议 16
1.5 本章小结 18
1.6 思考题与习题 19
第2章 单片机的结构和工作原理 20
2.1 MCS-51系列单片机概述 20
2.2 89S51单片机引脚功能说明 21
2.2.1 89S51的引脚图与封装 21
2.2.2 89S51的引脚功能说明 22
2.2.3 89S51的引脚应用特性 23
2.3 89S51单片机内部结构 24
2.3.1 89S51的基本组成 24
2.3.2 89S51的CPU 26
2.4 89S51单片机的存储器 28
2.4.1 程序存储器 29
2.4.2 数据存储器 29
2.5 89S51单片机的时钟电路与时序 32
2.5.1 时钟电路 32
2.5.2 基本时序单位 33
2.6 89S51单片机的工作方式 35
2.6.1 复位工作方式和复位电路 35
2.6.2 低功耗工作方式 36
2.6.3 串行ISP编程方式 37
2.7 89S51单片机的输入/输出端口 38
2.7.1 P0端口 38
2.7.2 P1端口 39
2.7.3 P2端口 40
2.7.4 P3端口 40
2.8 本章小结 41
2.9 思考题与习题 42
第3章 指令系统* 43
3.1 MCS-51单片机指令概述 43
3.1.1 指令格式 43
3.1.2 符号说明 44
3.2 寻址方式 45
3.2.1 寄存器寻址方式 45
3.2.2 直接寻址方式 45
3.2.3 寄存器间接寻址方式 46
3.2.4 立即寻址方式 46
3.2.5 变址寻址方式 46
3.2.6 相对寻址方式 47
3.2.7 位寻址方式 47
3.3 89S51单片机的指令系统 47
3.3.1 数据传送类指令 47
3.3.2 算术运算类指令 50
3.3.3 逻辑运算及移位类指令 53
3.3.4 控制转移类指令 54
3.3.5 位操作类指令 56
3.4 单片机汇编语言简介 58
3.4.1 汇编语言的语句格式 58
3.4.2 伪指令 59
3.4.3 单片机汇编语言程序设计 60
3.5 本章小结 63
3.6 思考题与习题 63
第4章 单片机C51语言程序设计基础 65
4.1 单片机C51语言概述 65
4.1.1 C51语言在单片机应用系统开发中的优势 65
4.1.2 C51语言与标准C语言的比较 65
4.1.3 编写C51语言程序的基本原则 66
4.2 C51语言关键字与数据类型 67
4.2.1 标识符 67
4.2.2 关键字 68
4.2.3 数据类型 69
4.3 C51语言数据 71
4.3.1 常量 71
4.3.2 变量 72
4.3.3 存储器类型和存储器模式 72
4.3.4 数组 74
4.3.5 指针 75
4.4 C51语言对单片机硬件资源的控制 76
4.4.1 特殊功能寄存器(SFR)的定义 76
4.4.2 位变量的定义 77
4.4.3 存储器和外接I/O端口的绝对地址访问 78
4.5 C51语言运算符和表达式 79
4.5.1 运算符 79
4.5.2 表达式 81
4.6 C51语言流程控制语句 81
4.6.1 语句的概念和分类 81
4.6.2 判断分支(if、switch语句) 82
4.6.3 循环控制(for、while语句) 84
4.6.4 break、continue、return、goto语句 85
4.7 C51语言函数 86
4.7.1 函数的定义 87
4.7.2 函数的调用 88
4.7.3 C51语言中断函数 89
4.8 C51语言预处理命令 90
4.8.1 文件包含 90
4.8.2 宏定义 90
4.8.3 条件编译 91
4.9 C51语言与汇编语言混合编程方法 91
4.9.1 C51语言程序嵌入汇编语句 92
4.9.2 C51语言程序调用汇编语言子程序 93
4.10 本章小结 94
4.11 思考题与习题 95
第5章 中断系统 96
5.1 中断 96
5.1.1 中断的概念 96
5.1.2 中断的条件和中断响应过程 97
5.2 89S51中断系统结构与控制 98
5.2.1 89S51的中断源和中断入口地址 98
5.2.2 89S51的中断系统结构 99
5.2.3 中断控制 100
5.3 中断应用举例 105
5.3.1 单外部中断源系统的设计 105
5.3.2 多外部中断源系统的设计 106
5.4 本章小结 107
5.5 思考题与习题 108
第6章 定时器/计数器 109
6.1 定时器/计数器的结构与控制 109
6.1.1 89S51定时器/计数器的结构 109
6.1.2 定时器/计数器的控制 110
6.2 定时器/计数器的4种工作方式 111
6.2.1 工作方式1 111
6.2.2 工作方式2 112
6.2.3 工作方式3 113
6.2.4 工作方式0 115
6.3 定时器/计数器的应用举例 115
6.3.1 脉冲信号的产生 115
6.3.2 脉冲宽度的测量 116
6.4 本章小结 117
6.5 思考题与习题 117
第7章 单片机的串行口UART 119
7.1 串行通信概述 119
7.1.1 串行通信与并行通信 119
7.1.2 串行通信的分类 119
7.1.3 串行通信的数据传送方式 121
7.2 89S51串行口UART的结构与控制 122
7.2.1 串行口UART的结构 122
7.2.2 串行口UART的工作方式 124
7.2.3 串行口UART的波特率计算 126
7.3 串行口UART的编程及应用实例 128
7.3.1 串行口UART的编程步骤 128
7.3.2 串行口UART应用实例 128
7.4 本章小结 131
7.5 思考题与习题 131
第8章 单片机常用并行接口技术 133
8.1 键盘接口 133
8.1.1 独立按键 134
8.1.2 矩阵键盘 136
8.2 LED显示器接口 141
8.2.1 LED数码管 141
8.2.2 LED数码管静态显示接口 142
8.2.3 LED数码管动态显示接口 144
8.3 DAC接口 147
8.3.1 DAC0832芯片介绍 147
8.3.2 DAC0832与89S51的接口电路 148
8.3.3 利用DAC0832输出各种电压波形 149
8.4 ADC接口 151
8.4.1 ADC0809芯片介绍 151
8.4.2 ADC0809与89S51的接口电路 153
8.4.3 ADC0809应用举例 154
8.5 液晶显示模块LCD1602的接口 155
8.5.1 LCD1602介绍 155
8.5.2 LCD1602与89S51的接口电路 160
8.5.3 LCD1602应用举例 161
8.6 外部并行三总线接口 164
8.7 大功率器件驱动接口 165
8.7.1 光耦接口 166
8.7.2 继电器接口 166
8.7.3 双向晶闸管输出接口 167
8.7.4 固态继电器输出接口 168
8.8 本章小结 169
8.9 思考题与习题 169
第9章 串行总线接口技术 170
9.1 EIA系列总线标准及其接口 170
9.1.1 RS-232C总线 170
9.1.2 RS-485总线 172
9.1.3 单片机与PC之间的通信 174
9.2 SPI总线 176
9.2.1 SPI总线简介 176
9.2.2 SPI总线通信协议 177
9.2.3 E2PROM存储器AT93C46及其应用 177
9.3 I2C总线 180
9.3.1 I2C总线简介 180
9.3.2 I2C总线通信协议 181
9.3.3 I2C接口存储器AT24C02及其应用 183
9.4 1-Wire单总线 191
9.4.1 1-Wire单总线简介 191
9.4.2 温度传感器DS18B20及其应用 193
9.5 USB总线 198
9.5.1 USB总线原理 198
9.5.2 USB总线通信接口设计实例 200
9.6 CAN总线 202
9.6.1 CAN总线简介 203
9.6.2 CAN总线控制器 204
9.6.3 CAN总线通信接口设计实例 204
9.7 本章小结 205
9.8 思考题与习题 206
第10章 单片机应用系统开发环境 207
10.1 单片机应用系统的调试方法 207
10.1.1 硬件调试方法 207
10.1.2 软件仿真调试方法 209
10.2 Keil μVision4集成开发环境 210
10.2.1 Keil μVision4的主要特性 210
10.2.2 Keil μVision4集成开发环境设置方法 211
10.2.3 Keil μVision4工程应用 216
10.2.4 Keil C51主要头文件介绍 226
10.3 Proteus 8仿真软件 228
10.3.1 Proteus 8主界面介绍 228
10.3.2 Proteus 8绘制电路原理图 230
10.3.3 Proteus 8仿真调试 232
10.4 单片机应用系统开发小工具 233
10.4.1 波特率初值计算工具 233
10.4.2 数码管编码器 233
10.4.3 定时器计算工具 234
10.4.4 串口调试助手 234
10.5 本章小结 235
10.6 思考题与习题 236
第11章 基于嵌入式实时操作系统的单片机程序设计方法 237
11.1 嵌入式实时操作系统的概念 237
11.1.1 嵌入式系统的特征 237
11.1.2 嵌入式实时操作系统的概念 238
11.2 在电子系统设计中引入RTOS的意义 238
11.2.1 两种软件开发模式的比较 239
11.2.2 嵌入式应用中使用嵌入式RTOS的必要性 239
11.2.3 嵌入式操作系统环境下的应用软件设计 240
11.2.4 嵌入式操作系统环境下的应用软件调试 241
11.3 嵌入式实时操作系统RTX51的介绍 241
11.3.1 RTX51的技术参数 241
11.3.2 几个概念 242
11.3.3 RTX Tiny内核分析 245
11.3.4 RTX Tiny内核源代码 249
11.4 基于RTX51的单片机程序设计方法 251
11.4.1 目标系统需求 251
11.4.2 软件设计指导方针 251
11.4.3 任务划分的原则 252
11.4.4 应用程序架构 254
11.5 本章小结 256
11.6 思考题与习题 256
第12章 基于RTX51的乐曲编辑器和发生器设计 257
12.1 设计任务 257
12.2 方案设计与论证 257
12.2.1 以FPGA为核心的实现方案 257
12.2.2 以MCU为核心的实现方案 257
12.3 系统硬件设计 258
12.3.1 系统硬件电路原理图 258
12.3.2 人机交互界面 259
12.4 基于RTX51的系统软件设计 260
12.4.1 乐曲的表示方法 260
12.4.2 编辑乐曲的软件实现方法 261
12.4.3 播放乐曲的软件实现方法 262
12.4.4 系统软件流程框图 264
12.5 系统源程序清单 265
12.5.1 C51语言主程序 265
12.5.2 读AT24C02汇编语言子程序 276
12.5.3 写AT24C02汇编语言子程序 279
12.5.4
1.1 单片机概念与发展过程 1
1.1.1 单片机概念 1
1.1.2 单片机技术发展过程 1
1.1.3 单片机技术发展方向 3
1.1.4 常用数制与编码 4
1.2 单片机应用领域与嵌入式系统概念 5
1.2.1 单片机应用领域 6
1.2.2 嵌入式系统概念 6
1.3 单片机应用系统开发过程简述 8
1.3.1 单片机编程语言 8
1.3.2 单片机应用系统结构 9
1.3.3 单片机应用模式 10
1.3.4 单片机应用系统开发过程简介 11
1.4 本书特点与教材使用建议 12
1.4.1 本书编写指导思想 13
1.4.2 本书特点 15
1.4.3 教材使用建议 16
1.5 本章小结 18
1.6 思考题与习题 19
第2章 单片机的结构和工作原理 20
2.1 MCS-51系列单片机概述 20
2.2 89S51单片机引脚功能说明 21
2.2.1 89S51的引脚图与封装 21
2.2.2 89S51的引脚功能说明 22
2.2.3 89S51的引脚应用特性 23
2.3 89S51单片机内部结构 24
2.3.1 89S51的基本组成 24
2.3.2 89S51的CPU 26
2.4 89S51单片机的存储器 28
2.4.1 程序存储器 29
2.4.2 数据存储器 29
2.5 89S51单片机的时钟电路与时序 32
2.5.1 时钟电路 32
2.5.2 基本时序单位 33
2.6 89S51单片机的工作方式 35
2.6.1 复位工作方式和复位电路 35
2.6.2 低功耗工作方式 36
2.6.3 串行ISP编程方式 37
2.7 89S51单片机的输入/输出端口 38
2.7.1 P0端口 38
2.7.2 P1端口 39
2.7.3 P2端口 40
2.7.4 P3端口 40
2.8 本章小结 41
2.9 思考题与习题 42
第3章 指令系统* 43
3.1 MCS-51单片机指令概述 43
3.1.1 指令格式 43
3.1.2 符号说明 44
3.2 寻址方式 45
3.2.1 寄存器寻址方式 45
3.2.2 直接寻址方式 45
3.2.3 寄存器间接寻址方式 46
3.2.4 立即寻址方式 46
3.2.5 变址寻址方式 46
3.2.6 相对寻址方式 47
3.2.7 位寻址方式 47
3.3 89S51单片机的指令系统 47
3.3.1 数据传送类指令 47
3.3.2 算术运算类指令 50
3.3.3 逻辑运算及移位类指令 53
3.3.4 控制转移类指令 54
3.3.5 位操作类指令 56
3.4 单片机汇编语言简介 58
3.4.1 汇编语言的语句格式 58
3.4.2 伪指令 59
3.4.3 单片机汇编语言程序设计 60
3.5 本章小结 63
3.6 思考题与习题 63
第4章 单片机C51语言程序设计基础 65
4.1 单片机C51语言概述 65
4.1.1 C51语言在单片机应用系统开发中的优势 65
4.1.2 C51语言与标准C语言的比较 65
4.1.3 编写C51语言程序的基本原则 66
4.2 C51语言关键字与数据类型 67
4.2.1 标识符 67
4.2.2 关键字 68
4.2.3 数据类型 69
4.3 C51语言数据 71
4.3.1 常量 71
4.3.2 变量 72
4.3.3 存储器类型和存储器模式 72
4.3.4 数组 74
4.3.5 指针 75
4.4 C51语言对单片机硬件资源的控制 76
4.4.1 特殊功能寄存器(SFR)的定义 76
4.4.2 位变量的定义 77
4.4.3 存储器和外接I/O端口的绝对地址访问 78
4.5 C51语言运算符和表达式 79
4.5.1 运算符 79
4.5.2 表达式 81
4.6 C51语言流程控制语句 81
4.6.1 语句的概念和分类 81
4.6.2 判断分支(if、switch语句) 82
4.6.3 循环控制(for、while语句) 84
4.6.4 break、continue、return、goto语句 85
4.7 C51语言函数 86
4.7.1 函数的定义 87
4.7.2 函数的调用 88
4.7.3 C51语言中断函数 89
4.8 C51语言预处理命令 90
4.8.1 文件包含 90
4.8.2 宏定义 90
4.8.3 条件编译 91
4.9 C51语言与汇编语言混合编程方法 91
4.9.1 C51语言程序嵌入汇编语句 92
4.9.2 C51语言程序调用汇编语言子程序 93
4.10 本章小结 94
4.11 思考题与习题 95
第5章 中断系统 96
5.1 中断 96
5.1.1 中断的概念 96
5.1.2 中断的条件和中断响应过程 97
5.2 89S51中断系统结构与控制 98
5.2.1 89S51的中断源和中断入口地址 98
5.2.2 89S51的中断系统结构 99
5.2.3 中断控制 100
5.3 中断应用举例 105
5.3.1 单外部中断源系统的设计 105
5.3.2 多外部中断源系统的设计 106
5.4 本章小结 107
5.5 思考题与习题 108
第6章 定时器/计数器 109
6.1 定时器/计数器的结构与控制 109
6.1.1 89S51定时器/计数器的结构 109
6.1.2 定时器/计数器的控制 110
6.2 定时器/计数器的4种工作方式 111
6.2.1 工作方式1 111
6.2.2 工作方式2 112
6.2.3 工作方式3 113
6.2.4 工作方式0 115
6.3 定时器/计数器的应用举例 115
6.3.1 脉冲信号的产生 115
6.3.2 脉冲宽度的测量 116
6.4 本章小结 117
6.5 思考题与习题 117
第7章 单片机的串行口UART 119
7.1 串行通信概述 119
7.1.1 串行通信与并行通信 119
7.1.2 串行通信的分类 119
7.1.3 串行通信的数据传送方式 121
7.2 89S51串行口UART的结构与控制 122
7.2.1 串行口UART的结构 122
7.2.2 串行口UART的工作方式 124
7.2.3 串行口UART的波特率计算 126
7.3 串行口UART的编程及应用实例 128
7.3.1 串行口UART的编程步骤 128
7.3.2 串行口UART应用实例 128
7.4 本章小结 131
7.5 思考题与习题 131
第8章 单片机常用并行接口技术 133
8.1 键盘接口 133
8.1.1 独立按键 134
8.1.2 矩阵键盘 136
8.2 LED显示器接口 141
8.2.1 LED数码管 141
8.2.2 LED数码管静态显示接口 142
8.2.3 LED数码管动态显示接口 144
8.3 DAC接口 147
8.3.1 DAC0832芯片介绍 147
8.3.2 DAC0832与89S51的接口电路 148
8.3.3 利用DAC0832输出各种电压波形 149
8.4 ADC接口 151
8.4.1 ADC0809芯片介绍 151
8.4.2 ADC0809与89S51的接口电路 153
8.4.3 ADC0809应用举例 154
8.5 液晶显示模块LCD1602的接口 155
8.5.1 LCD1602介绍 155
8.5.2 LCD1602与89S51的接口电路 160
8.5.3 LCD1602应用举例 161
8.6 外部并行三总线接口 164
8.7 大功率器件驱动接口 165
8.7.1 光耦接口 166
8.7.2 继电器接口 166
8.7.3 双向晶闸管输出接口 167
8.7.4 固态继电器输出接口 168
8.8 本章小结 169
8.9 思考题与习题 169
第9章 串行总线接口技术 170
9.1 EIA系列总线标准及其接口 170
9.1.1 RS-232C总线 170
9.1.2 RS-485总线 172
9.1.3 单片机与PC之间的通信 174
9.2 SPI总线 176
9.2.1 SPI总线简介 176
9.2.2 SPI总线通信协议 177
9.2.3 E2PROM存储器AT93C46及其应用 177
9.3 I2C总线 180
9.3.1 I2C总线简介 180
9.3.2 I2C总线通信协议 181
9.3.3 I2C接口存储器AT24C02及其应用 183
9.4 1-Wire单总线 191
9.4.1 1-Wire单总线简介 191
9.4.2 温度传感器DS18B20及其应用 193
9.5 USB总线 198
9.5.1 USB总线原理 198
9.5.2 USB总线通信接口设计实例 200
9.6 CAN总线 202
9.6.1 CAN总线简介 203
9.6.2 CAN总线控制器 204
9.6.3 CAN总线通信接口设计实例 204
9.7 本章小结 205
9.8 思考题与习题 206
第10章 单片机应用系统开发环境 207
10.1 单片机应用系统的调试方法 207
10.1.1 硬件调试方法 207
10.1.2 软件仿真调试方法 209
10.2 Keil μVision4集成开发环境 210
10.2.1 Keil μVision4的主要特性 210
10.2.2 Keil μVision4集成开发环境设置方法 211
10.2.3 Keil μVision4工程应用 216
10.2.4 Keil C51主要头文件介绍 226
10.3 Proteus 8仿真软件 228
10.3.1 Proteus 8主界面介绍 228
10.3.2 Proteus 8绘制电路原理图 230
10.3.3 Proteus 8仿真调试 232
10.4 单片机应用系统开发小工具 233
10.4.1 波特率初值计算工具 233
10.4.2 数码管编码器 233
10.4.3 定时器计算工具 234
10.4.4 串口调试助手 234
10.5 本章小结 235
10.6 思考题与习题 236
第11章 基于嵌入式实时操作系统的单片机程序设计方法 237
11.1 嵌入式实时操作系统的概念 237
11.1.1 嵌入式系统的特征 237
11.1.2 嵌入式实时操作系统的概念 238
11.2 在电子系统设计中引入RTOS的意义 238
11.2.1 两种软件开发模式的比较 239
11.2.2 嵌入式应用中使用嵌入式RTOS的必要性 239
11.2.3 嵌入式操作系统环境下的应用软件设计 240
11.2.4 嵌入式操作系统环境下的应用软件调试 241
11.3 嵌入式实时操作系统RTX51的介绍 241
11.3.1 RTX51的技术参数 241
11.3.2 几个概念 242
11.3.3 RTX Tiny内核分析 245
11.3.4 RTX Tiny内核源代码 249
11.4 基于RTX51的单片机程序设计方法 251
11.4.1 目标系统需求 251
11.4.2 软件设计指导方针 251
11.4.3 任务划分的原则 252
11.4.4 应用程序架构 254
11.5 本章小结 256
11.6 思考题与习题 256
第12章 基于RTX51的乐曲编辑器和发生器设计 257
12.1 设计任务 257
12.2 方案设计与论证 257
12.2.1 以FPGA为核心的实现方案 257
12.2.2 以MCU为核心的实现方案 257
12.3 系统硬件设计 258
12.3.1 系统硬件电路原理图 258
12.3.2 人机交互界面 259
12.4 基于RTX51的系统软件设计 260
12.4.1 乐曲的表示方法 260
12.4.2 编辑乐曲的软件实现方法 261
12.4.3 播放乐曲的软件实现方法 262
12.4.4 系统软件流程框图 264
12.5 系统源程序清单 265
12.5.1 C51语言主程序 265
12.5.2 读AT24C02汇编语言子程序 276
12.5.3 写AT24C02汇编语言子程序 279
12.5.4
前 言
自1971年微型计算机问世以来,由于实际应用的需要,微型计算机向着两个方向发展:一是向着高速度、大容量、高性能的高档微机方向发展;二是向着稳定可靠、体积小、功耗低、价格低廉的单片机方向发展。单片机是微型计算机的一个重要分支,它的出现是计算机技术发展史上的一个重要里程碑,它使计算机从海量存储与高速复杂数值计算进入智能化控制领域。从此,计算机技术的两个重要领域——通用计算机领域和嵌入式计算机领域都取得了极其重大的进展。
单片机诞生于20世纪70年代。自美国Intel公司于1976年宣布并于1977年推出MCS-48单片机以来,单片机技术已经走过了40余年的历程。我国自20世纪70年代末80年代初就开始进行单片机的应用与开发工作。1987年10月27日,我国在上海成立中国微计算机单片机学会,中国的单片机开发与应用经历了30余年。几十年来,单片机不是以其位数的高低来决定其优劣的,而是以如何适合千变万化的应用产品的需求、高性价比的配置来决定其优劣的。因此,高性价比、多功能、低功耗的8位单片机一直是单片机的主角。
本书仍然保持前一版的写作风格,在内容上对原书进行了仔细的修订。前一版主要以汇编语言作为单片机编程语言,这一版主要采用C51语言进行单片机程序设计。在编著本书时,我们主要考虑了以下几点。
(1)关于单片机的选型
目前,国内外公认的单片机标准体系结构是美国Intel公司的MCS-51系列,其中的8051单片机由Intel公司以技术转卖的方式,被许多半导体生产厂家作为基核,发展了许多兼容系列,所有这些系列统称为80C51系列。因此,人们在设计单片机应用系统时,可以根据应用系统的要求,广泛选择最佳型号的单片机。然而,美国Atmel公司的单片机AT89S51是80C51系列的典型代表,所以本书以89S51芯片为主线介绍单片机的原理与应用。
(2)全书的整体架构
全书分为两大部分。第一部分,即本书的第1章~第8章,主要介绍单片机结构原理及基本应用,它既是继续学习单片机应用技术的基础,又是单片机原理与应用课程的经典内容。
第二部分,即本书的第9章~第13章,主要介绍当前的单片机应用新技术,以及单片机应用系统设计开发方法和工程设计实例。显然,第二部分是单片机原理与应用课程经典内容的扩展,主要目的是给读者提供继续学习和掌握单片机应用系统开发技术的精选内容,让读者了解当前单片机应用的新技术、开发小工具、开发环境、开发过程,从而达到初步掌握单片机应用系统设计与开发技术的目的。
(3)精心安排“经典内容”,认真撰写第1章~第8章
从工程应用的角度出发,通过精心安排本书第1章~第8章的内容,达到既讲透单片机的结构原理,又精简“经典内容”体系结构的目的。比如,单片机的工作方式有多种,但从工程应用的角度来看,主要用到的是复位工作方式、低功耗工作方式和编程工作方式。因此,本书在介绍复位电路的基础上,重点介绍复位工作方式、低功耗工作方式和AT89S51的ISP编程工作方式,而对其他工作方式只是略为提一下。又如,定时器/计数器有4种工作方式,其他教材一般按照顺序介绍工作方式0~工作方式3,但在实际的工程应用中,工作方式0很少采用而工作方式1应用最多,所以本书按照工作方式1、工作方式2、工作方式3、工作方式0的顺序进行介绍,以便使教材的内容贴近实际需要。再如,单片机的存储器有程序存储器和数据存储器,而实际上特殊功能寄存器也属于单片机的存储器,因此本书将这三方面的内容放在一个小节内介绍,这种安排是有别于其他教材的。为保证本书中所用的实例程序的正确性,所选用的实例程序都通过了实际验证。
(4)详细介绍串行总线接口技术
随着计算机技术和半导体技术的发展,MCU芯片的内部资源越来越丰富,总线型单片机的非总线应用模式使用得越来越广泛;在MCU的外部,很少采用并行三总线(数据总线、地址总线、控制总线)的结构,而常常采用具有串行总线接口的外围芯片。因此,本书用一章的篇幅来详细介绍串行总线接口技术,包括RS-232C、RS-485、SPI、I2C、1-Wire、CAN、USB等。
(5)介绍C51语言程序设计方法
目前,在单片机程序设计部分,讲授内容大多限于“汇编语言”,而在实际应用中,单片机程序设计在多年前就已进入“高级语言”阶段,各种单片机高级语言开发工具的相继出现,使得高级语言程序设计在可读性、可靠性和编程效率上都远超过汇编语言,德国Keil Software公司的Keil C51编译器就是典型代表。Keil C51编译器是一种专为MCS-51系列单片机应用开发而设计的高效率C语言编译器,该编译器包括C51交叉编译器、A51宏汇编器、BL51连接定位器和基于Windows的集成化文件管理编译环境、多视窗软件仿真调试器等一系列开发工具,具有高效、可靠、使用方便等优点,其应用如今已十分普及。面向MCS-51系列单片机的C语言称为C51语言,它已经成为单片机的主流程序设计语言。
本书采用C51语言作为单片机程序设计语言。然而,我们认为目前在教学中不宜完全忽略汇编语言程序设计方法的介绍,因为在许多实时控制时序和时间要求十分苛刻的场合,尤其在控制接口硬件时,用汇编语言进行程序设计显得非常简洁。因此,作为选学内容,本书保留了MCS-51单片机指令系统并简要介绍了汇编语言程序设计方法。
第11章~第13章不仅采用了C51语言程序设计方法,有时还采用了C51语言程序调用汇编语言子程序的编程方法,这种安排对读者而言应具有很好的指导作用。
(6)介绍基于嵌入式实时操作系统的单片机程序设计方法
第11章介绍适用于MCS-51系列8位单片机的嵌入式实时操作系统RTX51及其应用方法。这个内容有别于嵌入式系统课程的内容:一方面,实时操作系统RTX51是适用于MCS-51系列8位单片机的,而嵌入式系统课程中介绍的实时操作系统是适用于32位嵌入式微处理器或64位嵌入式微控制器的;另一方面,实时操作系统RTX51易学好用,作者在实际的工程项目中使用它后觉得很好,因此将其放到本书中,这也是本书的亮点之一。
(7)简单介绍单片机应用系统设计开发环境
第10章主要介绍单片机开发小工具、开发环境Keil μVision4和Proteus以及开发步骤,目的是让读者了解单片机应用系统设计开发的方法和工程设计步骤,建立单片机应用系统开发的全局观念。一般来说,单片机开发环境的介绍需要较大的篇幅,且已有专门的书籍进行了介绍,而要真正掌握单片机的开发环境,只有经过大量的训练后才能实现,因此对于这部分内容本书只做简单介绍,读者必须通过实际操作,不断积累经验,直至熟练运用单片机开发环境。
(8)与工程应用相结合,选取完整的设计实例
第12章和第13章是两个完整的单片机应用系统的设计实例,取材于全国大学生电子设计竞赛的国家级获奖作品和实际的工程设计。这两章都给出了完整的系统设计过程,不仅给出了完整的系统硬件电路原理图,而且给出了完整的系统软件设计源程序代码,系统应用程序采用C51语言进行编写,或采用C51语言和MCS-51汇编语言混合编写。此外,这两章的编写体例是按照电气信息类专业本科毕业设计的论文格式要求进行撰写的,在书中还给出了所设计与制作实物的数码照片,以便增强实际效果。因此,本书的这两章不仅可供从事单片机应用系统开发的工程技术人员参考,还可作为各类电子设计竞赛的培训内容,以及单片机课程设计的参考内容和电气信息类专业学生毕业设计的参考内容。
本书以89S51为典型机,主要论述单片机的基本结构与工作原理,以及单片机应用系统的设计与开发方法。全书内容分为13章,内容包括概述、单片机的结构和工作原理、指令系统、单片机C51语言程序设计基础、中断系统、定时器/计数器、单片机的串行口UART、单片机常用并行接口技术、串行总线接口技术、单片机应用系统开发环境、基于嵌入式实时操作系统的单片机程序设计方法、基于RTX51的乐曲编辑器和发生器的设计、数控电流源的设计。书后附录给出了18个单片机课程设计题,以及单片机89S51的指令系统。
本书由欧伟明教授任主编,刘剑、何静、凌云任副主编。欧伟明教授撰写第1章、第4章、第11~12章,龙晓薇老师撰写第2章,李小宝博士撰写第3章,何静博士撰写第5章,李圣清教授撰写第6章,刘剑副教授撰写第7章、第10章,欧伟明教授、贺正芸老师撰写第8章,凌云教授撰写第9章,蒋中荣副教授撰写第13章,周玉副教授撰写附录A,李朝仑老师撰写附录B。全书由欧伟明教授统稿和定稿。
本书的撰写得到了湖南工业大学的张昌凡教授、贺素良教授(参加了本书前一版的撰写工作)、朱晓青教授、龙永红教授、张满生教授、李祥飞博士、李燕林老师的大力支持,他们给予了作者鼓励和关于本教材的编写意见;还得到了湖南工业大学电气与信息工程学院的毕业生刘张胜、庄永军、楚瑞玉、任杰、周韬、李军杰、蒙毓李、杨敬力、柳红新、付贵勇、欧阳文彦、郭仁的支持,他们对书中部分硬件电路和部分程序的初步调试做了有益的工作。在此一并表示衷心的感谢!
单片机诞生于20世纪70年代。自美国Intel公司于1976年宣布并于1977年推出MCS-48单片机以来,单片机技术已经走过了40余年的历程。我国自20世纪70年代末80年代初就开始进行单片机的应用与开发工作。1987年10月27日,我国在上海成立中国微计算机单片机学会,中国的单片机开发与应用经历了30余年。几十年来,单片机不是以其位数的高低来决定其优劣的,而是以如何适合千变万化的应用产品的需求、高性价比的配置来决定其优劣的。因此,高性价比、多功能、低功耗的8位单片机一直是单片机的主角。
本书仍然保持前一版的写作风格,在内容上对原书进行了仔细的修订。前一版主要以汇编语言作为单片机编程语言,这一版主要采用C51语言进行单片机程序设计。在编著本书时,我们主要考虑了以下几点。
(1)关于单片机的选型
目前,国内外公认的单片机标准体系结构是美国Intel公司的MCS-51系列,其中的8051单片机由Intel公司以技术转卖的方式,被许多半导体生产厂家作为基核,发展了许多兼容系列,所有这些系列统称为80C51系列。因此,人们在设计单片机应用系统时,可以根据应用系统的要求,广泛选择最佳型号的单片机。然而,美国Atmel公司的单片机AT89S51是80C51系列的典型代表,所以本书以89S51芯片为主线介绍单片机的原理与应用。
(2)全书的整体架构
全书分为两大部分。第一部分,即本书的第1章~第8章,主要介绍单片机结构原理及基本应用,它既是继续学习单片机应用技术的基础,又是单片机原理与应用课程的经典内容。
第二部分,即本书的第9章~第13章,主要介绍当前的单片机应用新技术,以及单片机应用系统设计开发方法和工程设计实例。显然,第二部分是单片机原理与应用课程经典内容的扩展,主要目的是给读者提供继续学习和掌握单片机应用系统开发技术的精选内容,让读者了解当前单片机应用的新技术、开发小工具、开发环境、开发过程,从而达到初步掌握单片机应用系统设计与开发技术的目的。
(3)精心安排“经典内容”,认真撰写第1章~第8章
从工程应用的角度出发,通过精心安排本书第1章~第8章的内容,达到既讲透单片机的结构原理,又精简“经典内容”体系结构的目的。比如,单片机的工作方式有多种,但从工程应用的角度来看,主要用到的是复位工作方式、低功耗工作方式和编程工作方式。因此,本书在介绍复位电路的基础上,重点介绍复位工作方式、低功耗工作方式和AT89S51的ISP编程工作方式,而对其他工作方式只是略为提一下。又如,定时器/计数器有4种工作方式,其他教材一般按照顺序介绍工作方式0~工作方式3,但在实际的工程应用中,工作方式0很少采用而工作方式1应用最多,所以本书按照工作方式1、工作方式2、工作方式3、工作方式0的顺序进行介绍,以便使教材的内容贴近实际需要。再如,单片机的存储器有程序存储器和数据存储器,而实际上特殊功能寄存器也属于单片机的存储器,因此本书将这三方面的内容放在一个小节内介绍,这种安排是有别于其他教材的。为保证本书中所用的实例程序的正确性,所选用的实例程序都通过了实际验证。
(4)详细介绍串行总线接口技术
随着计算机技术和半导体技术的发展,MCU芯片的内部资源越来越丰富,总线型单片机的非总线应用模式使用得越来越广泛;在MCU的外部,很少采用并行三总线(数据总线、地址总线、控制总线)的结构,而常常采用具有串行总线接口的外围芯片。因此,本书用一章的篇幅来详细介绍串行总线接口技术,包括RS-232C、RS-485、SPI、I2C、1-Wire、CAN、USB等。
(5)介绍C51语言程序设计方法
目前,在单片机程序设计部分,讲授内容大多限于“汇编语言”,而在实际应用中,单片机程序设计在多年前就已进入“高级语言”阶段,各种单片机高级语言开发工具的相继出现,使得高级语言程序设计在可读性、可靠性和编程效率上都远超过汇编语言,德国Keil Software公司的Keil C51编译器就是典型代表。Keil C51编译器是一种专为MCS-51系列单片机应用开发而设计的高效率C语言编译器,该编译器包括C51交叉编译器、A51宏汇编器、BL51连接定位器和基于Windows的集成化文件管理编译环境、多视窗软件仿真调试器等一系列开发工具,具有高效、可靠、使用方便等优点,其应用如今已十分普及。面向MCS-51系列单片机的C语言称为C51语言,它已经成为单片机的主流程序设计语言。
本书采用C51语言作为单片机程序设计语言。然而,我们认为目前在教学中不宜完全忽略汇编语言程序设计方法的介绍,因为在许多实时控制时序和时间要求十分苛刻的场合,尤其在控制接口硬件时,用汇编语言进行程序设计显得非常简洁。因此,作为选学内容,本书保留了MCS-51单片机指令系统并简要介绍了汇编语言程序设计方法。
第11章~第13章不仅采用了C51语言程序设计方法,有时还采用了C51语言程序调用汇编语言子程序的编程方法,这种安排对读者而言应具有很好的指导作用。
(6)介绍基于嵌入式实时操作系统的单片机程序设计方法
第11章介绍适用于MCS-51系列8位单片机的嵌入式实时操作系统RTX51及其应用方法。这个内容有别于嵌入式系统课程的内容:一方面,实时操作系统RTX51是适用于MCS-51系列8位单片机的,而嵌入式系统课程中介绍的实时操作系统是适用于32位嵌入式微处理器或64位嵌入式微控制器的;另一方面,实时操作系统RTX51易学好用,作者在实际的工程项目中使用它后觉得很好,因此将其放到本书中,这也是本书的亮点之一。
(7)简单介绍单片机应用系统设计开发环境
第10章主要介绍单片机开发小工具、开发环境Keil μVision4和Proteus以及开发步骤,目的是让读者了解单片机应用系统设计开发的方法和工程设计步骤,建立单片机应用系统开发的全局观念。一般来说,单片机开发环境的介绍需要较大的篇幅,且已有专门的书籍进行了介绍,而要真正掌握单片机的开发环境,只有经过大量的训练后才能实现,因此对于这部分内容本书只做简单介绍,读者必须通过实际操作,不断积累经验,直至熟练运用单片机开发环境。
(8)与工程应用相结合,选取完整的设计实例
第12章和第13章是两个完整的单片机应用系统的设计实例,取材于全国大学生电子设计竞赛的国家级获奖作品和实际的工程设计。这两章都给出了完整的系统设计过程,不仅给出了完整的系统硬件电路原理图,而且给出了完整的系统软件设计源程序代码,系统应用程序采用C51语言进行编写,或采用C51语言和MCS-51汇编语言混合编写。此外,这两章的编写体例是按照电气信息类专业本科毕业设计的论文格式要求进行撰写的,在书中还给出了所设计与制作实物的数码照片,以便增强实际效果。因此,本书的这两章不仅可供从事单片机应用系统开发的工程技术人员参考,还可作为各类电子设计竞赛的培训内容,以及单片机课程设计的参考内容和电气信息类专业学生毕业设计的参考内容。
本书以89S51为典型机,主要论述单片机的基本结构与工作原理,以及单片机应用系统的设计与开发方法。全书内容分为13章,内容包括概述、单片机的结构和工作原理、指令系统、单片机C51语言程序设计基础、中断系统、定时器/计数器、单片机的串行口UART、单片机常用并行接口技术、串行总线接口技术、单片机应用系统开发环境、基于嵌入式实时操作系统的单片机程序设计方法、基于RTX51的乐曲编辑器和发生器的设计、数控电流源的设计。书后附录给出了18个单片机课程设计题,以及单片机89S51的指令系统。
本书由欧伟明教授任主编,刘剑、何静、凌云任副主编。欧伟明教授撰写第1章、第4章、第11~12章,龙晓薇老师撰写第2章,李小宝博士撰写第3章,何静博士撰写第5章,李圣清教授撰写第6章,刘剑副教授撰写第7章、第10章,欧伟明教授、贺正芸老师撰写第8章,凌云教授撰写第9章,蒋中荣副教授撰写第13章,周玉副教授撰写附录A,李朝仑老师撰写附录B。全书由欧伟明教授统稿和定稿。
本书的撰写得到了湖南工业大学的张昌凡教授、贺素良教授(参加了本书前一版的撰写工作)、朱晓青教授、龙永红教授、张满生教授、李祥飞博士、李燕林老师的大力支持,他们给予了作者鼓励和关于本教材的编写意见;还得到了湖南工业大学电气与信息工程学院的毕业生刘张胜、庄永军、楚瑞玉、任杰、周韬、李军杰、蒙毓李、杨敬力、柳红新、付贵勇、欧阳文彦、郭仁的支持,他们对书中部分硬件电路和部分程序的初步调试做了有益的工作。在此一并表示衷心的感谢!
欧伟明
2018年12月于湖南工业大学
评论
还没有评论。