标题：软件工程实用教程（第2版）
基本信息
书　名　单片机原理及接口技术(C51编程)
丛 书 名　21世纪高等学校计算机规划教材——名家系列  [1]
标准书号　ISBN 978-7-115-25665-2
编目分类　TP368.1
作　者　张毅刚 主编
译　者　--
责任编辑　武恩玉
开　本　16 开
印　张　18
字　数　474 千字
页　数　280 页
装　帧　平装
版　次　第1版第1次
初版时间　2011年8月
本 印 次　2011年8月
首 印 数　-- 册
定　价　34.00 元
内容提要
《单片机原理及接口技术(C51编程)》详细介绍了美国ATMEL公司的AT89S51单片机的硬件结构和片内外围部件的工作原理，Keil C51编程基础知识，并从应用设计的角度介绍AT89S51单片机的各种常用的硬件接口设计，以及相应的Keil C51接口驱动程序设计。本书最后介绍了AT89S51单片机应用系统设计以及一些典型应用举例。
《单片机原理及接口技术(C51编程)》可作为各类工科院校、职业技术学院电子技术、计算机、工业自动化、自动控制、智能仪器仪表、电气工程、机电一体化等专业单片机课程教材，也可供从事单片机应用设计的工程技术人员参考。
目　录

第1章　单片机概述　1
1.1　什么是单片机　1
1.2　单片机的发展历史　2
1.3　单片机的特点　2
1.4　单片机的应用　3
1.5　单片机的发展趋势　4
1.6　MCS-51系列与AT89S5x系列单片机　5
1.6.1　MCS-51系列单片机　5
1.6.2　AT89系列单片机　6
1.6.3　AT89系列单片机的型号说明　7
1.7　各种衍生品种的51单片机　8
1.7.1　STC系列单片机　9
1.7.2　C8051F×××单片机　10
1.7.3　ADμC812单片机　10
1.7.4　华邦W77系列、W78系列单片机　10
1.8　PIC系列单片机与AVR系列单片机　10
1.8.1　PIC系列单片机　11
1.8.2　AVR系列单片机　12
1.9　其他的嵌入式处理器简介　12
1.9.1　嵌入式DSP处理器　13
1.9.2　嵌入式微处理器　13
思考题及习题　14
第2章　AT89S51单片机硬件结构　15
2.1　AT89S51单片机的硬件组成　15
2.2　AT89S51的引脚功能　17
2.2.1　电源及时钟引脚　17
2.2.2　控制引脚　18
2.2.3　并行I/O口引脚　18
2.3　AT89S51的CPU　19
2.3.1　运算器　19
2.3.2　控制器　21
2.4　AT89S51单片机存储器的结构　21
2.4.1　程序存储器空间　22
2.4.2　数据存储器空间　23
2.4.3　特殊功能寄存器　23
2.4.4　位地址空间　26
2.5　AT89S51单片机的并行I/O端口　27
2.6　时钟电路与时序　29
2.6.1　时钟电路设计　29
2.6.2　机器周期、指令周期与指令时序　30
2.7　复位操作和复位电路　31
2.7.1　复位操作　31
2.7.2　复位电路设计　31
2.8　低功耗节电模式　33
2.8.1　空闲模式　33
2.8.2　掉电运行模式　34
2.8.3　掉电和空闲模式下的WDT　34
思考题及习题　35
第3章　C51语言编程基础　37
3.1　编程语言Keil C51简介　37
3.1.1　Keil C51简介　37
3.1.2　C51与标准C的比较　38
3.2　Keil C51的开发工具　39
3.2.1　集成开发环境Keil μVision3简介　39
3.2.2　Keil μVision3软件的安装、启动和运行　40
3.3　C51语言程序设计基础　40
3.3.1　C51语言中的数据类型与存储类型　41
3.3.2　C51语言的特殊功能寄存器及位变量定义　45
3.3.3　C51语言的绝对地址访问　47
3.3.4　C51的基本运算　48
3.3.5　C51的分支与循环程序结构　50
3.3.6　C51的数组　57
3.3.7　C51的指针　58
3.4　C51语言的函数　60
3.4.1　函数的分类　60
3.4.2　函数的参数与返回值　61
3.4.3　函数的调用　62
3.4.4　中断服务函数　63
3.4.5　变量及存储方式　63
3.4.6　宏定义与文件包含　64
3.4.7　库函数　65
3.5　软件仿真开发工具Proteus与Keil μVision3的联调　65
3.5.1　软件仿真开发工具Proteus简介　65
3.5.2　Proteus与Keil μVision3的联调　66
思考题及习题　67
第4章　AT89S51片内并行端口的原理及编程　68
4.1　AT89S51的并行I/O端口的结构及工作原理　68
4.1.1　P0口　68
4.1.2　P1口　70
4.1.3　P2口　70
4.1.4　P3口　71
4.1.5　P1～P3口驱动LED发光二极管的问题　72
4.2　并行I/O端口的C51编程举例　73
4.2.1　从左到右的流水灯的制作　73
4.2.2　左右来回循环的流水灯的制作　73
4.2.3　开关量检测指示器1　76
4.2.4　开关量检测指示器2　76
思考题及习题　77
第5章　AT89S51单片机的中断系统　79
5.1　AT89S51中断技术概述　79
5.2　AT89S51中断系统结构　79
5.2.1　中断请求源　80
5.2.2　中断请求标志寄存器　80
5.3　中断允许与中断优先级的控制　81
5.3.1　中断允许寄存器IE　82
5.3.2　中断优先级寄存器IP　82
5.4　响应中断请求的条件　84
5.5　外部中断的响应时间　85
5.6　外部中断的触发方式选择　86
5.6.1　电平触发方式　86
5.6.2　跳沿触发方式　86
5.7　中断请求的撤销　86
5.8　中断函数　87
5.9　C51编程举例　88
5.9.1　单一外中断的应用　88
5.9.2　两个外中断的应用　89
5.9.3　中断嵌套　91
5.9.4　多外部中断源系统设计　92
思考题及习题　93
第6章　AT89S51单片机的定时器/计数器　95
6.1　定时器/计数器的结构　95
6.1.1　工作方式控制寄存器TMOD　96
6.1.2　定时器/计数器控制寄存器TCON　96
6.2　定时器/计数器的4种工作方式　97
6.2.1　方式0　97
6.2.2　方式1　98
6.2.3　方式2　98
6.2.4　方式3　99
6.3　对外部输入的计数信号的要求　100
6.4　定时器/计数器的编程和应用　101
6.4.1　P1口外接的8只LED每0.5s闪亮一次　101
6.4.2　计数器的应用　102
6.4.3　扩展一个外部中断源　103
6.4.4　P1.0上产生周期为2ms的方波　104
6.4.5　P1.1上产生周期为1s的方波　104
6.4.6　T1控制发出1kHz的音频信号　105
6.4.7　测量脉冲宽度——门控位GATEx的应用　106
6.4.8　实时时钟的设计　107
思考题及习题　108
第7章　AT89S51单片机的串行口　110
7.1　串行口的结构　110
7.1.1　串行口控制寄存器SCON　110
7.1.2　特殊功能寄存器PCON　112
7.2　串行口的4种工作方式　112
7.2.1　方式0　112
7.2.2　方式1　116
7.2.3　方式2　117
7.2.4　方式3　118
7.3　多机通信　119
7.4　波特率的制定方法　120
7.4.1　波特率的定义　120
7.4.2　定时器T1产生波特率的计算　120
7.5　串行通信的应用设计　122
7.5.1　各种串行通信接口标准　122
7.5.2　方式1的应用　124
7.5.3　方式2和方式3的应用　127
7.5.4　主从式多机通信的应用　129
7.5.5　单片机与PC的串行通信　133
7.5.6　PC与单片机或与多个单片机的串行通信接口设计　135
思考题及习题　136
第8章　AT89S51单片机外部存储器的扩展　138
8.1　系统扩展结构　138
8.2　地址空间分配和外部地址锁存器　139
8.2.1　存储器地址空间分配　139
8.2.2　外部地址锁存器　142
8.3　程序存储器EPROM的扩展　144
8.3.1　常用的EPROM芯片　144
8.3.2　程序存储器的操作时序　146
8.3.3　AT89S51单片机与EPROM的接口电路设计　148
8.4　静态数据存储器RAM的扩展　149
8.4.1　常用的静态RAM(SRAM)芯片　149
8.4.2　外扩数据存储器的读写操作时序　150
8.4.3　AT89S51单片机与RAM的接口电路设计　151
8.5　EPROM和RAM的综合扩展　153
8.5.1　综合扩展的硬件接口电路　153
8.5.2　外扩存储器电路的编程　155
8.6　片内Flash存储器的编程　155
8.6.1　通用编程器编程　157
8.6.2　ISP编程　157
思考题及习题　158
第9章　AT89S51单片机的I/O扩展　160
9.1　I/O接口扩展概述　160
9.1.1　扩展的I/O接口功能　160
9.1.2　I/O端口的编址　160
9.1.3　I/O数据的传送方式　161
9.1.4　I/O接口电路　161
9.2　AT89S51扩展I/O接口芯片82C55的设计　162
9.2.1　82C55芯片简介　162
9.2.2　工作方式选择控制字及端口PC置位/复位控制字　163
9.2.3　82C55的3种工作方式　165
9.2.4　AT89S51单片机与82C55的接口设计　169
9.3　利用74LSTTL电路扩展并行I/O口　171
9.4　用AT89S51单片机的串行口扩展并行口　172
9.4.1　用74LS165扩展并行输入口　172
9.4.2　用74LS164扩展并行输出口　173
9.5　用I/O口控制的声音报警接口　174
9.5.1　扬声器报警接口　174
9.5.2　音乐报警接口　176
思考题及习题　176
第10章　AT89S51单片机与输入/输出外设的接口　178
10.1　LED数码管显示器的接口设计　178
10.1.1　LED数码管的工作原理　178
10.1.2　LED数码管显示器接口设计举例　179
10.2　键盘的接口设计　183
10.2.1　键盘接口应解决的问题　183
10.2.2　键盘接口设计举例　184
10.2.3　键盘扫描方式的选取　188
10.3　键盘/显示器接口的设计实例　188
10.3.1　利用并行I/O芯片82C55实现键盘/显示器接口　188
10.3.2　利用串行口实现的键盘/显示器接口　191
10.3.3　专用接口芯片HD7279实现的键盘/显示器控制　193
10.4　AT89S51单片机与液晶显示器的接口　204
10.4.1　LCD显示器的分类　204
10.4.2　点阵字符型液晶显示模块介绍　204
10.4.3　AT89S51单片机与LCD的接口及软件编程　208
10.5　AT89S51单片机与微型打印机TP(P-40A/16A的接口　211
10.6　AT89S51单片机与BCD码拨盘的接口设计　215
思考题及习题　216
第11章　AT89S51单片机与D/A、A/D转换器的接口　217
11.1　AT89S51单片机与DAC的接口　217
11.1.1　D/A转换器简介　217
11.1.2　AT89S51单片机与8位D/A转换器0832的接口设计　218
11.2　AT89S51单片机与ADC的接口　225
11.2.1　A/D转换器简介　225
11.2.2　AT89S51与逐次比较型8位A/D转换器ADC0809的接口　226
11.2.3　AT89S51与逐次比较型12位A/D转换器AD1674的接口　230
11.3　AT89S51单片机与V/F转换器的接口　234
11.3.1　用V/F转换器实现A/D转换的原理　235
11.3.2　常用V/F转换器LMX31简介　235
11.3.3　V/F转换器与MCS-51单片机接口　236
11.3.4　LM331应用举例　237
思考题及习题　238
第12章　单片机的串行扩展技术　239
12.1　单总线串行扩展　239
12.2　SPI总线串行扩展　240
12.2.1　SPI总线的扩展结构　241
12.2.2　扩展带SPI串口的A/D转换器TLC2543　242
12.3　I2C总线的串行扩展　243
12.3.1　I2C串行总线系统的基本结构　244
12.3.2　I2C总线的数据传送规定　244
12.3.3　AT89S51的I2C总线扩展系统　247
12.3.4　I2C总线数据传送的模拟　248
12.3.5　I2C总线在IC卡中的应用　251
思考题及习题　255
第13章　AT89S51单片机的应用设计与调试　256
13.1　单片机应用系统的设计步骤　256
13.2　单片机应用系统设计　257
13.2.1　硬件设计应考虑的问题　257
13.2.2　典型的单片机应用系统　258
13.2.3　系统设计中的地址空间分配与总线驱动　259
13.2.4　应用设计例1——最小应用系统设计　261
13.2.5　应用设计例2——数字电压表的设计　262
13.2.6　应用设计例3——带有报警功能的温度测量仪的设计　264
13.3　单片机应用系统的仿真开发与调试　266
13.3.1　仿真开发系统的种类与基本功能　267
13.3.2　仿真开发系统简介　267
13.3.3　用户样机的仿真调试　270
13.4　单片机应用系统的抗干扰与可靠性设计　272
13.4.1　AT89S51片内看门狗定时器的使用　273
13.4.2　软件滤波　273
13.4.3　开关量输入/输出软件抗干扰设计　274
13.4.4　过程通道干扰的抑制措施——隔离　275
13.4.5　印刷电路板抗干扰布线的基本原则　276
思考题及习题　278
参考文献　280