第1章 如何学习单片机 1
1.1学什么类型的单片机 1
1.2学习单片机的最佳方法 2
1.3单片机学习的准备工作 3
1.4单片机开发软件环境搭建 4
1.5 Keil基本概况介绍 7
1.6答读者问 9
第2章 点亮你的LED 11
2.1单片机的内部资源 11
2.2单片机最小系统 12
2.2.1电源 13
2.2.2晶振 13
2.2.3复位电路 13
2.3 LED小灯 14
2.4程序代码编写 16
2.4.1特殊功能寄存器和位定义 16
2.4.2新建一个工程 17
2.4.3编写点亮小灯的程序 21
2.5程序下载 24
2.6练习题 26
第3章 硬件基础知识学习 27
3.1电磁干扰 27
3.2去耦电容的应用 28
3.3三极管在数字电路中的应用 30
3.3.1三极管的初步认识 30
3.3.2三极管的原理 30
3.3.3三极管的应用 32
3.4 74HC138三八译码器的应用 35
3.5 LED闪烁程序 38
3.6练习题 39
第4章 C语言基础以及流水灯的实现 40
4.1二进制、十进制和十六进制 40
4.2 C语言变量类型和范围 41
4.3 C语言基本运算符 42
4.4 for循环语句 43
4.5 while循环语句 44
4.6函数的简单介绍 45
4.7 Keil软件延时 46
4.8流水灯程序 51
4.9练习题 53
第5章 定时器与数码管基础 54
5.1逻辑电路与逻辑运算 54
5.2定时器的学习 56
5.2.1定时器的初步认识 56
5.2.2定时器的寄存器 57
5.2.3定时器的应用 60
5.3数码管的学习 61
5.3.1数码管的基本介绍 61
5.3.2数码管的真值表 64
5.3.3数码管的静态显示 65
5.4练习题 67
第6章 中断与数码管动态显示 68
6.1 C语言的数组 68
6.1.1数组的基本概念 68
6.1.2数组的声明 69
6.1.3数组的初始化 69
6.1.4数组的使用和赋值 69
6.2 if语句 70
6.3 switch语句 71
6.4数码管的动态显示 72
6.4.1动态显示的基本原理 72
6.4.2数码管显示消隐 76
6.5单片机中断系统 78
6.5.1中断的产生背景 78
6.5.2定时器中断的应用 78
6.5.3中断的优先级 82
6.6练习题 83
第7章 变量进阶与点阵LED 84
7.1变量的作用域 84
7.1.1局部变量 84
7.1.2全局变量 84
7.2变量的存储类别 85
7.3点阵的初步认识 87
7.4点阵的图形显示 90
7.5点阵的动画显示 96
7.5.1点阵的纵向移动 96
7.5.2点阵的横向移动 98
7.6练习题 103
第8章 函数进阶与按键 104
8.1单片机最小系统 104
8.1.1电源 104
8.1.2晶振 104
8.1.3复位电路 105
8.2函数的调用 106
8.3函数的形式参数和实际参数 109
8.4按键 110
8.4.1独立按键 110
8.4.2矩阵按键 111
8.4.3独立按键的扫描 112
8.4.4按键消抖 115
8.4.5矩阵按键的扫描 119
8.5简易加法计算器 122
8.6练习题 127
第9章 步进电机与蜂鸣器 128
9.1单片机IO口的结构 128
9.2上下拉电阻 129
9.3 28BYJ-48型步进电机详解与实例 130
9.3.1电机的分类 130
9.3.2 28BYJ-48型步进电机原理详解 131
9.3.3让电机转起来 132
9.3.4转动精度与深入分析 135
9.3.5编写实用程序的基础 137
9.3.6包含综合应用的实用程序 139
9.4蜂鸣器 144
9.5练习题 148
第10章 实例练习与经验积累 149
10.1数字秒表实例 149
10.1.1不同数据类型间的相互转换 149
10.1.2定时时间精准性调整 150
10.1.3字节操作修改位的技巧 151
10.1.4数码管扫描函数算法改进 152
10.1.5秒表程序 153
10.2 PWM知识与实例 157
10.3交通灯实例 163
10.4 51单片机RAM区域的划分 166
10.5长短按键的应用 167
10.6练习题 173
第11章 UART串口通信 174
11.1串行通信的初步认识 174
11.2 RS-232通信接口 176
11.3 USB转串口通信 177
11.4 IO口模拟UART串口通信 178
11.5 UART串口通信的基本应用 182
11.5.1通信的三种基本类型 182
11.5.2 UART模块介绍 182
11.5.3 UART串口程序 183
11.6通信实例与ASCⅡ码 185
11.7练习题 191
第12章 指针基础与1602液晶的初步认识 192
12.1指针的概念与指针变量的声明 192
12.1.1变量的地址 192
12.1.2指针变量的声明 194
12.1.3指针的简单示例 195
12.2指向数组元素的指针 196
12.2.1指向数组元素的指针和运算法则 196
12.2.2指向数组元素指针的实例 197
12.3字符数组和字符指针 200
12.3.1常量和符号常量 200
12.3.2字符和字符串数组实例 202
12.4 1602液晶的认识 204
12.4.1 1602液晶的硬件接口介绍 204
12.4.2 1602液晶的读写时序介绍 206
12.4.3 1602液晶的指令介绍 208
12.4.4 1602液晶简单实例 209
12.5练习题 211
第13章 1602液晶与串口的应用实例 212
13.1通信时序解析 212
13.2 1602整屏移动 215
13.3多.c文件的初步认识 219
13.4计算器实例 223
13.5串口通信机制和实用的串口例程 232
13.6练习题 240
第14章 I2C总线与E2PROM 241
14.1 I2C时序初步认识 241
14.2 I2C寻址模式 243
14.3 E2PROM的学习 247
14.3.1 E2PROM单字节读写操作时序 248
14.3.2 E2PROM多字节读写操作时序 254
14.3.3 E2PROM的页写入 257
14.4 I2C和E2PROM的综合实验学习 261
14.5练习题 265
第15章 实时时钟DS1302 266
15.1 BCD码的概念 266
15.2 SPI时序初步认识 267
15.3实时时钟芯片DS1302 269
15.3.1 DS1302的特点 269
15.3.2 DS1302的硬件信息 271
15.3.3 DS1302寄存器介绍 273
15.3.4 DS1302通信时序介绍 274
15.3.5 DS1302的BURST模式 280
15.4复合数据类型 284
15.4.1结构体数据类型 285
15.4.2共用体数据类型 286
15.4.3枚举数据类型 287
15.5电子钟实例 288
15.6练习题 300
第16章 红外通信与DS18B20温度传感器 301
16.1红外光的基本原理 301
16.2红外遥控通信原理 303
16.3 NEC协议红外遥控器 304
16.4温度传感器DS18B20 312
16.5练习题 322
第17章 模数转换A/D与数模转换D/A 323
17.1 A/D和D/A的基本概念 323
17.2 A/D的主要指标 324
17.3 PCF8591的硬件接口 325
17.4 PCF8591的软件编程 327
17.5 A/D差分输入信号 331
17.6 D/A输出 332
17.7简易信号发生器实例 334
17.8练习题 339
第18章 RS-485通信与Modbus协议 340
18.1 RS-485通信 340
18.2 Modbus通信协议介绍 348
18.2.1 Modbus协议特点 348
18.2.2 RTU协议帧数据 348
18.3 Modbus多机通信例程 351
18.4练习题 358
第19章 实践项目开发——多功能电子钟 359
19.1类型说明 359
19.2头文件 361
19.3条件编译 363
19.4项目实战——多功能电子钟 365
19.4.1项目需求分析 365
19.4.2程序结构规划 366
19.4.3程序代码编写 368
19.5练习题 399
第20章 单片机开发常用工具的使用 400
20.1万用表 400
20.1.1万用表的功能及类型 400
20.1.2万用表的使用方法 401
20.2示波器 403
20.2.1示波器的功能及类型 403
20.2.2示波器的使用 403
20.3逻辑分析仪 406
20.3.1什么是逻辑分析仪 406
20.3.2逻辑分析仪的参数 408
20.3.3逻辑分析仪的使用 408
20.3.4应用实例——分析UART、I2C、SPI 409
20.3.5数字电路应用中逻辑分析仪比之示波器的优势 412
20.4练习题 413
附录A ASCⅡ码字符表 414
附录B C语言运算符及优先级 415
附:KST-51开发板原理图 417