第1章 单片机基础知识概述 1
1.1 单片机概述 1
1.1.1 什么是单片机 1
1.1.2 单片机的发展历史 1
1.2 单片机的特点及应用领域 2
1.2.1 单片机的特点 2
1.2.2 单片机的应用领域 2
1.2.3 单片机的发展趋势 3
1.2.4 MCS—51单片机的学习 5
1.3 单片机学习的预备知识 6
1.3.1 数值及其转换 6
1.3.2 有符号数的表示方法 7
1.3.3 位、字节和字 8
1.3.4 BCD码(Binary Coded Decimal) 9
1.3.5 ASCII码(American Standard Code for Information Interchange) 9
1.4 电平 10
第2章 MCS—51单片机基本结构 13
2.1 MCS—51单片机的基本结构与类型 13
2.1.1 MCS—51单片机的基本结构 13
2.1.2 MCS—51单片机的基本类型 14
2.2 引脚及封装 15
2.2.1 引脚 15
2.2.2 封装 16
2.3 MCS—51存储器组织 17
2.3.1 MCS—51存储器组织 18
2.3.2 程序存储器地址空间(Program Memory Address Space) 19
2.3.3 内部数据存储器空间(Internal Data Memory Address Space) 19
2.3.4 特殊功能寄存器(Special Function Register,SFR) 20
2.3.5 外部数据存储器空间(External Data Memory Address Space) 22
2.4 复位电路 22
2.4.1 复位后各寄存器的状态 22
2.4.2 上电复位和按钮复位 23
2.4.3 晶振电路 23
2.4.4 单片机的时序单位 24
第3章 指令系统及汇编程序设计 26
3.1 基本概念 26
3.1.1 汇编语言格式 26
3.1.2 指令中常用符号 27
3.1.3 寻址方式 27
3.2 MCS—51指令系统 29
3.2.1 数据传送与交换指令(Data Transfer) 29
3.2.2 算术操作类指令(Arithmetic Operations) 34
3.2.3 逻辑运算指令(Logical Operations) 36
3.2.4 控制转移类指令(Program Branching) 38
3.2.5 位操作指令(Boolean Variable Manipulation) 40
3.3 汇编语言程序格式及伪指令 42
3.3.1 汇编指令格式 42
3.3.2 HEX文件 43
3.3.3 伪指令 43
3.4 汇编程序的设计方法 45
3.4.1 顺序程序设计 45
3.4.2 分支程序设计 46
3.4.3 循环程序设计 49
3.4.4 查表程序设计 50
第4章 C51程序设计入门 54
4.1 C51的基本数据类型 55
4.2 C51变量的存储区域 57
4.3 C51的运算符 58
4.4 数组 59
4.4.1 一维及多维数组 59
4.4.2 字符数组 60
4.5 指针 60
4.5.1 指针的概念 61
4.5.2 指针变量的定义、赋值与引用 61
4.5.3 Keil C51的指针类型 63
4.6 结构 64
4.7 C51的程序设计 65
4.7.1 C51的程序的结构 65
4.7.2 C51流程控制语句 66
4.8 函数的定义与调用 69
4.8.1 函数 69
4.8.2 局部变量、全局变量以及变量的存储类别 70
4.8.3 C51中调用汇编程序 71
4.8.4 预处理命令 73
4.8.5 头文件 73
4.8.6 C51其他问题 74
第5章 I/O口及简单应用 76
5.1 I/O端口的输入输出特性 76
5.1.1 P1口 77
5.1.2 P3口 78
5.1.3 P0口 79
5.1.4 P2口 80
5.2 I/O端口的应用 81
5.2.1 I/O的简单控制 81
5.2.2 LED数码管显示 83
5.2.3 独立式键盘 88
5.2.4 行列式键盘模块 91
5.3 LCM1602字符型液晶显示模块 96
5.3.1 字符型LCM1602介绍 96
5.3.2 LCM1602与单片机的接口 102
5.3.3 LCM1602的驱动程序设计 103
第6章 中断系统 110
6.1 中断的概念 110
6.2 中断系统的结构 111
6.3 中断控制系统 112
6.3.1 中断请求标志寄存器 112
6.3.2 中断允许寄存器(Interrupt Enable,IE) 113
6.3.3 中断优先寄存器(Interrupt Priority,IP)及中断嵌套 114
6.4 中断处理过程 116
6.4.1 中断响应条件 116
6.4.2 中断响应过程 116
6.4.3 中断的撤销 117
6.4.4 外部中断响应的时间 118
6.5 外部中断触发方式的选择 119
6.6 C51中断程序设计 119
第7章 定时/计数器 123
7.1 定时/计数器的结构与工作原理 123
7.1.1 定时/计数器的实质 123
7.1.2 定时/计数器的结构与工作原理 124
7.2 定时/计数器的控制 124
7.2.1 方式控制寄存器(Timer/Counter Mode Control,TMOD) 124
7.2.2 控制寄存器(Timer/Counter Control Register,TCON) 125
7.3 定时/计数器的工作方式 125
7.3.1 方式0 126
7.3.2 方式1 126
7.3.3 方式2 127
7.3.4 方式3 128
7.4 计数器对输入脉冲频率的要求 128
7.5 定时/计数器的C51编程和应用举例 129
7.5.1 定时/计数器初值的计算 129
7.5.2 定时/计数器C51编程应用举例 129
第8章 串行通信接口 136
8.1 串行通信基本知识 136
8.1.1 概述 136
8.1.2 串行通信的制式 136
8.2 MCS—51串口控制器 138
8.2.1 串口控制寄存器SCON 138
8.2.2 特殊功能寄存器PCON 139
8.3 串行口的工作方式 139
8.3.1 方式0 139
8.3.2 方式1 140
8.3.3 方式2 141
8.3.4 方式3 142
8.4 波特率的制定方法 142
8.5 串行通信的接口电路 143
8.5.1 RS—232C接口 143
8.5.2 RS—485接口 145
8.6 串口的C51编程与应用 147
8.6.1 用串行口扩展并行I/O口 147
8.6.2 单片机与单片机通信 150
8.7 多机通信 153
8.7.1 多机通信协议 153
8.7.2 程序流程及代码 154
8.7.3 从机程序流程及代码 156
8.8 单片机与PC机的串口通信 158
第9章 存储器和并行口的扩展 165
9.1 系统扩展概述 165
9.1.1 单片机最小系统 165
9.1.2 总线概念 166
9.2 数据存储器的扩展 167
9.2.1 SRAM芯片 167
9.2.2 典型外部数据存储器的连接 168
9.2.3 地址锁存器和外扩RAM的操作时序 169
9.2.4 确定扩展芯片地址的方法 171
9.2.5 C51访问扩展RAM的编程方法 174
9.3 程序存储器的扩展 174
9.3.1 ROM芯片 174
9.3.2 程序存储器的扩展 176
9.4 EPROM和RAM的综合扩展 177
9.5 单片机并行接口的扩展 178
9.5.1 总线驱动器 178
9.5.2 用74LSTTL电路扩展并行I/O口 180
第10章 单片机测控接口 183
10.1 AD转换器及与单片机的接口 183
10.1.1 AD转换器的分类 184
10.1.2 AD转换器的主要技术参数 185
10.1.3 AD转换器的选择 186
10.2 ADC0809模数转换器 187
10.2.1 ADC0809/ADC0808的结构 187
10.2.2 ADC0809与单片机的接口 188
10.2.3 ADC0809的编程 189
10.3 DAC0832数模转换器 191
10.3.1 DAC0832简介 192
10.3.2 DAC0832与单片机的接口 193
10.3.3 DAC0832的编程举例 195
10.4 开关量功率接口技术 198
10.4.1 单片机I/O口的输出驱动 198
10.4.2 光电耦合器 200
10.4.3 继电器驱动接口 201
10.4.4 可控硅驱动接口 202
10.4.5 固态继电器驱动接口 205
10.5 开关量输入接口 207
第11章 串行总线扩展技术 209
11.1 SPI总线扩展技术 209
11.1.1 ADC0832模块的设计 210
11.1.2 TLC1543 A/D模块的设计 215
11.1.3 LTC1456 D/A模块的设计 219
11.2 I2C总线扩展技术 221
11.2.1 I2C总线的协议简介 221
11.2.2 I2C的寻址方式 223
11.2.3 I2C总线时序 224
11.2.4 I2C总线虚拟程序 225
11.2.5 E2PROM芯片AT24Cxx的应用 231
附录A Keil C51使用简介 238
A.1 Keil C51工程的建立及设置 238
A.1.1 工程的建立 238
A.1.2 工作环境和参数的设置 242
A.1.3 程序编译 243
A.1.4 程序调试 244
A.2 Keil与Proteus联调 249
附录B Proteus使用入门 255
B.1 窗口界面 255
B.2 51单片机仿真操作实例 256
B.3 Proteus中如何画总线 261
B.4 Proteus其他问题 263
B.4.1 Proteus中怎样使用模板 263
B.4.2 电压、电流探针(probe) 263
B.4.3 Proteus常用快捷键 264
B.4.4 使用波形发生仪 264
B.4.5 虚拟示波器使用 265
附录C MCS—51指令表 266
C.1 数据传输类指令 266
C.2 算术运算类指令 267
C.3 逻辑运算类指令 268
C.4 控制转移类指令类 269
C.5 布尔操作类指令 270
附录D MCS—51单片机实验 271
D.1 单片机实验板 271
D.1.1 结构 271
D.1.2 实验板与PC的连接 272
D.1.3 实验板电路原理图 272
D.1.4 IST下载软件的使用 274
D.2 单片机实验 274
D.2.1 实验1 红黄绿灯控制 274
D.2.2 实验2 键盘、LED数码管显示实验 276
D.2.3 实验3 定时器中断实验 277
D.2.4 实验4 计数器实验 278
D.2.5 实验5 AD转换器实验 283
D.2.6 实验6 PC机与单片机的串行通信实验 287
D.2.7 实验7 温度测量实验 287
D.3 单片机虚拟实验 292
参考文献 294