
本书以目前广泛使用的MSC-51系列单片机为背景,系统阐述MCS-51单片机的硬件结构、指令系统及汇编语言程序设计、单片机C语言及程序设计,并在此基础上,介绍了MSC-51单片机的并行I/O端口、定时器/计数器、中断系统、串行I/O接口,以及扩展存储器、并行I/O接口、输入/输出人机接口、A/D与D/A转换的接口技术和应用实战案例。除第3章外,程序设计以C语言为主,为了与汇编衔接,个别实例同时给出汇编程序。
全书内容系统全面、结构合理,论述深入浅出、循序渐进,书中对每个知识点都提供了详细的实例,实例丰富、新颖,易于掌握,书中实例大多来源于科研工作及教学实践,理论联系实际,涉及面广、实用性强。
本书可作为高等院校自动化、计算机、电子信息工程、测控技术与仪器等电类专业教材,也可作为各类培训机构教材。
前 言
基本内容
随着科学技术日新月异,自动化程度不断提高,单片机技术在各领域的应用飞速发展。由于单片机具有体积小、成本低、功能强、可靠性高等特点,因而广泛应用于工业控制、仪器仪表、汽车、舰船、航空航天、军事、通信、办公自动化和智能终端等领域。
单片机种类和型号繁多,各种高性能的不同型号单片机不断问世,但8位单片机仍以其突出的性价比、成熟的开发和应用技术,在单片机应用领域占有非常重要的地位。20世纪80年代中期,Intel公司将MCS-51内核使用权转给世界许多著名的IC制造厂家,这样,世界各大公司以8051基本内核为核心,发展出上百个品种,使得MCS-51成为一个大家族,直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品之一。此外,MCS-51单片机硬件结构清晰、指令可读性强,常作为初学者首选。
本书共分为13章,各章具体内容如下。
* 第1章:介绍了单片微型计算机及MCS-51系列单片机,主要讲解了MCS-51单片机的主要硬件结构。
* 第2章:主要讲解了MCS-51单片机的指令系统及汇编语言程序设计。
* 第3章:主要讲解了MCS-51的C51语言编程方法及实例。
通过对第2章和第3章的学习,帮助读者掌握基本程序设计语言,为编程打下基础,从第4章开始介绍单片机的内部资源。
* 第4章:主要讲解了MCS-51单片机的并行I/O端口。
* 第5章:主要讲解了MCS-51单片机的定时器/计数器。
* 第6章:主要讲解了MCS-51单片机的串行接口。
* 第7章:主要讲解了MCS-51单片机的中断系统。
从第8章开始介绍单片机的接口技术。
* 第8章:主要讲解了单片机存储器的扩展。
* 第9章:主要讲解了单片机并行I/O接口的扩展。
* 第10章和第11章:主要讲解了单片机的输入/输出人机接口。
* 第12章:主要讲解了单片机与A/D、D/A转换器的接口。
* 第13章:从应用实战案例出发,具体介绍如何根据应用需求,进行应用系统的软、硬件设计。
主要特点
本书以MCS-51单片机为核心,面向应用,主要有以下特点。
* 在内容编排上层次分明,由浅入深。首先介绍了MCS-51单片机的结构原理及软件编程语言,然后依次讲述了MCS-51单片机的内部资源、MCS-51单片机的扩展技术,最后通过应用实战案例实现单片机的应用系统设计。
* 实例丰富,易于掌握。书中的各知识点多以实例来诠释,浅显易懂。实例是作者在科研和教学中反复提炼出来的,涉及面广、实用性强。
* 程序设计以C语言为主。C语言是目前使用最广的单片机应用系统编程语言,更容易理解和掌握,也适于系统程序的开发。
* 汇编语言为辅。程序设计主要采用C语言,配有汇编指令介绍,个别程序同时配有汇编,有利于读者深入理解单片机的结构及工作原理。
读者对象
本书可作为院校自动化、计算机、电子信息工程、测控技术与仪器等电类专业教材,也可作为各类培训机构教材。
本书由赵杰编写第1、2、4、5章,王丽编写第10、11章,谢东岩编写第3、6章,韩龙编写第12、13章,杨立新编写第7、8、9章。参加本书编写工作的还有管殿柱、宋一兵、赵景波、李文秋、王献红、张忠林、谈世哲、初航等。
在本书编写过程中,参阅了大量的文献,在此谨向这些文献的作者致以衷心的感谢。
由于编者水平有限,书中错误及疏漏之处在所难免,恳请读者批评指正,提出宝贵 意见。
感谢您选择了本书,希望我们的努力对您的工作和学习有所帮助,也希望您把对本书的意见和建议告诉我们。
零点工作室
目 录
第1章 MCS-51系列单片机结构 1
1.1 单片微型计算机概述 1
1.1.1 单片机的发展历史 1
1.1.2 单片机的发展趋势 2
1.1.3 单片机的应用 3
1.4.4 51系列单片机 4
1.2 MCS-51单片机内部结构 5
1.3 中央处理器 6
1.4 存储器 9
1.4.1 存储器地址分配 9
1.4.2 程序存储器 10
1.4.3 片内数据存储器 11
1.4.4 片外数据存储器 14
1.5 MCS-51系列单片机的引脚功能 15
1.6 MCS-51时钟和CPU时序 17
1.6.1 时钟电路 17
1.6.2 CPU时序 18
1.7 MCS-51单片机的工作方式 21
1.7.1 复位方式 21
1.7.2 程序执行方式 23
1.7.3 节电工作方式 24
1.7.4 编程和校验方式 27
1.8 思考与练习 28
第2章 MCS-51汇编语言程序设计 29
2.1 程序设计语言概述 29
2.2 指令格式和寻址方式 29
2.2.1 汇编语言指令格式 30
2.2.2 寻址方式 30
2.3 MCS-51单片机的指令系统 35
2.3.1 数据传送指令 35
2.3.2 算术运算类指令 43
2.3.3 逻辑运算类指令 51
2.3.4 控制转移指令 55
2.3.5 位操作指令 62
2.4 伪指令 66
2.5 汇编语言程序设计 68
2.5.1 顺序程序设计 68
2.5.2 查表程序设计 71
2.5.3 分支程序设计 74
2.5.4 循环程序设计 80
2.5.5 子程序设计 83
2.6 应用举例 86
2.6.1 巡回检测报警装置 86
2.6.2 单片机测温系统 87
2.6.3 码制转换 87
2.6.4 排序问题 93
2.7 思考与练习 97
第3章 C51程序设计 99
3.1 C51的标识符和关键字 99
3.2 变量和常量 100
3.2.1 常量 100
3.2.2 变量 101
3.3 C51的运算符与表达式 107
3.3.1 算术运算符与表达式 107
3.3.2 逻辑运算符与表达式 108
3.3.3 关系运算符与表达式 109
3.3.4 位运算符与表达式 110
3.3.5 “,”运算符与表达式 111
3.3.6 “?”运算符 111
3.3.7 “sizeof”运算符 111
3.3.8 指针运算符 111
3.3.9 联合操作运算符 112
3.3.10 类型转换运算符 112
3.3.11 运算符优先级和结合性 113
3.4 C51构造数据类型 114
3.4.1 数组 114
3.4.2 指针 116
3.4.3 结构与联合 119
3.4.4 枚举 122
3.5 C51基本语句 123
3.5.1 赋值语句 123
3.5.2 变量声明语句 123
3.5.3 表达式语句 124
3.5.4 复合语句 124
3.5.5 条件语句 124
3.5.6 循环语句 126
3.5.7 程序跳转语句 127
3.5.8 开关语句 129
3.5.9 空语句 131
3.6 C51的流程控制基本结构 131
3.6.1 顺序结构 132
3.6.2 选择结构 132
3.6.3 循环结构 134
3.7 C51函数 135
3.7.1 函数的定义 135
3.7.2 函数的参数和函数的值 137
3.7.3 函数的调用 139
3.8 应用举例——用C51实现快速傅里叶变换 141
3.9 思考与练习 144
第4章 单片机并行I/O端口 145
4.1 P0口 145
4.2 P1口 147
4.3 P2口 147
4.4 P3口 148
4.5 应用实例 150
4.6 思考与练习 151
第5章 单片机定时器/计数器 152
5.1 定时器/计数器的结构和原理 152
5.2 定时器/计数器的控制寄存器 153
5.3 定时器/计数器的工作方式 155
5.4 定时器/计数器初始化 157
5.5 应用举例 160
5.6 思考与练习 161
第6章 MCS-51单片机串行接口 163
6.1 串行通信概述 163
6.2 串行口功能结构 165
6.2.1 串行口控制寄存器SCON 165
6.2.2 特殊功能寄存器PCON 166
6.3 串行口工作方式 167
6.3.1 方式0 167
6.3.2 方式1 168
6.3.3 方式2 168
6.3.4 方式3 169
6.4 串行口应用实例 169
6.4.1 扩展矩阵键盘接口电路 169
6.4.2 串行RS232协议与以太网通讯协议的转换 171
6.4.3 主从结构的单片机通信系统收发程序的设计 174
6.5 思考与练习 175
第7章 单片机中断系统 177
7.1 中断系统概述 177
7.2 中断控制 179
7.2.1 中断允许寄存器IE 179
7.2.2 中断优先级寄存器IP 180
7.3 中断响应过程 182
7.4 中断响应时间 183
7.5 中断请求的撤销 184
7.6 应用举例 186
7.6.1 主程序初始化 186
7.6.2 中断服务程序设计 187
7.7 MCS-51对外部中断源的扩展 189
7.7.1 定时器/计数器扩展为外部中断源 189
7.7.2 中断和查询结合扩展中断源 189
7.7.3 中断芯片8259扩展外部中断源 190
7.8 思考与练习 193
第8章 存储器的扩展 194
8.1 MCS-51单片机外部总线结构 194
8.1.1 地址译码方法 195
8.1.2 外部地址锁存器 198
8.2 程序存储器扩展 199
8.2.1 EPROM芯片介绍 200
8.2.2 程序存储器的操作时序 201
8.2.3 典型的EPROM接口电路 202
8.3 数据存储器扩展 204
8.3.1 常用的静态RAM(SRAM)芯片 204
8.3.2 外扩数据存储器的读写操作时序 205
8.3.3 典型的外扩数据存储器的接口电路 207
8.4 EPROM和RAM的综合扩展 209
8.4.1 接口电路设计 209
8.4.2 工作原理 210
8.5 思考与练习 212
第9章 并行I/O接口的扩展 213
9.1 I/O扩展概述 213
9.1.1 I/O接口的功能 214
9.1.2 I/O端口的编址 215
9.1.3 I/O数据的几种传送方式 216
9.2 8255接口芯片 216
9.2.1 8255A芯片介绍 217
9.2.2 单片机和8255A的接口及程序设计 220
9.3 8155接口芯片 222
9.3.1 8155H芯片介绍 222
9.3.2 MCS-51与8155H的接口及程序设计 227
9.4 应用举例 228
9.5 思考与练习 232
第10章 输入设备 234
10.1 键盘概述 234
10.1.1 按键去抖动 235
10.1.2 键盘的分类 236
10.2 键盘与单片机的接口 239
10.2.1 独立式键盘与单片机的接口 239
10.2.2 矩阵式键盘与单片机的接口 243
10.2.3 串行口扩展键盘接口 246
10.3 思考与练习 249
第11章 输出设备 250
11.1 发光二极管 250
11.2 LED显示器接口 251
11.2.1 LED显示器的结构与工作原理 252
11.2.2 LED显示器的工作方式 253
11.2.3 LED数码管的选择和驱动 255
11.2.4 数码管的软件译码和硬件译码 256
11.2.5 数码管应用设计 256
11.3 LCD显示器接口 259
11.3.1 LCD显示器工作原理 260
11.3.2 OCM12864液晶显示模块 262
11.3.3 LCD应用举例 265
11.4 8279可编程键盘/显示器接口芯片 273
11.4.1 8279可编程芯片简介 273
11.4.2 8279与单片机接口应用举例 280
11.5 打印输出设备 282
11.5.1 微型打印机概述 282
11.5.2 微型打印机的应用 287
11.6 思考与练习 290
第12章 A/D和D/A转换器 291
12.1 A/D转换器 291
12.1.1 A/D转换器分类 291
12.1.2 A/D转换器的指标 291
12.1.3 并行AD转换器ADC0809 292
12.1.4 串行AD转换器TLC2543 297
12.2 DA转换器 301
12.2.1 DA转换器分类 301
12.2.2 DA转换器的重要指标 302
12.2.3 并行DA转换器DAC0832 302
12.2.4 串行DA转换器MAX517 307
12.3 思考与练习 309
第13章 应用实战案例 310
13.1 仿真软件 310
13.1.1 新建文件和项目 310
13.1.2 程序的下载 311
13.2 直流电动机控制 312
13.2.1 直流电动机工作原理及调速方法 312
13.2.2 PWM调速原理 312
13.2.3 应用电路设计 313
13.2.4 软件程序设计 314
13.3 步进电动机控制 319
13.3.1 步进电动机原理 319
13.3.2 静态指标 320
13.3.3 应用电路设计 320
13.3.4 软件设计 320
13.4 舵机控制 322
13.4.1 工作原理 322
13.4.2 舵机重要指标 322
13.4.3 软件设计 323
13.5 RS232与VB串行通讯 324
13.5.1 VB串行通讯简介 325
13.5.2 应用电路设计 325
13.5.3 软件设计 326
13.6 语音录放控制 328
13.6.1 ISD2560引脚功能 329
13.6.2 应用电路设计 330
13.6.3 软件程序设计 331
13.7 短距离无线传输 332
13.7.1 模块管脚说明 333
13.7.2 工作模式 334
13.7.3 RF905数据的收发过程 334
13.7.4 软件设计 335
13.8 思考与练习 339
附录A ASCII码字符表 342
附录B MCS-51系列单片机指令一览表 343
附录C C51库函数 348
参考文献 356
??
??
??
??
精通MCS-51单片机C语言编程
目 录
·VIII·
·VII·