第1章 单片机基础知识 1
1.1 概述 1
1.1.1 计算机 1
1.1.2 微型计算机 2
1.1.3 单片机 2
1.1.4 嵌入式系统 3
1.2 单片机中数的表示方法 3
1.2.1 数制及其转换 3
1.2.2 BCD码 6
1.2.3 ASCII码 6
1.2.4 单片机中数的表示方法 7
1.3 单片机的内部结构 11
1.3.1 中央处理器CPU 11
1.3.2 单片机中的数据运算 12
1.3.3 单片机的存贮器 16
1.3.4 单片机的输入/输出接口(I/O) 17
1.4 典型单片机产品 18
1.4.1 单片机的类型和特性 18
1.4.2 典型的单片机产品 18
1.5 单片机的应用和应用系统结构 21
1.5.1 单片机的应用 21
1.5.2 单片机应用系统的结构 22
习题 23
第2章 51系列单片机系统结构 24
2.1 总体结构 24
2.1.1 51系列单片机一般的总体结构 24
2.1.2 89C52的总体结构 24
2.2 存贮器组织 27
2.2.1 程序存贮器 28
2.2.2 内部RAM数据存贮器 29
2.2.3 特殊功能寄存器 30
2.2.4 位地址空间 31
2.2.5 外部RAM和I/O口 33
2.3 时钟、时钟电路、CPU定时 33
2.4 复位和复位电路 36
2.4.1 外部复位 37
2.4.2 内部复位 38
2.4.3 系统复位 38
2.5 中断系统 39
2.5.1 中断概念 39
2.5.2 89C52中断系统 39
2.5.3 外部中断触发方式选择 44
2.5.4 51系列其他单片机的中断系统 44
习题 45
第3章 51系列指令系统和程序设计方法 46
3.1 指令格式和常用的伪指令 46
3.2 寻址方式 48
3.3 程序状态字和指令类型 50
3.4 数据传送指令 51
3.4.1 内部数据传送指令 51
3.4.2 累加器A与外部数据存贮器传送指令 55
3.4.3 查表指令 55
3.5 算术运算指令 56
3.5.1 加法指令 56
3.5.2 减法指令 59
3.5.3 乘法指令 60
3.5.4 除法指令 61
3.6 逻辑运算指令 61
3.6.1 累加器A的逻辑操作指令 61
3.6.2 两个操作数的逻辑操作指令 63
3.7 位操作指令 65
3.7.1 位变量传送指令 65
3.7.2 位变量修改指令 66
3.7.3 位变量逻辑操作指令 66
3.8 控制转移指令 67
3.8.1 无条件转移指令 67
3.8.2 条件转移指令 69
3.8.3 调用和返回指令 71
3.9 程序设计方法 74
3.9.1 程序设计的步骤 74
3.9.2 程序框图和程序结构 74
3.9.3 循环程序设计方法 76
3.9.4 子程序设计和参数传递方法 81
习题 86
第4章 51系列单片机的功能模块及其应用 91
4.1 并行口及其应用 91
4.1.1 P1口 92
4.1.2 P3口 93
4.1.3 P2口 94
4.1.4 P0口 95
4.1.5 并行口的应用——蜂鸣器、可控硅的接口和编程 96
4.1.6 并行口的应用——拨码盘的接口和编程 98
4.1.7 并行口的应用——4×4键盘的接口和编程 100
4.1.8 并行口的应用——串行接口器件的接口和编程 102
4.2 定时器及其应用 104
4.2.1 定时器的一般结构和工作原理 104
4.2.2 定时器T0、T1的功能和使用方法 106
4.2.3 定时器T0的应用——定时中断控制可控硅导通角 113
4.2.4 定时器T2的功能和使用方法 115
4.2.5 T2的应用——定时读键盘 118
4.2.6 T2捕捉方式应用——测量脉冲周期 121
4.2.7 可编程的计数器阵列(PCA)的功能和使用方法 123
4.2.8 PCA的应用——软件控制的双积分A/D 131
4.3 串行接口UART 131
4.3.1 串行接口的组成和特性 132
4.3.2 串行接口的工作方式 133
4.3.3 波特率 137
4.3.4 多机通信原理 139
4.3.5 串行口的应用和编程 140
4.3.6 RS-232C总线和电平转换器 144
4.3.7 RS-422/485通信总线和发送/接收器 146
4.4 8XC552的A/D转换器 147
4.4.1 A/D转换器功能和使用方法 147
4.4.2 A/D的应用 151
4.5 节电方式 151
4.5.1 节电方式操作方法 151
4.5.2 节电方式的应用 153
4.6 89C52 FLASH程序存贮器 155
4.6.1 89C52 FLASH程序存贮器的编程操作 155
4.7 其他功能模块简介 159
4.7.1 液晶显示器(LCD)驱动器 159
4.7.2 串行外围接口SPI 160
4.7.3 I2C串行总线口 161
4.7.4 控制器局域网(CAN)接口 162
4.7.5 其他 162
习题 162
第5章 单片机接口技术 165
5.1 51系列单片机并行扩展原理 165
5.1.1 大系统的扩展总线和扩展原理 165
5.1.2 紧凑系统的扩展总线和扩展原理 168
5.1.3 海量存贮器系统地址译码方法 170
5.2 程序存贮器扩展 170
5.2.1 常用EPROM存贮器 170
5.2.2 程序存贮器扩展方法 172
5.3 数据存贮器扩展 172
5.3.1 常用RAM芯片 172
5.3.2 RAM存贮器扩展方法 173
5.4 RAM/IO扩展器8155的接口技术和应用 174
5.4.1 RAM/IO扩展器8155的接口技术 174
5.4.2 8155的应用——七段发光显示器的接口和编程 179
5.4.3 8155的应用——键盘接口和编程 184
5.5 并行接口8255A的接口技术和应用 190
5.5.1 8255A的接口和编程 190
5.5.2 8255A的应用——液晶显示模块LCM的接口和编程 199
5.6 74系列器件的接口技术和应用 207
5.6.1 用74HC245扩展并行输入口 207
5.6.2 用74HC377扩展并行输出口 207
5.6.3 74HC377的应用——点阵式发光显示屏的接口和编程 208
5.7 A/D器件接口技术 210
5.7.1 8路8位A/D ADC0809的接口和编程 210
5.7.2 12位A/D AD574的接口和编程 211
5.8 模拟串行扩展技术 214
5.8.1 I2C时序模拟 214
5.8.2 SPI时序模拟 216
习题 218
第6章 汇编语言常用程序设计 219
6.1 定点数运算程序 219
6.2 查表程序 228
6.3 数制转换程序 234
6.4 输入/输出处理程序 236
习题 248
第7章 C51程序设计 250
7.1 C51程序的结构和特点 250
7.1.1 C51程序的结构 250
7.1.2 C51的字符集、标识符与关键字 251
7.2 C51数据类型 252
7.2.1 C51数据类型 252
7.2.2 常量 252
7.2.3 变量 254
7.2.4 存贮器类型和存贮模式 254
7.2.5 C51扩展的数据类型 255
7.2.6 绝对地址访问 256
7.3 运算符和表达式 257
7.3.1 算术运算符和算术表达式 257
7.3.2 位运算符和位运算 258
7.3.3 赋值运算符和赋值表达式 259
7.3.4 逗号运算符和逗号表达式 260
7.4 C51语句和结构化程序设计 260
7.4.1 C51语句和程序结构 260
7.4.2 表达式语句、复合语句和顺序结构程序 260
7.4.3 选择语句和选择结构程序 261
7.4.4 循环语句和循环结构程序 263
7.5 C51的数组、结构、联合 265
7.5.1 数组 265
7.5.2 结构 267
7.5.3 联合 268
7.6 指针 268
7.6.1 定义指针变量 268
7.6.2 指针变量的引用 269
7.7 函数和中断函数 270
7.7.1 函数的定义 270
7.7.2 函数的调用 271
7.7.3 C51函数的参数传递 271
7.7.4 中断函数 272
7.7.5 局部变量和全局变量 273
7.7.6 变量的存贮种类 273
7.8 预处理命令、库函数 274
7.8.1 预处理命令 274
7.8.2 C51的通用文件 275
7.8.3 C51的库函数 276
7.9 C51程序设计 278
7.9.1 注意事项 278
7.9.2 C51程序设计实例之一——定时扫描显示器、读键盘程序 279
7.9.3 C51程序设计实例之二——EXR_B_A实验板综合控制程序 287
习题 291
第8章 单片机应用系统研制 293
8.1 系统设计 294
8.1.1 总体设计 294
8.1.2 硬件设计 294
8.1.3 软件设计 296
8.2 开发工具及系统调试 299
习题(讨论题) 301
第9章 单片机实验设备 302
9.1 单片机的实验和设备 302
9.2 EXR51-Ⅱ单片机实验仪 302
9.2.1 EICE51的结构和功能 302
9.2.2 操作命令使用方法 303
9.3 实验板 310
9.3.1 硬件基础实验板EBA(EXR_BOARD_A) 310
9.3.2 通用硬件实验板EBB(EXR_BOARD_B) 310
第10章 单片机实验 314
10.1 软件实验 314
10.1.1 实验一 定时器定时实验 314
10.1.2 实验二 电子钟实验(定时器、串行口、中断综合实验) 315
10.1.3 实验三 程控扫描和定时扫描显示器实验 317
10.1.4 实验四 键盘实验 319
10.1.5 实验五 串行口通信实验 321
10.2 硬件基础实验 322
10.2.1 实验一 外部中断和P1口应用——开关指示灯实验 322
10.2.2 实验二 T0外部事件计数和定时方式实验 323
10.2.3 实验三 定时器T0方式1中断应用——定时发光发声实验 325
10.2.4 实验四 0809 A/D实验 326
10.2.5 实验五 T0方式2应用——软件产生PWM信号控制电机转速实验 327
10.2.6 实验六 EBA板系统综合实验 330
10.3 应用实验 331
10.3.1 实验一 串行扩展时序模拟——时钟和静态显示器实验 331
10.3.2 实验二 定时扫描键盘输入实验 332
10.3.3 实验三 转速测量和A/D控制电机转速实验 334
10.3.4 实验四 显示时间的复杂路口交通灯控制实验 338
10.3.5 实验五 EBB板系统综合实验 340
10.3.6 实验六 参考实验 342
附录 343
附录1 C语言运算符优先级和结合性 343
附录2 EICE51实验示范程序存贮地址 334
参考文献 345