第1章 什么是单片机 1
1.1 单片机的概念及其发展历史 1
1.2 单片机能够做哪些具体应用 2
1.3 单片机学习的软、硬件实验设备 7
1.3.1 51单片机综合学习系统主机 7
1.3.2 51单片机综合学习系统仿真组件 10
1.3.3 51单片机综合学习系统实验附件 11
1.4 单片机学习的有效方法与途径 13
第2章 51系列单片机系统的结构和工作原理2.1 51系列单片机的内部结构和引脚功能 14
2.1.1 单片机的内部结构 14
2.1.2 单片机的工作流程 16
2.1.3 单片机的引脚功能 17
2.1.4 单片机的存储器和寄存器 18
2.1.5 单片机I/O端口的结构及工作原理 21
2.2 中断系统 23
2.2.1 中断概述 23
2.2.2 中断系统结构 24
2.2.3 中断源 25
2.2.4 中断优先级 25
2.2.5 中断控制 25
2.2.6 中断响应过程 27
2.2.7 中断的撤消 28
2.2.8 中断系统应用举例 28
2.3 定时/计数器 30
2.3.1 定时/计数器概述 30
2.3.2 定时/计数器结构 30
2.3.3 定时/计数器控制寄存器 31
2.3.4 定时/计数器的工作方式 32
2.3.5 定时/计数器应用 34
2.4 串行通信 36
2.4.1 串行通信概述 36
2.4.2 串行口结构 38
2.4.3 串行口数据缓冲器SBUF 38
2.4.4 串行通信控制寄存器 39
2.4.5 波特率选择与设置 41
第3章 Keil软件、C语言概论、数据类型、运算符与表达式3.1 Keil软件介绍 44
3.1.1 Keil软件版本 44
3.1.2 软件开发流程 44
3.2 Keil软件的安装 46
3.2.1 系统需求 46
3.2.2 安装详细说明 46
3.2.3 文件夹组织结构 47
3.3 C语言概论 47
3.3.1 C语言的发展过程 47
3.3.2 C语言的特点 47
3.3.3 C源程序的结构特点 48
3.3.4 C语言的字符集 49
3.3.5 C语言词汇 49
3.4 数据类型、运算符与表达式 50
3.4.1 C语言的数据类型 50
3.4.2 算术运算符和算术表达式 62
3.4.3 关系运算符和表达式 66
3.4.4 逻辑运算符和表达式 68
第4章 分支与循环控制 72
4.1 if语句 72
4.1.1 程序的三种基本结构 72
4.1.2 if语句的三种形式 73
4.1.2 if语句的嵌套 77
4.2 条件运算符和条件表达式 79
4.3 switch语句 80
4.4 循环控制 83
4.4.1 概述 83
4.4.2 goto语句和if语句构成循环 83
4.4.3 while语句 84
4.4.3 do-while语句 86
4.4.5 for语句 88
4.4.6 循环的嵌套 91
4.4.7 break和continue语句 92
第5章 编译预处理与位运算预处理命令 95
5.1 概述 95
5.2 宏定义 95
5.2.1 不带参数的宏定义 95
5.2.2 带参数的宏定义 97
5.3 文件包含 99
5.4 条件编译 99
5.5 位操作运算符 101
第6章 数组与函数 104
6.1 一维数组的定义和引用 104
6.1.1 一维数组的定义方式 104
6.1.2 一维数组元素的引用 106
6.1.3 一维数组的初始化 107
6.1.4 一维数组程序举例 108
6.2 二维数组的定义和引用 109
6.2.1 二维数组的定义 109
6.2.2 二维数组元素的引用 109
6.2.3 二维数组的初始化 111
6.3 字符数组 111
6.3.1 字符数组的定义 111
6.3.2 字符数组的初始化 112
6.3.3 字符数组的引用 112
6.3.4 字符串和字符串结束标志 113
6.4 函数概述 113
6.4.1 函数定义的一般形式 113
6.4.2 函数的参数和函数的值 114
6.4.3 函数的返回值 115
6.4.4 函数的调用 116
6.4.5 被调用函数的声明和函数原型 116
6.4.6 函数的嵌套调用 117
6.4.7 函数的递归调用 118
6.4.8 数组作为函数参数 119
6.5 局部变量和全局变量 121
6.5.1 局部变量 122
6.5.2 全局变量 123
第7章 指针、结构体与共用体 125
7.1 指针和地址 125
7.2 指针变量和指针运算符 125
7.3 指针与函数参数 129
7.4 指针、数组和字符串指针 131
7.5 指针数组 134
7.6 多级指针 135
7.7 返回指针的函数 137
7.8 函数指针 137
7.9 结构与联合 138
7.9.1 结构的定义 138
7.9.2 结构数组 140
7.9.3 结构与函数 141
7.9.4 结构的初始化 143
7.9.5 联合(union) 143
第8章 51单片机综合学习系统快速入门 145
8.1 51单片机综合学习系统入门说明 145
8.2 51单片机综合学习系统仿真操作指南 149
8.3 建立第一个项目(软件操作指南) 151
8.4 51单片机综合学习系统芯片烧写(ISP下载)操作指南 154
8.5 51单片机综合学习系统数码管原理与应用实例篇 157
8.6 51单片机综合学习系统常见问题解答 162
第9章 单片机基础实例 164
9.1 发光二极管闪动实验 164
9.1.1 实例功能 164
9.1.2 器件和原理 165
9.1.3 硬件电路 165
9.1.4 程序设计 165
9.1.5 代码分析 167
9.2 流水灯实验 167
9.2.1 实例功能 167
9.2.2 器件和原理 168
9.2.3 硬件电路 169
9.2.4 程序设计 169
9.2.5 代码分析 170
9.3 按键实验 172
9.3.1 实例功能 172
9.3.2 器件和原理 173
9.3.3 硬件电路 173
9.3.4 程序设计 174
9.3.5 代码分析 174
9.4 蜂鸣器实验 176
9.4.1 实例功能 176
9.4.2 器件和原理 176
9.4.3 硬件电路 176
9.4.4 程序设计 177
9.4.5 代码分析 177
9.5 继电器实验 178
9.5.1 实例功能 178
9.5.2 器件和原理 178
9.5.3 硬件电路 179
9.5.4 程序设计 180
9.5.5 代码分析 180
9.6 数码管实验 180
9.6.1 实例功能 181
9.6.2 器件和原理 181
9.6.3 硬件电路 183
9.6.4 程序设计 183
9.6.5 代码分析 184
9.7 串行口实验 186
9.7.1 实例功能 186
9.7.2 器件和原理 187
9.7.3 硬件电路 189
9.7.4 程序设计 189
第10章 单片机高级应用实例 191
10.1 矩阵键盘应用实例 191
10.1.1 矩阵键盘简介 191
10.1.2 矩阵键盘的工作原理 191
10.1.3 矩阵键盘软硬件设计实例 192
10.2 步进电机应用实例 197
10.2.1 步进电机简介 197
10.2.2 步进电机的控制 201
10.2.3 步进电机的程序设计 202
10.3 单总线数字温度传感器DS18B20应用实例 206
10.3.1 单总线技术简介 206
10.3.2 单总线温度传感器DS18B20简介 207
10.3.3 DS18B20软、硬件设计 213
10.4 24CXX系列存储器应用实例 218
10.4.1 I2C总线简介 218
10.4.2 I2C总线器件工作原理及时序 220
10.4.3 24C01存储器的软硬件设计实例 222
10.5 93CXX系列存储器应用实例 229
10.5.1 SPI总线简介 229
10.5.2 93C46存储器的软硬件设计实例 232
10.6 DS1302时钟芯片应用实例 240
10.6.1 实时时钟(RTC)简介 240
10.6.2 DS1302时钟芯片简介 241
10.6.3 DS1302的软硬件设计实例 244
10.7 ADC0832应用实例 250
10.7.1 模/数转换(ADC)简介 250
10.7.2 8位串行A/D转换器ADC0832简介 253
10.7.3 ADC0832软硬件设计实例 255
10.8 1602字符型LCD应用实例 259
10.8.1 液晶显示简介 260
10.8.2 1602字符型LCD简介 261
10.8.3 1602字符型LCD的软硬件设计实例 266
10.9 12864点阵型LCD应用实例 271
10.9.1 点阵LCD的显示原理 271
10.9.2 12864点阵型LCD简介 272
10.9.3 12864点阵型LCD软硬件设计实例 278
10.10 红外遥控软件解码应用实例 288
10.10.1 红外遥控概述 288
10.10.2 3010红外接收的软件解码应用实例 294
10.11 无线通信模块应用 300
10.11.1 无线通信概述 300
10.11.2 PT2262/PT2272无线模块简介 301
10.11.3 无线模块的软硬件设计应用 306
附录 Keil开发软件介绍 310
参考文献 322