第1章 绪论 1
1.1 嵌入式系统简介 1
1.1.1 嵌入式系统概念 1
1.1.2 嵌入式处理器 2
1.2 单片机的基本概念 3
1.2.1 CPU、微型计算机及微型计算机系统 3
1.2.2 单片机 4
1.2.3 单片机应用系统 5
1.2.4 单片机的发展和应用 5
1.3 51系列单片机简介 7
1.3.1 8位单片机是嵌入式系统低端应用的主流 7
1.3.2 51系列8位单片机基本情况介绍 8
1.3.3 两种主流的51单片机芯片 9
1.4 单片机应用系统的开发过程 9
1.4.1 开发系统的作用 9
1.4.2 开发系统的组成 10
1.4.3 仿真 10
1.4.4 单片机应用系统的开发过程 11
1.5 任务1:信号灯控制实战 11
1.5.1 实现功能要求 12
1.5.2 硬件电路连接 12
1.5.3 任务分析与实现 14
1.5.4 小结 16
1.6 任务2:信号灯控制实战之Proteus仿真 17
1.6.1 Proteus和Keil软件 17
1.6.2 绘制Proteus电原理图 17
1.6.3 编写、汇编、运行程序 18
1.6.4 改变闪烁速度 20
第2章 MCS-51单片机的组成和结构分析 21
2.1 MCS-51单片机的存储器结构 21
2.1.1 MCS-51单片机的存储器空间 21
2.1.2 程序存储器 23
2.1.3 数据存储器 24
2.1.4 内部数据存储器 24
2.1.5 几个特殊功能寄存器简介 29
2.2 MCS-51单片机的引脚信号 31
2.2.1 MCS-51单片机引脚的基本功能 32
2.2.2 MCS-51单片机引脚信号的第二功能 33
2.2.3 AT89C2051单片机简介 35
2.3 MCS-51单片机的振荡电路和复位电路 35
2.3.1 振荡电路 35
2.3.2 时序定时单位 36
2.3.3 延时程序分析 37
2.3.4 复位电路 38
2.4 MCS-51单片机的并行I/O口 40
2.4.1 并行I/O口的基本结构 40
2.4.2 P0口的结构 40
2.4.3 P1口的结构 41
2.4.4 P2口的结构 42
2.4.5 P3口的结构 42
第3章 C51语言程序设计基础 44
3.1 C语言和MCS-51单片机 44
3.1.1 计算机程序设计语言 44
3.1.2 单片机C语言与汇编语言的对比 46
3.1.3 C51与标准C语言的比较 50
3.2 C51语言的数据类型和存储模式 51
3.2.1 数据类型 51
3.2.2 存储类型及存储区 51
3.2.3 存储模式 54
3.3 C51语言对51单片机内部资源的控制 54
3.3.1 特殊功能寄存器(SFR) 54
3.3.2 绝对地址的访问 56
3.3.3 位变量的C51语言定义 57
3.4 C51语言的基本运算与控制语句 58
3.4.1 C51基本运算 58
3.4.2 C51分支结构控制语句 60
3.4.3 C51循环结构控制语句 61
3.5 C51语言的构造数据类型 63
3.5.1 C51的数组 63
3.5.2 C51的指针 63
3.6 C51语言的函数 64
3.6.1 函数声明 64
3.6.2 中断函数 65
3.6.3 库函数 65
3.7 C51语言程序设计的其他问题 66
3.7.1 使用C51的一些技巧 66
3.7.2 C51使用规范 67
3.8 并行口的C51编程举例 69
第4章 MCS-51单片机的中断系统 72
4.1 任务3:用中断方法控制信号灯 72
4.1.1 要求 72
4.1.2 任务分析 72
4.1.3 编写、编译、运行程序 73
4.1.4 汇编语言程序分析 74
4.1.5 问题的提出 74
4.2 中断的概念 74
4.2.1 什么是中断 74
4.2.2 中断的基本术语 75
4.2.3 中断服务程序和子程序的区别 76
4.2.4 中断技术的优势 77
4.3 MCS-51单片机的中断系统 77
4.3.1 中断源 77
4.3.2 与中断有关的特殊功能寄存器 78
4.3.3 中断优先级结构 80
4.4 单片机中断处理过程 80
4.4.1 中断响应条件 80
4.4.2 中断处理过程 81
4.4.3 中断请求的撤消 82
4.4.4 中断响应的时间 82
4.5 单片机中断系统的程序编制 83
4.5.1 建立主程序和中断服务程序的连接 83
4.5.2 中断处理程序的编写 84
第5章 MCS-51单片机的定时/计数器 90
5.1 任务4:用定时器控制信号灯 90
5.1.1 要求 90
5.1.2 任务分析 90
5.1.3 编写、汇编、运行程序 91
5.1.4 程序分析 92
5.1.5 问题的提出 92
5.2 定时/计数器的结构和工作原理 92
5.2.1 定时/计数器的逻辑框图 92
5.2.2 定时/计数器的工作原理 93
5.3 定时/计数器的控制寄存器 95
5.3.1 定时器方式寄存器TMOD 95
5.3.2 定时器控制寄存器TCON 96
5.4 定时/计数器的工作方式 96
5.4.1 工作方式0 97
5.4.2 工作方式1 97
5.4.3 工作方式2 98
5.4.4 工作方式3 98
5.5 定时/计数器的C51编程 99
5.5.1 初始化和编程注意事项 99
5.5.2 时间常数(计数初值)的计算 100
5.5.3 定时器的C51编程举例 100
第6章 MCS-51单片机的串行通信及其接口 108
6.1 任务5:用串行口控制信号灯 108
6.1.1 要求 108
6.1.2 任务分析 108
6.1.3 编写、汇编、运行程序 109
6.1.4 问题的提出 110
6.2 串行通信的一般概念 111
6.2.1 两种基本的通信方式 111
6.2.2 串行通信的两种基本方式 111
6.2.3 串行通信的类型 113
6.2.4 串行通信的接口电路 114
6.3 MCS-51的串行口结构 114
6.3.1 串行接口的内部结构 114
6.3.2 串行接口的控制寄存器 115
6.4 串行接口的工作方式 117
6.4.1 方式0 117
6.4.2 UART方式 117
6.5 MCS-51串行通信接口应用编程 119
6.5.1 定时器1计数初值的计算 119
6.5.2 双机通信 120
6.5.3 多机通信 123
6.5.4 PC机和单片机之间的通信 125
第7章 MCS-51单片机接口技术 129
7.1 任务6:采用单只LED数码管显示模拟生产线计件 129
7.1.1 要求 129
7.1.2 任务分析 129
7.1.3 编写、汇编、运行程序 130
7.1.4 问题的提出 131
7.2 系统扩展概述 132
7.2.1 单片机的最小系统 132
7.2.2 系统扩展时的三总线结构 132
7.2.3 系统扩展的主要方面 133
7.3 并行I/O口的扩展 134
7.3.1 扩展I/O 口时应注意的几个问题 134
7.3.2 采用单片机的串行口来扩展并行I/O口 136
7.3.3 采用8255芯片扩展I/O接口 138
7.3.4 采用8155芯片扩展I/O接口 145
7.4 MCS-51单片机与LED数码管的接口技术 148
7.4.1 LED数码管显示器的结构 148
7.4.2 LED显示器接口 149
7.5 MCS-51单片机与LCD的接口技术 155
7.5.1 1602字符型LCD显示器简介 155
7.5.2 1602型LCD显示字符的过程 156
7.6 MCS-51单片机与按键的接El技术 159
7.6.1 按键开关状态的可靠输入 159
7.6.2 按键处理的软件结构 161
7.6.3 独立式按键接口电路 162
7.6.4 矩阵式键盘 164
7.7 MCS-51单片机与A/D转换器的接口技术 167
7.7.1 A/D转换器主要技术指标 167
7.7.2 A/D转换器的选择原则 168
7.7.3 A/D转换器ADC0809 168
7.8 MCS一51单片机与D/A转换器的接口技术 172
7.8.1 D/A转换器的选择原则 172
7.8.2 DAC0832接口芯片 173
7.8.3 DAC0832和51单片机的连接 175
7.9 新型串行接口芯片及其接口技术 180
7.9.1 I2C总线器件及其接口技术 180
7.9.2 I2C总线接口器件AT24C02 183
7.9.3 单总线器件及其接口技术 188
7.9.4 DS18820温度检测及显示应用举例 190
7.9.5 编写、编译、运行程序 191
附录A MCS-51指令系统 200
A·1 寻址方式 200
A.1.1 立即寻址 200
A.1.2 直接寻址 200
A.1.3 寄存器寻址 200
A.1.4 寄存器间接寻址 201
A.1.5 变址寻址 201
A.1.6 相对寻址 201
A.1.7 位寻址 201
A.2 指令功能简介 201
A.2.1 数据传送类指令 202
A.2.2 算术运算类指令 203
A.2.3 逻辑操作类指令 204
A.2.4 程序转移类指令 205
A.2.5 位操作类指令 206
A.2.6 伪指令 207
附录B 仿真软件 208
B.1 Proteus仿真软件简介 208
B.1.1 Proteus ISIS和Proteus VSM简介 208
B.1.2 Proteus ISIS功能简介 210
B.1.3 绘制原理图 219
B.1.4 给CPU载入程序 227
B.1.5 在Proteus中调试程序 228
B.2 Keil仿真软件简介 230
B.2.1 在Keil中编写程序 230
B.2.2 在Keil中对程序进行汇编 232
B.2.3 在Keil中对程序进行调试 233
B.2.4 实现Keil与Proteus协同仿真 234
附录C 汇编源程序 236
参考文献 259