第1章 单片机基础知识 1
1.1单片机概述 1
1.2单片机特点 1
1.3单片机的构成结构 2
1.3.1单片机外部引脚及其功能 2
1.3.2单片机内部结构 4
1.3.3 MCS-51单片机的工作时序 5
1.4 MCS-51单片机工作方式 8
1.4.1复位方式 8
1.4.2程序执行方式 10
1.4.3省电工作方式 10
1.5单片机内部资源 11
1.5.1定时器/计数器基本结构 11
1.5.2中断系统 16
1.5.3 MCS-51单片机内部存储结构 20
1.5.4 MCS-51的串行通信口 26
第2章 单片机C语言程序设计方法 32
2.1单片机C语言设计方法及优点 32
2.1.1 C语言的特点 32
2.1.2算法概念 33
2.1.3结构化程序设计方法 34
2.2 C语言程序基本结构 35
2.2.1顺序结构 36
2.2.2选择结构 36
2.2.3循环结构 37
2.3 C语言数据类型及表达式 38
2.3.1 C51基本数据类型 38
2.3.2常量和变量 41
2.3.3变量及其存储模式 43
2.3.4重新定义数据类型 47
2.3.5 C51中使用变量的原则 47
2.3.6运算符与表达式 48
2.3.7关系运算符 55
2.3.8逻辑运算符 56
2.3.9位运算符 58
2.3.10 sizeof运算符 61
2.4程序流程控制 62
2.4.1循环控制 62
2.4.2条件分支控制 64
2.4.3无条件转移语句(goto) 66
2.5数组 67
2.5.1一维数组 67
2.5.2二维数组 67
2.5.3字符数组 68
2.5.4数组的运用 68
2.5.5数组的存储方式 69
2.6指针 70
2.6.1指针的概念 70
2.6.2指针的定义 71
2.6.3指针变量的引用 72
2.6.4数组指针和指向数组的指针变量 73
2.6.5指针的地址计算 75
2.6.6 C51中的指针类型 76
2.7结构体 82
2.7.1结构体的定义和引用 83
2.7.2结构体数组 85
2.7.3指向结构体数据的指针 86
2.8枚举 88
2.9共用体 90
2.10 51单片机内部资源在C51中的定义 93
2.10.1特殊功能寄存器定义 93
2.10.2并行接口定义 97
2.11 C51函数 98
2.11.1函数的定义 99
2.11.2函数的调用 100
2.11.3函数的嵌套和递归调用 101
2.12模块化编程方法 103
2.13 C和ASM混合编程 105
2.14程序的优化方法 109
2.14.1程序结构的优化 109
2.14.2代码的优化 110
第3章LED基本程序实验 114
3.1实验说明 114
3.2硬件原理详解 114
3.3程序设计 115
3.4实验总结 118
3.5课后习题 118
第4章LED PWM调光实验 119
4.1实验说明 119
4.2 PWM简介 120
4.3程序设计 121
4.4实验总结 125
4.5课后习题 125
第5章4位7段数码管动态扫描实验 126
5.1实验说明 126
5.2硬件原理详解 126
5.2.1数码管内部结构及硬件原理图 126
5.2.2数码管硬件设计方法 128
5.3单片机驱动数码管的方法 129
5.4程序设计 131
5.4.1静态驱动数码管实例 131
5.4.2动态扫描驱动数码实例 131
5.5实验总结 134
5.6课后习题 134
第6章 按键扫描实验 135
6.1实验说明 135
6.2硬件原理 135
6.2.1硬件原理图 135
6.2.2按键时序分析 136
6.3多种类型按键识别方法 136
6.3.1独立按键识别 137
6.3.2矩阵键盘识别方法 139
6.3.3键盘长按、短按识别 141
6.4实验总结 146
6.5课后习题 146
第7章 单片机小电子琴 147
7.1实验说明 147
7.2硬件原理详解 147
7.2.1硬件原理图 147
7.2.2蜂鸣器工作原理 147
7.2.3单片机驱动蜂鸣器方法 148
7.3小电子琴设计实验 150
7.3.1程序流程 150
7.3.2程序说明 150
7.4实验总结 153
7.5课后习题 153
第8章LCD1602液晶显示器实验 154
8.1实验说明 154
8.2硬件原理详解 154
8.2.1硬件原理图 154
8.2.2 LCD1602结构及引脚功能 155
8.2.3 LCD1602显示指令系统 157
8.2.4 LCD1602工作时序 158
8.2.5 LCD1602 8位总线工作方式 159
8.2.6 LCD1602 4位总线工作方式 160
8.3 LCD1602初始化程序设计 160
8.3.1程序流程 160
8.3.2程序说明 160
8.4单个字符程序设计 161
8.4.1程序流程 161
8.4.2程序说明 162
8.5一行字符程序设计 163
8.5.1程序流程 163
8.5.2程序说明 163
8.6实验总结 164
8.7课后习题 164
第9章LCD3310液晶显示器实验 165
9.1实验说明 165
9.2硬件原理详解 165
9.2.1硬件原理图 165
9.2.2 LCD3310结构及引脚功能 165
9.2.3 LCD3310显示指令系统 167
9.2.4 LCD3310工作时序 169
9.3 LCD3310初始化程序设计 170
9.3.1程序流程 170
9.3.2程序说明 170
9.4字符显示程序设计 171
9.4.1字符的取模方式 171
9.4.2程序流程 173
9.4.3程序说明 174
9.5图形程序设计 177
9.5.1图形的取模方式 177
9.5.2程序流程 178
9.5.3程序说明 179
9.6实验总结 179
9.7课后习题 179
第10章LCD12864液晶显示器实验 180
10.1实验说明 180
10.2硬件原理详解 180
10.2.1硬件原理图 181
10.2.2 LCD128X64结构及引脚功能 182
10.2.3 LCD128X64显示指令系统 182
10.2.4 LCD128X64工作时序 184
10.2.5 LCD128X64 8位总线工作方式 186
10.2.6 LCD128X64 4位总线工作方式 187
10.2.7 LCD128X64串行通信工作方式 188
10.3字符程序设计 190
10.3.1程序流程 190
10.3.2程序说明 190
10.4图形程序设计 192
10.4.1程序流程 192
10.4.2程序说明 192
10.5实验总结 195
10.6课后习题 195
第11章 温度检测DS18B20实验 196
11.1实验说明 196
11.2硬件原理详解 196
11.2.1 DS18B20引脚、封装及其特性 196
11.2.2 DS18B20内部结构 197
11.2.3 DS18B20的应用电路 198
11.3单总线工作时序 200
11.3.1总线复位 200
11.3.2写数据位 201
11.3.3读数据位 202
11.4 DS18B20的操作 203
11.4.1初始化 203
11.4.2 ROM操作命令 203
11.4.3功能命令 204
11.4.4 DS18B20的命令序列 206
11.4.5 DS18B20的温度数据结构 206
11.5 DS18B20的温度检测试验 208
11.6实验总结 210
11.7课后练习 210
第12章 时钟芯片DS1302实验 211
12.1实验说明 211
12.2硬件原理图详解 211
12.2.1硬件原理图 211
12.2.2 DS1302的引脚与结构 211
12.2.3 DS1302工作时序 213
12.2.4 DS1302寄存器 214
12.3 DS1302时钟程序设计 217
12.3.1 DS1302的底层驱动 217
12.3.2 DS1302的各种操作 219
12.3.3 DS1302的应用演示 221
12.4实验总结 222
12.5课后练习 222
第13章I2C总线存储器24C08 223
13.1实验说明 223
13.2 I2C总线介绍 223
13.2.1 I2C总线的基本原理 223
13.2.2 I2C协议的基本概念 224
13.2.3 I2C总线的数据传输 230
13.3存储器24C08 233
13.3.1 24C08的引脚及应用原理图 233
13.3.2 24C08操作方式 235
13.4 24C08的存储实验 241
13.5实验总结 246
13.6课后习题 246
第14章A/D转换 ADC0832实验 247
14.1实验说明 247
14.2硬件原理图详解 247
14.2.1 ADC0832简介 247
14.2.2 ADC0832引脚及硬件连接 247
14.2.3 ADC0832的工作时序 248
14.3 C51对ADC0832控制的实现 250
14.3.1程序流程及其程序实现 250
14.3.2 ADC0832程序转换实验 251
14.4实验总结 252
14.5课后习题 252
第15章 红外遥控解码实验 253
15.1实验说明 253
15.2硬件原理详解 253
15.2.1硬件原理图 254
15.2.2红外编解码基础知识 255
15.2.3单片机解红外码方法 256
15.3红外读码遥控实验 256
15.3.1程序流程 256
15.3.2程序说明 256
15.4实验总结 258
15.5课后习题 258
第16章PS/2键盘接口 259
16.1实验说明 259
16.2 PS/2接口硬件 259
16.2.1接口简介 259
16.2.2通信协议简介 260
16.3单片机识别PS/2键盘方法 262
16.4键盘的编码和解码 269
16.4.1 PS/2键盘的编码 269
16.4.2 PS/2键盘的解码 272
16.4.3键盘按键的显示 274
16.5实验总结 275
16.6课后练习 275
第17章STC单片机内部EEPROM实验 276
17.1实验说明 276
17.2 EEPROM介绍 276
17.2.1 STC89C52内部EEPROM资源 276
17.2.2 STC89C52内部EEPROM读写方法 278
17.2.3 STC89C52EEPROM读写实验 281
17.3实验总结 283
17.4课后练习 283
第18章 串口通信试验 284
18.1实验说明 284
18.2硬件原理详解 284
18.2.1硬件原理图 284
18.2.2串口通信电路工作原理 285
18.3串口和计算机通信实验 285
18.3.1程序设计方法 285
18.3.2实验程序说明 288
18.4实验总结 289
18.5课后习题 289
第19章 综合实验1:定时器全功能LCD1602时钟实验 290
19.1实验说明 290
19.2硬件原理详解 290
19.2.1硬件原理图 290
19.2.2程序设计要点 290
19.3时钟设计实验 291
19.3.1按键读取 292
19.3.2按键处理 294
19.3.3时间显示 298
19.3.4闪动显示 299
19.3.5闹铃判断与响应 301
19.3.6数据存储与读取 302
19.4实验总结 304
19.5课后习题 304
第20章 综合实验2:红外遥控万年历实验 305
20.1实验说明 305
20.2硬件原理详解 305
20.2.1硬件原理图 305
20.2.2程序设计要点 305
20.3公历到农历转换 306
20.3.1公历到农历转换的基本原理 307
20.3.2公历到农历转换程序流程 308
20.3.3公历转换农历程序说明 309
20.4红外遥控 311
20.4.1红外遥控流程图 311
20.4.2红外遥控程序 311
20.5实验总结 313
20.6课后习题 313
第21章 综合实验3:单片机演奏实验 314
21.1实验说明 314
21.2硬件原理详解 314
21.2.1硬件原理图 314
21.2.2蜂鸣器演奏歌曲 314
21.3程序设计 316
21.3.1乐谱的转换 316
21.3.2程序流程 318
21.3.3程序说明 320
21.4实验总结 323
21.5课后习题 323
第22章 综合实验4:基于PC键盘的英文打字机 324
22.1实验说明 324
22.2硬件原理详解 324
22.2.1硬件原理图 324
22.2.2程序设计要点 324
22.3英文打字机设计实验 325
22.3.1实现思路 325
22.3.2程序实现 326
22.4实验总结 329
22.5课后习题 329
第23章 综合实验5:简易电压数据采集系统 330
23.1实验说明 330
23.2硬件电路原理 330
23.3数据通信协议设计 331
23.4程序设计 332
23.4.1主函数程序设计 332
23.4.2串口中断接收设计 333
23.5上位机简介 335
23.6实验总结 335
23.7课后习题 335
第24章 综合实验6:基于wJ-V2.0实验板的电池充电器设计 336
24.1实验说明 336
24.2硬件原理详解 336
24.2.1硬件原理图 337
24.2.2硬件设计原理 337
24.2.3程序设计要点 338
24.3电池充电器设计实验 338
24.3.1程序主流程 338
24.3.2获取电池内阻 340
24.3.3计算电压电流及显示 341
24.4实验总结 342
24.5课后习题 342
第25章 综合实验7:步进电机驱动 343
25.1实验说明 343
25.2步进电机介绍 343
25.2.1步进电机的特点 343
25.2.2步进电机的工作方式 344
25.3步进电机的驱动方式 345
25.4步进电机驱动的硬件原理图 346
25.5单片机驱动步进电机的实现 347
25.5.1步进电机的方向控制 347
25.5.2步进电机的速度控制 347
25.5.3软件驱动步进电机的实现 348
25.6步进电机驱动实验 349
25.7实验总结 352
25.8课后习题 352
第26章 综合实验8:驱动16 X 16LED显示屏 353
26.1实验说明 353
26.2硬件原理及设计 353
26.2.1 LED显示屏简介 353
26.2.2显示原理 354
26.3 16 X 16点阵的软件实现 357
26.3.1基本点阵的显示 357
26.3.2 LED点阵的花样显示 358
26.4实验总结 362
26.5课后习题 362
第27章 综合实验9:基于HT9200A的DTMF信号输出设计实验 363
27.1实验说明 363
27.2硬件原理详解 363
27.2.1硬件原理图 363
27.2.2 DTMF工作原理 363
27.2.3 HT9200A内部结构 364
27.2.4 HT9200A工作时序 365
27.2.5单片机驱动HT9200A方法 366
27.3 DTMF驱动实验 366
27.3.1程序流程 366
27.3.2程序说明 367
27.4实验总结 369
27.5课后习题 369
参考文献 370