第1章绪论 1
1.1单片机概论 1
1.1.1微处理器、微型计算机与单片机 1
1.1.2单片机的分类和指标 3
1.1.3单片机的内部结构 3
1.1.4单片机的应用领域及趋势 4
1.1.5单片机的编程语言概述 7
1.1.6如何学习单片机这门技术 8
1.2常用的51单片机 9
1.2.1Intel公司系列单片机 9
1.2.2Atmel公司系列单片机 9
1.2.3Philips公司系列单片机 10
1.2.4STC公司系列单片机 10
1.3本章小结 10
习题 11
第2章单片机硬件基础 12
2.1单片机内部结构 12
2.1.1中央处理器(CPU) 12
2.1.2存储器结构 15
2.1.3I/O端口结构 22
2.1.4定时器/计数器结构 25
2.1.5中断系统 25
2.2单片机引脚功能 26
2.2.1芯片封装 26
2.2.2芯片引脚及功能 27
2.3单片机工作时序 29
2.3.1时钟电路 29
2.3.2时序定时单位 30
2.3.3指令的执行时序 30
2.4单片机的工作方式 31
2.4.1复位工作方式 31
2.4.2程序执行方式 32
2.4.3低功耗工作方式 32
2.4.4其他工作方式 33
2.5单片机的最小系统 33
2.6本章小结 34
习题 35
第3章单片机的指令系统 37
3.1单片机的指令系统概述 37
3.1.1指令格式 37
3.1.2符号说明 37
3.2单片机的寻址方式 38
3.2.1立即寻址 38
3.2.2直接寻址 39
3.2.3寄存器寻址 39
3.2.4间接寻址(寄存器间接寻址) 39
3.2.5变址寻址 40
3.2.6相对寻址 40
3.2.7位寻址 40
3.2.8寻址方式总汇 41
3.3单片机的指令说明 42
3.3.1数据传送类指令 42
3.3.2算术运算类指令 46
3.3.3逻辑运算类指令 50
3.3.4控制转移类指令 52
3.3.5位操作指令 55
3.3.6单片机的伪指令 56
3.4汇编程序设计 59
3.5本章小结 62
习题 63
第4章单片机的KeilμVision4软件开发环境 66
4.1Keil开发工具 66
4.1.1集成环境 66
4.1.2启动程序 68
4.1.3工作环境 69
4.2单片机软件开发流程 74
4.2.1建立工程 74
4.2.2建立源代码文件 76
4.2.3工程设置 78
4.2.4软件编译与连接 83
4.2.5硬件编程 84
4.2.6程序下载 85
4.3软件调试 85
4.3.1调试窗口 86
4.3.2调试命令 91
4.4本章小结 94
习题 94
第5章C51程序设计基础及
实例剖析 96
5.1C程序的基本概念 96
5.1.1主函数 97
5.1.2标识符和关键字 97
5.1.3数据的基本类型 99
5.1.4常量和变量 100
5.1.5运算符与表达式 103
5.1.6函数 109
5.2基本的程序设计结构 113
5.2.1顺序结构 113
5.2.2选择结构 115
5.2.3循环结构 119
5.3C51构造数据类型 126
5.3.1数组 126
5.3.2指针 129
5.3.3结构 134
5.3.4联合 139
5.3.5枚举 140
5.4本章小结 141
实验与设计 142
实验5-1用*号输出字母C51的图案 142
实验5-2用自增自减运算控制P1口流水花样 144
实验5-3用不同数据类型控制灯闪烁的时间 146
实验5-4灯的左移右移程序 148
习题 149
第6章C51语言的进阶应用 152
6.1程序设计及编程方法 152
6.1.1单片机程序的编制过程 152
6.1.2单片机程序设计技巧 152
6.2KeilC51的预处理器 155
6.2.1宏定义 155
6.2.2文件包含 161
6.2.3条件编译 162
6.3KeilC51常用库函数 164
6.3.1内部函数intrins.h 165
6.3.2输入/输出流函数stdio.h 165
6.3.3动态内存分配函数stdlib.h 167
6.3.4字符函数ctype.h 167
6.3.5缓冲区和字符串操作函数string.h 168
6.3.6绝对地址访问absacc.h 169
6.3.7访问SFR和SFR_bit地址regxx.h 169
6.4在KeilμVision中编写用户自己的库函数 169
6.4.1用户库函数的建立步骤 170
6.4.2用户库函数的引用步骤 170
6.4.3一个用户库函数的应用实例 170
6.5C51语言的编译常见报警错误以及解决办法 172
6.5.1变量未被使用警告(Warning280) 173
6.5.2函数未被声明警告(WarningC206) 173
6.5.3头文件无法打开错误(ErrorC318) 173
6.5.4函数名称重复定义错误(ErrorC237) 174
6.5.5函数未被调用警告 174
6.5.6内存空间溢出错误 174
6.5.7函数重入警告 174
6.5.8常见编译器错误列表 175
6.6本章小结 179
实验与设计 180
实验6-1处理代码段中未被使用的变量 180
实验6-2内存空间溢出错误处理 180
习题 181
第7章51单片机的内部资源 182
7.1输入/输出控制 182
7.2中断系统 183
7.2.1中断的基本概念 184
7.2.2中断源及其中断的入口地址 184
7.2.3中断控制相关的寄存器 185
7.2.4中断响应过程 187
7.2.5C51中断的程序设计 188
7.3定时/计数器 192
7.3.1定时/计数器的结构和工作方式 192
7.3.2定时/计数器的寄存器 194
7.3.3定时/计数器的工作方式 196
7.3.4定时/计数器的程序设计 199
7.4本章小结 202
实验与设计 203
实验7-1设计报警器 203
实验7-2统计外中断1的中断次数 204
实验7-3定时/计数器T0作定时应用实验 206
习题 208
第8章51单片机的系统扩展 210
8.1单片机外部扩展资源和扩展编址技术概述 210
8.1.1单片机外部扩展资源简介 210
8.1.2单片机系统扩展原理 211
8.1.3存储器扩展的编址技术 214
8.2程序存储器的扩展 215
8.2.1程序存储器的典型芯片 215
8.2.2EEPROM与单片机的连接 216
8.3数据存储器的扩展 217
8.3.1单片机RAM的读写时序 217
8.3.2RAM与单片机的连接 218
8.4并行I/O口的扩展 219
8.4.1采用TTL电路扩展I/O接口 220
8.4.2采用8255芯片扩展I/O接口 220
8.5可编程外围定时/计数器8253 224
8.5.18253的结构和引脚 224
8.5.28253的工作方式和控制字 226
8.5.38253与C51单片机的接口 226
8.6外部中断的扩展 229
8.6.1采用定时/计数器溢出中断扩展外部中断源 229
8.6.2采用串行通信接口扩展外部中断源 230
8.6.3采用中断源查询法扩展外部中断源 230
8.6.4用优先权编码器扩展中断源 231
8.7I2C接口芯片AT24CXX 233
8.7.1I2C总线的特点 233
8.7.2I2C总线通信技术 234
8.7.3AT24C系列与C51的接口 235
8.8SPI接口芯片X5045 240
8.8.1SPI总线的组成 241
8.8.2X5045简介 241
8.8.3X5045芯片与C51单片机的连接 243
8.9本章小结 247
实验与设计 248
实验8-18255并口扩展实验 248
实验8-2I2C总线实验 249
习题 253
第9章51单片机的串行通信接口 256
9.1串行通信方式 256
9.1.1串行通信分类 256
9.1.2数据的传输模式 257
9.1.3波特率 257
9.2串口结构 258
9.2.151单片机串行口的硬件结构 258
9.2.2数据缓冲寄存器SBUF 260
9.2.3串行口控制寄存器SCON 260
9.2.4特殊功能寄存器PCON 261
9.3MCS-51串口工作方式 261
9.3.1方式0 262
9.3.2方式1 262
9.3.3方式2和方式3 262
9.3.4各方式下波特率的计算 263
9.4串行通信接口标准RS-232 263
9.4.1RS-232C标准 264
9.4.2单片机串行通信的连接 266
9.5串行通信接口标准RS-422和
RS-485 266
9.5.1RS-422通信协议 267
9.5.2RS-485通信协议 269
9.6本章小结 271
实验与设计 271
习题 273
第10章51单片机的A/D与D/A转换 276
10.1数/模转换 276
10.1.1D/A转换器 276
10.1.2D/A转换芯片DAC0832 278
10.1.3DAC0832应用实例 280
10.2模/数转换 282
10.2.1A/D转换器 282
10.2.2A/D转换芯片ADC0809 284
10.2.3MCS-51单片机与ADC0809接口 286
10.3本章小结 289
实验与设计 289
实验10-1简易直流电源的设计 289
实验10-2简单数字电压表的设计 290
习题 293
第11章输入设备 296
11.1输入设备的分类及结构 296
11.1.1开关和按键 296
11.1.2按键去抖动 296
11.1.3非编码独立式键盘 297
11.1.4非编码矩阵式键盘 298
11.1.5编码键盘 298
11.2键盘与单片机的接口 298
11.2.1独立式键盘与单片机的接口 299
11.2.2矩阵式键盘与单片机的接口 300
11.3本章小结 304
实验与设计 304
习题 306
第12章输出设备 310
12.1输出设备的种类及结构 310
12.1.1发光二极管 310
12.1.2数码管 310
12.1.3液晶显示模块 312
12.2输出设备的接口及其编程 312
12.2.1LED指示灯功能的程序实现 313
12.2.2数码管与单片机接口的程序实现 314
12.3本章小结 317
实验与设计 318
习题 320
第13章51单片机系统开发基础 322
13.1单片机系统的基本开发过程 322
13.1.1系统开发概述 322
13.1.2总体方案设计 323
13.1.3硬件设计 325
13.1.4软件设计 326
13.1.5系统调试 327
13.2系统的优化设计 329
13.2.1系统的可靠性设计 329
13.2.2系统自诊断 332
13.3本章小结 334
习题 334
第14章单片机系统综合实例——投票系统 336
14.1实例需求说明 336
14.2实例设计 336
14.2.1总体设计 336
14.2.2投票系统中心端硬件设计 337
14.2.3投票系统终端硬件设计 338
14.2.4通信协议设计 340
14.3应用代码设计 340
14.3.1投票系统中心端应用代码设计 340
14.3.2中心端应用代码综合 348
14.3.3投票系统终端应用代码设计 351
14.3.4终端应用代码综合 357
实验与设计 359
实验14-1呼吸灯 359
实验14-2跑步机启停/速度
控制模块 360
实验14-3简易电子琴 361
实验14-4手机拨号模块 362
实验14-5简易频率计 364
实验14-6天车控制系统 365
实验14-7PC中控系统 366
实验14-8负载平衡监控系统 366
实验14-9电子抽奖系统 368
实验14-10简易波形发生器 369