第1章 单片机技术概述 1
1.1 单片机的发展 1
1.2 单片机的特点 2
1.3 单片机的应用 4
1.4 常用单片机简介 5
1.5 单片机常用术语 7
第2章 MCS-51单片机硬件基础 11
2.1 MCS-51单片机内部结构及CPU 11
2.1.1 内部结构 11
2.1.2 8051CPU 12
2.2 MCS-51单片机引脚功能 15
2.3 MCS-51单片机存储器结构 18
2.3.1 程序存储器 19
2.3.2 数据存储器 20
2.4 MCS-51单片机时钟及CPU时序 23
2.4.1 单片机时钟 23
2.4.2 CPU时序 25
2.5 MCS-51单片机低功耗工作方式 26
第3章 MCS-51单片机C语言程序设计基础 27
3.1 C51概述 27
3.2 C51数据类型 27
3.3 C51变量定义 30
3.3.1 变量存储类型与存储区 30
3.3.2 变量的绝对定位 31
3.3.3 C51位变量的定义 32
3.3.4 C51特殊功能寄存器的定义 34
3.3.5 C51指针的定义 35
3.3.6 指针的应用 35
3.4 C51函数的定义 37
3.5 C51中的运算符和表达式 38
3.6 C51语句和控制结构 44
3.7 C51编程实例 50
3.8 C51程序开发软件Keil C简介 51
3.8.1 建立工程项目 52
3.8.2 建立C语言程序文件并编译 54
3.8.3 调试与仿真 57
第4章 项目一:按键控制8个LED灯花样显示 61
4.1 MCS-51单片机I/O口结构及工作原理 61
4.1.1 P0口结构与应用 61
4.1.2 P1口结构与应用 65
4.1.3 P2口结构与应用 66
4.1.4 P3口结构与应用 66
4.2 MCS-51单片机I/O口编程 67
4.3 项目设计 69
第5章 项目二:两级外部中断控制LED灯做不同显示 73
5.1 中断技术概述 73
5.1.1 中断的概念 73
5.1.2 中断的功能 74
5.2 MCS-51单片机中断系统 74
5.2.1 中断系统结构 74
5.2.2 中断系统中的特殊功能寄存器 75
5.3 外部中断功能编程实例 80
5.4 项目设计 81
5.5 外部中断源扩展 84
第6章 项目三:单片机控制多位LED数码管动态显示 87
6.1 LED数码管结构及显示原理 87
6.2 LED数码管静态显示及实例 90
6.3 LED数码管动态显示及实例 92
6.4 项目设计 94
第7章 项目四:单片机控制16×16LED点阵显示汉字 99
7.1 LED点阵结构及显示原理 99
7.1.1 LED点阵结构 99
7.1.2 显示原理 100
7.2 8×8点阵应用实例 101
7.3 16×16点阵汉字显示 104
7.3.1 LED汉字点阵的编码原理 104
7.3.2 字模的提取 105
7.3.3 16×16LED点阵构成 106
7.3.4 应用实例 106
7.4 项目设计 110
第8章 项目五:单片机4×4矩阵键盘输入并显示 123
8.1 按键的识别与抖动 123
8.2 独立式键盘设计 124
8.3 矩阵式键盘结构与扫描方法 125
8.3.1 矩阵式键盘结构 125
8.3.2 行扫描法原理及编程 126
8.3.3 行列反转法原理及编程 127
8.4 项目设计 128
第9章 项目六:单片机对外部脉冲计数并定时控制 135
9.1 MCS-51单片机定时器/计数器结构 135
9.2 AT89C51单片机定时器/计数器工作方式与工作模式 136
9.2.1 特殊功能寄存器TMOD和TCON 137
9.2.2 定时器的四种模式及应用 138
9.3 AT89C51单片机定时器/计数器编程实例 141
9.3.1 编程初始化步骤 141
9.3.2 编程实例 142
9.4 项目设计 147
第10章 项目七:LCD1602液晶显示的电子密码锁设计 151
10.1 LCD1602液晶显示模块 151
10.2 LCD1602液晶显示设计实例 156
10.3 项目设计 160
第11章 项目八:单片机与PC机互发数据 171
11.1 数据通信方式 171
11.2 AT89C51单片机串行口结构及工作原理 173
11.3 串行口工作方式及控制 175
11.3.1 串口相关的特殊功能寄存器 175
11.3.2 串口工作方式 177
11.3.3 波特率设计 179
11.4 串口应用实例 180
11.4.1 串口编程初始化步骤 180
11.4.2 方式0应用实例 181
11.4.3 方式1应用实例 184
11.4.4 方式3应用实例 185
11.5 项目设计 186
第12章 项目九:单片机片外三总线扩展并行SRAM 195
12.1 MCS-51单片机并行扩展三总线结构 195
12.2 扩展片外并行RAM方法 196
12.2.1 常用静态RAM芯片 196
12.2.2 单片机与6264的接口设计 197
12.2.3 访问片外RAM的软件编程 201
12.3 项目设计 202
第13章 项目十:ADC0809多通道电压采集与显示 205
13.1 ADC0809简介 205
13.2 ADC0809与AT89C51的接口及编程方法 207
13.2.1 采用I/O口控制方式 207
13.2.2 采用总线操作方式 209
13.3 项目设计 212
第14章 项目十一:基于DAC0832的数字波形发生器 217
14.1 DAC0832简介 217
14.2 DAC0832与AT89C51的接口及编程方法 219
14.2.1 直通方式 219
14.2.2 单缓冲方式 220
14.2.3 双缓冲方式 221
14.3 项目设计 222
第15章 项目十二:AT89C51扩展串行E2PROM AT24C02 227
15.1 I2C总线简介 227
15.1.1 I2C总线信号逻辑 228
15.1.2 I2C总线数据传输过程 229
15.2 AT89C51扩展I2C总线方法 230
15.3 AT89C51扩展I2C总线编程 231
15.4 项目设计 233
第16章 项目十三:单片机扩展SPI总线接口 239
16.1 SPI总线简介 239
16.2 AT89C51扩展SPI总线接口方法 240
16.3 AT89C51扩展SPI总线程序编写方法 240
16.3.1 数据输出 241
16.3.2 数据输入 242
16.3.3 数据同时输入/输出 243
16.4 项目设计1:AT89C52扩展串行A/D转换器TLC2543 244
16.4.1 TLC2543简介 245
16.4.2 项目设计 248
16.5 项目设计2:AT89C52扩展串行D/A转换器TLC5615 251
16.5.1 TLC5615简介 251
16.5.2 项目设计 253
附录A ASCII码表 257
附录B C51库函数 259
参考文献 267