目录 1
第1章 单片机发展与应用概述 1
1.1 单片机简介 1
1.2 单片机的种类 1
1.3 MCS-51系列单片机 2
1.4 单片机学习 3
1.5 完成一个简单程序的开发 4
2.1.1 仿真器介绍 7
2.1 仿真器——Medwin仿真器 7
第2章 单片机的开发环境和工具 7
2.1.2 Medwin(万利)仿真器使用入门 8
2.1.3 Medwin调试实例 9
2.2 编程器 17
2.2.1 主要特点 19
2.2.2 可编程、测试九大类器件 19
2.2.3 硬件结构 19
2.2.4 WH500的安装与使用说明 20
2.2.5 WH-500软件使用范例 23
第3章 MCS-51单片机系统结构和指令系统 26
3.1 单片机系统结构 26
3.1.1 单片机简介 26
3.1.2 MCS-51系列简介 27
3.1.3 MCS-51单片机引脚功能 28
3.1.4 单片机的复位动作 30
3.1.5 MCS-51的时钟输入与机器周期 31
3.1.6 MCS-51内部结构 33
3.1.7 特殊功能寄存器 36
3.1.8 输出/输入端口 40
3.1.9 省电模式 41
3.2 指令介绍 42
3.2.1 寻址模式(Addressing Mode) 42
3.2.2 8051指令集 47
3.3 指令汇总表 57
3.3.1 算术操作类指令 57
3.3.2 逻辑运算类指令 58
3.3.3 数据传送类指令 59
3.3.5 控制转移类指令 60
3.3.4 布尔变量操作类指令 60
第4章 8051的编程语言 62
4.1 单片机编程语言概述 62
4.2 汇编语言 63
4.2.1 ORG伪指令(Origin) 63
4.2.2 DB伪指令(Define Byte) 63
4.2.5 DATA伪指令(Data) 64
4.2.7 BIT伪指令 64
4.2.6 XDATA伪指令(External Data) 64
4.2.4 EQU或=伪指令(Equal) 64
4.2.3 DW伪指令(Define Word) 64
4.2.8 END伪指令 65
4.3 C51语言 65
4.3.1 C51的程序结构 65
4.3.2 数据类型和长度 67
4.3.3 C51语言的运算符 68
4.3.4 C51程序流程控制语句 69
4.3.5 函数(FUNCTION) 72
4.3.7 条件编译 75
4.3.6 宏定义#define 75
第5章 微型计算机的输入/输出 76
5.1 I/O接口电路概述 76
5.1.1 I/O接口电路的作用 76
5.1.2 接口与端口的差别 78
5.1.3 外设的编址方式 78
5.1.4 将外设当作数据存储器访问 81
5.2 输入/输出传送方式 82
5.2.1 无条件传送 82
5.2.2 查询式传送 84
5.2.3 中断传送 86
5.2.4 直接存储器存取(DMA) 87
第6章 存储器与微处理机的接口 89
6.1 存储器技术的发展及其趋势 89
6.1.1 概述 89
6.1.2 存储器发展趋势 91
6.1.3 正在发展中的存储新技术和特殊存储器 93
6.1.4 结语 97
6.2.1 易失性存储器 98
6.2 常用存储器型号 98
6.2.2 非易失性存储器 99
6.2.3 多端口读写存储器MPRAM 102
6.2.4 内嵌电池掉电自保护存储器插座 102
6.3 MCS-51单片机与存储器存取数据的时序 103
6.3.1 机器周期和指令周期 103
6.3.2 MCS-51的取指令/执行时序 103
6.3.3 访问外部ROM和外部ROM的时序 104
6.3.4 MCS-51单片机外部存储器的扩展 106
6.4 程序存储器的扩展 107
6.5 数据存储器的扩展 108
6.5.1 61 16静态RAM 108
6.5.2 单片机和FLASH存储器的连接 109
第7章 基本I/O接口和中断 112
7.1 基本输出 112
7.1.1 电路说明 113
7.1.2 LED显示程序 113
7.1.3 程序说明 113
7.2 七段显示器静态显示方法 114
7.2.1 显示码设计 115
7.2.3 七段LED数码显示器的显示程序 116
7.2.2 电路说明 116
7.2.4 程序说明 117
7.3 七段显示器扫描式显示方法 117
7.3.1 电路说明 118
7.3.2 七段显示器扫描式显示程序 118
7.3.3 程序说明 119
7.4 基本输入 120
7.4.2 基本开关输入和LED发光二极管显示程序 121
7.4.1 电路一 121
7.4.3 程序说明 122
7.4.4 电路二 122
7.4.5 基本开关输入和七段数码管显示程序 122
7.4.6 程序说明 123
7.5 键盘扫描与七段显示器 123
7.5.1 电路说明 124
7.5.2 键扫描及相应键值的显示程序 125
7.6 输入/输出口的扩展 127
7.5.3 程序说明 127
7.6.1 用8243输入/输出扩展器扩展I/O 口 128
7.6.2 用8255A可编程并行接口芯片扩展I/O口 131
7.6.3 用8155通用接口芯片扩展I/O口 137
7.6.4 用串行口扩展并行I/O口 142
7.7 外部中断 144
7.7.1 8051中断结构 144
7.7.2 8051中断规划 147
7.7.3 外部中断软件仿真 149
7.7.4 INTO中断实习 151
7.7.5 中断优先权实习 154
第8章 定时/计数器 157
8.1 定时/计数器原理 157
8.1.1 定时/计数器模式控制寄存器TMOD 157
8.1.2 定时/计数器控制寄存器TCON 158
8.1.3 模式0:13位定时/计数器 159
8.1.5 模式2:具有重新加载的8位定时/计数器 160
8.1.6 模式3:定时/计数器0成为两组独立8位定时/计数器 160
8.1.4 模式1:16位定时/计数器 160
8.2 定时/计数器规划 161
8.3 定时/计数器软件仿真 162
8.3.1 定时/计数器软件仿真程序 162
8.3.2 程序说明 163
8.3.3 程序结果与问题讨论 164
8.4 定时器0在模式0的实习 164
8.4.1 定时器0在模式0实习程序 164
8.4.3 程序执行结果 165
8.4.2 程序说明 165
8.5 定时器0在模式1的实习 166
8.5.1 电路图 166
8.5.2 定时器0在模式1实习程序 167
8.5.3 程序说明 167
8.5.4 程序执行结果 168
8.6 定时器0在模式2的实习 168
8.6.1 定时器0在模式2实习程序 168
8.6.2 程序说明 169
8.7 定时器0在模式3的实习 170
8.7.1 定时器0在模式3实习程序 170
8.6.3 程序执行结果 170
8.7.2 程序说明 171
8.7.3 程序执行结果 172
第9章 串行端口通信 173
9.1 MCS-51串行端口中断 173
9.1.1 串行端口的模式0 174
9.1.2 串行端口的模式1 176
9.1.3 串行端口的模式2 177
9.1.5 串行端口的波特率规划 179
9.1.4 串行端口的模式3 179
9.1.6 多处理器的通信 181
9.2 PC机中的RS232适配卡介绍 182
9.3 8051机间通信的C编程 185
9.3.1 点对点的串行异步通信 185
9.3.2 多机通信 188
第10章 单片机与数模及模数转换的接口 198
10.1 D/A转换器原理 198
10.2.1 8位D/A芯片DAC0832 201
10.2 MCS-51单片机与D/A转换器的接口 201
10.2.2 12位D/A芯片AD7521 204
10.3 A/D转换器原理 206
10.3.1 逐次比较型A/D转换器 206
10.3.2 双积分型A/D转换器 209
10.4 MCS-51单片机与A/D转换器接口 211
10.4.1 8位A/D芯片ADC0809 211
10.4.2 12位A/D芯片AD574 214
10.4.3 16位A/D芯片AD7705 217
11.1.1 段式显示 225
第11章 数字显示接口 225
11.1 数字显示 225
11.1.2 字符型显示器SMC2004ALCM显示模块 228
11.1.3 图形显示器 237
11.2 T6963C应用实例 257
第12章 打印机接口 261
12.1 TPμP—TF打印机 261
12.1.1 TPμP打印机的接口信号 261
12.1.2 字符代码和汉字 261
12.1.3 打印命令 263
12.1.4 TPμP—TF和8051的接口和编程 265
12.2 TPμP40A打印机 267
12.3 TPμP16A打印机 272
第13章 单片机系统开发方法 274
13.1 单片机应用系统的研制过程 274
13.2 单片机开发时的几项常用的关键技术 277
13.2.1 单片机系统加密技术 277
13.2.2 单片机的可靠性技术 281
14.1.1 电路图 298
14.1 基本输入输出 298
第14章 典型应用 298
14.1.2 电路说明 299
14.1.3 基本输入输出程序 299
14.1.4 程序说明 299
14.2 中断的应用 299
14.2.1 电路图 300
14.2.2 电路说明 300
14.2.3 中断应用程序 300
14.3.2 参数说明 301
14.3.1 函数目的 301
14.2.4 程序说明 301
14.3 公用函数 301
14.3.3 公用函数应用程序 302
14.3.4 程序说明 302
14.4 延时程序 302
14.4.1 函数目的 302
14.4.2 参数说明 302
14.4.3 延时程序 302
14.4.4 程序说明 303
14.5 定时器的应用 303
14.5.1 函数目的 303
14.5.2 定时器应用程序 304
14.5.3 程序说明 304
14.6 蜂鸣器的应用 305
14.6.1 电路图 305
14.6.2 电路说明 305
14.6.4 程序说明 306
14.7 扩充输出端口的应用 306
14.6.3 蜂鸣器应用程序 306
14.7.1 电路图 307
14.7.2 电路说明 307
14.7.3 参数说明 307
14.7.4 扩充输出端口应用程序 307
14.7.5 程序说明 309
14.8 I2C串行总线原理和应用 310
14.8.1 I2C总线硬件结构 310
14.8.2 I2C总线的数据传送 311
14.8.4 I2C总线电特性技术说明 316
14.8.3 时钟同步和总线仲裁 316
14.8.5 I2C总线的时序 318
14.8.6 I2C总线接口器件的应用软件设计 319
第15章 用CAN实现系统通信 331
15.1 CAN总线协议2.0A的概述 331
15.1.1 介绍 331
15.1.2 基本概念 332
15.1.3 报文传输 334
15.1.6 错误处理 340
15.1.4 报文校验 340
15.1.5 编码 340
15.1.7 故障界定 341
15.1.8 位定时要求 342
15.1.9 同步 343
15.2 CAN接口器件SJA1000 344
15.2.1 SJA1000的逻辑功能 345
15.2.2 SJA1000的地址分配和复位值 346
15.2.3 SJA1000的寄存器功能 347
15.2.4 SJA1000与单片机的连接 351
15.2.5 驱动程序实例 352
第16章 QBCOD-A型装置通信软件开发 355
16.1 概述 355
16.2 控制器结构 356
16.3 控制器功能 357
16.3.1 ECPU板 357
16.3.2 ELCD板 357
16.3.3 系统功能模块 358
16.4.1 Modbus协议 359
16.4 QBCOD-A型装置通信概述 359
16.4.2 两种传输方式 361
16.4.3 Modbus消息帧 362
16.4.4 错误检测方法 365
16.5 数据包格式 366
16.6 数据包定义 367
16.6.1 功能代码01 367
16.6.3 功能代码03和04 368
16.6.2 功能代码02 368
16.6.4 功能代码05 369
16.6.5 功能代码06 370
16.6.6 功能代码07 370
16.6.7 功能代码08 371
16.6.8 功能代码16 372
16.6.9 功能代码125 373
16.6.10 功能代码126 374
16.6.11 功能代码127 375
16.7 异常应答 376
16.8.1 开关量输出映象 377
16.8 存储器映象说明 377
16.8.2 开关量输入映象 378
16.8.3 测量电量和显示量的映象 378
16.8.4 最新测定记录映象 379
16.8.5 系统运行状态的映象 379
16.8.6 日期与时钟的映象 380
16.8.7 系统信息映象 381
16.8.8 通讯参数映象 382
16.8.9 电量校正参数映象 382
16.8.10 测定参数映象 383
16.8.11 输入参数配置映象 384
16.8.12 标定参数映象 387
16.8.13 自动测定运行设备工作参数映象 387
16.8.14 系统异常记录映象 388
16.8.15 操作记录映象 389
16.8.16 报警记录映象 390
16.9 通讯程序流程图 391
16.10 通讯程序源代码 392
16.10.1 LCD板通讯程序 392
16.10.2 CPU板通讯程序 405