章单片机概述1
1.1单片机简介1
1.2单片机的发展历史1
1.3单片机的特点2
1.4单片机的应用领域3
1.5单片机的发展趋势3
1.6MCS-51系列与AT89S5x系列单片机4
1.6.1MCS-51系列单片机4
1.6.2AT89S5x系列单片机5
1.7各种衍生的8051单片机6
1.7.1STC系列单片机6
1.7.2C8051Fxxx系列单片机7
1.7.3ADμC812系列单片机8
1.7.4华邦W77系列、W78系列单片机8
1.8PIC系列单片机与AVR系列单片机8
1.8.1PIC系列单片机8
1.8.2AVR系列单片机9
1.9其他嵌入式处理器简介10
1.9.1DSP10
1.9.2嵌入式微处理器11
思考题及习题111
第2章AT89S51单片机的内部硬件结构12
2.1AT89S51单片机的硬件组成12
2.2AT89S51单片机的引脚功能13
2.2.1电源及时钟引脚13
2.2.2控制引脚13
2.2.3并行I/O口引脚14
2.3AT89S51单片机的CPU15
2.3.1运算器15
2.3.2控制器16
2.4AT89S51单片机存储器的结构17
2.4.1程序存储器空间17
2.4.2数据存储器空间18
2.4.3特殊功能寄存器18
2.4.4位地址空间21
2.5AT89S51单片机的并行I/O口23
2.5.1P0口23
2.5.2P1口24
2.5.3P2口24
2.5.4P3口25
2.6时钟电路与时序26
2.6.1时钟电路设计26
2.6.2机器周期、指令周期与指令时序27
2.7复位操作和复位电路28
2.7.1复位操作28
2.7.2复位电路设计28
2.8AT89S51单片机的最小应用系统29
2.9看门狗定时器的使用29
2.10低功耗节电模式30
2.10.1空闲模式31
2.10.2掉电模式31
思考题及习题232
第3章C51语言编程基础与KeilμVision34
3.1C51语言概述34
3.1.1C51语言与8051汇编语言的比较34
3.1.2C51语言与标准C语言的比较34
3.2C51程序设计基础35
3.2.1C51语言的数据类型与存储类型35
3.2.2C51语言的特殊功能寄存器及位变量定义39
3.2.3C51语言的绝对地址访问41
3.2.4C51语言的基本运算43
3.2.5C51语言的分支与循环程序结构45
3.2.6C51语言的数组51
3.2.7C51语言的指针53
3.3C51语言的函数54
3.3.1函数的分类54
3.3.2函数的调用55
3.3.3中断服务函数56
3.3.4变量及存储方式56
3.3.5宏定义与文件包含57
3.3.6库函数57
3.4使用KeilμVision开发C51程序58
3.4.1KeilμVision的基本操作58
3.4.2添加用户源程序文件60
3.4.3程序的编译与调试61
3.4.4工程的设置64
思考题及习题366
第4章虚拟仿真平台Proteus的使用67
4.1Proteus的基本功能67
4.2ProteusISIS的虚拟仿真68
4.3ProteusISIS环境简介69
4.3.1原理图编辑窗口69
4.3.2预览窗口70
4.3.3对象选择窗口70
4.3.4主菜单栏71
4.3.5主工具栏73
4.3.6工具箱74
4.3.7仿真工具栏75
4.3.8元件列表75
4.4ProteusISIS的编辑环境设置76
4.5ProteusISIS的系统运行环境设置77
4.6单片机系统的电路设计与虚拟仿真78
4.6.1电路设计与虚拟仿真的步骤78
4.6.2新建或打开一个设计文件78
4.6.3选择需要的元件到元件列表中79
4.6.4放置元件并连接电路81
4.6.5加载目标代码文件、设置时钟频率及仿真运行85
4.7Proteus的各种虚拟仿真工具85
4.7.1虚拟激励信号源85
4.7.2虚拟仪器90
4.7.3虚拟仪器的图表仿真99
4.7.4硬件断点的设置101
第5章单片机开关检测、键盘输入与显示接口设计104
5.1用单片机控制发光二极管显示104
5.1.1单片机与发光二极管的连接104
5.1.2I/O口的编程控制105
5.2开关状态检测108
5.2.1开关检测实例1108
5.2.2开关检测实例2109
5.3用单片机控制LED数码管显示110
5.3.1LED数码管的显示原理110
5.3.2LED数码管的静态显示与动态显示112
5.4用单片机控制LED点阵显示屏显示115
5.4.1LED点阵显示屏的结构与显示原理115
5.4.216×16LED点阵显示屏设计实例116
5.5用单片机控制LCD1602显示119
5.5.1LCD1602简介119
5.5.2LCD1602设计实例125
5.6用单片机控制LCD12864显示128
5.6.1引脚功能与显示原理129
5.6.2控制命令130
5.6.3LCD12864设计实例131
5.7键盘接口设计136
5.7.1键盘接口设计需要解决的问题136
5.7.2独立式键盘接口设计实例137
5.7.3矩阵式键盘接口设计实例143
5.7.4非编码键盘扫描方式的选择146
5.7.5单片机与HD7279A的接口设计147
思考题及习题5156
第6章中断系统的工作原理及应用158
6.1AT89S51单片机中断技术概述158
6.2AT89S51单片机中断系统结构158
6.2.1中断源158
6.2.2中断请求标志寄存器159
6.3中断允许控制与中断优先级控制160
6.3.1中断允许寄存器IE160
6.3.2中断优先级寄存器IP161
6.4响应中断请求的条件162
6.5外部中断请求的响应时间163
6.6外部中断的触发方式选择163
6.7中断请求的撤销164
6.8中断函数165
6.9中断系统的应用166
6.9.1单一外部中断的应用166
6.9.2两个外部中断的应用167
6.9.3中断嵌套的应用169
思考题及习题6170
第7章定时/计数器的工作原理及应用171
7.1定时/计数器的结构171
7.1.1工作方式控制寄存器TMOD171
7.1.2定时/计数器控制寄存器TCON172
7.2定时/计数器的4种工作方式172
7.2.1方式0172
7.2.2方式1173
7.2.3方式2174
7.2.4方式3174
7.3定时/计数器对外部输入信号的要求176
7.4定时/计数器的编程和应用176
7.4.1用P1口控制8个LED每0.5s闪亮一次176
7.4.2计数器的应用177
7.4.3控制P1.0引脚产生周期为2ms的方波179
7.4.4利用T1控制发出频率为1kHz的音频信号180
7.4.5制作LED数码管秒表182
7.4.6测量脉冲宽度——门控位的应用184
7.4.7LCD时钟的设计186
思考题及习题7188
第8章串行口的工作原理及应用190
8.1串行通信基础190
8.1.1并行通信与串行通信190
8.1.2同步通信与异步通信191
8.1.3串行通信的传输模式191
8.1.4串行通信的错误校验192
8.2串行口的结构192
8.2.1串行口控制寄存器SCON193
8.2.2特殊功能寄存器PCON194
8.3串行口的4种工作方式194
8.3.1方式0194
8.3.2方式1199
8.3.3方式2200
8.3.4方式3201
8.4多机通信201
8.5波特率的定义方法202
8.5.1波特率的定义203
8.5.2计算T1产生的波特率203
8.6串行口的应用204
8.6.1RS-232C、RS-422A与RS-485简介204
8.6.2方式1的应用设计实例207
8.6.3方式2和方式3的应用设计实例213
8.6.4多机通信的应用设计实例215
8.6.5单片机与PC机串行通信的设计实例222
8.6.6PC机与单片机或与多个单片机的串行通信226
思考题及习题8227
第9章单片机系统的并行扩展228
9.1系统并行扩展技术228
9.1.1系统并行扩展结构228
9.1.2地址空间分配229
9.1.3外部地址锁存器231
9.2外部RAM的并行扩展233
9.2.1常用的静态RAM芯片233
9.2.2读/写外部RAM的操作时序234
9.2.3并行扩展外部RAM设计实例235
9.2.4单片机扩展RAM6264设计实例237
9.3内部Flash存储器的编程238
9.3.1使用通用编程器239
9.3.2使用ISP下载线239
9.4E2PROM的并行扩展240
9.4.1并行E2PROM芯片简介240
9.4.2单片机扩展2864A设计实例241
9.5利用82C55扩展并行I/O口242
9.5.1并行I/O口扩展概述242
9.5.282C55简介243
9.5.382C55的三种工作方式246
9.5.4单片机与82C55的接口电路设计实例250
9.6利用74LSTTL电路扩展并行I/O口252
9.7利用单片机的串行口扩展并行I/O口253
9.7.1利用74LS165扩展并行输入口设计实例253
9.7.2利用74LS164扩展并行输出口设计实例254
思考题及习题9255
0章单片机系统的串行扩展257
10.1单总线串行扩展257
10.1.1数字温度传感器DS18B20简介257
10.1.2单总线串行扩展DS18B20实现温度测量系统设计实例260
10.2SPI总线串行扩展263
10.3I2C总线串行扩展264
10.3.1I2C总线系统的基本结构264
10.3.2I2C总线数据传送的规定265
10.3.3单片机的I2C总线扩展系统267
10.3.4I2C总线数据传送的模拟268
10.3.5利用I2C总线扩展AT24C02的IC卡设计实例271
思考题及习题10277
1章单片机与D/A转换器、A/D转换器的接口278
11.1单片机扩展D/A转换器概述278
11.2单片机扩展8位并行D/A转换器279
11.2.1DAC0832简介279
11.2.2单片机并行扩展DAC0832
的程控电压源设计实例280
11.2.3波形发生器设计实例281
11.3单片机扩展10位串行D/A
转换器286
11.3.1TLC5615简介286
11.3.2单片机扩展TLC5615
设计实例287
11.4单片机扩展A/D转换器概述290
11.5单片机扩展8位并行A/D转换器291
11.5.1单片机扩展ADC0809
设计实例292
11.5.2两路输入的数字电压表
设计实例294
11.6单片机扩展8位串行A/D转换器297
11.6.1TLC549简介297
11.6.2单片机扩展TLC549设计
实例298
11.7单片机扩展12位串行A/D转换器300
11.7.1TLC2543简介300
11.7.2单片机扩展TLC2543
设计实例302
思考题及习题11305
2章单片机应用系统的设计306
12.1单片机应用系统的设计步骤306
12.2单片机应用系统设计应当考虑的问题307
12.2.1硬件设计应当考虑的问题307
12.2.2典型的单片机应用系统组成308
12.2.3系统设计中的总线驱动309
12.3单片机应用系统的仿真开发与调试310
12.4单片机应用系统设计实例314
12.4.1单片机控制步进电机设计实例314
12.4.2单片机控制直流电机设计实例316
12.4.3频率计设计实例318
12.4.4模拟电话拨号设计实例321
12.4.58位竞赛抢答器设计实例326
12.4.6基于时钟/日历芯片DS1302
的电子钟设计实例331
思考题及习题12337
参考文献338