《51单片机应用技术项目教程(C语言版)》结合最新的职业教育改革要求,通过20个基础知识学习任务和24个技能训练任务介绍了单片机硬件系统、单片机系统开发环境和开发工具、单片机并行端口应用、定时与中断系统、显示与键盘接口技术、A/D与D/A转换接口、串行接口通信技术以及单片机应用系统设计等内容。本书注重技能训练,以实用项目为载体,以任务驱动引导教与学,内容贴近电子行业的职业岗位要求,项目案例具有很强的实用性、操作性,难易程度适中。本书配有电子教学课件、实训项目的仿真电路原理图、C语言源程序代码、基于C语言的试题库以及标准答案。
本书既可作为高职高专院校电子信息类、通信类、自动化类、机电类、机械制造类等专业单片机技术课程的教材,也可作为应用型本科院校、职工大学、函授学院、中职学校和单片机技术培训班的教材以及电子产品设计人员的参考用书。
序 言
随着嵌入式产业的飞速发展,嵌入式系统产品正在不断地渗透到各个行业和领域之中。生活中常见的嵌入式电子产品,小到电饭煲、手机等,大到智能家电、车载电子设备等。采用嵌入式技术的电子产品都是以微处理器(CPU)为核心的,常见的微处理器有ARM、DSP、FPGA/CPLD、SOC、MCU等。本书主要以8051内核单片机(MCU)为核心内容,介绍其在控制领域中的应用。
编者结合自己近十年的单片机教学经验和指导学生参加相关技能竞赛的经验,花费大量的精力编写了本书,并力求能从项目引领、任务驱动等多方面体现出高职院校“教、学、做”一体化教学的特色。
本书顺应现代高等教育指导思想的变革,突出技能培养在课程中的主体地位,用项目引领理论,使理论从属于技能实践。本书既可作为高职高专院校电子信息、自动化控制、计算机应用技术、机电等相关专业单片机技术课程的教材,也可作为广大电子制作爱好者的自学用书。本书的特点主要包括以下几个方面:
1.采用“项目驱动”的编写思路,突出技能培养在课程中的主体地位
本书以完成实际项目的思路和操作为主线,通过任务引领和贯穿多个知识点,使理论教授从属于技能培养。本书致力于教会学生如何完成工作任务,并关注学生能做什么,而不是知道什么。
2.语言朴实、易懂,案例选取难易程度适中
无论是单片机基础知识部分还是任务训练部分,都紧扣“实用”这一原则进行介绍。本书丰富、精彩的插图,有助于读者理解知识,加深印象。
本书特别注重知识的铺垫和循序渐进。单片机技术及应用领域的知识内容多,难度大,知识抽象,入门难,需要开设的前导课程有电路分析基础、模拟电路、数字电路和C语言程序设计。没有这些基础的读者可能不知道该从哪里开始学习以及如何开始学习。本书从项目二开始就用形象生动的单片机应用实例不断铺垫,使单片机知识能流畅地被读者理解和吸收。
3.选取典型的、具有扩展性和系统性的训练任务进行设计,贴近职业岗位需求
全书共安排了44个工作任务,一部分作为知识学习任务,另外一部分作为技能训练任务。本书精心选择训练任务,避免过大过繁,力求体现“精训精炼”的教学宗旨。同时,本书注重能力训练的延展性,每个任务既相对独立又保持密切的联系,具有扩展性,即后一个任务是在前一个任务的基础上进行功能扩展而实现的,使训练内容由点到线,由线到面,体现技能训练的综合性和系统性。
精心选编单片机系统综合训练任务也是本书的特色之一,其中综合了本书所有单元的训练内容,并引入了大量实际设计经验,起到了从训练到实战、承上启下的过渡作用。
4.从职业岗位需求出发,采用C语言编程
传统的单片机教学采用汇编语言进行控制程序设计。汇编语言的优点是比较灵活,但程序的可读性较差,不易理解,高职学生很难掌握其编程方法,更难进行灵活的应用。尤为重要的是,在实际工作中单片机应用产品的开发基本上不再采用汇编语言进行编程。因此,采用C 语言编程是单片机教学改革的一项重要内容。
C语言程序易于阅读、理解,程序风格更加人性化,且方便移植,目前已成为单片机应用产品开发的主流语言。本书以项目为载体,用工作任务引导教与学,把相关的C语言知识融合在工作任务中,以“够用”为度,让学生在技能训练中逐渐掌握其编程方法,易教易学。
5.从职业岗位需求出发,采用仿真教学法,实现从概念到产品的完整设计
本书打破了传统教材的原有界限,将理论学习与职业岗位基本技能融合在一起,通过引入Proteus仿真软件,并采用C语言编程,将学生从单片机复杂的硬件结构中解放出来,侧重于高职院校学生技能和动手操作能力的锻炼与提高。本书的读者在计算机上即可完成单片机电路设计、软件设计、调试与仿真,真正做到从概念到产品的完整设计,使学生理解和掌握从概念到产品的完整过程。
6.教学资源丰富,免费提供配套支持及服务
为方便教学,本书配套有电子教学课件、实训项目的仿真电路原理图、C语言源程序代码、基于C语言的试题库以及标准答案,每个项目后面还配有相应的习题。有需要的老师可以联系清华大学出版社索取。
本书的24个训练任务主要涉及单片机最小系统的应用、单片机I/O端口的应用,定时器/计数器与中断系统的应用、显示与键盘接口技术、A/D与D/A转换接口、串行接口通信技术等。
本书是2013年度浙江省教育厅课堂教学改革项目(kg2013851)的研究成果,2013年度全国教育信息技术研究“十二五”规划青年课题(136241319)的阶段性研究成果,2013年度浙江东方职业技术学院重点课题(DF201306)的研究成果,以及2013年浙江省大学生科技创新项目(2013R455001)的研究成果。
孙立书负责对本书的编写思路与大纲进行总体策划,指导全书的编写及对全书统稿,并编写了项目二~项目四和项目六。余伟协助完成统稿工作,并编写了项目一。熊邦国负责编写了项目五、项目七和项目十。邵康敏负责编写了项目八,吴誉负责编写了项目九。在此,对他们的辛勤付出表示诚挚的谢意。也对我的家人所给予我的工作上的莫大支持表示十分的感谢。
由于时间紧迫,加之编者水平有限,书中难免会存在一些不足和错误之处,真诚欢迎广大读者对本书提出建议和批评。
孙立书
2014年4月26日
项目一 认识单片机
1.1 任务一 了解单片机
1.1.1 单片机概述
1.1.2 AT89S51单片机结构
1.1.3 AT89S51单片机引脚功能
1.1.4 并行I/O端口电路
1.1.5 AT89S52单片机最小系统
1.1.6 MCS-51系列单片机的分类
1.2 任务二 MCS-51单片机的内存空间
1.2.1 数据存储器
1.2.2 特殊功能寄存器(SFR)
1.2.3 “头文件包含”处理
1.2.4 程序存储器
关键知识点小结
课后习题
项目二 单片机系统常用的开发工具
2.1 任务一 单片机常用的硬件开发工具
2.1.1 面包板、万用板和印制电路板
2.1.2 万用板和印制电路板
2.1.3 常用的焊接工具
2.2 任务二 单片机常用的软件开发工具
2.2.1 Proteus软件的使用方法
2.2.2 Keil软件的使用方法
2.3 任务三 单片机系统设计流程
2.3.1 需求分析
2.3.2 电路设计
2.3.3 程序设计
2.3.4 系统调试和仿真
关键知识点小结
课后习题
项目三 单片机实现对LED灯控制
3.1 任务一 点亮一个
3.1.1 单片机最小系统应用
3.1.2 C语言程序的基本构成
3.1.3 C语言基本语句
3.2 任务二 LED闪烁控制与实现
3.3 任务三 LED循环点亮控制与实现
3.4 任务四 技能拓展训练
3.4.1 显示花式一
3.4.2 显示花式二
3.4.3 显示花式三
关键知识点小结
课后习题
项目四 数码管显示控制
4.1 任务一 认识数码管
4.1.1 数码管应用
4.1.2 数码管的分类
4.1.3 数码管的结构和工作原理
4.1.4 数码管的显示方法
4.2 任务二 C语言语句结构
4.3 任务三 数码管循环显示0~F
4.3.1 需求分析
4.3.2 电路设计
4.3.3 软件设计
4.3.4 系统调试和仿真
4.4 任务四 多个数码管动态扫描显示
4.4.1 需求分析
4.4.2 电路设计
4.4.3 程序设计
4.4.4 系统调试和仿真
4.4.5 C语言数组
4.5 任务五 数码管静态扫描显示——0~99计数显示
4.5.1 需求分析
4.5.2 电路设计
4.5.3 软件设计
4.5.4 系统调试和仿真
4.5.5 C语言函数
4.6 任务六 七段字型译码器74LS47的应用
4.6.1 认识
4.6.2 74LS47引脚功能
4.6.3 应用74LS47实现0~20计数显示
关键知识点小结
课后习题
项目五 键盘的设计与实现
5.1 任务一 认识键盘
5.1.1 键盘分类
5.1.2 键盘工作原理
5.1.3 键盘防抖动措施
5.2 任务二 独立式键盘设计与实现
5.2.1 需求分析
5.2.2 电路设计
5.2.3 软件设计
5.2.4 系统调试和仿真
5.3 任务三 矩阵式键盘设计与实现
5.3.1 矩阵式键盘结构与原理
5.3.2 矩阵式键盘设计与实现
5.4 任务四 51单片机的中断系统与中断方式的矩阵键盘
5.4.1 MCS-51单片机的中断系统
5.4.2 MCS-51单片机的中断方式的矩阵键盘
关键知识点小结
课后习题
项目六 定时器/计数器
6.1 任务一 认识定时器计数器
6.1.1 定时器/计数器结构
6.1.2 定时器/计数器的工作原理
6.1.3 定时器/计数器结构
6.1.4 定时器/计数器的主要应用
6.1.5 定时器/计数器的工作方式
6.1.6 定时器/计数器相关寄存器
6.2 任务二 霓虹灯设计与实现
6.2.1 需求分析
6.2.2 电路设计
6.2.3 软件设计
6.3 任务三 制药厂装药丸生产线
6.3.1 需求分析
6.3.2 电路设计
6.3.3 程序设计
6.3.4 系统调试和仿真
6.4 任务四 设计简易时钟
6.4.1 需求分析
6.4.2 电路设计
6.4.3 程序设计
6.4.4 系统调试和仿真
关键知识点小结
课后习题
项目七 模拟量输入/输出设计与实现
7.1 任务一 认识ADC0809模数转换器
7.1.1 ADC0808/ADC0809结构及引脚
7.1.2 ADC0808/ADC0809工作过程及编程方法
7.2 任务二 模数转换显示
7.2.1 需求分析
7.2.2 电路设计
7.2.3 程序设计
7.2.4 系统调试和仿真
7.3 任务三 数字电压表设计与实现
7.3.1 需求分析
7.3.2 电路设计
7.3.3 程序设计
7.3.4 系统调试和仿真
7.4 任务四 认识DAC0832数模转换器
7.4.1 DAC0832的主要特性
7.4.2 DAC0832引脚功能
7.4.3 DAC0832工作方式
7.4.4 DAC转换器的性能参数
7.5 任务五 锯齿波发生器设计与实现
7.5.1 需求分析
7.5.2 电路设计
7.5.3 软件设计
7.5.4 系统调试和仿真
关键知识点小结
课后习题
项目八 单片机串行通信设计与实现
8.1 任务一 初识串行通信
8.2 任务二 认识AT89S52单片机串行口
8.2.1 单片机串行口结构
8.2.2 串行口通信设置
8.2.3 串行接口的波特率设计
8.3 任务三 使用AT89S52串行口——串行口工作方式
8.3.1 需求分析
8.3.2 电路设计
8.3.3 程序设计
8.3.4 系统调试和仿真
8.4 任务四 使用AT89S52串行口——串行口工作方式
8.4.1 需求分析
8.4.2 电路设计
8.4.3 程序设计
8.4.4 系统调试和仿真
8.5 任务五 使用AT89S52串行口——串行口工作方式
8.5.1 需求分析
8.5.2 电路设计
8.5.3 程序设计
8.5.4 系统调试和仿真
8.6 任务六 双机串行通信的实现
8.6.1 RS-232C基础知识
8.6.2 MAX232
8.6.3 双机串行通信的实现
关键知识点小结
课后习题
项目九 LCD液晶和LED点阵显示实现
9.1 任务一 认识1602LCD液晶
9.1.1 液晶显示方式
9.1.2 1602字符型LCD简介
9.2 任务二 使用1602液晶显示屏显示
9.2.1 需求分析
9.2.2 电路设计
9.2.3 程序设计
9.2.4 系统调试和仿真
9.3 任务三 认识12864LCD液晶
9.3.1 12864LCD液晶简介
9.3.2 字模软件的使用
9.4 任务四 使用12864LCD液晶显示屏显示
9.4.1 需求分析
9.4.2 电路设计
9.4.3 程序设计
9.4.4 系统调试和仿真
9.5 任务五 认识LED点阵
9.5.1 LED点阵结构
9.5.2 点阵显示方式
9.6 任务六 使用8×8LED点阵显示
9.6.1 需求分析
9.6.2 电路设计
9.6.3 程序设计
9.6.4 系统调试和仿真
9.7 任务七 使用8×8LED点阵拓展提高
9.7.1 需求分析
9.7.2 程序设计
关键知识点小结
课后习题
项目十 单片机综合项目设计与实现
10.1 任务一 简易音乐盒设计
10.1.1 乐曲的基本知识
10.1.2 需求分析
10.1.3 电路设计
10.1.4 程序设计
10.1.5 系统调试和仿真
10.2 任务二 液晶电子钟电路设计与实现
10.3 任务三 4路温度采集显示电路的设计与实现
参考文献