项目1 发光二极管闪烁控制系统设计与制作 1
1.1 任务1:认识单片机 1
1.1.1 单片机是什么样子 1
1.1.2 单片机的应用领域 2
1.1.3 MCS-51系列单片机 2
1.2 任务2:让单片机动起来 3
1.2.1 如何使用单片机 3
1.2.2 Keil μVision软件的使用 3
1.2.3 PROTEUS软件的使用 7
1.2.4 单片机最小系统 11
1.2.5 发光二极管闪烁控制系统设计与制作 12
1.3 任务3:从外到内观察单片机 14
1.3.1 单片机的信号引脚 14
1.3.2 单片机的内部结构 16
1.3.3 单片机的并行端口 18
1.3.4 单片机的时钟与复位电路 20
1.4 任务4:认识单片机的存储器组织 23
1.4.1 初识单片机的存储器 23
1.4.2 单片机的程序存储器 23
1.4.3 单片机的数据存储器 24
1.4.4 单片机的特殊功能寄存器 26
总结与思考 28
习题1 28
项目2 LED电子彩灯的设计与制作 29
2.1 任务1:认识单片机的语言 29
2.1.1 单片机使用的语言 29
2.1.2 认识单片机的汇编语言 30
2.1.3 汇编语言的指令格式与寻址方式 30
2.1.4 数据传送指令 36
2.1.5 算术运算指令 40
2.1.6 逻辑运算指令 44
2.1.7 控制转移指令 47
2.1.8 位操作指令 50
2.1.9 伪指令 52
2.2 任务2:汇编语言程序设计技巧 55
2.2.1 顺序结构 55
2.2.2 分支结构 55
2.2.3 循环结构 58
2.2.4 子程序结构 61
2.2.5 汇编语言主程序的完整结构 63
2.3 任务3:LED电子彩灯的设计与制作 64
2.3.1 循环点亮LED 64
2.3.2 硬件电路与软件程序设计 64
2.3.3 仿真和实物制作 66
2.3.4 电路制作 66
2.4 如何将程序“装入”单片机 68
2.4.1 利用编程器将程序写入单片机 68
2.4.2 利用下载线将程序写入单片机 69
总结与思考 70
习题2 71
项目3 简易秒表的设计与制作 73
3.1 任务1:认识单片机的中断系统 73
3.1.1 单片机中断的魅力 73
3.1.2 单片机中断的应用 79
3.2 任务2:认识单片机的定时器/计数器 83
3.2.1 单片机的定时器/计数器 83
3.2.2 定时器/计数器的工作方式 85
3.3 任务3:利用单片机输出方波 88
3.3.1 简易方波发生器的设计 88
3.3.2 调试与仿真运行 90
3.4 任务4:简易计时器的设计 91
3.4.1 认识LED数码管 91
3.4.2 数码管的型号及识别 92
3.4.3 数码管的字形编码与显示方式 93
3.4.4 60s计时器的设计 96
3.4.5 调试与仿真运行 99
3.5 任务5:简易秒表的设计与制作 99
3.5.1 硬件电路设计与软件程序设计 99
3.5.2 调试与仿真运行 102
3.5.3 电路制作 102
3.5.4 电路调试 104
3.5.5 程序烧写 105
总结与思考 106
习题3 106
项目4 单片机的C51语言基础 107
4.1 任务1:认识单片机的C语言 107
4.1.1 C51程序开发概述 107
4.1.2 C51程序结构 108
4.2 任务2:认识C51的数据类型 109
4.2.1 C51的标识符和关键字 109
4.2.2 数据与数据类型 111
4.2.3 C51数据的存储类型 112
4.2.4 80C51硬件结构的C51定义 113
4.3 C51的运算符、表达式及其规则 115
4.3.1 算术运算符和算术表达式 115
4.3.2 关系运算符、关系表达式及优先级 116
4.3.3 逻辑运算符和逻辑表达式及优先级 117
4.3.4 C51位操作及其表达式 118
4.3.5 运算符的优先级 119
4.4 C51流程控制语句 120
4.4.1 C51的顺序结构 120
4.4.2 C51的选择结构 120
4.4.3 C51的循环结构 122
4.5 C51的数组 123
4.5.1 一维数组 123
4.5.2 二维数组 124
4.5.3 字符数组 125
4.5.4 查表 125
4.6 指针 126
4.6.1 指针的基本概念 126
4.6.2 指针变量的使用 127
4.6.3 数组指针和指向数组的指针变量 128
4.6.4 指向多维数组的指针和指针变量 130
4.6.5 关于Keil C51的指针类型 131
4.6.6 避免使用浮点指针 133
4.7 C51的函数 134
4.7.1 函数的分类 134
4.7.2 函数的参数传递和函数值 136
4.7.3 函数的调用 137
4.7.4 C51函数的定义 138
4.8 任务3:C51与汇编语言的混合编程实例 139
4.8.1 C51中调用汇编程序 140
4.8.2 在C51中嵌入汇编代码 142
4.9 任务4:简易密码锁设计 145
4.9.1 键盘工作原理 145
4.9.2 独立式按键 147
4.9.3 矩阵式按键 147
4.9.4 矩阵键盘密码锁设计 149
4.9.5 程序分析 152
4.9.6 调试与仿真运行 152
4.10 任务5:LED点阵显示屏的设计 153
4.10.1 认识LED点阵模块 153
4.10.2 硬件电路与软件程序设计 155
4.10.3 调试与仿真运行 157
4.10.4 电路制作 157
总结与思考 158
习题4 159
项目5 单片机的并行扩展 161
5.1 并行扩展三总线的产生 161
5.1.1 片外三总线结构 162
5.1.2 系统扩展的实现 162
5.2 程序存储器的扩展 163
5.2.1 存储器的连接 163
5.2.2 扩展存储器概述 164
5.2.3 扩充存储器容量 165
5.2.4 存储器扩展的编址技术 165
5.2.5 EEPROM的扩展 166
5.2.6 8031单片机外接EEPROM 168
5.3 数据存储器的扩展 168
5.3.1 数据存储器芯片 168
5.3.2 访问片外RAM的操作时序 169
5.3.3 89C51扩展2kB RAM 171
5.3.4 多片存储器芯片的扩展 172
5.4 简单I/O口的扩展 174
5.4.1 I/O口的直接输入输出 174
5.4.2 简单I/O口的扩展方法 177
5.5 扩展可编程I/O口8255A 180
5.5.1 8255A可编程外围并行接口的结构 180
5.5.2 8255A应用实例 186
总结与思考 190
习题5 191
项目6 单片机的串行口及其应用 192
6.1 任务1:认识串行通信与串行口 192
6.1.1 串行通信的概念 192
6.1.2 串行通信的接口 195
6.1.3 单片机串行口的结构与控制寄存器 200
6.1.4 单片机串行口的工作方式 202
6.1.5 串行口的波特率 204
6.2 任务2:单片机的双机通信 206
6.2.1 硬件电路与软件程序设计 206
6.2.2 调试与仿真运行 210
6.3 任务3:单片机与PC串行通信 211
6.3.1 任务与计划 211
6.3.2 硬件电路与软件程序设计 211
6.3.3 调试与仿真运行 215
6.4 任务4:远程控制交通灯的设计 217
6.4.1 任务要求 217
6.4.2 电路及元器件 218
6.4.3 程序设计 219
6.4.4 Proteus仿真运行 226
6.4.5 任务小结 229
总结与思考 229
习题6 229
项目7 信号发生器与数字电压表的设计 231
7.1 任务1:简易波形信号发生器的设计 231
7.1.1 认识D/A转换器芯片DAC0832 232
7.1.2 硬件电路与软件程序设计 237
7.1.3 调试与仿真运行 239
7.2 任务2:数字电压表的设计 240
7.2.1 认识A/D转换器芯片ADC0808/0809 240
7.2.2 硬件电路与软件程序设计 244
7.2.3 调试与仿真运行 247
总结与思考 247
习题7 248
项目8 数字温度控制器的设计与制作 249
8.1 任务1:认识单总线 249
8.1.1 单总线数字温度传感器DS18B20 249
8.1.2 传感器的读写时序 251
8.1.3 传感器的操作使用 253
8.2 任务2:认识液晶显示器 255
8.2.1 1602LCD液晶模块 255
8.2.2 液晶模块读写操作时序 259
8.2.3 液晶显示模块应用实例 263
8.3 任务3:数字温度控制器的设计 265
8.3.1 硬件电路与软件程序设计 265
8.3.2 调试与仿真运行 272
8.3.3 电路制作 272
总结与思考 273
习题8 273
项目9 单片机串行扩展技术 274
9.1 单片机串行扩展 274
9.1.1 单片机串行扩展的原因 274
9.1.2 单片机串行扩展的实现方法 275
9.2 I2C总线协议 276
9.2.1 I2C总线优点 276
9.2.2 I2C总线结构和信号 276
9.2.3 I2C总线数据传输方式 279
9.2.4 I2C器件与器件寻址 281
9.3 I2C芯片24C××的使用 283
9.3.1 I2C芯片24C××简介 283
9.3.2 I2C芯片24C02应用举例 285
总结与思考 293
习题9 293
项目10 单片机应用系统 294
10.1 系统后向通道概念 294
10.1.1 后向通道的特点 294
10.1.2 后向通道的结构及要解决的问题 295
10.2 后向通道中的功率开关器件及接口 296
10.2.1 大功率I/O接口电路 296
10.2.2 ULN2068与80C51单片机接口 301
10.3 单片机抗干扰技术 301
10.3.1 切断干扰传播路径 302
10.3.2 抑制干扰源的常用措施 302
10.3.3 硬件抗干扰 303
10.3.4 软件抗干扰 303
总结与思考 305
习题10 305
附录 306
附录A 306
实验1 流水灯实验 306
实验2 指示灯/开关控制实验 307
实验3 计数器显示实验 308
实验4 指示灯/数码管的中断控制实验 309
实验5 电子秒表设计 315
实验6 双机通信设计 318
实验7 数字直流电压表设计 320
实验8 步进电机控制设计 321
附录B ASCII码字符表 322
附录C 用Atmel MCU ISP软件烧写程序 323
附录D STC公司51系列单片机简介 325
附录E 51单片机指令集 326
参考文献 336