本书以应用广泛的MCS51增强型单片机为对象,系统地讲解了单片机结构原理、编程方法、接口及应用。内容包括:MCS51单片机结构原理,指令系统,单片机C语言、软硬件开发工具,I/O口及应用、中断系统、定时器、串行口,常用总线接口技术、模拟器件和开关器件接口技术,以及单片机应用系统设计。 本书从教学和初学者的角度讲解单片机的基本内容和应用,结构科学,概念清晰、准确,材料数据可靠;以C为主要编程语言,讲解、举例编程均用C语言,并有汇编语言对照;以程序开发软件Keil C、电路设计模拟运行软件Proteus为教学、学习和训练工具,理论与实践紧密结合。 本书适合于具有C语言基础的计算机、电子、通信、自动化、电气、测控技术与仪器等专业的本科学生作为教材,也可以作为各种培训机构的教材,以及工程技术人员参考和自学使用。
本书以应用广泛的MCS-51增强型单片机为对象,系统地讲解了单片机结构原理、编程方法、接口及应用。内容包括:MCS-51单片机结构原理,指令系统,单片机C语言、软硬件开发工具,I/O口及应用、中断系统、定时器、串行口,系统扩展接口、模拟量和开关量接口,以及单片机应用实例。
本书从教学和初学者的角度讲解单片机的基本内容和应用,结构科学,概念清晰、准确易懂,材料数据可靠。
MCS51单片机虽然走过了30多年的历史,但它因其独特的系统结构、不断增加的片内设备以及强大的指令系统,不仅没有被历史淘汰,而且依然是单片机中的主流。随着技术的发展和应用的需求,MCS51单片机片内设备越来越丰富,应用也越来越多,所以MCS51单片机仍然是单片机教学的主要对象。
作者结合多年来讲授单片机、微机原理与接口技术和C语言等课程的教学体会,以及从事单片机、计算机项目开发的经验,在《单片机原理及应用(C语言版)》教材的基础上,经过修改编写成本教材,在内容的组织和讲解方面,以初学者为对象。本书主要有以下特点。
一是以增强型单片机89C52为对象讲解。当今在实际中使用的单片机多数是增强型,而现在又多用C语言编程,程序的长度很容易超过4KB,另外增强型单片机的价格比89C51高得不多,并且有更多的片内设备。书中讲解了增强型片内高128字节的存储器,定时器/计数器2的多种用途,片内的A/D转换器等。
二是以C语言作为主要编程语言,注重编程能力的培养,用一章内容讲解了单片机的C语言。在实际应用中,程序设计多以C语言为主,汇编语言为辅,为了适应实际工作的需要,必须要掌握C语言编程。本书在讲解第2章单片机结构原理时,就引入了C51的概念,强调存储区域概念; 在第4章的单片机C语言及程序设计之后,内容的讲解、编程举例、程序设计,都采用C语言,并且在第5、6、7章介绍单片机的基本内容时,为了便于学习汇编语言,也列出了汇编语言程序。
三是C语言这章更具特色,精选内容,结合单片机的实际讲解C语言。本章只讲了与单片机结构密切相关的、与普通C语言不同的内容: 变量的定义、特殊功能寄存器的定义、位变量的定义、指针的定义、C51的输入/输出、C51函数的定义、汇编语言与C语言混合编程,没有涉及C语言的基础内容,因为现在理工科学校都开设了C语言课程。内容讲解透彻,各个定义格式明确、格式中属性阐述准确,并且在每一种定义中都写有使用说明或注意,这些都是作者应用经验的总结。例子、思考题习题(30个)都是结合作者对内容的理解、实际应用编写的,学完该章后,对C语言在单片机中的应用没有任何障碍。
四是注意开发工具应用、实践能力的培养。书中第1章就专门介绍了程序开发软件Keil C和单片机电路设计、系统模拟运行软件Proteus的使用方法,教师稍加引导就可以做一些简单的I/O口实验。书中的例题尽可能地使用Proteus绘制单片机应用电路,其程序在电路中模拟运行。书中的部分习题要求用用Keil C编程,用Proteus绘制电路并模拟运行程序。
五是注意接口能力的培养。接口概念明确,真正理解接口含义,8255A是典型的接口芯片,通过该芯片的介绍,能够较全面地理解接口的相关概念和接口的功能(从简单和实用的角度考虑,只讲了8255A的工作方式0)。重视接口时序的分析和应用,几乎在每个接口中都有体现,使读者能够正确使用各种接口芯片。
六是提出了多个新概念,以方便讲解和理解相关内容。在第4章提出了变量存储区(域)和设备变量的概念。变量存储区(域)的概念在《单片机原理及应用(C语言版)》中首次提出,该概念符合单片机变量保存位置区域的特征,并且与ANSI C变量属性(存储类型)不冲突。设备变量的概念为本书首次提出,虽然该概念不是必需的,但设备变量本身访问过程的复杂性和它的特指性,对于初学者理解、掌握这类访问过程复杂的变量会有帮助,对于教师则方便讲解。第5章提出了中断通道的概念,该概念符合串行口、定时器T2中断结构的特征,使中断结构的相关概念更清晰,容易理解中断系统结构,方便教师讲解(见表51)。
本书由周国运任主编,组织内容及统稿,并且编写了1.5节和1.6节、第2~4章及附录,赵天翔编写了1.1节~1.4节和第5、6、8章,鲁庆宾编写了第7、9~11章。
编者2013年10月
主编周国运是计算机、物理学双学科三级教授,物理学本科,光学研究生,从事物理教学、计算机教学及应用研究三十多年,现在主要研究方向为嵌入式系统及应用。
讲授过的课程主要有:单片机原理及应用、微机原理与接口技术、嵌入式系统及应用、计算机控制技术、计算机操作系统、汇编语言程序设计、C语言程序设计、电子CAD、电子技术,以及电磁学、光学、傅里叶光学等课程。
主持编写出版的教材主要有:《单片机原理及应用(C语言版)》(中国水利水电出版社)、《微机原理与接口技术》(机械工业出版社)、《电子技术教程》(西北大学出版社)等教材。编写的讲义主要有:《STM32原理及应用》、《ARM9嵌入式系统教程》、《MCS-51单片机课外实验指导》、《汇编语言程序设计》等。
主持完成火电厂凝汽器在线清洗控制系统、喷油泵校验控制系统等十多项省市级、及横向科研项目;主持完成多项省级和校级教学研究项目;获得二十余项省、市和学校科研项目、教研项目奖励。
第1章单片机及其开发工具
1.1单片机的基本概念
1.2单片机的发展历史
1.3单片机的特点及应用
1.3.1单片机的特点
1.3.2单片机的应用
1.4常见MCS51单片机简介
1.4.1MCS51系列单片机
1.4.2ATMEL89系列单片机
1.4.3STC系列单片机
1.5单片机程序开发软件Keil C简介
1.5.1Keil C集成开发工具简介
1.5.2Keil C的操作工具
1.5.3Keil C程序开发方法
1.5.4Keil C调试运行方法
1.6单片机系统模拟软件Proteus简介
1.6.1Proteus主界面
1.6.2Proteus ISIS的操作工具
1.6.3Proteus ISIS原理图设计方法
1.6.4Proteus ISIS原理图设计举例
1.6.5Proteus ISIS仿真方法
思考题与习题
第2章MCS51单片机结构原理
2.1MCS51单片机内部结构及CPU
2.1.1MCS51单片机结构及特点
2.1.2MCS51单片机内部原理结构
2.1.3MCS51单片机的CPU
2.2MCS51单片机引脚信号
2.2.1MCS51单片机引脚信号及功能
2.2.2MCS51单片机的外部总线结构
2.3MCS51单片机存储器结构
2.3.1程序存储器结构
2.3.2片内数据存储器结构
2.3.3片外数据存储器结构
2.4MCS51单片机时钟及CPU时序
2.4.1时钟电路及时钟信号
2.4.2CPU时序
2.5MCS51单片机的复位
2.5.1复位状态
2.5.2复位电路
2.6MCS51单片机低功耗工作方式
2.6.1低功耗结构及控制
2.6.2空闲工作方式
2.6.3掉电工作方式
思考题与习题
第3章MCS51指令系统及汇编程序设计
3.1汇编语言概述
3.1.1指令和机器语言
3.1.2汇编语言
3.1.3汇编语言格式
3.2MCS51单片机寻址方式
3.2.1立即数寻址
3.2.2寄存器寻址
3.2.3直接寻址
3.2.4寄存器间接寻址
3.2.5变址寻址
3.2.6位寻址
3.2.7指令寻址
3.2.8寻址空间及指令中符号注释
3.3MCS51单片机指令系统
3.3.1数据传送指令
3.3.2算术运算指令
3.3.3逻辑操作指令
3.3.4控制程序转移指令
3.3.5位操作指令
3.4MCS51单片机伪指令
3.5汇编语言程序设计
3.5.1简单程序设计
3.5.2分支程序设计
3.5.3循环程序设计
3.5.4子程序设计
思考题与习题
第4章单片机C语言及程序设计
4.1单片机C语言概述
4.1.1C语言编程的优势
4.1.2C51与ANSI C的区别
4.1.3C51扩充的关键字
4.2C51数据类型及存储
4.2.1C51的数据类型
4.2.2C51数据的存储
4.3C51一般变量的定义
4.3.1C51变量的定义格式
4.3.2C51变量的存储类型
4.3.3C51变量的存储区
4.3.4C51变量定义举例
4.3.5C51变量的存储模式
4.3.6C51变量的定位
4.3.7C51设备变量的概念
4.4C51特殊功能寄存器的定义
4.4.18位特殊功能寄存器的定义
4.4.216位特殊功能寄存器的定义
4.5C51位变量的定义
4.5.1bit型位变量的定义
4.5.2sbit型位变量的定义
4.5.3位操作应用
4.6C51指针与结构体的定义
4.6.1通用指针
4.6.2存储器专用指针
4.6.3指针变换
4.6.4C51指针应用
4.6.5C51结构体定义
4.7C51函数的定义
4.7.1C51函数定义的一般格式
4.7.2C51中断函数的定义
4.8C51与汇编语言混合编程
4.8.1在C51函数中嵌入汇编语句
4.8.2C51与汇编语言混合编程规则
4.8.3C51与汇编语言混合编程举例
思考题与习题
第5章单片机I/O口及应用
5.1单片机I/O口结构原理
5.1.1P1口
5.1.2P2口
5.1.3P3口
5.1.4P0口
5.1.5端口负载能力和接口要求
5.2I/O口输出数码管及显示控制
5.2.1数码管显示器结构原理
5.2.2数码管显示方式
5.2.3数码管显示控制
5.3I/O口输入键盘及按键识别
5.3.1键盘分类及按键识别
5.3.2独立式键盘及按键识别
5.3.3行列式键盘及按键识别
5.3.4中断方式扫描键盘
5.3.5键盘应用举例
5.4液晶显示器及控制
5.4.1LM016L引脚信号
5.4.2LM016L操作指令
5.4.3LM016L存储器
5.4.4LM016L基本操作函数
5.4.5LM016L应用编程
思考题与习题
第6章单片机中断系统
6.1中断系统概述
6.1.1中断的基本概念
6.1.2中断的功能
6.2中断系统结构与原理
6.2.1中断系统结构
6.2.2中断系统原理
6.2.3外部中断触发方式
6.2.4中断请求标志
6.3中断系统控制
6.3.1中断允许控制
6.3.2中断优先级控制
6.4中断响应与处理
6.4.1中断响应
6.4.2中断处理
6.5外部中断应用举例
6.5.1中断应用程序结构
6.5.2应用举例
思考题与习题
第7章单片机定时器/计数器
7.1单片机定时器/计数器的结构
7.2定时器/计数器T0、T1
7.2.1T0、T1的特殊功能寄存器
7.2.2T0、T1的工作模式
7.2.3T0、T1的使用方法
7.3定时器/计数器T2
7.3.1T2的特殊功能寄存器
7.3.2T2的工作方式
7.4定时器应用举例
思考题与习题
第8章单片机串行口
8.1串行通信基础知识
8.1.1数据通信
8.1.2异步通信和同步通信
8.1.3波特率
8.1.4通信方向
8.1.5串行通信接口种类
8.2串行口结构及控制
8.2.1单片机串行口结构
8.2.2串行口特殊功能寄存器
8.2.3波特率设计
8.3串行口工作方式
8.3.1串行口方式0
8.3.2串行口方式1
8.3.3串行口方式2和方式3
8.4串行口接口技术
8.4.1RS232接口
8.4.2RS422/485接口
8.4.3与USB接口
8.5串行口的C51操作函数
8.5.1串行口输出函数
8.5.2串行口输入函数
8.6串行口应用举例
8.6.1串行口方式0应用
8.6.2串行口方式1、方式3应用
思考题与习题
第9章单片机常用总线接口技术
9.1接口的基本概念
9.1.1单片机应用系统构成
9.1.2接口的概念
9.1.3接口的基本功能
9.1.4接口的结构
9.1.5端口及其编址
9.2并行总线操作时序及存储器接口
9.2.1单片机并行总线结构
9.2.2单片机并行总线操作时序
9.2.3单片机与并行数据存储器的接口
9.3单片机与并行总线设备的接口
9.3.18255A内部结构
9.3.28255A引脚信号
9.3.38255A的控制字
9.3.48255A的工作方式
9.3.58255A应用举例
9.4IIC总线及应用接口
9.4.1IIC总线特点
9.4.2IIC总线时序
9.4.3IIC总线操作函数
9.4.4IIC总线应用
9.5SPI总线及应用接口
9.5.1SPI总线特点
9.5.2SPI总线时序
9.5.3SPI总线操作函数
9.5.4SPI总线应用
思考题与习题
第10章单片机与模拟、开关器件接口技术
10.1D/A转换器及接口技术
10.1.1D/A转换器的主要参数
10.1.2D/A转换器TLC5615及接口技术
10.1.3D/A转换器DAC124S085及接口技术
10.2A/D转换器及接口技术
10.2.1A/D转换器的主要参数
10.2.2A/D转换器ADC0834及接口技术
10.2.3A/D转换器TLC2543及接口技术
10.2.4单片机片内A/D转换器及应用
10.3开关信号器件及接口技术
10.3.1光电耦合器件及接口技术
10.3.2继电器接口技术
10.3.3直流电机控制接口技术
10.3.4步进电机控制接口技术
思考题与习题
第11章单片机应用系统设计
11.1简易计算器设计
11.1.1数码管与键盘接口芯片BC7277简介
11.1.2系统电路设计
11.1.3系统功能设计
11.1.4系统程序设计
11.2万年历设计
11.2.1时钟芯片DS1302简介
11.2.2系统电路设计
11.2.3系统功能设计
11.2.4系统程序设计
11.3环境检测系统设计
11.3.1温湿度传感器DHT11简介
11.3.2光照度传感器BH1750简介
11.3.3系统电路设计
11.3.4系统程序设计
课程设计参考题目
附录AMCS51指令表
附录BC51库函数
B.1一般I/O函数
B.2内部函数
B.3地址访问函数
附录CC语言运算符特性表
附录D标准ASCII码表
参考文献