本书以MCS-51系列单片机为基本内容,介绍了微型机的基本概念,阐明了8051机的内核结构、工作原理、面向用户的特性、指令系统、程序设计以及常用外围芯片;叙述了单片机存储器系统设计、输入输出接口设计、A/D、D/A转换技术和中断系统的设计与应用;讨论了用户系统软硬件的设计方法;C51高级语言程序设计等;最后还介绍了最新的MCS-51系列中独具特色的新型兼容机及其新增特性。各章均附有习题与思考题。
本书内容丰富、深入浅出、理论联系实际、阐述清楚、通俗易懂、便于自学,可作为高等院校微机原理和单片机原理课程的教材(40~60学时),也可作为从事单片机应用和研发相关的工程技术人员的参考书。
MCS-51系列是我国较早引进的Intel公司的单片机产品,由于其性能优良,已被国内用户广泛认可和采用,占有了主要的市场份额。同时,单片机产品的性能在不断提高,技术在不断更新换代。近几年,一些公司面向市场推出以8051为内核,独具特色、性能卓越的新型系列单片机,如:ATMEL公司的AT89系列,Philips公司的80C51系列,ADI公司的ADuC系列,以及SIEMENS等公司也都在8051的基础上先后推出了新型兼容机。这些产品不仅具有相同的CPU和指令系统,有些产品的引脚功能也完全相同,而其CPU的速度、功能、内部资源以及寻址范围、可扩展性等方面都有大幅度提高。凡是学习和使用过MCS-51单片机的人,再学习、掌握和使用该系列兼容机的新增特性就非常容易了。这样既保护了广大用户早期对产品的软硬件投资,又使产品升级换代了,保持了计算机类教材内容的先进性。
由于MCS-51系列单片机具有体积小、功能全、价廉、面向控制、应用软件丰富、技术在不断更新、开发应用方便等优点,可以适应各个应用领域的不同需要,因而具有极强的竞争力和生命力,应用前景广阔。今后它仍将是科技界、工业界广泛选择应用的8位微控制器,仍将是单片机应用的主流机种。各高校实验室大多都配备了MCS-51系统仿真实验装置。所以,它今后仍将是高等院校教材的首选内容之一。
本书详尽阐述了MCS-51基本型面向用户的特性及其系统设计方法,以较大篇幅介绍了MCS-51系列新型兼容机的性能。力求做到深入浅出、条理清楚、重点突出、理论联系实际、例题多、便于自学。另外,其内容的逻辑结构合理、可选择性好、便于按课程规定的学时数组织教学,将作者多年的教学经验和科研经验融于书中。作为教材文字严谨,内容丰富实用,系统全面,覆盖面宽,特别适合教学体系。
本书由万福君教授主持编写,潘松峰教授编写了第9章,刘芳老师编写了第8章,参加编写的人员还有吴贺荣、王秀梅老师等。编写过程中,各兄弟院校的专家、教授和同行都提出了很好的意见,在此向他们表示诚挚的谢意。
由于作者水平有限,书中仍难免有错误和不妥之处,恳请读者批评指正。
第0章 绪论1
0.1 微型计算机发展史1
0.2 微型计算机的分类2
0.3 微型计算机的应用3
第1章 微型机的基本知识4
1.1 微处理器、微型机和单片机的概念4
1.2 微型机模型的组成5
1.2.1 CPU的内部结构5
1.2.2 存储器8
1.2.3 I/O接口和外设9
1.2.4 模型机的工作过程9
1.3 微机系统12
1.3.1 微机硬件组成12
1.3.2 软件系统15
1.3.3 衡量计算机性能的主要技术指标16
1.4 单片微型计算机17
1.4.1 单片机发展史17
1.4.2 单片机发展趋势17
1.4.3 单片机内部结构18
1.4.4 单片机应用系统19
1.4.5 单片机典型产品20
1.4.6 单片机的应用26
习题与思考28
第2章 MCS-51单片机硬件结构29
2.1 MCS-51单片机主要功能特点29
2.2 MCS-51单片机内部结构分析31
2.3 MCS-51单片机的引脚功能32
2.3.1 时钟电路32
2.3.2 控制信号33
2.3.3 I/O口35
2.3.4 MCS-51单片机管脚的应用特性38
2.4 MCS-51的存储器组织39
2.4.1 MCS-51程序存储器39
2.4.2 数据存储器41
2.4.3 专用寄存器43
2.4.4 外部数据存储器47
2.5 MCS-51 CPU时序47
2.5.1 机器周期、状态、相位47
2.5.2 典型指令的取指和执行时序47
2.6 MCS-51低功耗运行方式49
2.6.1 HMOS型单片机掉电运行方式49
2.6.2 CHMOS型单片机的掉电运行方式与待机方式49
2.7 MCS-51内部程序存储器的写入、校验和加密50
2.7.1 8751片内EPROM的写入和擦除50
2.7.2 8751/8051内部程序校验51
2.7.3 内部程序存储器加密位52
习题与思考52
MCS-51单片机原理、系统设计与应用目录第3章 MCS-51指令系统54
3.1 指令系统概述54
3.1.1 指令与指令系统54
3.1.2 程序与程序设计54
3.1.3 汇编语言55
3.1.4 伪指令57
3.1.5 MCS-51指令系统的特点60
3.2 MCS-51指令的寻址方式62
3.2.1 立即寻址62
3.2.2 直接寻址63
3.2.3 寄存器寻址64
3.2.4 寄存器间接寻址64
3.2.5 基址寄存器加变址寄存器间接寻址65
3.2.6 相对寻址66
3.2.7 位寻址67
3.3 MCS-51指令系统介绍67
3.3.1 数据传送指令(共29条)68
3.3.2 算术运算指令(共24条)80
3.3.3 逻辑运算指令(共24条)91
3.3.4 控制转移指令(共17条)100
3.3.5 布尔处理类指令108
习题与思考114
第4章 汇编语言程序设计119
4.1 概述119
4.1.1 采用汇编语言的优点119
4.1.2 汇编语言程序设计步骤119
4.1.3 评价程序质量的标准120
4.2 简单程序120
4.3 分支程序123
4.3.1 简单分支程序123
4.3.2 多重分支程序124
4.3.3 N路分支程序125
4.4 循环程序129
4.4.1 循环程序的导出129
4.4.2 多重循环133
4.4.3 编写循环程序应注意的问题135
4.5 查表程序136
4.6 子程序的设计及其调用140
4.6.1 子程序的概念140
4.6.2 调用子程序的要点140
4.6.3 子程序的调用及嵌套144
4.7 程序设计举例147
4.7.1 算术运算程序147
4.7.2 代码转换程序153
习题与思考156
第5章 MCS-51定时/计数器、串行口及中断系统159
5.1 MCS-51定时/计数器159
5.1.1 定时/计数器结构与工作原理159
5.1.2 定时/计数器的方式寄存器和控制寄存器161
5.1.3 定时/计数器的4种工作方式162
5.1.4 定时/计数器T2164
5.1.5 定时/计数器的初始化166
5.1.6 定时/计数器应用举例167
5.2 MCS-51串行口170
5.2.1 串行通信的两种基本方式170
5.2.2 MCS-51串行口结构171
5.2.3 串行口工作方式172
5.2.4 波特率的设计175
5.2.5 串行口的应用177
5.3 MCS-51单片机中断系统180
5.3.1 中断的一般功能181
5.3.2 中断请求源182
5.3.3 中断控制183
5.3.4 中断响应过程185
5.3.5 外部中断的响应时序与触发方式186
5.3.6 多外部中断源的设计187
5.3.7 用软件模拟第三个中断优先级189
习题与思考190
第6章 单片机系统扩展设计192
6.1 MCS-51系统扩展原理192
6.2 MCS-51存储器系统配置193
6.2.1 程序存储器193
6.2.2 数据存储器194
6.3 程序存储器扩展设计194
6.3.1 外部程序存储器操作时序194
6.3.2 常用程序存储器芯片196
6.3.3 程序存储器扩展设计201
6.4 数据存储器扩展设计204
6.4.1 外部数据存储器操作时序204
6.4.2 常用数据存储器芯片介绍205
6.4.3 数据存储器扩展设计209
6.5 I/O接口概述212
6.6 可编程并行I/O接口芯片8255A213
6.6.1 8255A的结构213
6.6.2 8255A的操作说明214
6.6.3 应用举例217
6.7 可编程RAM/IO扩展器8155/8156220
6.7.1 8155/8156芯片的结构220
6.7.2 RAM和I/O端口寻址方式及应用221
6.7.3 命令寄存器及状态寄存器222
6.7.4 8155内部定时器223
6.7.5 MCS-51与8155的接口方法和应用实例224
6.8 用TTL芯片扩展简单的I/O接口226
6.9 显示器与键盘接口 229
6.9.1 显示器接口229
6.9.2 键盘接口233
6.9.3 可编程键盘/显示接口8279235
6.9.4 MCS-51与8279的连接应用举例243
6.10 并行打印机接口248
6.10.1 PP40的接口信号248
6.10.2 PP40的工作方式249
6.10.3 8051与PP40的接口方法252
6.10.4 打印程序设计举例252
习题与思考258
第7章 数模及模数转换器接口260
7.1 D/A转换器260
7.1.1 R-2R T型解码网络D/A转换器260
7.1.2 描述D/A转换器的性能参数261
7.2 MCS-51单片机与8位D/A转换器接口技术262
7.2.1 DAC0832的技术指标262
7.2.2 DAC0832的结构及原理263
7.2.3 DAC0832管脚功能263
7.2.4 8位D/A转换器接口方法264
7.2.5 D/A转换器的输出方式266
7.3 MCS-51单片机与12位D/A转换器接口技术269
7.3.1 DAC1210的技术指标269
7.3.2 DAC1210的结构与原理269
7.3.3 8031与DAC1210转换器接口技术271
7.4 D/A转换器接口技术举例272
7.4.1 单极性输出接口系统设计272
7.4.2 双极性输出接口系统设计274
7.4.3 双路D/A同步控制系统设计277
7.5 A/D转换器278
7.5.1 双积分A/D转换器原理279
7.5.2 逐位逼近式A/D转换器原理279
7.5.3 描述A/D转换器的性能参数280
7.6 MCS-51单片机与8位A/D转换器接口技术281
7.6.1 ADC0808/0809的主要功能281
7.6.2 ADC0808/0809的组成及工作原理281
7.6.3 ADC0808/0809管脚功能282
7.6.4 8031与ADC0808/0809接口设计283
7.7 MCS-51单片机与12位A/D转换器接口技术287
7.7.1 AD574的技术指标288
7.7.2 AD574结构及工作原理288
7.7.3 AD574转换器的应用290
7.7.4 AD574与单片机的接口及程序设计291
7.8 测控系统中的模拟量输入通道292
7.8.1 模拟量输入通道的结构形式293
7.8.2 多通道模拟开关294
7.8.3 多通道模拟开关的扩展应用296
7.8.4 采样/保持电路297
7.9 A/D转换中数字滤波程序设计299
7.9.1 算术平均值法滤波299
7.9.2 中值法滤波300
7.9.3 滑动平均值法滤波300
7.9.4 程序判断法滤波300
7.9.5 复合法数字滤波300
习题与思考301
第8章 单片机C语言程序设计303
8.1 C语言与汇编语言的编程特点303
8.1.1 汇编语言的特点303
8.1.2 C语言的特点303
8.1.3 C51的特点304
8.2 C语言简介304
8.2.1 概述304
8.2.2 C语言的数据类型305
8.2.3 数据类型转换307
8.2.4 基本运算符和表达式308
8.2.5 C程序的语句311
8.3 C51对标准C语言的扩展317
8.3.1 数据类型317
8.3.2 变量存储类型318
8.3.3 存储器模式319
8.3.4 特殊功能寄存器319
8.3.5 指针321
8.3.6 绝对地址的访问322
8.3.7 函数的使用323
8.4 C51典型程序设计举例324
8.4.1 数据分析和处理325
8.4.2 硬件(接口)的操控328
习题与思考333
第9章 与MCS-51兼容的新型单片机334
9.1 ATMEL 89系列单片机334
9.1.1 概述334
9.1.2 AT89C2051/AT89C1051单片机336
9.1.3 AT89C51/52与AT89LV51/52单片机340
9.2 Philips公司8XC552系列单片机342
9.2.1 8XC552的主要性能342
9.2.2 8XC552内部结构及引脚描述342
9.2.3 8XC552特殊功能寄存器SFR343
9.2.4 8XC552并行I/O端口及复用功能345
9.2.5 脉冲宽度调制器PWM346
9.2.6 A/D转换器347
9.2.7 定时器T2和捕捉比较逻辑349
9.2.8 监视定时器T3352
9.2.9 8XC552 中断系统353
9.2.10 I2C总线简介354
9.3 ADI公司ADuC系列微转换器356
9.3.1 ADuC812356
9.3.2 ADuC816373
9.3.3 ADuC824376
习题与思考379
第10章 单片机应用系统研制方法380
10.1 单片机应用系统的设计380
10.1.1 单片机应用系统设计概述380
10.1.2 总体设计380
10.1.3 硬件设计382
10.1.4 可靠性设计383
10.1.5 保密性设计387
10.1.6 软件设计388
10.2 单片机开发系统392
10.2.1 单片机开发系统与开发工具392
10.2.2 单片机开发系统的功能393
10.3 单片机应用系统调试395
10.3.1 硬件调试方法395
10.3.2 软件调试方法397
习题与思考399
附录A REG51.H文件400
附录B ABSACC.H文件403
附录C ASCII码字符表404
附录D MCS-51系列单片机指令表405
参考文献412