“单片机原理及应用”是电气信息类和机电类专业的必修课程,也是一门实践性很强的应用技术课程。本书从实际应用出发,将单片机的基本知识与基本原理、C51程序设计、μVision5集成开发环境、实验板和典型教学实例有机地结合在一起,体系完整,便于教学和自学。
本书内容主要包括单片机概述、51系列单片机的内部硬件结构、指令系统与汇编语言程序设计、C51语言程序设计、单片机的中断和定时系统、串行通信、μVision5集成开发环境的使用和上机实验指导等内容。在此基础上,以国产STC8H系列单片机为例,详细介绍了扩展功能与接口技术;结合全国大学生电子设计竞赛、智能汽车竞赛和创新创业活动,介绍了单片机应用系统设计并给出典型实例。
本书论述严谨、内容新颖、图文并茂、注重基本原理和基本概念的阐述、强调理论联系实际、突出应用技术和实践。本书可作为高等学校电气信息类和机电类专业本科学生的教材和教学参考书,也可作为从事单片机应用开发的工程技术人员的参考书。
单片机具有体积小、价格低、可靠性高和使用灵活方便的特点,其在各行各业中得到了广泛的应用。随着社会经济的发展,用人单位对大学生就业的要求越来越高,如何通过教学过程使学生掌握单项成套应用技术就显得非常重要。编写本书的目的就是期望通过对本课程的学习,学生能够逐步从单片机入门提高到基本能熟练应用,进而掌握单片机应用的成套技术。
为实现此目的,作者根据多年从事本科生教学及相关科研工作的实践经验,在征求相关专业教师、高年级学生和单片机应用专业技术人员意见的基础上,结合使用单片机教学实验箱、教学实验板和单片机多功能应用板的应用情况,总结本书第1版使用的经验和不足,确定采用STC公司制作的教学实验盒、基本实验样例,为本书编写做好基本的准备工作。
例题从易到难是本书的一大特点。学习过单片机的同学普遍反映能看懂别人编写的程序,但自己编很难,尤其是较大的程序。对于实际应用来说,这也是一大问题。它要求编写教材不仅要例题多,还要精选例题并且要让学生了解编程思路。本书在编写时,对例题求解过程进行了详细的分析和比较,便于学生自学和掌握分析思路;并按照章节的顺序,逐步加大例题的难度,直至接近应用。
掌握基本知识和基本原理至关重要。本书第1~3章在简要介绍单片机应用的基础上,重点介绍单片机的工作原理和汇编语言程序设计。单片机实际应用系统软件设计目前大多采用C语言编程,第4章介绍C51语言程序设计,为后续章节学习使用C51语言编写程序提供了基础知识的准备。第5章介绍单片机的中断和定时系统。第6章介绍串行通信接口。单片机教学重在实践,第14章介绍μVision5集成开发环境的应用。第15章介绍上机实验指导。通过这8章的学习,学生应能根据应用系统的不同,掌握单片机的内部资源及其应用,并能完成实验调试。
单片机功能强大。初学者从易开始都难学懂,这也是先介绍51系列单片机的原因。第7~10章介绍以51系列单片机为内核的STC8H系列单片机的资源。学生熟悉各接口的功能和应用场景后,掌握其SFR的应用并不难。有效克服了死记硬背和单片机资源过多使人望而生畏的缺点,为学生掌握高端单片机并应用于实际产品开发打下坚实的基础。
从工程实践出发,结合实际应用案例是本书的又一大特点。第11~13章结合电子设计竞赛和智能汽车竞赛介绍了3个典型案例,为学生在校开展创新创业等科技活动提供了范例。
本书由汪贵平、龚贤武、雷旭、朱进玉和李立共同编写。汪贵平负责第2版的总体框架和组织,并完成第1章的编写工作,龚贤武编写第2、6、12、15章,雷旭编写第4、9、10、13章,朱进玉编写第3、11、14章,李立编写第5、7、8章。STC公司姚永平先生提供了大量的实用资料。在编写过程中,编者得到了作者单位(长安大学)的支持和同事的帮助。在此对他们和参考文献作者一并表示诚挚的感谢。
书稿虽经反复讨论和修改,但由于作者水平有限,书中难免有错误和不妥之处,敬请大家批评指正。意见和建议请发邮件至gpwang@chdeducn 或xwgong@chdeducn。
第1章单片机概述1
1.1单片机的概念1
1.2单片机的发展1
1.2.1单片机的发展趋势2
1.2.2常用单片机的分类2
1.3单片机的应用4
1.3.1单片机的主要特点4
1.3.2单片机的应用领域4
1.4单片机应用系统的开发5
1.4.1单片机应用系统的硬件构成5
1.4.2单片机应用系统的开发过程6
1.5单片机应用系统的开发调试模式7
1.5.1集成开发环境+仿真器+编程器的
开发模式7
1.5.2集成开发环境+ISP/IAP的
开发模式8
1.6本课程的性质和任务9
习题9
第2章51系列单片机的硬件结构11
2.1内部总体结构11
2.2引脚定义与功能14
2.3存储器配置17
2.3.1程序存储器17
2.3.2外部数据存储器19
2.3.3内部数据存储器19
2.3.4特殊功能寄存器21
2.4输入/输出接口22
2.4.1P0口22
2.4.2P1口24
2.4.3P2口24
2.4.4P3口24
2.5时钟电路与时序25
2.5.1时钟电路25
2.5.2单片机的时序单位26
2.6复位和复位电路26
2.7工作方式27
2.7.1程序执行方式28
2.7.2掉电保护方式28
2.7.380C51的低功耗方式28
习题30
第3章指令系统与汇编语言程序
设计32
3.1指令概述32
3.1.1指令格式32
3.1.2指令中用到的标识符33
3.2寻址方式33
3.2.1立即寻址33
3.2.2直接寻址34
3.2.3寄存器寻址34
3.2.4寄存器间接寻址35
3.2.5变址寻址35
3.2.6相对寻址36
3.2.7位寻址36
3.3指令系统36
3.3.1指令系统概述36
3.3.2数据传送指令37
3.3.3算术运算指令40
3.3.4逻辑操作指令43
3.3.5控制转移指令44
3.3.6位操作指令46
3.4伪指令47
3.5汇编语言程序设计48
3.5.1编写汇编语言程序的基本格式49
3.5.2运算程序50
3.5.3数据的拼拆和转换51
3.5.4多分支转移程序52
3.5.5显示程序53
习题55
第4章C51语言程序设计58
4.1C51语言简介58
4.1.1C51程序结构58
4.1.2C51程序的编辑和编译60
4.2C51对C语言的扩展61
4.2.1特殊功能寄存器的定义61
4.2.2数据类型63
〖1〗目录Ⅶ〖1〗Ⅷ新编单片机原理及应用第2版4.2.3数据存储空间的定义63
4.2.4地址访问65
4.2.5函数的使用66
4.2.6C51指针69
4.2.7库函数70
4.2.8关键字71
4.3C51使用技巧71
4.3.1C51与汇编程序接口71
4.3.2C51程序的优化75
4.4C51程序设计方法76
4.4.1C51程序设计的基本过程76
4.4.2问题分析77
4.4.3方案设计78
4.4.4编写代码79
4.4.5代码的调试和测试81
4.4.6C51程序设计范例81
习题83
第5章单片机的中断与定时系统85
5.1中断系统85
5.1.1中断的基本概念85
5.1.2中断源及中断请求86
5.1.3中断系统结构86
5.1.4中断控制86
5.1.5中断处理过程89
5.1.6中断系统的应用91
5.2定时器/计数器接口93
5.2.1定时器/计数器的主要特性93
5.2.2定时器/计数器T0、T1的结构93
5.2.3定时器/计数器的控制寄存器93
5.2.4定时器/计数器的工作方式95
5.2.5定时器/计数器的初始化编程及
应用99
5.2.6定时器/计数器T2100
5.3中断及定时系统综合应用106
习题107
第6章单片机的串行接口及串行
通信110
6.1串行通信基础110
6.1.1异步串行通信的字符格式110
6.1.2异步串行通信的信号形式111
6.1.3串行通信的数据通路形式111
6.1.4串行通信的数据传输速率111
6.2串行口的结构与工作原理112
6.2.1串行口的结构112
6.2.2串行口的工作原理113
6.3串行口的控制寄存器114
6.3.1串行控制寄存器114
6.3.2电源控制寄存器115
6.3.3中断允许寄存器115
6.4单片机串行通信的工作方式115
6.4.1串行口工作方式0116
6.4.2串行口工作方式1117
6.4.3串行口工作方式2和方式3121
6.5单片机串行通信接口技术124
6.5.1常用的标准串行通信接口124
6.5.2单片机串行通信接口126
6.5.3单片机与PC通信接口127
6.5.4单片机与计算机通信程序设计128
习题132
第7章STC8H系列单片机硬件
结构134
7.1总体结构134
7.2选型表137
7.3引脚定义与功能137
7.4功能脚切换138
7.4.1功能脚切换相关寄存器138
7.4.2寄存器切换引脚功能位的定义138
7.5存储器配置140
7.5.1程序存储器140
7.5.2数据存储器140
7.5.3特殊功能寄存器141
7.6输入/输出接口141
7.6.1I/O口结构图141
7.6.2I/O口配置144
7.6.3I/O口相关寄存器1447.7时钟、复位与电源管理145
7.7.1系统时钟控制146
7.7.2内部IRC频率调整147
7.7.3系统复位148
7.7.4时钟停振/省电模式与系统
电源管理149
7.8IAP/EEPROM150
7.8.1EEPROM相关的SFR150
7.8.2EEPROM的大小及地址152
习题153
第8章STC8H系列的中断与定时
系统155
8.1中断系统155
8.1.1STC8H系列中断列表156
8.1.2中断相关寄存器157
8.1.3中断允许控制寄存器157
8.1.4中断请求寄存器160
8.1.5中断优先级寄存器163
8.2定时器/计数器接口164
8.2.1定时器的相关寄存器164
8.2.2定时器0/1164
8.2.3定时器2166
8.2.4定时器3/4166
8.2.5掉电唤醒定时器167
8.3综合应用举例168
8.3.1跑马灯程序168
8.3.2电子钟程序169
8.3.3方波信号发生器程序170
8.3.4开关次数计数程序170
习题171
第9章单片机的接口扩展技术173
9.1脉冲宽度调制技术173
9.1.1脉冲宽度调制技术原理173
9.1.2STC8H系列单片机的PWM
寄存器174
9.1.3PWM时基单元195
9.1.4PWM时钟/触发控制器203
9.1.5PWM捕获/比较通道212
9.1.6PWM中断226
9.2模拟量输入接口技术226
9.2.1A/D转换原理227
9.2.2STC8H系列单片机A/D接口
原理227
9.3模拟量输出接口技术231
9.3.1D/A转换原理231
9.3.2STC8H系列单片机PWM实现D/A
输出232
9.4综合应用举例235
9.4.1带死区控制的PWM互补输出235
9.4.2利用ADC第15通道测量外部电压或
电池电压235
9.4.3利用PWM实现16位DAC236
习题237
第10章单片机串行总线扩展技术239
10.1SPI总线接口技术239
10.1.1SPI总线原理240
10.1.2SPI相关的寄存器241
10.1.3SPI接口的数据通信方式243
10.1.4SPI模块配置244
10.1.5数据模式时序246
10.2I2C总线接口技术247
10.2.1I2C总线原理248
10.2.2I2C协议249
10.2.3STC8H系列单片机I2C
接口原理250
10.3综合应用举例258
10.3.1SPI单主单从系统
(中断方式)258
10.3.2I2C主机模式访问PCF8563259
习题259
第11章项目一温度控制系统设计
实例261
11.1单片机应用系统的开发过程261
11.2可行性分析的主要内容261
11.3系统设计方案262
11.3.1系统的主要功能与性能262
11.3.2硬件结构设计265
11.3.3软件结构设计266
11.4系统调试267
11.4.1调试工具267
11.4.2硬件调试268
11.4.3软件调试270
11.4.4模拟调试272
11.4.5现场调试272
11.5温度控制系统设计274
11.6本章小结278
习题278
〖1〗目录Ⅸ〖1〗Ⅹ新编单片机原理及应用第2版第12章项目二基于STC8H8K64的两轮自平衡车设计280
12.1两轮自平衡车的基本构造280
12.1.1两轮自平衡车的机体结构280
12.1.2车模简介280
12.1.3测速传感器的安装281
12.1.4陀螺仪的安装282
12.2两轮自平衡车的控制原理282
12.2.1直立控制原理283
12.2.2速度控制原理283
12.2.3转向控制原理284
12.3两轮自平衡车硬件电路设计284
12.3.1控制核心板介绍284
12.3.2电源单元285
12.3.3角度检测单元286
12.3.4车速检测单元287
12.3.5直流电机驱动单元288
12.4两轮自平衡车控制软件设计289
12.4.1系统初始化290
12.4.2车模角度和角速度的测量291
12.4.3控制策略及控制算法292
12.5平衡车系统调试296
12.5.1硬件调试296
12.5.2软件调试296
12.5.3整车调试297
习题300
第13章项目三智能汽车竞赛电磁车
实例301
13.1电磁车路径检测系统设计301
13.1.1磁场检测方法301
13.1.2传感器模块设计302
13.1.3信号调理电路303
13.1.4检测系统设计与调试303
13.2电磁车电机控制系统设计305
13.2.1机电传动系统305
13.2.2电机驱动电路原理307
13.2.3电机驱动电路设计309
13.2.4电机转速测量方法315
13.3智能车控制策略318
13.3.1传感器布局设计318
13.3.2转向控制策略320
13.3.3速度控制策略321
13.4寻线行驶算法实现322
13.4.1定位算法322
13.4.2基于位置式PID的方向控制323
13.4.3基于增量式PID的速度控制324
13.4.4弯道策略分析324
13.4.5转向舵机的PID控制算法326
13.4.6驱动电机的PID控制算法327
13.5电磁车系统调试327
习题330
第14章μVision5集成开发环境的
使用331
14.1μVision5简介331
14.1.1μVision5软件的下载331
14.1.2μVision5软件的安装332
14.1.3μVision5软件工具的界面335
14.2使用μVision5创建自己的应用341
14.2.1添加STC系列单片机数据库341
14.2.2启动μVision5并创建一个项目343
14.2.3新建一个源文件346
14.2.4为目标设置工具选项347
14.2.5编译项目并生成HEX文件348
14.3使用μVision5调试应用程序349
14.3.1调试模式的设置350
14.3.2启动调试模式351
14.3.3常用调试窗口352
14.3.4片上资源的仿真354
14.3.5运行调试图标356
14.4调试技巧356
14.4.1KeilC51与MDK共存357
14.4.2自定义快捷键357
14.4.3文本编辑相关设置357
14.4.4代码格式化工具358
习题360
第15章单片机实验指导361
15.1STC8H实验板使用说明361
15.1.1STC8H实验板外观图361
15.1.2STC8H实验板元器件分布图361
15.1.3STC8H实验板元器件361
15.2实验辅助软件介绍363
15.2.1在系统编程软件的使用363
15.2.2stc-isp-15xx-v6.87H串口助手的
使用363
15.3实验指导365
15.3.1实验一使用μVision设计、调试
汇编语言程序365
15.3.2实验二使用μVision设计、
调试C51语言程序367
15.3.3实验三跑马灯实验368
15.3.4实验四单片机定时器/计数器的
应用编程与调试369
15.3.5实验五七段数码管电子钟显示
实验370
15.3.6实验六单片机外部中断实验371
15.3.7实验七矩阵键盘实验371
15.3.8实验八串行通信实验373
15.3.9实验九利用ADC第15通道测量外
部电压或电池电压375
15.3.10实验十PWM模块的应用编程与
调试376
参考文献377