第1章 概述 1
1.1单片机的概念与发展过程 1
1.1.1单片机的概念 1
1.1.2单片机技术发展过程 1
1.1.3单片机技术发展方向 3
1.1.4常用数制与编码 4
1.2单片机的应用领域与嵌入式系统 6
1.2.1单片机的应用领域 6
1.2.2嵌入式系统的概念 7
1.3单片机应用系统开发过程简述 8
1.3.1单片机的编程语言 8
1.3.2单片机应用系统的结构 9
1.3.3单片机的应用模式 10
1.3.4单片机应用系统开发过程简介 11
1.4本书特点与教学安排 13
1.4.1本书编写的指导思想 13
1.4.2本书特点 16
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 25
2.4 89S51单片机的存储器 27
2.4.1程序存储器 28
2.4.2数据存储器 29
2.5 89S51单片机的时钟电路与时序 31
2.5.1时钟电路 31
2.5.2基本时序单位 32
2.6 89S51单片机的工作方式 33
2.6.1复位工作方式和复位电路 33
2.6.2低功耗工作方式 35
2.6.3 ISP编程工作方式 35
2.7 89S51单片机的输入/输出接口 36
2.7.1 P0端口的结构及工作原理 36
2.7.2 P1端口的结构及工作原理 37
2.7.3 P2端口的结构及工作原理 38
2.7.4 P3端口的结构及工作原理 38
2.8本章小结 39
2.9思考题与习题 40
第3章 指令系统 41
3.1 MCS-51单片机指令概述 41
3.1.1指令格式 41
3.1.2符号说明 42
3.2寻址方式 43
3.2.1寄存器寻址方式 43
3.2.2直接寻址方式 43
3.2.3寄存器间接寻址方式 43
3.2.4立即寻址方式 44
3.2.5变址寻址方式 44
3.2.6相对寻址方式 44
3.2.7位寻址方式 45
3.3 89S51单片机的指令系统 45
3.3.1数据传送类指令 45
3.3.2算术运算类指令 47
3.3.3逻辑运算及移位类指令 50
3.3.4控制转移类指令 52
3.3.5位操作类指令 54
3.4本章小结 55
3.5思考题与习题 56
第4章 单片机程序设计基础 57
4.1汇编语言的特点及语句格式 57
4.1.1汇编语言的特点 57
4.1.2汇编语言的语句格式 57
4.2汇编语言程序的基本结构 58
4.2.1顺序结构 58
4.2.2分支结构 59
4.2.3循环结构 59
4.3汇编语言的伪指令与汇编 60
4.3.1汇编语言的伪指令 60
4.3.2汇编语言的汇编 62
4.4汇编语言程序设计举例 62
4.4.1算术运算程序 62
4.4.2数制转换程序 66
4.4.3定时程序 67
4.4.4查表程序 69
4.4.5数据极值查找程序 69
4.5 C51高级语言程序设计 70
4.5.1 C51的标识符与关键字 70
4.5.2 C51语言的数据类型 72
4.5.3 C51变量的存储种类和存储器类型 73
4.5.4 C51的运算符和表达式 75
4.5.5 C51语言的基本语句 77
4.5.6 C51函数 81
4.5.7 C51语言与汇编语言混合编程的方法 84
4.5.8编写C51语言应用程序的基本原则 85
4.5.9 C51高级语言程序设计举例 87
4.6本章小结 89
4.7思考题与习题 89
第5章 中断系统 91
5.1中断的概念 91
5.1.1中断的概念 91
5.1.2中断的条件与响应过程 92
5.2 89S51的中断系统结构与控制 93
5.2.1 89S51的中断源和中断矢量 93
5.2.2 89S51的中断系统结构 94
5.2.3中断的控制 95
5.3中断应用举例 100
5.3.1单外部中断源系统的设计 100
5.3.2多外部中断源系统的设计 101
5.4本章小结 102
5.5思考题与习题 102
第6章 定时器/计数器 104
6.1定时器/计数器的结构与控制 104
6.1.1 89S51定时器/计数器的结构 104
6.1.2定时器/计数器的控制 105
6.2定时器/计数器的4种工作方式 106
6.2.1工作方式1 106
6.2.2工作方式2 107
6.2.3工作方式3 108
6.2.4工作方式0 110
6.3定时器/计数器的应用举例 110
6.3.1脉冲信号的产生 111
6.3.2脉冲宽度的测量 112
6.4本章小结 112
6.5思考题与习题 113
第7章 串行口UART 114
7.1串行口UART的结构与控制 114
7.1.1串行口的结构 114
7.1.2串行口的控制 115
7.2串行口的工作方式 116
7.2.1工作方式0 116
7.2.2工作方式1 117
7.2.3工作方式2 118
7.2.4工作方式3 119
7.3串行口应用举例 119
7.3.1串行口UART扩展并行I/O接口 119
7.3.2串行口UART实现双机异步串行通信 121
7.3.3串行口UART实现多机异步串行通信 122
7.4本章小结 127
7.5思考题与习题 128
第8章 单片机的常用接口技术 129
8.1键盘接口 129
8.1.1独立式按键 130
8.1.2矩阵键盘 131
8.2 LED显示器接口 135
8.2.1 LED数码管 136
8.2.2 LED数码管的静态显示接口 137
8.2.3 LED数码管的动态显示接口 138
8.3 DAC接口 140
8.3.1 DAC0832与单片机的接口 140
8.3.2 TLC5618与单片机的接口 143
8.4 ADC接口 146
8.4.1 ADC0809与单片机的接口 147
8.4.2 MC14433与单片机的接口 150
8.5外部并行三总线接口 153
8.6大功率器件驱动接口 155
8.6.1光耦接口 155
8.6.2继电器接口 156
8.6.3双向晶闸管输出接口 157
8.6.4固态继电器输出接口 157
8.7本章小结 158
8.8思考题与习题 159
第9章 串行总线技术 160
9.1串行通信基本知识 160
9.1.1并行通信和串行通信 160
9.1.2串行通信的传输方式 160
9.1.3通信协议 161
9.2串行通信EIA系列总线标准及其接口 164
9.2.1 RS-232C总线 164
9.2.2 RS-422/485总线 165
9.2.3单片机与PC之间的通信 167
9.3三线制同步串行总线接口 169
9.3.1 SPI总线简介 169
9.3.2 MICROWIRE接口简介 171
9.3.3 SPI接口单片机P89LPC93x与ADC器件AD7810的通信 171
9.3.4 MICROWIRE接口E2 PROM器件AT93C46的应用 174
9.4 I2C总线 177
9.4.1 I2C总线简介 177
9.4.2 P89C66x系列单片机I2C总线编程规范 178
9.4.3 I2C接口DAC转换器MAX517的应用 181
9.5 CAN总线 183
9.5.1 CAN总线简介 184
9.5.2 CAN总线控制器 185
9.5.3 CAN总线通信接口设计实例 185
9.6 USB总线 187
9.6.1 USB总线原理 187
9.6.2 USB总线通信接口设计实例 189
9.7 1-Wire单总线 191
9.7.1 1-Wire单总线简介 191
9.7.2单总线温度传感器DS 18B20及其应用 192
9.8本章小结 196
9.9思考题与习题 197
第10章 单片机应用系统的开发环境 198
10.1单片机应用系统的开发方法 198
10.1.1单片机应用系统的开发过程 198
10.1.2单片机应用系统的仿真调试 201
10.2 Keil μVision2集成开发环境 204
10.2.1 Keil μVision2的主要特性 205
10.2.2 Keil μVision2的使用方法 206
10.3 Proteus仿真软件 215
10.3.1 Proteus主界面介绍 215
10.3.2 Proteus绘制电路原理图 217
10.3.3 Proteus与KeilμVision2的联调 219
10.4单片机应用系统开发小工具 220
10.4.1波特率初值计算工具 221
10.4.2数码管编码器 221
10.4.3定时器计算工具 222
10.4.4串口调试助手 222
10.5本章小结 223
10.6思考题与习题 223
第11章 基于嵌入式实时操作系统的单片机程序设计方法 225
11.1嵌入式实时操作系统的概念 225
11.1.1嵌入式系统的特征 225
11.1.2嵌入式实时操作系统的概念 226
11.2在电子系统设计中引入实时操作系统的意义 226
11.2.1两种软件开发模式的比较 227
11.2.2嵌入式应用中使用ERTOS的必要性 227
11.2.3嵌入式操作系统环境下的应用软件设计 228
11.2.4嵌入式操作系统环境下的应用软件调试 229
11.3嵌入式实时操作系统RTX51介绍 229
11.3.1 RTX51的技术参数 229
11.3.2几个概念 230
11.3.3 RTX51 Tiny内核分析 233
11.3.4 RTX51 Tiny内核源代码 236
11.4基于RTX51的单片机程序设计方法 238
11.4.1目标系统需求 238
11.4.2软件设计指导方针 238
11.4.3任务划分的原则 239
11.4.4应用程序的架构 241
11.5本章小结 243
11.6思考题与习题 243
第12章 基于RTX51的乐曲编辑器和发生器的设计 244
12.1设计任务 244
12.2方案设计与论证 244
12.2.1以FPGA为核心的实现方案 244
12.2.2以MCU为核心的实现方案 245
12.3系统硬件设计 245
12.3.1系统硬件电路原理图 245
12.3.2人机交互界面 246
12.4基于RTX51的系统软件设计 247
12.4.1乐曲的表示方法 247
12.4.2编辑乐曲的软件实现方法 249
12.4.3播放乐曲的软件实现方法 250
12.4.4系统软件流程框图 251
12.5系统源程序清单 252
12.5.1 C51高级语言主程序 252
12.5.2读AT24C02汇编语言子程序 261
12.5.3写AT24C02汇编语言子程序 263
12.5.4键盘扫描汇编语言子程序 265
12.5.5实时操作系统RTX51 Tiny内核程序 266
12.6本章小结 266
第13章 数控电流源的设计 267
13.1设计任务 267
13.2方案设计与论证 267
13.2.1 D/A转换模块设计方案的论证与比较 268
13.2.2恒流源模块设计方案的论证与比较 268
13.2.3数据采集模块设计方案的论证与比较 269
13.2.4辅助电源、主电源设计方案的论证与比较 270
13.2.5键盘、显示器设计方案的论证与比较 271
13.3理论计算与EWB仿真 272
13.3.1采样电阻值的确定 272
13.3.2 D/A转换器分辨率的确定 272
13.3.3 TLC5618参考电压的确定 272
13.3.4主电源参数的确定 272
13.3.5用EWB进行电路仿真 273
13.4系统硬件设计 273
13.4.1 MCU微控制器、键盘、显示器电路图 274
13.4.2 D/A转换模块、恒流源模块的电路图 274
13.4.3数据采集模块的电路图 276
13.4.4辅助电源、主电源的电路图 277
13.5系统软件设计 277
13.5.1主程序流程框图 278
13.5.2设置输出电流给定值程序流程框图 278
13.5.3设置电流步进值程序流程框图 279
13.5.4键盘扫描程序流程框图 280
13.6系统测试方法与结果分析 280
13.6.1测试使用的仪器 280
13.6.2恒流特性的测试 281
13.6.3电流步进值为1 mA的测试 281
13.6.4纹波电流的测试 282
13.6.5输出电流范围的测试 282
13.6.6输出电压的测试 282
13.6.7 1~99 mA内任意电流步进值设置功能的测试 283
13.6.8测试结果分析 283
13.7系统使用说明书 284
13.7.1键盘界面 284
13.7.2菜单操作 284
13.8系统源程序清单 285
13.8.1 C51高级语言主程序 285
13.8.2键盘扫描汇编语言子程序 294
13.8.3写TLC5618的汇编语言子程序 295
13.8.4读MC 14433的汇编语言子程序 296
13.8.5显示缓冲器的汇编语言子程序 297
13.9本章小结 298
附录A 单片机课程设计 299
附录B 89S51指令表 308
参考文献 312