第1篇 入门与提高 1
第1章 认识51系列单片机 (教学视频:11分钟) 1
1.1单片机的发展史 1
1.2单片机的应用 1
1.3 51单片机的开发环境—— Keil μVision 2
1.4快速掌握单片机的开发要点 2
1.5 STC89C51RC/RD+系列单片机 3
1.5.1 STC89C51系列单片机选型 3
1.5.2常见的封装类型 4
1.6 STC89C51RC/RD+系列单片机的 外部引脚 5
1.7小结 6
1.8习题 6
第2章 开发环境的搭建 (教学视频:43分钟) 7
2.1软件开发环境 7
2.1.1安装Keil C μVision 3 开发环境 7
2.1.2增加对STC型号的支持 8
2.1.3建立第一个工程 9
2.1.4开发中经常用到的功能 13
2.2必要的硬件环境 22
2.2.1 10元DIY单片机最小 系统 22
2.2.2动手制作一个编程器 24
2.3 STC烧录工具 25
2.4小结 26
2.5习题 27
第2篇 51单片机C语言编程 28
第3章 单片机C语言的基本数据类 (教学视频:17分钟) 28
3.1常量与变量 28
3.2基本数据类型 29
3.2.1整型 29
3.2.2长整型 30
3.2.3字符型 30
3.2.4位类型 30
3.2.5浮点数 31
3.2.6双精度浮点数 32
3.3小结 32
3.4习题 32
第4章 运算符与表达式 (教学视频:31分钟) 33
4.1算术运算符与表达式 33
4.2关系运算符与表达式 34
4.3逻辑运算符与表达式 35
4.4位运算符与表达式 36
4.5赋值运算符与表达式 37
4.6小结 38
4.7习题 38
第5章 流程控制 (教学视频:61分钟) 39
5.1条件语句if 39
5.1.1条件语句if的3种表达方式 39
5.1.2条件语句if嵌套 43
5.2开关语句switch…case 45
5.2.1开关语句的语法格式 45
5.2.2开关语句的执行过程 45
5.2.3注意事项 47
5.3循环语句for 47
5.3.1循环语句for的语法格式 48
5.3.2循环语句for的执行过程 48
5.3.3循环语句for嵌套 49
5.4另一种循环语句while和 do…while 51
5.4.1循环语句while和 do…while的语法格式 51
5.4.2循环语句while和 do…while的执行过程 51
5.5无条件跳转语句goto 53
5.6中断语句break/continue 55
5.6.1中断语句break 55
5.6.2中断语句continue 56
5.7小结 58
5.8习题 58
第6章 函数 (教学视频:57分钟) 59
6.1定义函数的一般形式 59
6.2函数的参数和返回值 60
6.2.1函数的参数 60
6.2.2函数的返回值 61
6.3函数的调用 62
6.3.1被调函数的声明 62
6.3.2函数语句调用 63
6.3.3函数表达式调用 63
6.3.4作为函数的参数调用 64
6.3.5函数的嵌套调用 64
6.3.6函数的递归调用 66
6.4单片机的特殊函数——中断函数 67
6.5小结 68
6.6习题 68
第7章 数组与指针 (教学视频:52分钟) 69
7.1数组 69
7.1.1一维数组 69
7.1.2二维数组与多维数组 71
7.2指针 73
7.2.1指针的概念 73
7.2.2定义和引用指针变量 73
7.2.3指针和数组 74
7.3小结 76
7.4习题 76
第8章 结构体与共用体 (教学视频:29分钟) 77
8.1结构体 77
8.1.1什么是结构体 77
8.1.2定义结构体变量 77
8.1.3结构体变量的初始化 79
8.1.4使用结构体 80
8.1.5指向结构体类型数据的 指针 80
8.1.6将结构指针变量作为函数 的参数 81
8.2共用体 82
8.2.1什么是共用体 82
8.2.2定义共用体变量 83
8.2.3使用共用体 84
8.3小结 85
8.4习题 85
第3篇51单片机开发实战 86
第9章I/O端口编程 (教学视频:42分钟) 86
9.1 STC89C51RC-RD+系列单片机的 I/O端口 86
9.2 I/O端口的工作模式 87
9.2.1准双向口/弱上拉模式 87
9.2.2输入/高阻模式 87
9.2.3输出/开漏模式 88
9.2.4配置I/O的工作模式 88
9.3 I/O输出实验 89
9.3.1从点亮一个LED开始 89
9.3.2闪动的LED 90
9.3.3点亮更多的LED 91
9.3.4点亮数码管 94
9.3.5动态点亮数码管 96
9.3.6控制3-8译码器 99
9.4 I/O输入实验 102
9.4.1分离式按键 102
9.4.2模拟实现计数器 104
9.4.3矩阵键盘 107
9.5小结 111
9.6习题 111
第10章 中断系统和外部中断 (教学视频:55分钟) 112
10.1中断的基本知识 112
10.1.1什么是中断 112
10.1.2使用中断的好处 112
10.2中断源 112
10.3中断寄存器 113
10.3.1中断使能寄存器 113
10.3.2中断优先级寄存器 114
10.3.3定时器控制寄存器、外部 中断标志 116
10.3.4串行口控制寄存器 117
10.4中断优先级 118
10.5使用外部中断检测按键 118
10.5.1低电平触发方式 119
10.5.2下降沿触发方式 121
10.6使用外部中断设计运动限位 装置 122
10.6.1硬件电路原理图 122
10.6.2代码实现 123
10.7小结 125
10.8习题 125
第11章 定时器/计数器 (教学视频:65分钟) 126
11.1定时器/计数器介绍 126
11.2与定时器/计数器的有关的 寄存器 126
11.2.1工作方式寄存器TMOD 126
11.2.2控制寄存器TCON 127
11.2.3初值寄存器THx、TLx 127
11.3定时器的工作模式 128
11.3.1模式0 128
11.3.2模式1 128
11.3.3模式2 (8位自动重装 模式) 129
11.3.4模式3 130
11.4定时器中断实验 130
11.4.1定时器秒表实验电路 原理图 130
11.4.2秒表实验控制流程 131
11.4.3代码实现 133
11.5简易电子琴演奏实验 135
11.5.1电子琴实验的电路 原理图 136
11.5.2代码实现 136
11.6小结 139
11.7习题 139
第12章USART通用串行口通信 (教学视频:67分钟) 140
12.1通用串行口介绍 140
12.2与通用串行口有关的寄存器 140
12.2.1电源控制寄存器PCON 140
12.2.2串行口控制寄存器 SCON 141
12.2.3数据缓存寄存器SBUF 141
12.2.4中断控制位ES 142
12.3通用串行口的工作模式 142
12.3.1模式0:同步移位寄存器 模式 142
12.3.2模式1:波特率可变的8 位数据异步收发 142
12.3.3模式2:波特率固定的9 位数据异步收发 143
12.3.4模式3:波特率可变的9 位数据异步收发 143
12.4计算波特率 143
12.5通过串行口和PC通信 144
12.5.1串行口通信规范 144
12.5.2串行口实验电路 145
12.5.3实验控制流程 145
12.5.4通信协议 147
12.5.5代码实现 147
12.6单片机串行口远距离通信 151
12.6.1 RS-485简介 151
12.6.2 485通信的实验电路 152
12.6.3代码实现 153
12.7小结 156
12.8习题 156
第13章 访问内部EEPROM (教学视频:51分钟) 157
13.1 EEPROM介绍 157
13.2 EEPROM的地址 157
13.3与EEPROM有关的寄存器 158
13.4 EEPROM的常用操作 159
13.4.1定义相关寄存器 159
13.4.2读操作 159
13.4.3扇区擦除操作 159
13.4.4写操作 160
13.5 EEPROM应用实例 160
13.6掉电时保存数据到EEPROM 162
13.6.1实验电路图 162
13.6.2代码实现 164
13.7小结 167
13.8习题 167
第14章 看门狗WDT (教学视频:14分钟) 168
14.1看门狗WDT介绍 168
14.2看门狗控制寄存器 WDT CONTR 168
14.3看门狗溢出时间 169
14.4测试看门狗 169
14.5小结 171
14.6习题 171
第4篇 更多功能的单片机 172
第15章STC12C5A60S2系列单片机 (教学视频:11分钟) 172
15.1 STC12C5A60S2系列单片机 介绍 172
15.2 STC12C5A60S2系列单片机外部 引脚 172
15.3过渡到STC12C5A60S2系列的 要点 175
15.4小结 176
15.5习题 176
第16章 通用串行接口USART2 (教学视频:35分钟) 177
16.1与通用串行口2有关的寄存器 177
16.1.1控制寄存器S2CON 177
16.1.2数据缓冲寄存器S2BUF 178
16.1.3独立波特率发生寄存器 BRT 178
16.1.4辅助寄存器AUXR 178
16.1.5与串行口2中断有关的 寄存器 178
16.1.6辅助寄存器1, AUXR1 179
16.2使用串行口2与PC通信 179
16.2.1串行口2实验电路 179
16.2.2使用串行口2的步骤 180
16.2.3代码实现 180
16.3使用双串行口设计RS-485双向 中继器 184
16.3.1 RS-485双向中继器的 实验电路 184
16.3.2代码实现 185
16.4小结 188
16.5习题 189
第17章 同步外围串行接口SPI (教学视频:35分钟) 190
17.1 SPI简介 190
17.2与SPI有关的寄存器 190
17.2.1 SPI控制寄存器SPCTL 190
17.2.2 SPI状态寄存器 SPSTAT 191
17.2.3 SPI数据寄存器SPDAT 191
17.2.4辅助寄存器1,AUXR1 191
17.3 SPI接口的通信方式 192
17.3.1单主—单从方式 192
17.3.2双器件互为主从方式 192
17.3.3单主—多从方式 193
17.4注意事项 194
17.4.1作为主机的注意事项 194
17.4.2作为从机的注意事项 194
17.4.3总线争夺 194
17.4.4写冲突 194
17.5双CPU单主、单从通信实验 195
17.6小结 198
17.7习题 199
第18章PWM脉宽调制( 教学视频:45分钟) 200
18.1 PWM简介 200
18.2与PWM有关的寄存器 200
18.2.1 PCA工作模式寄存器 CMOD 201
18.2.2 PCA控制寄存器 CCON 201
18.2.3 PCA捕获/比较寄存器 CAPM0和CCAPM1 202
18.2.4 PCA的16位计数寄存器 CL、 CH 202
18.2.5 PCA捕捉/比较寄存器 CCAPnL、 CCAPnH 202
18.2.6 PWM寄存器PCA PWM0、 PCA PWM1 202
18.2.7辅助寄存器AUX1. 203
18.3 PWM的设置 203
18.4输出PWM的测试程序 204
18.4.1实验电路 204
18.4.2控制思想 205
18.4.3代码实现 205
18.5使用PWM方式控制步进电机 208
18.5.1步进电机的工作原理 208
18.5.2实验电路 209
18.5.3代码实现 209
18.6小结 215
18.7习题 215
第19章A/D转换 (教学视频:39分钟) 216
19.1 A/D转换简介 216
19.2与A/D转换相关的寄存器 216
19.2.1 P1口模拟功能控制 寄存器P1ASF 216
19.2.2 ADC控制寄存 ADC CONTR 216
19.2.3 A/D转换结果寄存器 ADC RES/ADC RESL 217
19.2.4与A/D中断有关的 寄存器 218
19.3用A/D转换器检测电压实验 218
19.3.1实验电路 218
19.3.2代码实现 219
19.4使用A/D转换检测挡位开关 222
19.4.1检测原理与实验电路 222
19.4.2代码实现 223
19.5 A/D转换误差问题 226
19.6小结 227
19.7习题 228
第5篇51单片机统合应用实例 229
第20章 综合应用实例 229
20.1需求分析 229
20.1.1系统结构 229
20.1.2技术要求 230
20.2系统设计 230
20.2.1硬件电路设计 230
20.2.2需要用到的单片机资源 232
20.2.3软件设计思路 232
20.3各子系统的工作流程 234
20.3.1数据接收子系统、协议 管理子系统 234
20.3.2终端地址的使用与维护 236
20.3.3集体上传控制 237
20.3.4 I/O处理子系统和工厂 模式 238
20.3.5电源管理子系统 240
20.4软件编程、系统实现 241
20.4.1完整的源代码 241
20.4.2初始化部分代码 259
20.4.3按键检测部分代码 261
20.4.4地址管理部分代码 262
20.4.5电压检测部分代码 264
20.4.6串行口接收数据、处理 协议的部分代码 265
20.4.7休眠和唤醒的部分代码 267
20.5小结 268
20.6习题 268