|
編輯推薦: |
历经一年的嵌入式编码经历、数年的教学和潜心研究、数月的编撰修改,本教程才得以成型。只为还在黑暗中摸索的您带去简洁明了的指引,让你的嵌入式学习路途少一些坎坷。
|
內容簡介: |
本书可作为计算机及电子类物联网相关专业本科生51课程教材,在逐步展现51单片机原理及相关应用的同时,通过实例及剖析实 时引入循环轮询多任务的调度思想。能让读者在学习51基础知识的同时,循序渐进的领悟如何将多个功能有机地融合成一个实用系统。本书理论和实践并举,让读者以轻松的方式理解晦涩难懂的理论。只要具有一定c语言基础的学生都能通过本书轻松掌握51单片机的使用并实现系统集成。本书由多年从事本课程教学的一线老师编写,更适合该课程教学使用,所有实例代码都是数年教学中积累的实际应用代码,读者均可放心使用。
|
關於作者: |
杜隆胤(1977.4),副教授,15年教龄。主要研究方向为嵌入式系统及应用,有两年公司任职嵌入式软件工程师经历,长期从事计算机硬件及操作系统课程教学,对51单片机教学有独到见解。
|
目錄:
|
第1章51单片机概述1
1.1单片机与嵌入式系统1
1.2单片机的发展概况1
1.351系列单片机及主要生产厂家和机型2
1.4单片机编程2
1.5STC89系列单片机开发环境搭建3
本章小结8
练习8第2章闪烁的LED灯9
2.1创建第一个Keil工程9
2.2初识Vision4运行环境11
2.3创建并添加第一个源文件12
2.4编码保存与编译链接14
2.5下载运行16
2.6硬件实验环境18
本章小结19
练习20第3章存储系统21
3.1哈佛结构与冯诺依曼结构21
3.251单片机存储系统22
3.3C51变量定义23
3.4内外部数据存储器空间的访问23
3.5程序存储器空间的访问25
3.6特殊功能寄存器及特殊功能的位25
3.6.1特殊功能寄存器25
3.6.2特殊功能的位27
3.6.3寄存器相关头文件28
本章小结29
练习29第4章变量的位数及意义30
4.1芯片位数与变量位数30
4.2变量的位数与符号31
4.3代码移植中的变量问题及typedef31
4.4自定义头文件及包含32
4.5Keil中设定工程相关路径33
4.5.1添加头文件搜索路径33
4.5.2设定目标文件存放路径36
4.6让Keil认识变量类型38
4.6.1设置Keil中各类型字符的显示效果38
4.6.2设置自定义关键字39
本章小结41
练习42第5章IO接口内部逻辑及应用43
5.1IO接口内部逻辑43
5.1.1P0口44
5.1.2P1口44
5.1.3P2口45
5.1.4P3口45
5.2输出46
5.3输入47
5.4有源蜂鸣器48
5.5按键50
5.5.1按键电路50
5.5.2独立按键编码53
5.6数码管57
5.6.1数码管显示基本原理57
5.6.2多位数码管显示编码59
本章小结62
练习62第6章51单片机中的多任务编程63
6.1操作系统与多任务63
6.2多任务实现方式63
6.3循环轮询多任务的设计64
6.4循环轮询系统多任务的实现66
6.5循环轮询系统中任务的阻塞问题67
6.5.1非周期性实时任务中的阻塞68
6.5.2周期性实时任务中的阻塞69
6.6多任务编程实战按键响应及数码管显示70
本章小结74
练习74第7章51中断系统76
7.1中断的概念76
7.251单片机的中断系统77
7.351单片机中断系统中的寄存器78
7.3.1中断标志相关寄存器TCON78
7.3.2中断标志相关寄存器SCON79
7.3.3中断允许寄存器IE80
7.3.4中断处理优先级寄存器IP81
7.451寄存器组及中断处理过程82
7.5中断服务程序的编写83
7.6外部中断应用快速响应按键84
本章小结86
练习86第8章51单片机定时计数器编程87
8.1计数与定时87
8.251单片机的定时计数器87
8.351单片机定时计数器相关寄存器88
8.3.1定时模式寄存器TMOD88
8.3.2定时器控制寄存器TCON88
8.3.3定时器计数值寄存器TH和TL89
8.451单片机的定时计数器的工作方式89
8.4.1工作方式013位不循环计数方式89
8.4.2工作方式116位计数方式90
8.4.3工作方式28位自动重装载初值方式91
8.4.4工作方式3T0被分成2个8位计数器92
8.551单片机定时计数器的应用94
8.5.1方波发生器94
8.5.2硬件延时96
8.5.3音乐播放97
本章小结101
练习101第9章基于时钟中断的循环轮询多任务102
9.1基于时钟中断的周期性任务触发102
9.2系统心跳103
9.3心跳函数的实现104
9.4基于心跳的循环轮询系统主函数的实现105
9.5基于时钟心跳的循环系统实战再现按键响应显示106
9.6芯片的睡眠107
本章小结109
练习110第10章串行通信111
10.1串行通信基本概念111
10.251单片机串行口112
10.3波特率的设置115
10.4数据的发送117
10.4.1程序查询方式发送数据117
10.4.2中断方式发送数据120
10.5串口数据接收122
10.6串行通信中的奇偶校验126
本章小结127
练习127第11章常规外设及应用128
11.1实时时钟RTC128
11.1.1DS1302模块简介128
11.1.2DS1302基本操作130
11.1.3时钟信息的获取与设置133
11.1.4RAM空间操作134
11.2温度传感器134
11.2.1DS18B20简介134
11.2.2DS18B20硬件连接135
11.2.3单总线基本操作136
11.2.4获取DS18B20温度数据基本流程138
11.2.5DS18B20应用编码138
11.3超声波测距140
11.4红外、火焰、声音感应器142
11.5三极管放大电路与继电器143
本章小结144
练习144第12章系统设计实例145
12.1玩具音乐盒145
12.1.1设计目标及相关电路145
12.1.2数据结构146
12.1.3系统实现148
12.1.4关键代码解析148
12.2电子日历149
12.2.1设计目标149
12.2.2相关电路150
12.2.3功能设计150
12.2.4软件系统设计152
12.2.5关键代码解析155
12.3物联网应用App遥控灯155
12.3.1ATKESP8266 WiFi模块简介155
12.3.2ATKESP8266的配置158
12.3.3波特率设置161
12.3.4硬件连接163
12.3.5软件设计164
12.3.6关键代码解析165
本章小结166
练习166
|
內容試閱:
|
51系列单片机以价格低廉、功耗低、体积小、兼容性好等优势在一些对计算能力要求不高的嵌入式应用中得到了广泛应用,同时因其结构简单、易于学习掌握,常常作为嵌入式初学者的入门学习对象,利于初学者对嵌入式开发基本流程、硬件底层工作机制、常用外设接口等知识的理解和应用。
本书为学习51单片机应运而生,避免说教式的知识传授,将理论与应用紧密结合,力图让读者在学习51单片机基本知识的基础上掌握常规外设的使用,最终能够设计应用系统。为达到该目的,本书所有知识点的设置都是以应用为目的的。通过一系列的应用反刍基本理论,实时引入循环轮询多任务思想,让读者潜移默化地掌握系统集成的基本技能,避免出现只会做独立功能却无法实现功能集成的尴尬。
本书思路清晰、备注完整的示例代码降低了代码理解难度,为初学者反刍基本知识提供了直接驱动力;以修改示例代码实现功能提升或功能变更的练习设置降低了编码难度,提升了编码成就感,牢牢抓住读者的学习兴趣;一系列渐进式练习可以让读者一步步提升编码能力,在不知不觉中领悟多任务编程诀窍,为后期挥洒自如地编写代码提供前期准备。
本书力图做到语言简明易懂,对于一些专业性较强特别是计算机组成原理和操作系统的相关知识的词汇或概念,尽量加以注释降低理解难度。因此,对于非计算机专业的读者来说,使用本书学习51单片机不会因缺乏专业知识而感到困惑。对于计算机专业的读者来说,本书的一些理论知识或许已经掌握,所以阅读时会感到更加轻松。
本书假设读者已有C语言编程基础,同时还掌握了一定的电路相关常识。请读者在阅读本书前确保自身已掌握C语言程序结构、变量、数组、函数、指针、结构体等相关知识。要求的电路基本常识主要有电容、电阻、二极管、三极管等,即使没有学过电路相关课程也不会影响对本书内容的理解。但作为嵌入式开发人员来说,基本的电路常识是必需的。因此在遇到一些不太清楚的电路常识时,请读者自行查阅相关资料。
本书的目的在于51单片机基本知识的掌握及应用,但嵌入式开发本身涉及的知识非常庞杂,对于一些不影响课程本身理解的知识,本书都以简单介绍的方式讲述,并在适当位置提示读者自行查阅相关资料。
经过一年的嵌入式编码经历、数年的教学和潜心研究、数月的编撰修改,本书才得以成型,希望为还在黑暗中摸索的您带来简洁明了的指引,让您的嵌入式学习之路少一些坎坷。
由于编者水平有限,不妥之处在所难免,恳请各位专家、同行和读者批评指正,同时也欢迎感兴趣的读者来信交流。
编者2020年6月2日
|
|