51单片机快速入门篇
第1章 单片机的历史和分类 3
1.1 单片机名称的由来 3
1.1.1 单片机名称的由来 3
1.1.2 单片机的特点 3
1.1.3 单片机的应用 4
1.2 单片机的分类 5
1.2.1 按用途分类 5
1.2.2 按位数分类 5
1.2.3 按系列分类 5
1.3 入门级单片机的选择 6
1.3.1 入门学习选择什么样的单片机 6
1.3.2 80C51与AT89C51的区别 6
1.3.3 AT89S51与AT89C51的区别 6
第2章 单片机开发环境的建立 8
2.1 学习单片机的必备工具 8
2.1.1 计算机 8
2.1.2 单片机集成开发系统软件 8
2.1.3 51编程器 9
2.1.4 实验板 9
2.2 集成开发软件的下载和安装 9
2.2.1 从网上免费下载集成开发软件 9
2.2.2 MedWin集成开发软件的安装 10
2.3 编程器的安装与使用 11
2.3.1 编程器的连接 11
2.3.2 安装编程器软件 12
2.3.3 编程器的使用 12
2.4 实验板的使用 13
第3章 单片机程序开发流程 15
3.1 编写一个简单的单片机程序 15
3.1.1 目的 15
3.1.2 工作原理 15
3.1.3 用汇编语言编写程序 16
3.2 用MedWin开发单片机程序 16
3.2.1 编写源程序 16
3.2.2 创建项目 17
3.2.3 编译/汇编 17
3.2.4 输出Intel HEX文件 17
3.3 把目标文件写入单片机 18
3.3.1 选择单片机型号 18
3.3.2 进行擦除 18
3.3.3 写入文件 19
3.4 在实验板上实验 19
第4章 单片机寄存器 20
4.1 80C51单片机引脚简介 20
4.2 单片机工作的基本条件 21
4.2.1 接电源 22
4.2.2 接石英晶体振荡器 22
4.2.3 单片机内装入程序 22
4.3 单片机的存储器 22
4.3.1 单元与位 23
4.3.2 字、字节和数制 23
4.3.3 程序存储器 24
4.3.4 数据存储器 24
4.4 单片机工作的基本原理 26
4.4.1 引脚与寄存器的关系 27
4.4.2 单片机中0和1的作用 27
4.4.3 工作基本原理 28
第5章 单片机指令 29
5.1 学习单片机指令与编程的经验与技巧 29
5.2 单片机编程语言概述 30
5.2.1 编程语言概述 30
5.2.2 单片机使用的编程语言 31
5.2.3 80C51汇编语言的语句结构 32
5.3 80C51单片机指令系统 33
5.3.1 数据传送类指令 33
5.3.2 控制转移类指令 33
5.3.3 逻辑运算及移位类指令 34
5.3.4 算数运算类指令 34
5.3.5 位操作类指令 34
5.4 常用的伪指令 35
5.4.1 伪指令与80C51指令的不同点 35
5.4.2 常用的伪指令 35
51单片机典型实例篇
第6章 跑马灯 41
6.1 点亮一只灯 41
6.1.1 硬件设计 41
6.1.2 程序设计 42
6.1.3 代码详解 42
6.1.4 实例测试 43
6.1.5 经验总结 44
6.2 模拟仿真 44
6.2.1 进入模拟仿真状态 44
6.2.2 展现观察窗口 44
6.2.3 选择调试方式 45
6.2.4 观察寄存器值的变化 45
6.3 点亮6只灯 46
6.3.1 程序设计 47
6.3.2 代码详解 47
6.3.3 模拟仿真 48
6.3.4 实例测试 48
6.3.5 经验总结 48
6.4 亮灯循环左移 48
6.4.1 程序设计 49
6.4.2 代码详解 49
6.4.3 模拟仿真 51
6.4.4 实例测试 51
6.4.5 经验总结 51
6.5 亮灯循环右移 51
6.5.1 程序设计 52
19.4.3 代码详解 285
19.5 一键多功能控制 285
19.5.1 程序设计 285
19.5.2 代码详解 286
第20章 报警声设计 288
20.1 发出1kHz声音 288
20.1.1 硬件设计 288
20.1.2 程序设计 288
20.1.3 代码详解 289
20.2 发出嘀、嘀声 289
20.2.1 程序设计 290
20.2.2 代码详解 290
20.2.3 经验总结 291
20.3 救护车声 291
20.3.1 程序设计 291
20.3.2 代码详解 292
20.4 闹钟铃声 292
20.4.1 程序设计 292
20.4.2 代码详解 293
20.4.3 经验总结 293
20.5 发出20次的报警声 294
20.5.1 程序设计 294
20.5.2 代码详解 294
20.5.3 经验总结 295
20.6 警报的同时LED闪烁 295
20.6.1 硬件设计 295
20.6.2 程序设计 295
20.6.3 代码详解 296
第21章 交通灯信号控制 298
21.1 采用定时器延时 298
21.1.1 硬件设计 298
21.1.2 程序设计 299
21.1.3 代码详解 300
21.1.4 经验总结 300
21.2 灯交互闪烁 301
21.2.1 硬件设计 301
21.2.2 程序设计 301
21.2.3 代码详解 303
21.2.4 经验总结 303
21.3 交通信号灯控制 303
21.3.1 硬件设计 304
21.3.2 程序设计 304
21.3.3 代码详解 306
21.3.4 经验总结 307
21.4 改进的交通信号灯控制 307
21.4.1 硬件设计 307
21.4.2 程序设计 307
21.4.3 代码详解 310
21.4.4 经验总结 310
第22章 通信测试 311
22.1 发送一个字符 311
22.1.1 硬件设计 311
22.1.2 程序设计 311
22.1.3 代码详解 313
22.1.4 经验总结 313
22.2 发送一个字符串 313
22.2.1 程序设计 313
22.2.2 代码详解 315
22.2.3 经验总结 316
22.3 接收指令 316
22.3.1 程序设计 316
22.3.2 代码详解 317
22.3.3 经验总结 317
22.4 发送接收测试程序 317
22.4.1 程序设计 318
22.4.2 代码详解 319
22.4.3 经验总结 320
51单片机综合实例篇
第23章 时钟设计综合实例 323
23.1 简单时钟设计 323
23.1.1 学习单片机时钟设计目的 323
23.1.2 时钟结构与原理 324
23.1.3 走时功能的设计 325
23.1.4 显示部分的设计 326
23.1.5 调整时间部分的设计 328
23.1.6 喇叭和指示灯等子程序 330
23.1.7 时钟主程序 331
23.1.8 简单时钟程序清单 333
23.2 带定时功能的闹铃时钟设计 339
23.2.1 闹钟结构与原理 340
23.2.2 闹铃功能主要子程序 340
23.2.3 闹钟主程序 344
23.2.4 闹钟程序清单 346
23.3 带定时和倒计时功能的时钟设计 356
23.3.1 结构与原理 356
23.3.2 倒计时功能主要子程序 357
23.3.3 带倒计时闹钟程序清单 360
23.4 简单时钟的C语言程序设计 373
23.4.1 时钟结构和使用方法 373
23.4.2 走时功能的设计 373
23.4.3 显示功能的设计 374
23.4.4 调整时间功能的设计 375
23.4.5 按键扫描等其他函数 376
23.4.6 时钟主函数 377
23.4.7 简单时钟C语言程序清单 378
第24章 液晶显示应用实例 383
24.1 液晶显示秒表 383
24.1.1 硬件设计 383
24.1.2 程序设计 383
24.1.3 代码详解 393
24.1.4 操作说明 394
24.2 液晶显示温度控制器 395
24.2.1 硬件设计 395
24.2.2 程序设计 395
24.2.3 代码详解 414
24.2.4 操作说明 416
第25章 动手制作单片机实验板 417
25.1 制作实验板准备工作 417
25.1.1 制作实验板的目的 417
25.1.2 制作前的准备工作 418
25.1.3 焊接技巧 419
25.2 单片机外围常用元器件及其检测方法 420
25.2.1 发光二极管和LED数码管 420
25.2.2 三极管 421
25.2.3 电阻和电容 423
25.3 实验板制作过程 425
25.3.1 实验板功能简介 425
25.3.2 简单稳压电源的制作 427
25.3.3 单片机最小系统的制作 428
25.3.4 LED数码管显示模块的制作 429
25.3.5 其他实验电路的制作 430
25.3.6 单片机端口插针座连接线 433
附录A 80C51单片机指令速查表 435
附录B 数的制式转换表 441
附录C 光盘使用说明 442
6.5.2 代码详解 53
6.5.3 模拟仿真 54
6.5.4 实例测试 54
6.5.5 经验总结 54
6.6 延时时间的计算 54
6.6.1 机器周期和指令周期 55
6.6.2 单重循环短暂延时 55
6.6.3 多重循环较长时间延时 55
6.6.4 对延时程序的改进 56
6.7 亮灯左移与右移循环 57
6.7.1 程序设计 57
6.7.2 代码详解 58
6.7.3 模拟仿真 58
6.7.4 实例测试 58
6.7.5 经验总结 59
6.8 双灯左移右移加闪烁 59
6.8.1 程序设计 59
6.8.2 代码详解 60
6.8.3 模拟仿真 61
6.8.4 实例测试 61
6.8.5 经验总结 61
6.9 用取表方式实现灯移动 63
6.9.1 程序设计 63
6.9.2 代码详解 64
6.9.3 模拟仿真 66
6.9.4 实例测试 67
6.9.5 经验总结 67
第7章 LED显示 68
7.1 数码管工作原理及显示码 68
7.1.1 LED数码管结构 68
7.1.2 工作原理 68
7.1.3 数码管显示码 69
7.2 让数码管静态显示6 69
7.2.1 硬件设计 70
7.2.2 程序设计 70
7.3.3 代码详解 71
7.2.4 模拟仿真 72
7.2.5 实例测试 72
7.2.6 经验总结 72
7.3 循环显示0~9 72
7.3.1 程序设计 72
7.3.2 代码详解 74
7.3.3 模拟仿真 74
7.3.4 实例测试 74
7.3.5 经验总结 75
7.4 两位数码管显示00~99 75
7.4.1 硬件设计 75
7.4.2 程序设计 75
7.4.3 代码详解 77
7.4.4 模拟仿真 79
7.4.5 实例测试 79
7.4.6 经验总结 79
第8章 键盘控制 80
8.1 用8位DIP开关控制LED 80
8.1.1 硬件设计 80
8.1.2 程序设计 81
8.1.3 代码详解 81
8.1.4 模拟仿真 82
8.1.5 实例测试 82
8.1.6 经验总结 82
8.2 用4位DIP开关控制数码管显示 82
8.2.1 硬件设计 82
8.2.2 程序设计 83
8.2.3 代码详解 84
8.2.4 模拟仿真 85
8.2.5 实例测试 86
8.2.6 经验总结 86
8.3 按键开关控制指示灯 86
8.3.1 硬件设计 86
8.3.2 程序设计 86
8.3.3 代码详解 88
8.3.4 模拟仿真 88
8.3.5 实例测试 89
8.3.6 经验总结 89
8.4 键盘控制概述 89
8.4.1 按键的特性 89
8.4.2 键盘输入中要解决的问题 90
8.4.3 独立按键式键盘 90
8.4.4 矩阵式按键键盘 90
8.5 用独立式键盘控制灯移动 91
8.5.1 硬件设计 91
8.5.2 程序设计 91
8.5.3 代码详解 93
8.5.4 模拟仿真 94
8.5.5 实例测试 95
8.5.6 经验总结 95
8.6 用矩阵式键盘控制显示器 95
8.6.1 硬件设计 96
8.6.2 程序设计 96
8.6.3 代码详解 97
8.6.4 模拟仿真 101
8.6.5 实例测试 102
8.6.6 经验总结 102
第9章 中断 103
9.1 中断控制功能的作用 103
9.1.1 什么是中断 103
9.1.2 实现中断的好处 103
9.1.3 中断处理过程 104
9.1.4 中断源及入口地址 104
9.2 中断的控制及设置 105
9.2.1 中断允许控制寄存器IE 105
9.2.2 中断优先级控制寄存器IP 106
9.2.3 定时器控制寄存器TCON 107
9.2.4 串行口控制寄存器SCON 108
9.3 用外部中断控制灯闪烁 108
9.3.1 硬件设计 108
9.3.2 程序设计 109
9.3.3 代码详解 110
9.3.4 模拟仿真 112
9.3.5 实例测试 112
9.3.6 经验总结 113
9.4 用多级外部中断控制灯移动 113
9.4.1 硬件设计 113
9.4.2 程序设计 114
9.4.3 代码详解 116
9.4.4 模拟仿真 117
9.4.5 实例测试 117
9.4.6 经验总结 117
第10章 定时器/计数器 118
10.1 定时器/计数器的用途及工作原理 118
10.1.1 定时器/计数器的用途 118
10.1.2 定时器/计数器的结构 118
10.1.3 定时器/计数器的工作原理 118
10.2 定时器/计数器的控制寄存器 120
10.2.1 工作模式控制寄存器TMOD 120
10.2.2 定时器控制寄存器TCON 121
10.2.3 4种工作模式的特点 121
10.3 定时器/计数器的初始化设置 122
10.3.1 模式0的初始化步骤 122
10.3.2 模式1的初始化步骤 123
10.3.3 模式2的初始化步骤 123
10.3.4 模式3的初始化步骤 123
10.4 使用定时器延时 124
10.4.1 硬件设计 124
10.4.2 程序设计 124
10.4.3 代码详解 125
10.4.4 模拟仿真 126
10.4.5 实例测试 127
10.4.6 经验总结 127
10.5 定时器加软件计数延时 127
10.5.1 程序设计 127
10.5.2 代码详解 129
10.5.3 模拟仿真 129
10.5.4 实例测试 130
10.5.5 经验总结 130
10.6 定时与计数演示灯 130
10.6.1 硬件设计 130
10.6.2 程序设计 131
10.6.3 代码详解 132
10.6.4 实例测试 132
10.6.5 经验总结 133
第11章 音乐发声 134
11.1 发声实验 134
11.1.1 硬件设计 134
11.1.2 程序设计 134
11.1.3 代码详解 135
11.1.4 模拟仿真 135
11.1.5 实例测试 136
11.1.6 经验总结 136
11.2 变频报警 136
11.2.1 程序设计 136
11.2.2 代码详解 137
11.2.3 模拟仿真 138
11.2.4 实例测试 138
11.2.5 经验总结 138
11.3 歌曲演奏 139
11.3.1 编程演奏器原理 139
11.3.2 程序设计 141
11.3.3 代码详解 143
11.3.4 模拟仿真 144
11.3.5 实例测试 145
11.3.6 经验总结 145
11.4 电子琴 145
14.4.1 硬件设计 145
11.4.2 程序设计 146
11.4.3 代码详解 148
11.4.4 模拟仿真 149
11.4.5 实例测试 149
11.4.6 经验总结 149
第12章 串行通信 150
12.1 单片机串行通信功能 150
12.1.1 单片机串行通信的作用 150
12.1.2 串行通信中双方基本约定 150
12.1.3 串行口的结构和通信过程 151
12.2 串行口的控制 152
12.2.1 电源和数据传输率控制寄存器PCON 152
12.2.2 串行口控制寄存器SCON 152
12.2.3 串行口的4种工作方式 153
12.3 扩展8个输出端口 153
12.3.1 硬件设计 153
12.3.2 程序设计 154
12.3.3 代码详解 156
12.3.4 模拟仿真 156
12.3.5 实例测试 157
12.3.6 经验总结 157
12.4 扩展8个输入端口 157
12.4.1 硬件设计 157
12.4.2 程序设计 158
12.4.3 代码详解 159
12.4.4 模拟仿真 160
12.4.5 实例测试 160
12.4.6 经验总结 160
12.5 向计算机发送一封信 160
12.5.1 硬件设计 161
12.5.2 程序设计 161
12.5.3 代码详解 162
12.5.4 模拟仿真 163
12.5.5 实例测试 163
12.5.6 经验总结 163
第13章 LCD模块及其应用 164
13.1 LCD模块 164
13.1.1 LCD的分类 164
13.1.2 LCD模块的引脚 164
13.1.3 寄存器选择及显示器地址 165
13.1.4 LCM控制指令 166
13.2 一个简单的液晶显示程序 167
13.2.1 硬件设计 167
13.2.2 程序设计 167
13.2.3 代码详解 170
13.2.4 实例测试 171
13.2.5 经验总结 171
13.3 使LCD显示两行字符 172
13.3.1 程序设计 172
13.3.2 代码详解 173
13.3.3 实例测试 174
13.3.4 经验总结 174
13.4 LCD显示字符串 175
13.4.1 程序设计 175
13.4.2 代码详解 177
13.4.3 实例测试 178
13.4.4 经验总结 178
13.5 LCD循环显示 178
13.5.1 程序设计 178
13.5.2 代码详解 181
13.5.3 实例测试 182
13.5.4 经验总结 182
13.6 自编图形显示 183
13.6.1 程序设计 183
13.6.2 代码详解 186
13.6.3 实例测试 187
13.6.4 经验总结 187
第14章 AD与DA及其应用 188
14.1 信号转换概述 188
14.1.1 模拟信号 188
14.1.2 数字信号 188
14.1.3 信号转换 188
14.2 简单DA转换程序 189
14.2.1 硬件设计 189
14.2.2 程序设计 190
14.2.3 代码详解 190
14.2.4 实例测试 190
14.2.5 经验总结 191
14.3 指拔开关控制输出电压 191
14.3.1 硬件设计 191
14.3.2 程序设计 191
14.3.3 代码详解 192
14.3.4 模拟仿真 192
14.3.5 实例测试 192
14.3.6 经验总结 193
14.4 DAC输出锯齿波 193
14.4.1 程序设计 193
14.4.2 代码详解 194
14.4.3 模拟仿真 194
14.4.4 实例测试 194
14.4.5 经验总结 194
14.5 单线数字温度传感器 195
14.5.1 引脚及其与单片机的连接方式 195
14.5.2 DS18B20的主要特性 195
14.5.3 内部结构 196
14.5.4 高速暂存存储器 196
14.5.5 DS18B20通信协议 197
14.5.6 使用注意事项 198
14.6 数字温度计 198
14.6.1 硬件设计 198
14.6.2 程序设计 199
14.6.3 代码详解 203
14.6.4 实例测试 204
14.6.5 经验总结 204
第15章 步进电机的控制 205
15.1 步进电机的工作原理 205
15.1.1 步进电机的种类 205
15.1.2 步进电机工作原理 205
15.1.3 小型步进电机驱动电路 207
15.2 步进电机正转 207
15.2.1 硬件设计 207
15.2.2 程序设计 207
15.2.3 代码详解 209
15.2.4 模拟仿真 209
15.2.5 实例测试 210
15.2.6 经验总结 210
15.3 步进电机反转 210
15.3.1 程序设计 211
15.3.2 代码详解 212
15.3.3 模拟仿真 213
15.3.4 实例测试 213
15.3.5 经验总结 213
15.4 步进电机转速控制 213
15.4.1 程序设计 213
15.4.2 代码详解 215
15.4.3 模拟仿真 216
15.4.4 实例测试 216
15.4.5 经验总结 216
15.5 开关控制步进电机正反转 217
15.5.1 硬件设计 217
15.5.2 程序设计 217
15.5.3 代码详解 220
15.5.4 模拟仿真 222
15.5.5 实例测试 222
15.5.6 经验总结 222
51单片机C语言基础篇
第16章 单片机C语言入门 225
16.1 C语言与C51 225
16.1.1 C语言与C51 225
16.1.2 C语言编程的优点 225
16.1.3 C语言和汇编语言混合编程 225
16.2 学习C51的准备工作 226
16.2.1 计算机 226
16.2.2 51单片机C语言编译器 226
16.2.3 51编程器和实验板 226
16.3 单片机C语言程序开发流程 226
16.4 单片机C语言入门实例 227
16.4.1 程序工作原理 227
16.4.2 源程序 228
16.4.3 程序说明 228
16.5 单片机C语言编程特点 228
16.5.1 程序工作原理 228
16.5.2 用两种语言编写 229
16.5.3 C语言程序编写特点 230
16.6 单片机C程序的基本结构 231
16.6.1 主函数 231
16.6.2 函数 231
16.6.3 头文件 231
16.7 C51数据类型、常量与变量 232
16.7.1 C51的数据类型 232
16.7.2 常量 233
16.7.3 变量 234
16.7.4 数组 235
16.8 C51常用的运算符 235
16.8.1 赋值运算符 235
16.8.2 增量和减量运算符 236
16.8.3 关系运算符 236
16.8.4 逻辑运算符 236
16.8.5 位运算符 237
16.8.6 运算符的运算优先次序 239
16.9 C51流程控制语句 239
16.9.1 流程结构及其流程图 239
16.9.2 流程控制语句按功能分类 240
16.9.3 循环语句 241
16.9.4 选择语句 243
16.10 C51函数 244
16.10.1 C51函数定义的一般形式 245
16.10.2 C51库函数 246
16.10.3 C51中断函数 246
第17章 Keil C51的使用 248
17.1 Keil C51的安装 248
17.2 用Keil C51开发单片机 250
17.2.1 编写源程序 250
17.2.2 建立工程项目文件 251
17.2.3 产生可执行的HEX文件 255
17.3 Keil中的软件仿真 256
17.3.1 操作的一般步骤 257
17.3.2 仿真举例说明 258
17.3.3 几个常用命令使用区别 262
51单片机C语言实例篇
第18章 节日彩灯设计 265
18.1 彩灯闪烁 265
18.1.1 硬件设计 265
18.1.2 程序设计 266
18.1.3 代码详解 267
18.2 延时模块 267
18.2.1 延时原理 267
18.2.2 软件延时 267
18.2.3 利用定时器延时 268
18.3 彩灯由右向左侧逐渐点亮 269
18.3.1 程序设计 269
18.3.2 代码详解 270
18.4 单组彩灯循环左右移动 270
18.4.1 程序设计 270
18.4.2 代码详解 272
18.4.3 经验总结 273
18.5 采用制表方法实现彩灯变化 274
18.5.1 程序设计 274
18.5.2 代码详解 275
第19章 开关输入设计 277
19.1 单开关输入状态指示灯 277
19.1.1 硬件设计 277
19.1.2 程序设计 278
19.1.3 代码详解 278
19.1.4 经验总结 279
19.2 多路开关输入状态指示灯 279
19.2.1 硬件设计 279
19.2.2 程序设计 280
19.2.3 代码详解 281
19.3 多路开关控制灯 281
19.3.1 硬件设计 281
19.3.2 程序设计 282
19.3.3 代码详解 283
19.4 按钮开关次数显示灯 283
19.4.1 硬件设计 283
19.4.2 程序设计 283