第1部分 基 础篇 1
第1章 单片机概述 1
1.1 单片机介绍 1
1.1.1 单片机的历史 1
1.1.2 单片机的应用 2
1.2 单片机的分类 3
1.2.1 按用途分类 4
1.2.2 按位数分类 4
1.2.3 按系列分类 4
1.3 MCS51单片机与C语言介绍 6
1.3.1 MCS-51单片机 6
1.3.2 单片机C语言 7
1.4 本章小结 7
第2章 MCS-51单片机基础知识 8
2.1 MCS-51单片机概述 8
2.2 MCS-51单片机结构原理 8
2.2.1 MCS-51单片机的基本组成 8
2.2.2 MCS-51单片机的内部结构 8
2.2.3 MCS-51单片机的中央处理器(CPU) 9
2.2.4 MCS-51单片机的存储器结构 10
2.2.5 MCS -51单片机的输入/输出接口 14
2.3 MCS-51单片机引脚描述 16
2.3.1 外部引脚 16
2.3.2 片外总线结构 17
2.4 MCS-51单片机存储器组织 18
2.4.1 程序存储器配置 18
2.4.2 数据存储器配置 18
2.4.3 特殊功能寄存器(SFR) 18
2.5 本章小结 20
第3章 单片机指令系统 21
3.1 单片机指令与编程的经验与技巧 21
3.2 单片机编程语言概述 21
3.2.1 编程语言概述 21
3.2.2 单片机使用的编程语言 22
3.2.3 MCS-51汇编语言的语句结构 22
3.3 MCS-51单片机的指令系统 23
3.3.1 寻址方式 23
3.3.2 数据传送指令 25
3.3.3 控制转移指令 29
3.3.4 逻辑运算及移位指令 32
3.3.5 算术运算指令 34
3.3.6 布尔操作指令 36
3.4 常用的伪指令 38
3.4.1 伪指令与MCS-51指令的不同点 38
3.4.2 常用的伪指令 38
3.5 本章小结 41
第4章 C51程序设计基础 42
4.1 基本概念 42
4.1.1 C语言基本介绍 42
4.1.2 MCS-51的C语言编译器 42
4.1.3 C51的程序结构 43
4.1.4 C51标识符、关键字 45
4.1.5 变量与常量 46
4.2 数据类型、运算符和表达式 50
4.2.1 数据类型 50
4.2.2 C51中的运算符和表达式 51
4.3 程序控制语句 55
4.3.1 顺序结构 55
4.3.2 选择结构 55
4.3.3 循环语句 57
4.4 函数与程序结构 59
4.4.1 函数的定义 59
4.4.2 函数的声明 61
4.4.3 函数的调用 62
4.5 数组 69
4.5.1 数组的基本概念 69
4.5.2 数组的声明 69
4.5.3 将数组传递给函数 69
4.5.4 数组的初始化 71
4.5.5 多维数组 71
4.5.6 指针数组 74
4.6 指针 74
4.6.1 指针的变量声明与初始化 75
4.6.2 指针运算符 76
4.6.3 指针常量 76
4.6.4 指针的指针 77
4.6.5 指针的运算 78
4.7 结构体与共用体 78
4.7.1 结构体 78
4.7.2 共用体 82
4.8 本章小结 84
第5章 Keil C51程序设计过程 85
5.1 Keil C51概述 85
5.1.1 Keil μ Vision 2软件简介 85
5.1.2 安装Keil μVision 2环境 85
5.1.3 Keil μVision 2软件功能简介 91
5.2 Keil μVision 2集成开发环境工程项目的编译及运行 94
5.2.1 工程的建立 94
5.2.2 源文件的建立 95
5.2.3 工程的设置 96
5.2.4 编译、连接项目并形成目标文件 99
5.2.5 运行调试观察结果 100
5.3 Keil μ Vision 2集成开发环境调试技巧 101
5.3.1 设置和删除断点的方法 101
5.3.2 查看和修改寄存器的内容 102
5.3.3 观察和修改变量 103
5.3.4 观察存储器区域 103
5.3.5 串行口的使用方法 103
5.3.6 定时/计数器的使用方法 104
5.3.7 外部中断的使用方法 104
5.4 本章小结 105
第6章 MCS-51单片机程序开发流程 106
6.1 编写一个简单的单片机程序 106
6.1.1 目的 106
6.1.2 工作原理 106
6.1.3 用汇编语言编写程序 107
6.2 程序编写过程 108
6.2.1 创建项目 108
6.2.2 项目设置 111
6.2.3 输出文件 112
6.3 把目标文件写入单片机 112
6.3.1 选择单片机型号 112
6.3.2 写入文件 113
6.4 使用实验板进行实验 115
6.5 龙电子L51-1001单片机开发板 116
6.6 本章小结 116
第2部分 应 用篇 117
第7章 MCS-51单片机基础资源应用 117
7.1 MCS-51单片机的I/O引脚应用 117
7.1.1 MCS -51单片机的I/O引脚基础 117
7.1.2 LED发光二极管 120
7.1.3 I/O引脚的输出和输入 121
7.1.4 数码管 124
7.1.5 数码管的静态显示和动态显示 127
7.1.6 独立按键 129
7.1.7 使用I/O引脚扩展独立按键 130
7.2 MCS-51单片机的定时器应用 131
7.2.1 MCS-51单片机的定时器基础 132
7.2.2 MCS-51单片机定时计数器的寄存器 132
7.2.3 51单片机定时计数器的工作方式 133
7.2.4 定时计数器的中断 135
7.2.5 MCS-51单片机的定时器使用 136
7.3 MCS-51单片机的外部中断应用 137
7.3.1 MCS-51单片机的中断系统 137
7.3.2 MCS -51单片机的中断相关控制寄存器 137
7.3.3 中断向量地址和中断标志位 139
7.3.4 MCS-51单片机的中断处理过程 139
7.3.5 MCS-51单片机的中断服务程序设计 140
7.3.6 MCS-51单片机的外部中断 142
7.3.7 外部中断电平触发 142
7.3.8 外部中断边沿触发以及按键去抖动 143
7.4 MCS-51单片机的串口应用 144
7.4.1 MCS - 51单片机串口相关的寄存器 144
7.4.2 工作方式 145
7.4.3 中断处理 148
7.4.4 MCS-51单片机和PC通信 149
7.5 本章小结 152
第8章 MCS-51单片机人机交互通道应用 153
8.1 矩阵键盘的应用 153
8.1.1 矩阵键盘基础 153
8.1.2 矩阵键盘应用 155
8.2 蜂鸣器的应用 157
8.2.1 蜂鸣器基础 157
8.2.2 蜂鸣器发声 158
8.3 红外接收芯片的应用 159
8.3.1 TL0038B基础 159
8.3.2 使用TL0038B进行解码 160
8.4 1602液晶显示器的应用 163
8.4.1 1602液晶显示器基础 163
8.4.2 使用1602液晶显示器显示“Welcome! ” 167
8.5 12864液晶显示器的应用 170
8.5.1 12864液晶显示器的特点 170
8.5.2 12864液晶显示器的接口引脚功能 171
8.5.3 12864液晶显示器的指令说明 173
8.5.4 12864液晶显示器的图形显示 175
8.5.5 12864液晶显示器的硬件电路 177
8.5.6 使用12864液晶显示器显示中文字符和图片 178
8.6 PS/2键盘的应用 183
8.6.1 PS/2键盘基础 183
8.6.2 扩展PS/2键盘 187
8.7 本章小结 191
第9章 MCS-51单片机其他扩展资源应用 192
9.1 EEPROM的应用 192
9.1.1 I2C总线基础 192
9.1.2 AT24系列EEPROM基础 195
9.1.3 读/写AT24C02 197
9.2 数字温度传感器的应用 202
9.2.1 1-wire总线基础 203
9.2.2 DS18B20基础 205
9.2.3 使用DS18B20获得当前温度 210
9.3 A/ D芯片的应用 215
9.3.1 A/ D转换基础 215
9.3.2 PCF8591基础 217
9.3.3 使用PCF8591进行A/D转换 219
9.4 D/A芯片的应用 224
9.4.1 D/A转换基础 224
9.4.2 使用PCF8591进行D/A转换 225
9.5 本章小结 228
第3部分 综合应用篇 229
第10章 电子时钟 229
10.1 应用分析 229
10.2 设计思路 229
10.2.1 51单片机内部定时计数器实现实时时钟 230
10.2.2 DS12C887实时时钟芯片的特点 233
10.3 硬件电路设计 233
10.3.1 DS12C887实时时钟芯片应用基础 233
10.3.2 系统硬件结构 235
10.3.3 电路原理及其说明 235
10.4 软件代码设计 236
10.4.1 DS12C887的内存空间 236
10.4.2 程序流程 240
10.4.3 应用代码 240
10.5 本章小结 242
第11章 上/下位机模拟信号采集系统 243
11.1 应用分析 243
11.2 设计思路 243
11.2.1 单片机的通信方式 243
11.2.2 上位机软件的选择 246
11.2.3 LabVIEW 246
11.3 硬件电路设计 247
11.3.1 ADC0809基础 247
11.3.2 系统结构 250
11.4 软件代码设计 250
11.4.1 程序流程 250
11.4.2 单片机代码设计 251
11.4.3 上位机代码设计 252
11.5 本章小结 254
第12章 无线数据传输系统 255
12.1 应用分析 255
12.2 设计思路 255
12.2.1 无线传输芯片选择 256
12.2.2 无线通信模块选择 256
12.3 硬件电路设计 256
12.3.1 PTR8000模块说明 256
12.3.2 单片机接口电路设计 261
12.4 软件设计 262
12.4.1 单片机和PTR8000的数据交互 262
12.4.2 参考程序 264
12.5 本章小结 270
第13章 数字天平 271
13.1 应用分析 271
13.2 设计思路 271
13.2.1 数字天平的工作原理 272
13.2.2 器件选型 272
13.3 硬件电路设计 275
13.3.1 压力传感器与运放电路设计 275
13.3.2 A/ D转换电路设计 276
13.3.3 显示与键盘电路设计 277
13.3.4 定标与日历时钟电路设计 279
13.4 软件代码设计 279
13.4.1 程序流程 280
13.4.2 程序代码 280
13.5 本章小结 290