本书以51系列单片机8051为背景,以实际工程中应用最为广泛的C51语言程序设计为基础,从应用角度出发,系统地论述了单片机的组成原理、指令系统和汇编语言及单片机C语言、中断系统、并行和串行接口以及8051与A/D和D/A的接口等问题,并在此基础上讨论了单片机应用系统的设计。全书共13章。
本书内容全面,可作为高等学校自动化、电气工程及其自动化、建筑电气与智能化、计算机、通信工程、电子信息工程、机电一体化、机械等专业的教材,也可供单片机应用技术领域的工程技术人员参考。
随着现代社会的发展,单片机在工业控制、机电一体化、家电等领域的应用越来越普遍,社会对掌握单片机应用技术的人才的需求也越来越大,相应的单片机技术的开发应用也逐渐成为广大技术人员必须掌握的技术之一。
“单片机”是一门比较难学的技术,其特点是抽象度比较高,学好这门技术绝非一日之功,入门也需要有一个循序渐进的过程。本书以广泛使用的8051单片机为背景,以实际工程中应用愈来愈广泛的C51程序设计为基础,从应用角度出发,从小到大,从简到繁地解剖和分析单片机的结构与原理。目前针对单片机技术的书籍虽然比较多,但大多数书籍基本上还限于原理式的叙述,很少有结合工程实践进行具体的讲解。针对以上情况,本书作者根据长期从事单片机技术教学的经验,以及几十年来在工业控制领域的工程实践经验,结合工程应用,对传统的单片机教材的知识框架重新进行了调整,编写了本书。
全书共13章,各章具体内容如下:
· 第1章:介绍了单片机的入门基础知识,包括如何学习单片机、单片机的学习工具、单片机的基础知识、单片机与嵌入式系统、单片机的基本操作、常用单片机介绍和单片机系统开发方法等。
· 第2章:主要讲解了单片机仿真软件Keil C51的使用方法和步骤,包括Keil软件界面、创建μVision3工程、利用μVision3调试器调试程序和51单片机的烧录等。
· 第3章:主要讲解了8051单片机的结构和原理,包括8051系列单片机的基本结构、存储空间配置和功能、并行I/O端口、时钟电路及CPU时序、8051系列单片机的工作方式、8051系列单片机指令系统和汇编语言程序设计等。
· 第4章:主要介绍了单片机C语言的基础知识,包括C语言与MCS51、C语言基础、C51的数据存储类型与8051存储器结构、8051特殊功能寄存器及其C51定义、C51指针、C51的输入/输出、C51函数、C51与汇编语言混合编程和C51常用语句等。
· 第5章:主要讲解了单片机的中断系统,包括中断的概念、8051的中断源和中断控制寄存器、中断处理的过程、中断响应等待时间、C51中断服务函数和中断系统的应用等。
· 第6章:主要讲解了单片机的定时器/计数器控制,包括8051定时器/计数器的结构和工作原理、定时器/计数器的控制寄存器、定时器/计数器的工作方式、定时器/计数器用于外部中断扩展、定时器/计数器应用、定时器2和看门狗等。
· 第7章:介绍了单片机系统的扩展,包括单片机系统总线的形成、外部数据存储器的扩展、外部程序存储器的扩展、简单I/O端口扩展、8255A可编程并行输入/输出接口、8155可编程并行输入/输出接口和8051并行接口及其C51定义等。
· 第8章:介绍了单片机显示接口设计,包括LED显示器及其接口、液晶显示器(LCD)概述、段式液晶显示器、字符型液晶显示器、ZY12864D图形点阵液晶显示器等。
· 第9章:介绍了单片机键盘接口设计,包括按键的状态输入及去抖动、键盘与CPU的连接方式、键盘扫描控制方式、独立式按键和矩阵式键盘等。
· 第10章:讲解了单片机串行通信的知识,包括串行通信概述、8051串行口、8051串行口的应用、串行通信总线标准及其接口、单片机与PC通信的接口电路和常用的串行总线接口简介等。
· 第11章:讲解了单片机的I2C总线,包括I2C总线的概述、协议、信号的模拟和24C02器件等。
· 第12章:介绍了单片机的数模和模数转换,包括A/D转换电路接口技术、D/A转换接口电路和单片机开关量驱动输出接口电路等。
· 第13章:通过两个实例——温湿度检测仪和家庭安全报警系统,介绍了单片机系统的设计方法和步骤。
本书作者长期使用单片机进行教学、科研和实际生产工作,有着丰富的教学和编著经验。本书在内容编排上,按照读者学习的一般规律,结合大量实例讲解单片机设计和单片机C语言程序设计,能够使读者快速、真正地掌握单片机的使用。
本书既可以作为高等院校自动化、电气工程及其自动化、建筑电气与智能化、计算机、通信工程、电子信息工程、机电一体化、机械等专业的教材,也可以作为读者自学的教程,同时也非常适合作为相关专业工作人员的参考手册。
第1章 单片机入门 1
1.1 如何学习单片机 1
1.2 单片机的学习工具 2
1.3 单片机的基础知识 4
1.3.1 概述 4
1.3.2 单片机的发展趋势 6
1.3.3 8051系列单片机 6
1.3.4 单片机中的数制与码制 8
1.4 单片机与嵌入式系统 12
1.4.1 嵌入式系统简介 13
1.4.2 单片嵌入式系统 14
1.4.3 单片嵌入式系统结构 15
1.4.4 单片嵌入式系统的应用领域 16
1.5 单片机的基本操作 17
1.6 常用单片机介绍 21
1.7 单片机系统开发方法 23
1.8 实践训练——利用单片机控制LED 24
思考与练习 26
第2章 Keil C51软件的使用 27
2.1 概述 27
2.2 Keil软件界面 28
2.2.1 Keil μVision3 IDE的工作界面 28
2.2.2 Keil μVision3 IDE的菜单 28
2.3 创建μVision3工程 36
2.4 利用μVision3调试器调试程序 40
2.5 51单片机的烧录 43
2.6 实践训练——Keil C51软件的使用 46
思考与练习 53
第3章 8051单片机硬件结构及汇编语言 54
3.1 8051系列单片机的基本结构 54
3.1.1 内部结构框图 54
3.1.2 外部引脚功能 55
3.2 8051系列单片机存储空间配置和功能 56
3.2.1 存储器的基本概念 57
3.2.2 8051的程序存储器(ROM) 59
3.2.3 8051的数据存储器(RAM) 60
3.3 并行I/O端口 65
3.3.1 P0口 65
3.3.2 P1口 66
3.3.3 P2口 67
3.3.4 P3口 67
3.4 时钟电路及CPU时序 68
3.4.1 时钟电路 68
3.4.2 CPU时序 69
3.5 8051系列单片机的工作方式 71
3.5.1 复位方式 71
3.5.2 低功耗方式 73
3.6 8051系列单片机指令系统 73
3.6.1 指令系统概述 74
3.6.2 寻址方式 76
3.6.3 8051单片机指令系统 80
3.7 汇编语言程序设计 89
3.7.1 汇编语言概述 89
3.7.2 顺序结构程序设计 92
3.7.3 分支结构程序设计 93
3.7.4 循环结构程序设计 93
3.8 实践训练——输入输出信号控制 94
思考与练习 98
第4章 单片机C语言编程基础 100
4.1 C语言与MCS51 100
4.2 C语言基础 102
4.2.1 C语言与ANSI C 的区别 102
4.2.2 C51扩展的关键字 103
4.2.3 编译器 103
4.2.4 数据类型 104
4.3 C51数据存储类型与8051存储器结构 110
4.3.1 C51数据的存储 110
4.3.2 C51变量的定义 111
4.3.3 C51变量的存储类型 111
4.3.4 C51变量的存储区 112
4.3.5 C51变量的存储模式 112
4.3.6 C51变量的绝对定位 113
4.4 8051特殊功能寄存器及其C51定义 114
4.4.1 位变量定义 114
4.4.2 C51特殊功能寄存器的定义 116
4.5 C51指针 117
4.5.1 通用指针 117
4.5.2 存储器专用指针 118
4.5.3 指针变换 119
4.5.4 C51指针应用 119
4.6 C51的输入/输出 121
4.6.1 基本输入/输出函数 121
4.6.2 格式输出函数printf 121
4.6.3 格式输入函数scanf 122
4.7 C51函数 124
4.7.1 内部函数 124
4.7.2 C51函数的定义 125
4.8 C51与汇编语言混合编程 126
4.8.1 在C51程序中嵌入汇编程序 126
4.8.2 C51程序与汇编程序混合编程 127
4.9 C51常用语句 130
4.9.1 条件语句 130
4.9.2 循环语句 132
4.10 实践训练——交通信号灯模拟
控制系统 135
思考与练习 136
第5章 中断系统 138
5.1 中断的概念 138
5.2 8051的中断源和中断控制寄存器 140
5.3 中断处理的过程 143
5.4 中断响应等待时间 145
5.5 C51中断服务函数 146
5.6 中断系统的应用 149
5.7 实践训练——键控彩灯 153
思考与练习 156
第6章 定时器/计数器控制 158
6.1 8051定时器/计数器的结构和
工作原理 158
6.2 定时器/计数器的控制寄存器 159
6.3 定时器/计数器的工作方式 161
6.4 定时器/计数器用于外部中断扩展 164
6.5 定时器/计数器应用 165
6.6 定时器2 167
6.7 看门狗 170
6.8 实践训练——简易频率计设计 171
思考与练习 173
第7章 单片机系统的扩展 175
7.1 单片机系统总线的形成 175
7.2 外部数据存储器的扩展 176
7.2.1 全译码 177
7.2.2 部分译码 179
7.2.3 线选法 180
7.3 外部程序存储器的扩展 180
7.3.1 EPROM扩展 181
7.3.2 E2PROM扩展 182
7.4 简单I/O端口扩展 184
7.5 8255A可编程并行输入/输出接口 186
7.5.1 8255A的结构和引脚功能 186
7.5.2 8255A与8051 型单片机
典型连接电路 188
7.5.3 8255A的控制字 189
7.5.4 8255A的工作方式 190
7.6 8155可编程并行输入/输出接口 196
7.6.1 8155的引脚及结构 196
7.6.2 8155与8051单片机的连接电路 197
7.6.3 8155工作方式控制字和状态字 198
7.6.4 8155工作方式 199
7.6.5 8155定时器/计数器 200
7.7 8051并行接口及其C51定义 201
7.8 实践训练——存储器扩展 202
思考与练习 203
第8章 显示接口设计 205
8.1 LED显示器及其接口 205
8.1.1 静态显示方式 208
8.1.2 动态显示方式 208
8.2 液晶显示器(LCD)概述 211
8.2.1 LCD显示器的特性 211
8.2.2 LCD结构原理与种类 211
8.2.3 LCD显示器的主要参数 212
8.3 段式液晶显示器 212
8.4 字符型液晶显示器 213
8.4.1 字符型LCD的结构和引脚 213
8.4.2 显示板控制器的指令系统 215
8.4.3 LCD显示板与单片机的接口 216
8.5 ZY12864D图形点阵液晶显示器 222
8.6 实践训练——LED显示器的使用 225
思考与练习 229
第9章 键盘接口及其设计 230
9.1 按键的状态输入及去抖动 230
9.2 键盘与CPU的连接方式 232
9.3 键盘扫描控制方式 233
9.4 独立式按键 234
9.5 矩阵式键盘 235
9.6 实践训练——电子密码锁设计 238
思考与练习 245
第10章 串行口通信 246
10.1 串行通信概述 246
10.1.1 异步通信 247
10.1.2 同步通信 247
10.1.3 串行通信的制式 247
10.1.4 串行通信的传送速率 248
10.2 8051串行口 248
10.2.1 8051串行口结构 248
10.2.2 串行口工作原理 249
10.2.3 串行口的控制寄存器 249
10.2.4 串行口的工作方式 251
10.2.5 波特率的设定 252
10.3 8051串行口的应用 253
10.3.1 利用串行口扩展并行口 254
10.3.2 8051串行口的通信 255
10.4 串行通信总线标准及其接口 258
10.4.1 RS232C串行接口标准 258
10.4.2 RS422与RS485串行接口标准 262
10.5 单片机与PC机通信的接口电路 265
10.6 常用的串行总线接口简介 268
10.7 实践训练——单片机与单片机之间的
串行通信 269
思考与练习 272
第11章 I2C总线 273
11.1 I2C总线概述 273
11.1.1 I2C总线的特性 273
11.1.2 I2C总线工作原理 274
11.1.3 I2C总线硬件结构图 276
11.2 I2C总线协议 276
11.3 I2C总线信号的模拟 278
11.4 24C02器件 284
11.5 实践训练——I2C总线的使用 291
思考与练习 293
第12章 A/D和D/A转换接口 294
12.1 A/D转换电路接口技术 294
12.1.1 A/D转换器的主要性能指标 295
12.1.2 A/D转换原理 295
12.1.3 A/D转换器ADC0809的接口 298
12.1.4 ADC0809与单片机的接口
电路编程 301
12.2 D/A转换接口电路 303
12.2.1 D/A转换器工作原理 303
12.2.2 D/A转换器的技术性能指标 306
12.2.3 典型D/A转换器芯片DAC0832 307
12.3 单片机开关量驱动输出接口电路 312
12.3.1 发光二极管 312
12.3.2 蜂鸣器 313
12.3.3 单片机与继电器接口电路 314
12.3.4 光电隔离接口 317
12.4 实践训练——简易波形发生器 318
12.5 实践训练——简易数字电压表 324
思考与练习 329
第13章 单片机综合实例分析 331
13.1 单片机应用系统开发设计 331
13.2 单片机应用系统的开发工具 333
13.3 单片机应用系统的设计方法 335
13.3.1 系统基本结构组成 335
13.3.2 单片机应用系统硬、软件的
设计原则 336
13.3.3 硬件设计 337
13.3.4 软件设计 338
13.3.5 资源分配 338
13.4 单片机应用系统调试 339
13.4.1 单片机应用系统调试工具 339
13.4.2 单片机应用系统的一般调试
方法 340
13.5 单片机系统的抗干扰技术 343
13.6 基于51单片机的温湿度检测仪 350
13.6.1 方案的设计 351
13.6.2 硬件电路的设计 351
13.6.3 软件设计 362
13.7 家庭安全报警系统 364
13.7.1 系统硬件选择 365
13.7.2 硬件电路设计 369
13.7.3 系统软件设计 373
思考与练习 375
参考文献 376