第1篇 知识准备篇 2
第1章 单片机概述 2
1.1 什么是单片机 2
1.2 单片机的发展 3
1.3 单片机的特点 4
1.4 单片机的用途 5
1.5 如何学习单片机 5
1.6 练习题 6
第2章 开发准备 7
2.1 开发环境 7
2.1.1 硬件连接 7
2.1.2 下载器驱动安装 8
2.1.3 程序下载软件安装与使用 12
2.1.4 集成开发环境安装与使用 18
2.2 开发流程 23
2.2.1 Keil C51工程创建及程序编译 23
2.2.2 程序运行 31
2.3 开发语言 35
2.3.1 C51与标准C语言 36
2.3.2 C51的数据类型 36
2.3.3 C51常用头文件 39
2.4 练习题 39
第3章 硬件基础知识 41
3.1 LY-51S开发板简介 41
3.2 板载元器件 42
3.2.1 电子元器件 42
3.2.2 集成电路 49
3.2.3 接插件 50
3.2.4 导线 51
3.3 练习题 51
第4章 单片机基本原理 52
4.1 MCS-51单片机基本特性 52
4.2 单片机内部结构 53
4.3 单片机外部引脚 54
4.3.1 单片机外部引脚图 54
4.3.2 单片机引脚分类 55
4.4 单片机时序 57
4.5 单片机最小系统 58
4.6 单片机存储器结构 62
4.6.1 程序存储器 62
4.6.2 数据存储器 63
4.7 练习题 68
第2篇 基础功能篇 70
第5章 I/O端口 70
5.1 单片机的I/O端口 70
5.1.1 I/O端口概述 70
5.1.2 I/O端口基本原理 71
5.1.3 I/O端口基本操作 72
5.2 端口输出控制——发光二极管 74
5.2.1 案例5-1:点亮一个发光二极管 76
5.2.2 案例5-2:发光二极管流水显示 80
5.2.3 拓展项目:花样流水灯 83
5.3 端口输出控制——数码管 84
5.3.1 数码管结构与显示原理 84
5.3.2 数码管静态显示驱动 86
5.3.3 案例5-3:独立共阳数码管循环显示0~9 89
5.3.4 数码管动态显示驱动 90
5.3.5 案例5-4:8位数码管同时显示0~7 93
5.3.6 拓展项目:数码管显示动态数据 96
5.4 端口输入控制——独立按键 96
5.4.1 独立按键的连接方式 97
5.4.2 独立按键的检测原理 98
5.4.3 按键去抖及按键处理流程 99
5.4.4 案例5-5:抢答器 101
5.4.5 拓展项目:独立按键长按、短按效果 102
5.5 端口输入控制——矩阵键盘 103
5.5.1 矩阵键盘的连接方式 103
5.5.2 矩阵键盘的检测原理 104
5.5.3 案例5-6:矩阵键盘键号LED显示 105
5.5.4 拓展项目:矩阵键盘密码锁 110
5.6 练习题 111
第6章 外部中断 113
6.1 中断系统概述 113
6.1.1 中断原理 113
6.1.2 中断的作用 114
6.1.3 中断应实现的功能 114
6.1.4 中断相关概念 115
6.2 单片机中断资源 116
6.2.1 中断源及入口地址 116
6.2.2 中断控制及设置 117
6.3 C51中断处理函数的编写 119
6.4 外部中断编程实战 121
6.4.1 案例6-1:独立按键控制LED状态转换 121
6.4.2 拓展项目:按键改变流水灯的流水方向 124
6.5 练习题 125
第7章 定时/计数器 127
7.1 定时/计数器简介 127
7.2 定时/计数器的结构及相关寄存器 127
7.2.1 定时/计数器的结构 127
7.2.2 定时/计数器的相关寄存器 128
7.3 定时/计数器的工作原理 129
7.3.1 定时功能 129
7.3.2 计数功能 131
7.4 定时/计数器的工作方式 131
7.4.1 方式0 131
7.4.2 方式1 131
7.4.3 方式2 132
7.4.4 方式3 132
7.5 定时/计数器编程实战 133
7.5.1 定时/计数器的程序设计流程 133
7.5.2 案例7-1:按键10次翻转LED状态 133
7.5.3 案例7-2:发光二极管定时闪烁 135
7.5.4 案例7-3:定时器产生任意占空比PWM 139
7.5.5 拓展项目:发光二极管定时流水显示 141
7.6 练习题 142
第8章 串口通信 144
8.1 串口通信概述 144
8.1.1 通信的基本概念 144
8.1.2 串行通信的工作方式 145
8.1.3 串行通信的时钟及传输速率 145
8.1.4 串行通信协议 146
8.2 串口通信接口电路原理 148
8.3 51单片机串口结构及相关寄存器 151
8.3.1 串口的结构 151
8.3.2 串口的相关寄存器 152
8.4 串口的工作方式及波特率设置 154
8.4.1 方式0 154
8.4.2 方式1 155
8.4.3 方式2和方式3 156
8.4.4 波特率设置 158
8.5 串口应用编程实战 159
8.5.1 串口应用的程序设计流程 159
8.5.2 案例8-1:串口扩展并行输出流水灯显示 160
8.5.3 案例8-2:双机通信单字符收发 164
8.5.4 拓展项目:字符串收发 168
8.6 练习题 170
第3篇 进阶功能篇 173
第9章 继电器 173
9.1 什么是继电器 173
9.2 继电器的结构及工作原理 174
9.3 继电器的驱动电路 175
9.4 继电器编程实战 176
9.4.1 继电器的程序设计流程 176
9.4.2 案例9-1:继电器状态切换及LED显示 176
9.5 练习题 178
第10章 蜂鸣器 179
10.1 什么是蜂鸣器 179
10.2 蜂鸣器的结构原理 179
10.3 蜂鸣器的驱动电路 180
10.4 蜂鸣器编程实战 181
10.4.1 蜂鸣器的程序设计流程 181
10.4.2 案例10-1:蜂鸣器模拟救护车声音 181
10.5 练习题 183
第11章 步进电机 184
11.1 什么是步进电机 184
11.1.1 步进电机简介 184
11.1.2 步进电机分类 185
11.2 步进电机的硬件结构 186
11.2.1 步进电机硬件结构 186
11.2.2 步进电机术语解释 186
11.2.3 步进电机的转动原理 187
11.3 步进电机的驱动方式 187
11.4 步进电机控制编程实战 189
11.4.1 步进电机的程序设计 189
11.4.2 案例11-1:电机正转反转 190
11.4.3 案例11-2:按键控制步进电机正反转 192
11.5 练习题 193
第12章 直流电机 195
12.1 什么是直流电机 195
12.2 直流电机的原理及分类 195
12.2.1 直流电机的原理 195
12.2.2 直流电机的分类 197
12.3 直流电机的驱动方式 198
12.4 直流电机编程实战 199
12.4.1 案例12-1:直流电机按键控制 199
12.4.2 案例12-2:直流电机PWM调速 201
12.5 练习题 204
第13章 舵机 205
13.1 什么是舵机 205
13.2 舵机的工作原理 206
13.3 舵机的角度控制原理 206
13.4 舵机编程实战 207
13.4.1 舵机的程序设计流程 207
13.4.2 案例13-1:按键调节舵机转角 207
13.5 练习题 210
第14章 1602液晶 211
14.1 概述 211
14.2 1602液晶的基本原理及控制方式 212
14.2.1 1602液晶的引脚结构 212
14.2.2 1602液晶的显示内容 213
14.2.3 1602液晶的控制方式 214
14.3 1602液晶编程实战 216
14.3.1 1602液晶模块的程序设计流程 216
14.3.2 案例14-1:1602液晶滚动显示字符串 217
14.4 练习题 221
第15章 双色点阵屏 222
15.1 双色点阵的基本原理 222
15.2 双色点阵的驱动芯片 224
15.3 双色点阵的硬件连线 225
15.4 双色点阵编程实战 225
15.4.1 双色点阵的控制流程 225
15.4.2 案例15-1:双色点阵显示特定图形 226
15.5 练习题 230
第16章 模数/数模转换 231
16.1 模数/数模转换原理 231
16.2 ADC转换类型及应用 232
16.3 DAC转换类型及应用 234
16.4 练习题 235
第17章 红外收发 236
17.1 红外接收与编解码定义 236
17.2 红外接收原理 237
17.3 红外发射原理 238
17.4 红外收发编程实战 238
17.4.1 红外收发的程序设计思路 238
17.4.2 案例17-1:红外解码液晶屏显示 238
17.5 练习题 243
第4篇 总线协议篇 245
第18章 I2C总线与E2 PROM 245
18.1 I2 C总线概述 245
18.2 I2 C通信协议 247
18.2.1 I2 C通信协议 247
18.2.2 单片机模拟I2 C总线 247
18.3 E2PROM 24C02应用概述 248
18.3.1 24C02芯片简介 248
18.3.2 24C02硬件原理与连接 248
18.3.3 24C02存储结构与寻址 249
18.3.4 24C02读/写操作时序 250
18.4 PCF8591模拟采集与输出 251
18.4.1 PCF8591芯片简介 251
18.4.2 PCF8591硬件原理及连接 252
18.4.3 PCF8591寻址及功能选择 253
18.5 I2 C总线应用编程实战 254
18.5.1 I2C总线应用程序设计流程 254
18.5.2 案例18-1:24C02记忆开机次数 255
18.5.3 案例18-2:PCF8591的一路A/D数码管显示 261
18.5.4 案例18-3:PCF8591 D/A输出模拟 263
18.6 练习题 265
第19章 SPI协议 267
19.1 SPI总线协议 267
19.1.1 SPI简介 267
19.1.2 SPI通信模式 268
19.2 DS1302时钟芯片 269
19.3 DS1302的引脚结构及相关寄存器 270
19.3.1 DS1302的引脚结构 270
19.3.2 DS1302的寄存器设置 271
19.4 SPI协议应用编程实战 273
19.4.1 SPI协议应用的程序设计流程 273
19.4.2 案例19-1:DS1302时钟显示 273
19.5 练习题 278
第20章 1-Wire总线 279
20.1 概述 279
20.2 DS18B20数字温度传感器 280
20.2.1 DS18B20传感器特性 280
20.2.2 DS18B20的引脚结构 281
20.2.3 DS18B20的硬件连接 281
20.2.4 DS18B20的内部结构 282
20.2.5 DS18B20的工作原理 284
20.2.6 DS18B20的工作时序 288
20.2.7 DS18B20使用中注意事项 290
20.3 1-Wire总线应用编程实战 291
20.3.1 DS18B20模块的程序设计流程 291
20.3.2 案例20-1:温度采集液晶显示 291
20.4 练习题 294
第5篇 综合实战篇 296
第21章 计算器 296
21.1 硬件需求 296
21.2 设计思路 296
21.3 编程实战 298
21.4 运行效果 301
第22章 串口测温 302
22.1 硬件需求 302
22.2 设计思路 302
22.3 编程实战 302
22.4 运行效果 304
第23章 99分钟倒计时器 306
23.1 硬件需求 306
23.2 设计思路 306
23.3 编程实战 308
23.4 运行效果 312
附录A ASCII表 314
附录B 进制转换表 315
附录C C51数据类型及运算符 316
参考文献 318