第1章 单片机的基本硬件结构 1
1.1 单片机的发展历史 1
1.2 MCS-51单片机的主要功能 2
1.3 MCS-51单片机的内部结构分析 2
习题 3
第2章 C程序的设计 5
2.1 C语言程序的基本结构 5
2.1.1 C语言的程序结构 5
2.1.2 顺序结构 7
2.2 选择结构 7
2.2.1 选择语句if 8
2.2.2 串行多分支结构及其流程图 11
2.2.3 并行多分支结构及其流程图(switch/case语句) 13
2.3 循环结构及其流程图 15
2.3.1 while循环结构及其流程图 16
2.3.2 do...while循环结构 18
2.3.3 for循环结构及其流程图 21
习题 26
第3章 C51函数 28
3.1 函数的分类 28
3.1.1 标准库函数 28
3.1.2 用户自定义函数 28
3.1.3 函数的定义 29
3.2 C语言程序的一般组成结构 31
3.2.1 主函数 32
3.2.2 其他函数 32
3.3 函数的参数和函数值 35
3.3.1 形式参数和实际参数 35
3.3.2 函数的返回值 35
3.4 函数的调用 37
3.4.1 函数调用的一般形式 37
3.4.2 函数调用的方式 38
3.4.3 对被调用函数的说明 38
习题 40
第4章 单片机的最小系统及系统扩展 42
4.1 AT89C51单片机性能介绍 42
4.1.1 主要特性 42
4.1.2 管脚说明 42
4.1.3 振荡器特性 44
4.1.4 芯片擦除 44
4.2 MCS-51单片机最小应用系统 44
4.3 单片机的系统扩展 46
4.3.1 程序存储器的扩展性能 46
4.3.2 外部程序存储器的操作时序 47
4.3.3 外部程序存储器的扩展方法 47
4.3.4 外部数据存储器的扩展 49
习题 50
第5章 输入/输出口的应用 51
5.1 单片机的I/O(输入/输出)接口 51
5.2 P1口的内部结构 51
5.2.1 输出数据 52
5.2.2 输入数据 52
5.2.3 读取P1口的位状态 52
5.3 用C语言控制P1口输出信号 53
5.4 用位操作控制P1口的输出 54
5.5 用开关控制P1口的输出状态 55
5.6 交通信号灯的控制系统 58
习题 60
第6章 单片机仿真软件Proteus 62
6.1 Proteus简介 62
6.2 Proteus ISIS 62
6.2.1 各部分的功能 63
6.2.2 操作简介 65
6.3 AT89C51单片机的PROTEUS仿真 65
6.3.1 添加元件到元件列表中 66
6.3.2 放置元件 67
6.3.3 连线 68
6.3.4 添加仿真文件 68
6.3.5 仿真 68
6.4 Proteus与Keil联调 69
习题 71
第7章 MCS-51单片机的中断系统 73
7.1 中断的种类 73
7.1.1 外部中断 73
7.1.2 内部中断 74
7.2 MCS-51单片机的中断系统 74
7.2.1 中断源 74
7.2.2 中断允许控制 75
7.2.3 中断响应优先级控制 75
7.2.4 中断响应 6
7.3 交通灯控制实验 77
7.3.1 硬件电路 77
7.3.2 软件 78
7.3.3 运行结果 81
7.4 数据采集实验 82
7.4.1 硬件电路 82
7.4.2 软件 82
7.4.3 实验运行结果 84
7.5 中断嵌套实验 86
7.5.1 硬件电路 86
7.5.2 软件 86
7.5.3 实验运行结果 88
习题 90
第8章 定时器/计数器 92
8.1 定时器/计数器的硬件结构及工作原理 92
8.2 定时器/计数器的控制寄存器 93
8.2.1 定时器/计数器工作方式寄存器(TMOD) 93
8.2.2 定时器/计数器控制寄存器(TCON) 94
8.3 定时器/计数器的工作方式 94
8.3.1 工作方式0 94
8.3.2 工作方式1 95
8.3.3 工作方式2 95
8.3.4 工作方式3 96
8.4 定时器/计数器的初始化 97
8.4.1 定时器应用 97
8.4.2 计数器实验 99
习题 104
第9章 串行通信 106
9.1 串行通信基础 106
9.1.1 串行通信的分类 106
9.1.2 串行通信的制式 108
9.1.3 串行通信的接口电路 108
9.2 串行通信总线标准及其接口 109
9.2.1 RS-232C接口 109
9.2.2 RS-232C信息格式标准 109
9.2.3 RS-232C电平转换器 110
9.2.4 RS-232C总线规定 110
9.3 MCS-51单片机的串行接口 111
9.3.1 MCS-51单片机的串行口结构 111
9.3.2 串行口数据缓冲器(SBUF) 112
9.3.3 串行口控制寄存器(SCON) 112
9.3.4 电源及波特率选择寄存器(PCON) 113
9.3.5 MCS-51单片机串行口的工作方式 113
9.3.6 MCS-51单片机串行口的波特率设定 115
9.4 MCS-51单片机的串行接口实验 116
9.4.1 串行转并行实验 116
9.4.2 单机自发自收实验 118
9.4.3 双机通信实验 121
9.4.4 多机通信实验 125
习题 132
第10章 键盘接口技术 134
10.1 键盘的工作原理 134
10.1.1 按键的分类 134
10.1.2 按键结构与特点 134
10.2 独立式键盘 135
10.3 行列式键盘 137
10.3.1 行列式键盘的工作原理 137
10.3.2 按键的识别 138
10.3.3 键盘工作方式 139
10.3.4 行列式键盘输入实验 140
10.4 键盘、显示接口芯片HD7279A 142
习题 150
第11章 LED显示器与接口技术 151
11.1 LED显示器 151
11.1.1 数码管结构 151
11.1.2 数码管工作原理 151
11.1.3 数码管字形编码 153
11.2 LED显示器和接口 153
11.2.1 静态显示器 153
11.2.2 动态显示器 154
11.3 数码管动态显示的硬件电路设计 155
11.3.1 电路原理图 155
11.3.2 软件设计 156
11.3.3 程序说明 156
11.4 LED静态显示及实验 158
11.5 74LS164静态显示电路 160
11.6 LED显示驱动器MAX7221 162
11.7 LED动态显示及实验 167
11.8 实时时钟程序的分析 171
11.9 LED点阵显示屏 174
11.9.1 LED汉字点阵显示原理 174
11.9.2 汉字显示的程序实现 174
11.9.3 “恭喜发财”点阵显示屏制作 176
习题 179
第12章 8051单片机接口扩展技术 181
12.1 简单I/O扩展 181
12.2 可编程I/O接口芯片扩展 182
12.2.1 8255A引脚功能 183
12.2.2 8255A的控制字 185
12.2.3 8255A的工作方式 186
12.3 8255A方式0输入输出实验 189
习题 191
第13章 字符型液晶显示器 193
13.1 字符型LCD显示模块 193
13.1.1 字符型LCD的结构和引脚 193
13.1.2 显示板控制器的指令系统 195
13.1.3 LCD显示板与单片机的接口和编程 196
13.2 点阵型LCD显示模块 198
13.2.1 HD61830的特点和引脚 198
13.2.2 HD61830指令集 199
13.2.3 与HD61830的液晶模块的接口和编程 201
习题 206
第14章 A/D与D/A转换技术 208
14.1 D/A和A/D转换在单片机系统中的应用 208
14.1.1 A/D-D/A转换的数据通道 208
14.1.2 D/A转换工作原理 209
14.1.3 如何选择D/A转换器 209
14.2 8位D/A芯片DAC0832 210
14.2.1 DAC0832的结构、引脚及原理 210
14.2.2 单片机与DAC0832的接口电路 211
14.3 基于MAX536的串行D/A转换器 212
14.3.1 芯片内部结构和引脚功能 212
14.3.2 工作原理和时序 213
14.3.3 MAX536的编程方式 214
14.3.4 MAX536的应用 215
14.4 A/D转换工作原理 217
14.4.1 如何选择A/D转换器 217
14.4.2 8位A/D转换芯片ADC0809 218
14.4.3 ADC0809与单片机的接口 220
14.5 12位A/D转换芯片ADS7804 222
14.5.1 ADS7804的引脚和功能 222
14.5.2 ADS7804如何启动转换和读取转换结果 223
14.5.3 ADS7804与单片机的接口 224
习题 226
第15章 C语言程序的设计实例 228
15.1 步进电机控制 228
15.1.1 步进电机的原理及工作方式 228
15.1.2 步进电机与单片机的接口 229
15.1.3 步进电机的单相三拍方式控制 230
15.1.4 三相六拍方式控制 231
15.1.5 步进电机变速控制 232
15.2 频率量的测量 234
15.2.1 测量频率法 234
15.2.2 带同步控制的频率测量 235
15.3 频率脉冲的测量周期法 237
习题 238
附录1 模拟考试题 240
附录2 练习题答案 263