第一部分 C51基础知识篇 1
第1章 C51基本语法 1
1.1 C51基本数据类型 1
前言 1
1.2 常量与变量 2
1.2.1 常量 2
1.2.2 变量 3
1.2.3 8051片内资源及位变量 6
1.3 自定义变量类型typedef 8
1.4 运算符与表达式 9
1.4.1 赋值运算 9
1.4.2 算术运算 9
1.4.4 逻辑运算 11
1.4.3 关系运算 11
1.4.5 位运算 12
1.4.6 自增减运算及复合运算 13
1.4.7 条件运算符 14
1.4.8 逗号运算符 15
习题一 15
第2章 C51基本结构程序设计 16
2.1 顺序结构 16
2.2 选择结构 17
2.2.1 if语句 17
2.2.2 switch-case语句 20
2.3 循环结构 22
2.3.1 while语句 23
2.3.2 do-while语句 24
2.3.3 for语句 25
2.3.4 循环嵌套 26
2.4 转移语句 27
2.4.1 goto语句 27
2.4.2 break语句 28
2.4.3 continue语句 28
习题二 29
第3章 数组 30
3.1 一维数组 30
3.1.1 一维数组的定义 30
3.1.2 一维数组元素的引用 31
3.1.4 一维数组应用举例 32
3.1.3 一维数组的初始化 32
3.2 二维数组 33
3.2.1 二维数组的定义 33
3.2.2 二维数组元素的引用 34
3.2.3 二维数组的初始化 34
3.2.4 二维数组应用举例 35
3.3 字符数组 35
3.4 多维数组 37
习题三 38
第4章 函数 39
4.1 函数的说明与定义 39
4.1.1 函数说明 39
4.2 函数的调用 40
4.2.1 函数的简单调用 40
4.1.2 函数定义 40
4.2.2 函数的参数传递 41
4.2.3 函数的递归调用 43
4.3 函数作用范围与变量作用域 44
习题四 45
第5章 指针、结构、联合和枚举 46
5.1 指针 46
5.1.1 指针和地址 46
5.1.2 指针和数组 50
5.1.3 字符指针 52
5.1.4 指针数组 53
5.1.5 指针作为函数的形参 54
5.2.1 结构变量的定义 55
5.2 结构体 55
5.2.2 结构变量的引用 57
5.2.3 结构数组和结构指针 58
5.3 联合体 63
5.3.1 联合变量的定义 63
5.3.2 结构和联合的区别 64
5.4 枚举 65
习题五 66
第二部分 C51接口篇 68
第6章 8051内部资源编程 68
6.1 输入/输出(I/O)端口 68
6.1.1 并行I/O口结构及功能 68
6.1.2 应用实例 71
6.2.2 定时器/计数器工作方式 72
6.2.1 定时/计数器结构 72
6.2 定时器/计数器 72
6.2.3 定时/计数器的控制寄存器 75
6.2.4 定时/计数常数的计算 77
6.2.5 应用实例 78
6.3 中断 79
6.3.1 中断的基本概念 79
6.3.2 中断系统的结构 79
6.3.3 中断的控制 80
6.3.4 中断响应过程及中断入口地址 81
6.3.5 C51中断程序设计 82
6.4 串行口 84
6.4.1 串行口的结构与控制 84
6.4.2 串行口的工作方式 86
6.4.3 波特率的计算 89
6.4.4 串行口初始化 90
6.4.5 应用实例 90
习题六 93
第7章 8051外部常用扩展资源编程 94
7.1 综合扩展芯片8155 94
7.1.1 8155结构及工作原理 94
7.1.2 8155应用实例 97
7.2 实时时钟芯片DS1302 99
7.2.1 DS1302的结构及工作原理 99
7.2.2 DS1302与MCS-51单片机应用实例 103
习题七 106
第8章 人机接口技术 107
8.1 键盘及其接口 107
8.1.1 独立式键盘接口 108
8.1.2 行列式键盘接口 110
8.2 LED显示器接口 112
8.2.1 LED显示器的结构与原理 112
8.2.2 LED显示方式 113
8.2.3 LED显示器接口实例 115
8.2.4 LED显示管理芯片MAX7219 116
8.3 LCD显示器接口 120
8.3.1 LCD显示器的基本原理 121
8.3.2 液晶显示控制器SED1330原理与应用实例 122
8.4 打印机接口 135
8.4.1 TPμP-40A的主要性能、接口要求及时序 135
8.4.2 字符代码及打印命令 137
8.4.3 应用实例 139
8.5 语音芯片ISD4004 141
8.5.1 ISD4004的工作原理 141
8.5.2 应用实例 146
习题八 152
第9章 数据采集编程 154
9.1 概述 154
9.2 D/A转换器DAC0832 155
9.2.1 D/A转换器的性能指标 155
9.2.2 DAC0832引脚及内部结构 156
9.2.3 DAC0832的应用 157
9.2.4 DAC0832应用实例 159
9.3 A/D转换器ADC0809 161
9.3.1 逐次逼近型ADC基本原理 161
9.3.2 ADC0809应用实例 162
9.3.3 A/D接口设计要点 164
9.4 8位A/D转换器TLC0832 165
9.4.1 主要技术特点 165
9.4.2 TLC0832的工作原理 165
9.4.3 应用实例 167
习题九 169
第10章 通信编程 170
10.1 MCS-51单片机与PC机通信 170
10.1.1 MAX232简介 170
10.1.2 PC机的串行口 171
10.1.3 单片机与PC机通信应用实例 172
10.2.1 多机通信原理 174
10.2 多机通信技术 174
10.2.2 多机通信系统设计实例 175
习题十 184
第11章 新型串行总线技术 185
11.1 SPI接口技术 185
11.1.1 SPI总线简介 185
11.1.2 SPI总线的工作原理 185
11.1.3 MCS-51单片机的SPI接口虚拟实现 186
11.1.4 SPI接口应用实例——X5045看门狗定时器 186
11.2 I2C总线接口 196
11.2.1 I2C总线简介 196
11.2.2 I2C总线的工作原理 196
习题十一 203
12.1.1 宏定义 204
12.1 预处理器 204
第12章 Keil C51编译及连接技术 204
第三部分 C51提高篇 204
12.1.2 预处理指令 205
12.1.3 文件包含 207
12.2 C51编译库及代码优化技术 208
12.2.1 C51编译库 208
12.2.2 代码优化 208
12.3 C51与ASM混合编程技术 209
12.3.1 混合编程意义 209
12.3.2 C51模块内的汇编接口 209
12.3.3 C51与汇编的模块间接口 211
12.3.4 应用实例 213
12.4.1 Keil C51的Bankswitch原理 214
12.4 Keil C51环境下的分页技术 214
12.4.2 基于PSD813F2的分页硬件设计 215
12.4.3 分页的实现过程及实例 215
习题十二 219
第13章 RTX51实时多任务操作系统 221
13.1 多任务编程思想 221
13.1.1 单任务机制工作原理 221
13.1.2 多任务机制工作原理 222
13.2 RTX51的特点及运行要求 223
13.2.1 RTX51的特点 223
13.2.2 RTX51对硬件的要求 223
13.2.3 RTX51对软件的要求 224
13.3 RTX51的基本概念及实例分析 224
13.3.1 任务的状态及定义 224
13.3.2 RTX51事件 226
13.3.3 RTX51中断处理 228
13.3.4 RTX51 TINY的配置 229
13.4 RTX51 TINY的内核原理 230
13.4.1 同步机制 230
13.4.2 调度规则 230
13.4.3 任务控制块 230
13.4.4 存储器管理 231
13.4.5 代码分析 231
13.5 应用实例 233
13.5.1 键盘显示系统 233
13.5.2 交通灯控制 238
习题十三 239
14.1.1 电话网远程通信原理 240
14.1.2 系统硬件设计 240
14.1 MCS-51单片机远程数据传输装置 240
第14章 单片机综合应用实例 240
14.1.3 DTMF电路HT9200A 243
14.1.4 FSK调制解调芯片MSM7512B 244
14.1.5 数据传输的工作过程 245
14.1.6 软件设计 245
14.2 工业洗衣机模糊控制器的设计 253
14.2.1 模糊控制器的设计 253
14.2.2 模糊推理软件设计 255
附录A Keil C51菜单调试技巧 269
附录B 微机测控系统软件抗干扰的常用方法 286
参考资料 290
参考文献 291