第1章 MCS-51单片机与C语言 1
1.1 MCS-51单片机的特点 1
1.1.1 MCS-51单片机简介 1
1.1.2 MCS-51单片机的内部结构 3
1.1.3 MCS-51单片机的存储器组织 4
1.2 汇编语言 6
1.3 C语言 8
1.4 单片机汇编语言与C语言程序设计对照 10
1.5 汇编语言和C语言混合编程 12
1.5.1 在C51中嵌入汇编 12
1.5.2 C程序中调用汇编功能程序 15
1.5.3 汇编程序调用C程序 18
第2章 Keil C51的数据结构 20
2.1 Keil C51 20
2.2 数据类型 22
2.3 存储种类及存储区 25
2.3.1 整型常量 25
2.3.2 字符型常量 25
2.3.3 字符串常量 26
2.3.4 位标量 26
2.4 变量 26
2.4.1 变量的定义 26
2.4.2 存储器类型 27
2.4.3 存储器模式 27
2.4.4 重新定义数据类型 28
2.5 数组 29
2.6 指针 31
2.7 结构 33
2.8 联合 34
2.9 枚举 36
第3章 Keil C51程序设计 39
3.1 预处理 39
3.2 运算符与表达式 41
3.3 控制流语句 46
3.3.1 条件语句 46
3.3.2 while循环 47
3.3.3 do-while循环 47
3.3.4 for循环 48
3.3.5 goto语句 49
3.3.6 switch语句 50
3.3.7 Break语句和continue语句 51
3.3.8 返回语句return 51
3.4 函数 53
3.4.1 定义函数 54
3.4.2 调用函数 55
3.4.3 中断服务函数 56
3.4.4 函数的递归调用与再入函数 59
第4章 Keil C51集成开发环境 61
4.1 Keil C51安装 61
4.2 μVision3集成开发环境 65
4.3 μVision3的栏目和窗口 66
4.4 创建项目 67
4.5 简单的程序调试 72
4.6 含有多个文件的项目 75
4.7 代码优化 76
4.8 技巧和窍门 80
4.9 Keil C编译器常见警告与错误信息的解决方法 81
第5章 用Keil C51开发8051单片机内部资源 85
5.1 用Keil C51开发输入/输出端口 85
5.1.1 输入/输出端口简介 85
5.1.2 输出端口应用实例 86
5.1.3 输入端口实例 88
5.2 用Keil C51开发定时器/计数器 89
5.2.1 定时器/计数器简介 89
5.2.2 控制和状态寄存器 89
5.2.3 定时器/计数器设置实例 90
5.2.4 定时器/计数器2 91
5.2.5 编程实例 92
5.3 中断系统编程 94
5.3.1 中断系统 95
5.3.2 中断系统的控制寄存器 95
5.3.3 中断的响应过程 96
5.3.4 中断实例 97
5.4 用Keil C51开发串行口 98
5.4.1 数据通信的基本概念 98
5.4.2 MCS-51的串行口控制寄存器 99
5.4.3 工作方式 100
5.4.4 数据传输率的确定 101
5.4.5 串行通信实例 102
第6章 单片机的资源扩展 105
6.1 扩展并行口 105
6.1.1 用8255扩展并行接口 106
6.1.2 用74HC573(或74HC373)扩展输出口 108
6.2 串并转换 111
6.2.1 用74HC164扩展并行输出口 111
6.2.2 用74HC165扩展并行输入口 112
6.3 扩展外部并行ROM 115
6.4 扩展外部串行EEPROM 116
6.4.1 三线制Microwire串行总线的E2PROM 116
6.4.2 三线制Microwire串行总线在MCS-51系列单片机上的应用 117
6.4.3 程序设计 118
6.5 扩展外部RAM 121
第7章 8051单片机的系统设计 123
7.1 静态数码管显示 123
7.2 动态数码管显示 125
7.3 键盘输入 127
7.4 A/D转换 130
7.4.1 TLC0831 8位A/D转换器 130
7.4.2 TLC0831应用实例 131
7.5 D/A转换 133
7.5.1 MAX532简介 133
7.5.2 MAX532读写时序 134
7.5.3 MAX532的应用实例 135
7.6 温度测量 138
7.6.1 DS18B20概述 138
7.6.2 DS18B20的寄存器 139
7.6.3 DS18B20的读写 140
7.6.4 DS18B20指令 141
7.6.5 DS18B20与单片机接口电路图 143
7.6.6 DS18B20测温C51程序 143
第8章 8051单片机程序固化方法 149
8.1 通用编程器 149
8.2 印制板制作 151
8.3 AT89S51编程器 153
8.4 Willem编程器 155
8.5 STC编程器 161
第9章 单片机的断电保护 165
9.1 硬件电路实现方法 165
9.2 断电检测电路 168
9.3 实时断电保护和恢复程序 169
9.4 用EEPROM保存断电数据 172
9.5 注意事项 185
第10章 单片机与PC机通信 187
10.1 RS-232C简介 187
10.1.1 连接器的机械特性 188
10.1.2 RS-232C的接口信号 188
10.1.3 电气特性 189
10.2 单片机与PC机通信电路 190
10.3 单片机与PC机通信程序设计 192
10.3.1 PC机发送和接收程序 192
10.3.2 单片机发送和接收程序 196
第11章 在系统编程和在应用中编程 199
11.1 在系统编程和在应用中编程 199
11.2 PHILIPS单片机的实现方法 203
11.2.1 P89C51RB2/RC2/RD2单片机的存储结构 204
11.2.2 P89C51RB2/RC2/RD2单片机的在系统编程 205
11.2.3 P89C51RB2/RC2/RD2单片机的在应用中编程 207
11.3 STC单片机的实现方法 211
11.3.1 STC单片机的在系统编程 211
11.3.2 STC单片机的在应用中编程 212
第12章 单片机之间的通信 226
12.1 单片机之间的通信方法 226
12.2 单片机之间的并行通信 227
12.3 两个单片机之间的串行通信 231
12.4 串行多机通信 234
12.5 采用双口RAM的双机通信 237
第13章 I2C总线接口技术 244
13.1 I2C总线 244
13.1.1 I2C总线的基本结构 245
13.1.2 起始和停止条件 245
13.1.3 数据传输 246
13.1.4 总线竞争的仲裁 246
13.2 模拟I2C总线的C51程序 248
13.3 I2C总线在IC卡中的应用 253
第14章 用C51开发线切割机床控制器 261
14.1 线切割机简介 261
14.2 插补运算 262
14.3 终点判别 264
14.4 间隙补偿 265
14.5 插补运算的数学模型 267
14.6 C51线切割机控制程序 268
第15章 步进电机驱动 277
15.1 步进电机 277
15.1.1 步进电机的特点 277
15.1.2 步进电机的类型 278
15.1.3 步进电机的工作原理 278
15.1.4 部分步进电机技术数据 280
15.2 控制电路 282
15.2.1 功率放大电路 282
15.3 环形分配器 284
15.4 混合式步进电机的驱动 287
第16章 红外器件应用 300
16.1 红外器件 300
16.1.1 IrDA器件的类型划分 300
16.1.2 IrDA器件的构成及其使用 301
16.2 红外遥控器设计 302
16.2.1 红外遥控器基本原理 302
16.2.2 HS9012红外遥控发射电路 302
16.2.3 HS0038B红外遥控接收电路 304
16.2.4 红外遥控接收和解码电路 306
16.2.5 红外遥控接收程序 307
16.3 红外报警栏杆 309
16.3.1 红外栏杆简介 309
16.3.2 发射器 310
16.3.3 接收器 316
附录A MCS-51指令表 322
附录B Keil C51的库函数 326