
本书按照企业开发流程,通过企业典型的工作任务将单片机及C语言程序设计的知识点分解到各个项目及任务中,通过单片机最小系统、单片机I/O接口、定时器/计数器、中断系统、串口通信、单片机的扩展、单片机的A/D转换7个知识点9个实训项目的学习,达到将知识学习由浅入深、能力培养由简单到复杂的目的。
本书适合单片机及C语言程序设计的初学者使用,也适合各高等职业院校作为理论教学和实践教学教材使用。
本书封面贴有清华大学出版社防伪标签,无标签者不得销售。
目前单片机的教材种类繁多,但大多数教材内容以汇编语言为主,面向电子信息类的硬件知识讲授较软件知识的讲授要多一些。随着科技的发展和进步,现代工业中出现了跨电子、机械、信息等多门学科知识的综合性的新行业,如嵌入式应用开发行业,它不仅重视硬件的开发,同时注重软件的开发,许多传统的单片机也逐步发展为嵌入式单片机,其开发由原来的使用汇编语言逐步发展为使用C语言开发。为适应时代的发展,本书以“做中学、学中做、做学结合”为教学模式,以企业工作过程为导向进行编写。
本书根据初学者单片机的认知规律,将单片机的7个知识点——单片机最小系统、单片机I/O接口、定时器/计数器、中断系统、串口通信、单片机的扩展、单片机的A/D转换分解到9个实训项目中,每个项目又分解为若干个任务,每个任务结合企业工作流程及产品开发流程将知识点一一分别讲解,以此达到知识与技能殊途同归的教学目标。
本书具有以下特点。
(1) 以企业工作过程为导向,开发教学项目和实施教学内容。
企业工作过程往往有助于读者对单片机相关职业的衔接需求,本书充分体现了企业的工作理念和工作方法,从而更好地贴近职业的需求。
(2) 以职业岗位需求出发,以单片机为主线,采用C语言编程。
C语言是应用非常广泛的一门计算机语言。现代化科学技术领域中,C语言占有相当高的比重。单片机应用开发目前也在朝着高级语言方面发展,因此C语言在单片机上的应用也越来越广泛。C语言在单片机上应用开发方面的最大特点是,可以屏蔽一些不易掌握、难以理解或较复杂的硬件知识,可以较为简单地完成相关操作,使单片机应用开发的学习和实践得到有效的提高。
(3) 以职业岗位需求为目标,设计工作任务,构建具有针对性、扩展性和系统性的教学内容。
本书共22个工作任务,任务安排按照知识点由简单到复杂、技能训练由单一到综合的原则构建,综合能力体现了知识点的针对性、拓展性,系统的延伸性及系统性。
(4) 以学习兴趣为出发点,采用项目化、一体化教学模式。
学习兴趣是最好的老师,本书为了激发读者的学习兴趣,将不同的教学内容分解到各个项目中,并采用仿真教学的模式使读者在学习知识的同时,能够通过计算机仿真学习单片机的设计和制作,更好地提高学习效果。
本书由宋海兰、于薇、钟玉珍担任主编,乔丹、田晶、王莹、夏丽荣担任副主编,姜惠民担任主审。具体分工如下: 田晶、夏丽荣编写项目1和附录A,王莹编写项目2和项目8(部分),乔丹编写项目3,宋海兰、钟玉珍编写项目5、项目9和项目10,于薇编写项目4、项目6、项目7、项目8(部分)和附录B。全书由于薇组织编写并统稿。丁磊、刘艳锋、迟恩宇、赵桂茹、刘心美、孙佳帝、金山、金照春、王东、许海燕、那君、祝海英、李京泽、郭明珠、王鹤参与了本书的资料整理工作,并提供相关的实验素材,在此一并表示感谢!
为了方便教师的讲授和学生的自学,本书配有电子教学课件、Proteus电路设计文件、C语言源文件和可执行文件,以及书中的习题参考答案等,读者可从清华大学出版社网站http://www.tup.tsinghua.edn.cn上下载。
由于作者水平有限,书中难免有不足之处,欢迎使用者对本书批评指导。
项目1单片机与开发环境1任务1.1了解单片机1
1.1.1单片机概述1
1.1.2MCS51单片机简介5
1.1.3单片机的开发环境7
1.1.4单片机开发流程10
任务1.2用Proteus设计单片机最小系统11
1.2.1Proteus简介11
1.2.2单片机最小系统12
1.2.3任务实施14
任务1.3用Keil建立一个“helloworld”C51源文件20
1.3.1Keil简介20
1.3.2C语言概述21
1.3.3任务实施21
项目总结26
练习题26
项目2单片机控制LED闪烁27
任务2.1LED单灯闪烁27
2.1.1硬件电路图的设计28
2.1.2单片机的P1口29
2.1.3单片机控制灯的闪烁29
2.1.4单片机中的程序及数据存储32
2.1.5任务实施37
任务2.28LED流水灯闪烁38
2.2.1C51的位运算符39
2.2.2单片机I/O端口40
2.2.3任务实施44
项目总结46
练习题46
项目3单片机控制数码管的显示48
任务3.1单数码管轮流显示0~9十个数483.1.1硬件知识49
3.1.2C51语言知识51
3.1.3任务实施54
单片机原理与应用设计任务3.2四数码管动态显示0~9十个数57
3.2.1位选和段选58
3.2.2数码管的动态显示和静态显示58
3.2.3任务实施59
任务3.38×8点阵显示62
3.3.1LED点阵63
3.3.28×8点阵显示屏的结构63
3.3.3点阵的引脚结构65
3.3.48×8LED点阵的汉字显示编码65
3.3.5LED点阵的显示方式66
3.3.6任务实施66
项目总结68
练习题69
项目4单片机控制按键中断71
任务4.1单键点亮流水灯71
4.1.1中断的概念72
4.1.2中断源72
4.1.3中断控制相关寄存器73
4.1.4中断向量74
4.1.5中断过程75
4.1.6任务实施76
任务4.2多键改变8LED流水灯状态77
4.2.1中断嵌套78
4.2.2任务实施78
任务4.3矩阵键盘点亮16灯81
4.3.1矩阵键盘82
4.3.2任务实施83
项目总结86
练习题86
项目5单片机的定时与计数88
任务5.1单灯1秒定时亮/灭88
5.1.1定时器/计数器的结构和工作原理89
5.1.2定时器/计数器的相关寄存器90
5.1.3定时器/计数器的工作方式92
5.1.4定时器/计数器定时的实现95
5.1.5任务实施96
任务5.28LED流水灯定时1秒亮/灭100
5.2.1定时器/计数器工作方式2101
5.2.2任务实施101
任务5.3外部脉冲计数105
5.3.1外部脉冲计数的工作原理106
5.3.2任务实施106
任务5.4单音阶音乐108
5.4.1单片机发声原理108
5.4.2任务实施110
项目总结112
练习题112
项目6单片机的串口输出113
任务6.1单数码管串口通信113
6.1.1串口通信的基础知识114
6.1.251单片机的串行口117
6.1.3任务实施119
任务6.2单片机双机通信121
6.2.1双机通信122
6.2.2波特率的应用122
6.2.3任务实施124
任务6.3单片机多机通信127
6.3.1串口工作方式2、方式3的多机通信128
6.3.2多机通信的工作原理128
6.3.3任务实施129
项目总结133
练习题134
项目7单片机的系统扩展135
任务7.18255扩展并行I/O 135
7.1.1单片机系统扩展概述136
7.1.2单片机存储器的扩展137
7.1.3单片机I/O的扩展142
7.1.4任务实施147
任务7.2单片机扩展串行EEPROM151
7.2.1串行存储器概述151
7.2.2AT24C02C芯片152
7.2.3数据传送过程152
7.2.4任务实施154
项目总结159
练习题159
项目8单片机的信号转换160
任务8.1制作数字电压表160
8.1.1A/D转换的基础知识161
8.1.2ADC0809 A/D转换器及接口设计161
8.1.3单片机与A/D转换器接口程序设计163
8.1.4任务实施163
任务8.2A/D转换器及接口设计168
8.2.1工作原理169
8.2.2任务实施170
项目总结174
练习题174
项目9综合实训1——简易数字钟的设计175
实训目标175
实训要求175
实训准备175
相关知识176
指针176
系统方案的选择177
实训步骤178
项目10综合实训2——单片机与步进电机的接口技术187
实训目标187
实训要求187
实训准备187
相关知识187
步进电机概述187
步进电机分类188
步进电机工作原理188
实训步骤190
附录AC51语言基本语法193
附录B单片机常用元件说明 203
参考文献211
任务1.1了解单片机1
1.1.1单片机概述1
1.1.2MCS51单片机简介5
1.1.3单片机的开发环境7
1.1.4单片机开发流程10
任务1.2用Proteus设计单片机最小系统11
1.2.1Proteus简介11
1.2.2单片机最小系统12
1.2.3任务实施14
任务1.3用Keil建立一个“hello world”C51源文件20
1.3.1Keil简介20
1.3.2C语言概述21
1.3.3任务实施21
项目总结25
练习题26
项目2单片机控制LED闪烁27
任务2.1LED单灯闪烁27
2.1.1硬件电路图的设计28
2.1.2单片机的P1口29
2.1.3单片机控制灯的闪烁29
2.1.4单片机中的程序及数据存储32
2.1.5任务实施37
任务2.28LED流水灯闪烁38
2.2.1C51的位运算符39
2.2.2单片机I/O端口40
2.2.3任务实施44
项目总结46
练习题46
项目3单片机控制数码管的显示48
任务3.1单数码管轮流显示0~9十个数483.1.1硬件知识49
3.1.2任务实施54
任务3.2四数码管动态显示0~9十个数57
单片机原理与应用设计3.2.1位选和段选57
3.2.2数码管的动态显示和静态显示58
3.2.3任务实施58
任务3.38×8点阵显示61
3.3.1LED点阵62
3.3.28×8点阵显示屏的结构62
3.3.3点阵的引脚结构64
3.3.48×8LED点阵的汉字显示编码64
3.3.5LED点阵的显示方式65
3.3.6任务实施65
项目总结67
练习题68
项目4单片机控制按键中断70
任务4.1单键点亮流水灯70
4.1.1中断的概念71
4.1.2中断源71
4.1.3中断控制相关寄存器72
4.1.4中断向量73
4.1.5中断过程74
4.1.6任务实施75
任务4.2多键改变8LED流水灯状态76
4.2.1中断嵌套77
4.2.2任务实施77
任务4.3矩阵键盘点亮16灯79
4.3.1矩阵键盘80
4.3.2任务实施81
项目总结84
练习题84
项目5单片机的定时与计数86
任务5.1单灯1秒钟定时亮灭86
5.1.1定时器/计数器的结构和工作原理87
5.1.2定时器/计数器的相关寄存器88
5.1.3定时器/计数器的工作方式90
5.1.4定时器/计数器定时的实现93
5.1.5任务实施94
任务5.28LED流水灯定时1s亮灭98
5.2.1定时器/计数器工作方式299
5.2.2任务实施99
任务5.3外部脉冲计数103
5.3.1外部脉冲计数的工作原理104
5.3.2任务实施104
任务5.4单音阶音乐106
5.4.1单片机发声原理106
5.4.2任务实施108
项目总结110
练习题110
项目6单片机的串口输出111
任务6.1单数码管串口通信111
6.1.1串口通信的基础知识112
6.1.251单片机的串行口115
6.1.3任务实施117
任务6.2单片机双机通信119
6.2.1双机通信120
6.2.2波特率的应用120
6.2.3任务实施122
任务6.3单片机多机通信125
6.3.1串口工作方式2、方式3的多机通信126
6.3.2多机通信的工作原理126
6.3.3任务实施127
项目总结131
练习题132
项目7单片机的系统扩展133
任务7.18255扩展并行I/O133
7.1.1单片机系统扩展概述134
7.1.2单片机存储器的扩展135
7.1.3单片机I/O的扩展140
7.1.4任务实施145
任务7.2单片机扩展串行EEPROM149
7.2.1串行存储器概述149
7.2.2AT24C02C芯片150
7.2.3数据传送过程150
7.2.4任务实施152
项目总结157
练习题157
项目8单片机的信号转换158
任务8.1制作数字电压表158
8.1.1A/D转换的基础知识159
8.1.2ADC0809 A/D转换器及接口设计159
8.1.3单片机与A/D转换器接口程序设计161
8.1.4任务实施161
任务8.2A/D转换器及接口设计166
8.2.1工作原理167
8.2.2任务实施168
项目总结172
练习题172
项目9综合实训1——简易数字钟的设计173
实训目标173
实训要求173
实训准备173
相关知识173
指针173
系统方案的选择175
实训步骤176
项目9综合实训2——单片机与步进电机的接口技术185
实训目标185
实训要求185
实训准备185
相关知识185
步进电机概述185
步进电机分类186
步进电机工作原理186
实训步骤188
附录AC51语言基本语法191
附录B单片机常用元件说明201
参考文献209