出版社:电子工业出版社
年代:2012
定价:79.0
本书全面详细地讲述了单片机的原理、编程指南及应用案例,其中51系列单片机的编程部分是本书的重点。全书分为5篇共38章。首先介绍51系列单片机的开发概述及单片机的基本结构,接着介绍单片机的汇编程序设计语言,然后介绍单片机C51语言的程序设计,随后结合单片机的指令系统及各个功能部件详细讲解单片机的编程操作,以及单片机硬件资源的仿真和程序调试。本书最后还给出了在各个领域中常用到的一些典型案例,供读者在学习和工作中参考。
目 录 Contents
第一篇 51系列单片机基础
第1章 51系列单片机概述 19
1.1 单片机的产生与发展 19
1.2 51系列单片机介绍 20
1.2.1 51系列单片机简介 20
1.2.2 51系列单片机的应用领域 20
1.3 最新51内核单片机介绍 21
1.3.1 Atmel单片机介绍 21
1.3.2 Cypress单片机介绍 21
1.3.3 Infineon单片机介绍 22
1.3.4 Silicon单片机介绍 22
1.3.5 Maxim单片机介绍 22
1.3.6 NXP单片机介绍 23
1.3.7 Winbond单片机介绍 23
1.3.8 Analog Devices单片机介绍 23
1.3.9 TI单片机介绍 24
1.3.10 其他单片机介绍 24
1.4 51系列单片机开发概述 24
1.4.1 分析测控系统 25
1.4.2 单片机选型 25
1.4.3 硬件资源分配 25
1.4.4 程序设计 26
1.4.5 仿真测试 26
1.4.6 实际硬件测试 26
1.5 小结 26
第2章 51系列单片机
基本结构 27
2.1 51系列单片机的内部结构 27
2.1.1 内部结构的主要组成部分 27
2.1.2 单片机结构的类型 28
2.2 51系列单片机的引脚功能 29
2.2.1 51系列单片机的引脚封装 29
2.2.2 51系列单片机引脚功能 29
2.3 中央处理器(CPU) 31
2.3.1 算术逻辑部件(ALU) 31
2.3.2 控制器 31
2.3.3 通用寄存器 31
2.3.4 专用寄存器 32
2.4 存储器结构 33
2.4.1 程序存储器及其扩展 34
2.4.2 数据存储器及其扩展 35
2.5 51系列单片机的复位 38
2.5.1 单片机的复位状态 38
2.5.2 单片机的复位电路 39
2.6 51系列单片机的时钟和时序 40
2.6.1 振荡器和时钟电路 40
2.6.2 CPU的时序 41
2.6.3 指令执行的时序 42
2.6.4 访问外部ROM/RAM的操作时序 43
2.7 51系列单片机的并行I/O口 45
2.7.1 并行I/O口 45
2.7.2 并行I/O口的应用 48
2.7.3 并行I/O口的扩展 48
2.8 系统掉电保护和低功耗设计 50
2.8.1 掉电保护 50
2.8.2 低功耗设计 51
2.9 51系列单片机的最小系统 52
2.10 小结 52
第3章 Keil C51开发工具简介 53
3.1 Keil μVision3简介 53
3.2 μVision3安装 53
3.3 μVision3集成开发环境 54
3.3.1 μVision3项目管理窗口 54
3.3.2 μVision3的菜单栏 55
3.3.3 μVision3的工具栏 59
3.3.4 μVision3的管理配置 61
3.3.5 μVision3的各种常用窗口 64
3.4 小结 66
第二篇 编程篇——汇编语言
第4章 汇编语言程序设计 67
4.1 汇编语言程序概述 67
4.1.1 汇编语言简介 67
4.1.2 汇编语言程序设计步骤 68
4.1.3 汇编语言程序实例 68
4.2 伪指令 68
4.2.1 汇编程序起始伪指令ORG 69
4.2.2 汇编程序结束伪指令END 69
4.2.3 等值伪指令EQU(或=) 69
4.2.4 数据地址赋值伪指令DATA 70
4.2.5 定义字节伪指令DB 70
4.2.6 定义字伪指令DW 70
4.2.7 定义空间伪指令DS 71
4.2.8 位地址符号伪指令BIT 71
4.3 汇编语言程序的格式 71
4.4 源程序的汇编 72
4.5 Keil μVision3中运行汇编语言实例 72
4.5.1 创建项目 72
4.5.2 创建源文件 72
4.5.3 编译项目 74
4.5.4 仿真调试 74
4.6 小结 74
第5章 汇编语言程序结构 75
5.1 顺序结构程序 75
5.2 分支结构程序 76
5.2.1 双分支结构 76
5.2.2 多分支结构 77
5.3 循环结构程序 78
5.3.1 循环程序的结构和组成 78
5.3.2 循环程序示例 79
5.3.3 多重循环程序结构 80
5.4 子程序结构 81
5.4.1 子程序的结构 81
5.4.2 子程序的调用与返回 81
5.4.3 子程序设计实例 82
5.5 查表结构程序 83
5.6 运算类程序 84
5.6.1 8位带符号整数的乘法子
程序 84
5.6.2 8位带符号整数的除法子程序 85
5.7 小结 86
第三篇 编程篇——C51
第6章 单片机C语言程序
设计基础 87
6.1 单片机C语言概述 87
6.1.1 单片机C语言和汇编
语言对比 87
6.1.2 C51语言的主要特点 87
6.2 单片机C语言在Keil μVision3中
应用实例 88
6.2.1 创建项目 88
6.2.2 创建源文件 89
6.2.3 编译项目 89
6.2.4 仿真调试 90
6.3 C51的标识符与关键字 90
6.3.1 标识符 90
6.3.2 关键字 91
6.4 C51的数据类型 92
6.4.1 常量与变量 93
6.4.2 整型数据 94
6.4.3 浮点型数据 95
6.4.4 字符型数据 96
6.4.5 指针型数据 98
6.4.6 无值型数据 99
6.5 C51的变量作用域 99
6.5.1 基本规则 99
6.5.2 自动变量 100
6.5.3 外部变量 101
6.5.4 静态变量 102
6.5.5 寄存器变量 102
6.6 分隔符与const修饰符 103
6.6.1 C51分隔符 103
6.6.2 const修饰符 103
6.7 运算符 104
6.7.1 算术运算符 104
6.7.2 逻辑运算符和关系运算符 106
6.7.3 位运算符 107
6.7.4 特殊运算符 109
6.7.5 运算符优先级和结合性 111
6.8 表达式 113
6.8.1 算术表达式 113
6.8.2 赋值表达式 113
6.8.3 逗号表达式 114
6.8.4 关系和逻辑表达式 115
6.9 小结 116
第7章 数组 117
7.1 数组类型说明 117
7.2 数组元素的表示 118
7.3 数组元素的初始化赋值 118
7.4 一维数组 119
7.4.1 一维数组声明 120
7.4.2 向函数传递一维数组 120
7.4.3 一维字符串数组 120
7.5 二维数组 121
7.5.1 二维数组声明 121
7.5.2 二维数组初始化 122
7.5.3 二维字符串数组 124
7.6 多维数组 124
7.7 小结 125
第8章 指针 126
8.1 地址、指针和指针变量的概念 126
8.2 指针变量的声明 126
8.3 指针变量的赋值 126
8.4 指针变量的引用 128
8.4.1 取地址运算符“&” 128
8.4.2 取内容运算符“*” 128
8.5 指针变量的运算 129
8.5.1 关系运算 129
8.5.2 算术运算 130
8.6 数组指针 130
8.6.1 指向一维数组的指针 130
8.6.2 指向二维数组的指针 131
8.6.3 指向一个由n个元素组成的
数组指针 133
8.6.4 指针和数组的关系 134
8.7 字符指针 134
8.8 指针数组 135
8.9 小结 136
第9章 结构 137
9.1 结构的定义 137
9.2 结构变量的定义 138
9.2.1 先定义结构,再定义结构变量 138
9.2.2 在定义结构的同时,定义
结构变量 138
9.2.3 直接说明结构变量 138
9.3 结构变量的使用 139
9.4 多重结构变量的赋值 139
9.5 结构变量的初始化 140
9.6 结构数组 141
9.6.1 结构数组的定义 141
9.6.2 结构数组的初始化赋值 142
9.7 结构指针 143
9.8 特殊结构 145
9.8.1 嵌套结构 145
9.8.2 位结构 145
9.9 小结 146
第10章 联合、枚举、类型
说明和位域 147
10.1 联合类型 147
10.1.1 联合和联合变量的定义 147
10.1.2 联合变量成员的引用 148
10.2 结构和联合的区别 150
10.3 枚举类型 150
10.3.1 枚举的定义 151
10.3.2 枚举变量的声明 151
10.3.3 枚举类型变量的赋值 152
10.4 类型说明 153
10.5 位域 154
10.5.1 位域的定义和位域变量的
声明 154
10.5.2 位域变量的使用 155
10.6 小结 156
第11章 C51语言的函数 157
11.1 函数的概念和分类 157
11.1.1 从函数定义角度分类 157
11.1.2 从有无返回值角度分类 158
11.1.3 从数据传送角度分类 158
11.2 函数的定义 158
11.3 函数的参数 160
11.3.1 形参和实参 160
11.3.2 数组作为函数参数 161
11.3.3 多维数组作为函数参数 162
11.3.4 指针作为函数参数 163
11.4 函数的返回值 164
11.5 函数调用 164
11.5.1 赋值调用与引用调用 164
11.5.2 递归调用 165
11.5.3 嵌套调用 166
11.6 函数及其变量的作用域 167
11.6.1 函数的作用域 167
11.6.2 函数的变量作用域 168
11.7 main函数 168
11.8 小结 169
第12章 C51语言的常用库
函数详解 170
12.1 字符函数 170
12.1.1 检查英文字母函数 170
12.1.2 检查字母数字函数 171
12.1.3 检查控制字符函数 171
12.1.4 十进制数字检查函数 172
12.1.5 可打印字符检查函数 172
12.1.6 包含空格的可打印字符
检查函数 173
12.1.7 格式字符检查函数 173
12.1.8 小写英文字母检查函数 174
12.1.9 大写英文字母检查函数 175
12.1.10 控制字符检查函数 175
12.1.11 十六进制数字检查函数 176
12.1.12 十六进制数字转换函数 176
12.1.13 大写字符转换函数 177
12.1.14 小写字符转换函数 178
12.1.15 ASCII字符转换函数 178
12.1.16 大写字符宏转换函数 179
12.1.17 小写字符宏转换函数 180
12.2 字符串函数 180
12.2.1 字符查找函数 180
12.2.2 指定长度的字符串比较函数 181
12.2.3 字符串复制函数 182
12.2.4 带终止字符的字符串复制
函数 182
12.2.5 字符串移动函数 183
12.2.6 字符串填充函数 184
12.2.7 字符串追加函数 184
12.2.8 指定长度的字符串追加函数 185
12.2.9 字符串比较函数 185
12.2.10 包含结束符的字符串比较
函数 186
12.2.11 字符串覆盖函数 187
12.2.12 指定长度的字符串覆盖函数 187
12.2.13 获取字符串个数函数 188
12.2.14 搜索字符串函数 189
12.2.15 搜索字符函数 189
12.2.16 返回位置值的字符搜索函数 190
12.2.17 字符包含函数 190
12.2.18 返回位置值的字符包含函数 191
12.2.19 在指定字符集中查找
不包含字符函数 192
12.2.20 在指定字符集中查找包含
字符函数 192
12.2.21 查找第一个包含字符函数 193
12.2.22 查找最后一个包含字符函数 194
12.3 I/O函数 194
12.3.1 字符读入函数 194
12.3.2 字符读入输出函数 195
12.3.3 字符串读入函数 196
12.3.4 字符回送函数 196
12.3.5 字符输出函数 197
12.3.6 格式化输出函数 197
12.3.7 格式化内存缓冲区输出函数 199
12.3.8 字符串输出函数 200
12.3.9 格式化输入函数 200
12.3.10 格式化内存缓冲区输入
函数 202
12.3.11 字符串内存输出函数 203
12.3.12 指向缓冲区的输出函数 204
12.4 数学函数 205
12.4.1 绝对值函数 205
12.4.2 指数函数及对数函数 205
12.4.3 三角函数 206
12.4.4 取整函数 207
12.4.5 浮点型分离函数 208
12.4.6 幂函数 208
12.5 标准函数 209
12.5.1 字符串转换函数 209
12.5.2 带返回指针的字符串转换
函数 210
12.5.3 随机函数 211
12.5.4 数组内存分配函数 212
12.5.5 释放内存函数 212
12.5.6 初始化内存函数 213
12.5.7 内存分配函数 214
12.5.8 调整内存大小函数 214
12.6 内部函数 215
12.6.1 循环左移函数 215
12.6.2 循环右移函数 216
12.6.3 延时函数 217
12.6.4 位测试函数 217
12.7 绝对地址访问函数 218
12.7.1 BYTE型存储空间访问函数 218
12.7.2 WORD型存储空间访问
函数 219
12.7.3 far存储区访问函数 219
12.7.4 far存储区数组访问函数 220
12.8 变量参数表函数 220
12.9 全程跳转函数 221
12.10 计算结构体成员的偏移量函数 222
12.11 小结 223
第13章 C51语句和流程 224
13.1 说明语句 224
13.2 表达式语句 224
13.3 复合语句 225
13.4 循环语句 226
13.4.1 while语句 226
13.4.2 do-while语句 226
13.4.3 for语句 227
13.5 条件语句 228
13.5.1 单分支结构 228
13.5.2 双分支结构 228
13.5.3 阶梯式if-else-if结构 229
13.6 开关语句 231
13.7 跳转语句 232
13.7.1 goto语句 232
13.7.2 break语句 232
13.7.3 continue 语句 233
13.8 函数调用语句 233
13.9 空语句 234
13.10 返回语句 235
13.11 C51语言的流程控制结构 235
13.12 小结 236
第14章 预处理及用户
配置文件 237
14.1 预处理命令概述 237
14.2 宏定义指令 237
14.2.1 #define命令 237
14.2.2 #undef命令 239
14.3 文件包含指令 240
14.4 条件编译指令 241
14.4.1 #if、#else、#endif命令 241
14.4.2 #elif命令 241
14.4.3 #ifdef、#ifndef命令 242
14.5 其他编译指令 243
14.5.1 #line命令 243
14.5.2 #error 243
14.5.3 #pragma 244
14.6 C51语言编译器的控制指令 245
14.6.1 源文件控制类 245
14.6.2 目标文件(Object)控制类 245
14.6.3 列表文件(Listing)控制类 245
14.7 C51语言的用户配置文件 245
14.7.1 C51语言启动代码文件 245
14.7.2 C51语言启动代码分析 249
14.7.3 变量初始化文件 250
14.7.4 基本I/O函数文件 251
14.7.5 分组配置文件 251
14.8 小结 251
第15章 C51语言的存储结构 252
15.1 存储器结构 252
15.1.1 51系列单片机的存储区域 252
15.1.2 片内数据存储器(RAM)的
结构 252
15.2 存储类型 253
15.2.1 data存储类型 253
15.2.2 bdata存储类型 253
15.2.3 idata存储类型 254
15.2.4 pdata存储类型 254
15.2.5 xdata存储类型 254
15.2.6 code存储类型 254
15.3 扩展数据类型 255
15.3.1 sfr和sfr16 255
15.3.2 sbit 255
15.3.3 bit型变量 256
15.4 存储模式 256
15.4.1 Small模式 256
15.4.2 Compact模式 256
15.4.3 Large模式 257
15.4.4 存储模式的选择 257
15.5 C51语言的存储器指针 257
15.5.1 一般指针 257
15.5.2 存储器指针 258
15.5.3 指针存储类型与指针所指向的
数据的存储类型的关系 258
15.6 动态内存分配 259
15.6.1 C51语言的动态分配函数 259
15.6.2 malloc和calloc函数 260
15.7 小结 260
第四篇 51系列单片机编程指南篇
第16章 51系列单片机的
指令系统 261
16.1 指令系统简介 261
16.1.1 指令格式 261
16.1.2 指令符号 262
16.2 寻址方式 263
16.2.1 立即寻址 263
16.2.2 直接寻址 264
16.2.3 寄存器寻址 265
16.2.4 寄存器间接寻址 266
16.2.5 变址寻址 267
16.2.6 相对寻址 268
16.2.7 位寻址 270
16.3 数据传送指令 271
16.3.1 内部RAM数据传送指令 271
16.3.2 外部RAM数据传送指令 274
16.3.3 程序存储器数据传送指令 275
16.3.4 数据交换指令 277
16.3.5 堆栈操作指令 278
16.4 算术运算指令 279
16.4.1 加法指令 279
16.4.2 带进位的加法指令 280
16.4.3 带借位的减法指令 282
16.4.4 加1指令 283
16.4.5 减1指令 284
16.4.6 乘除法指令 285
16.4.7 十进制调整指令 286
16.5 逻辑运算及移位指令 287
16.5.1 逻辑与指令 288
16.5.2 逻辑或指令 289
16.5.3 逻辑异或指令 290
16.5.4 累加器清零指令 291
16.5.5 累加器取反指令 292
16.5.6 组合逻辑电路的实现 292
16.5.7 循环移位指令 293
16.6 控制转移指令 294
16.6.1 无条件转移指令 295
16.6.2 条件转移指令 299
16.6.3 子程序调用及返回指令 302
16.7 位操作指令 305
16.7.1 位变量传送指令 305
16.7.2 置位与清零指令 306
16.7.3 位逻辑运算指令 306
16.7.4 位控制转移指令 307
16.8 空操作指令 309
16.9 51系列单片机指令汇总 310
16.10 小结 314
第17章 51系列单片机的
定时器/计数器 315
17.1 定时器/计数器0和1 315
17.1.1 定时器/计数器的结构 315
17.1.2 定时器/计数器的功能 316
17.1.3 T0和T1的控制寄存器 316
17.2 定时器/计数器0和1的工作
模式 319
17.2.1 工作模式0及其程序设计 319
17.2.2 工作模式1及其程序设计 321
17.2.3 工作模式2及其程序设计 322
17.2.4 工作模式3及其程序设计 325
17.3 定时器/计数器2 327
17.3.1 T2的控制寄存器T2CON和
T2MOD及其程序访问 327
17.3.2 定时器/计数器2的工作模式 329
17.4 小结 333
第18章 51系列单片机中断
系统及其程序设计 334
18.1 中断系统概述 334
18.1.1 什么是中断 334
18.1.2 中断的用途 334
18.1.3 中断需要解决的问题 335
18.2 51系列单片机的中断类型 336
18.2.1 外部中断源 336
18.2.2 定时中断源 337
18.2.3 串行中断源 337
18.3 51系列单片机的中断系统 337
18.3.1 中断请求标志及其访问 337
18.3.2 中断允许标志及其访问 339
18.3.3 中断优先级标志及其访问 340
18.4 中断的处理过程 341
18.4.1 中断响应 341
18.4.2 中断处理 342
18.4.3 中断返回 343
18.4.4 中断请求的撤离 343
18.5 中断源的程序设计 344
18.5.1 外部中断源的程序设计 344
18.5.2 定时中断源的程序设计 345
18.5.3 串行中断源的程序设计 346
18.6 外部中断源的扩展 347
18.6.1 定时器/计数器扩展外部
中断源 347
18.6.2 查询方式扩展外部中断源 350
18.7 小结 351
第19章 51系列单片机的串行接口 352
19.1 串行通信概述 352
19.1.1 串行通信简介 352
19.1.2 串行通信的数据传送方式 354
19.2 51系列单片机的串行接口 355
19.2.1 单片机串行接口的内部结构 355
19.2.2 单片机串行接口的程序控制 356
19.2.3 波特率的程序设计 358
19.3 串行口的工作模式0 361
19.3.1 模式0的发送及扩展输出
端口 361
19.3.2 模式0的接收及扩展输入
端口 362
19.4 串行口的工作模式1 364
19.4.1 模式1的发送 364
19.4.2 模式1的接收 365
19.5 串行口的工作模式2 367
19.5.1 模式2的发送 367
19.5.2 模式2的接收 368
19.6 串行口的工作模式3 369
19.6.1 模式3的发送 369
19.6.2 模式3的接收 370
19.7 双机通信程序设计 371
19.7.1 查询方式 371
19.7.2 中断方式 372
19.8 多机通信程序设计 374
19.8.1 多机通信原理 374
19.8.2 多机通信协议约定 375
19.8.3 多机通信程序设计 375
19.9 小结 380
第20章 C51下的RTX-51实时
多任务操作系统 381
20.1 RTX-51实时多任务操作系统
简介 381
20.1.1 RTX-51种类 381
20.1.2 RTX-51与单任务程序的比较 382
20.2 RTX-51的任务调度 383
20.2.1 RTX-51循环任务调度 383
20.2.2 RTX-51事件任务调度 384
20.2.3 RTX-51信号任务调度 384
20.2.4 优先级及抢先任务切换 385
20.2.5 RTX-51的其他特性 386
20.3 RTX-51 Tiny的系统函数 387
20.3.1 发送信号函数isr_send_signal 387
20.3.2 清除信号标志函数
os_clear_signal 387
20.3.3 启动任务函数os_create_task 388
20.3.4 删除任务函数os_delete_task 388
20.3.5 当前任务号函数
os_running_task_id 389
20.3.6 发送信号函数os_send_signal 389
20.3.7 等待函数os_wait 389
20.3.8 等待函数os_wait1 390
20.3.9 等待函数os_wait2 391
20.4 RTX-51 Tiny的任务管理 392
20.4.1 RTX-51 Tiny的任务状态 392
20.4.2 RTX-51 Tiny的事件 392
20.4.3 RTX-51 Tiny的任务切换 392
20.5 RTX-51 Tiny的配置文件 392
20.6 RTX-51 Tiny的要求及限定 395
20.6.1 使用RTX-51 Tiny的要求 395
20.6.2 RTX-51 Tiny的注意事项 396
20.7 RTX-51 FULL的系统函数及
技术参数 397
20.7.1 RTX-51 FULL函数一览 397
20.7.2 RTX-51的技术参数 398
20.8 小结 398
第21章 Keil μVision3中的
单片机硬件资源仿真 399
21.1 仿真概述 399
21.2 并行I/O端口的仿真 399
21.3 定时器/计数器的仿真 401
21.3.1 定时器/计数器T0和T1的
仿真界面 401
21.3.2 定时器/计数器T2的仿真
界面 402
21.3.3 定时器/计数器的仿真操作 402
21.4 串行接口的仿真 405
21.4.1 串行接口的仿真界面 405
21.4.2 串行接口的仿真操作 406
21.4.3 字符串输入/输出的仿真操作 407
21.5 中断仿真 408
21.5.1 中断系统的仿真界面 408
21.5.2 中断系统的仿真操作 409
21.6 看门狗定时器的仿真 410
21.6.1 看门狗定时器的仿真界面 410
21.6.2 看门狗定时器的仿真操作 411
21.7 A/D仿真 412
21.7.1 A/D转换器的仿真界面 412
21.7.2 A/D转换器的仿真操作 413
21.8 D/A仿真 414
21.8.1 D/A转换器的仿真界面 414
21.8.2 D/A转换器的仿真操作 415
21.9 寄存器仿真 417
21.9.1 寄存器的仿真界面 417
21.9.2 寄存器的仿真操作 417
21.10 低功耗仿真 418
21.11 小结 420
第22章 Keil μVision3中的
程序调试 421
22.1 Keil μVision3的程序调试器概述 421
22.2 性能分析器 421
22.3 代码覆盖分析器 422
22.4 断点 423
22.5 Keil μVision3调试命令 423
22.5.1 通用命令 424
22.5.2 程序命令 427
22.5.3 断点命令 429
22.5.4 存储器命令 431
22.6 小结 433
第五篇 典型案例篇
第23章 键盘程序设计 434
23.1 键盘接口概述 434
23.1.1 按键编码 434
23.1.2 输入的可靠性 434
23.1.3 程序检测及响应 435
23.2 独立式按键及其编程接口 435
23.2.1 独立式按键结构 435
23.2.2 独立式按键程序设计 436
23.3 4×4矩阵式键盘及其编程接口 437
23.3.1 扫描法及其程序设计 437
23.3.2 线反转法及其程序设计 439
23.3.3 中断法及其程序设计 440
23.4 矩阵式键盘的接口实例 441
23.4.1 电路图 442
23.4.2 程序设计 443
23.4.3 程序仿真 445
23.5 小结 446
第24章 LED数码管显示 447
24.1 LED数码管概述 447
24.1.1 7段共阳极LED结构及
显示段码 447
24.1.2 7段共阴极LED结构及
显示段码 448
24.2 单个LED驱动实例 449
24.2.1 电路图 449
24.2.2 程序设计 451
24.3 多个LED驱动方式 453
24.3.1 静态驱动显示 454
24.3.2 动态驱动显示 457
24.3.3 LED驱动器 459
24.4 多个LED驱动实例 463
24.4.1 LED驱动器电路图 463
24.4.2 程序设计 464
24.5 小结 467
第25章 LCD液晶显示模块 468
25.1 LCD液晶显示概述 468
25.1.1 液晶的来源 468
25.1.2 LCD液晶显示器结构及原理 468
25.1.3 液晶显示模块的种类 469
25.1.4 液晶显示模块的优点 470
25.2 液晶显示模块控制接口 470
25.2.1 LCD控制驱动器ST7920
概述 470
25.2.2 ST7920功能说明 471
25.2.3 ST7920基本指令集 474
25.2.4 ST7920扩充指令集 477
25.2.5 ST7920的操作方式 478
25.2.6 图形点阵式液晶显示模块 479
25.2.7 图形点阵式液晶读写子函数 480
25.3 汉字及图形显示实例 483
25.3.1 电路设计 483
25.3.2 建立项目 484
25.3.3 汉字显示实例 484
25.3.4 图形显示实例 486
25.3.5 任意位置图形显示实例 488
25.4 小结 490
第26章 D/A转换实例 491
26.1 D/A转换概述 491
26.1.1 D/A转换原理 491
26.1.2 D/A转换器的类型 492
26.1.3 D/A转换器的技术参数 493
26.2 高速D/A转换芯片AD558 494
26.2.1 AD558简介 494
26.2.2 AD558电压输出模式 495
26.2.3 AD558的数据锁存 496
26.3 光通信电压调制电路实例
——电路部分 497
26.3.1 相位调制的原理 497
26.3.2 电压调制系统 498
26.3.3 电路图 499
26.4 光通信电压调制电路实例
——程序部分 501
26.4.1 系统状态编码 502
26.4.2 建立项目 502
26.4.3 主程序 502
26.4.4 无调制模式函数 504
26.4.5 调制模式1函数 504
26.4.6 调制模式2函数 504
26.4.7 调制模式3函数 505
26.4.8 调制模式4函数 505
26.5 光通信电压调制电路实例
——仿真部分 505
26.5.1 程序仿真 505
26.5.2 运行效果 506
26.6 小结 506
第27章 可编程逻辑器件
CPLD 507
27.1 可编程逻辑器件概述 507
27.1.1 可编程逻辑器件的发展 507
27.1.2 CPLD的结构及其逻辑实现 507
27.1.3 FPGA的结构及其逻辑实现 509
27.2 硬件描述语言简述 510
27.2.1 硬件描述语言VHDL概述 511
27.2.2 VHDL程序结构 511
27.3 Altera常用CPLD芯片介绍 513
27.4 使用CPLD扩展51单片机
I/O接口 515
27.4.1 CPLD扩展单片机I/O
接口原理 515
27.4.2 电路图 516
27.5 单片机程序设计 517
27.5.1 项目建立 517
27.5.2 主程序 517
27.6 VHDL程序设计 518
27.6.1 项目建立 518
27.6.2 程序设计 519
27.7 程序仿真 521
27.7.1 设计CPLD引脚 521
27.7.2 仿真操作 522
27.8 程序下载 523
27.9 小结 524
第28章 51系列单片机读写
I2C总线 525
28.1 I2C总线概述 525
28.1.1 I2C总线工作原理 525
28.1.2 I2C总线的电气结构和
负载能力 526
28.1.3 I2C总线器件的寻址方式 526
28.2 I2C总线数据传输协议及其
程序详解 527
28.2.1 起始信号 527
28.2.2 终止信号 528
28.2.3 应答信号 528
28.2.4 非应答信号 529
28.2.5 应答位检查 530
28.2.6 总线数据位 530
28.2.7 写数据 530
28.2.8 读数据 533
28.3 51单片机读写EEPROM 536
28.3.1 串行EEPROM存储器简介 536
28.3.2 电路设计 537
28.3.3 程序设计 537
28.3.4 仿真分析 539
28.4 小结 540
第29章 单片机音乐播放 541
29.1 单片机发音概述 541
29.1.1 音调 541
29.1.2 节拍 543
29.1.3 单片机音乐播放的方法及
音乐示例 543
29.2 单片机音乐播放实例——电路图 547
29.3 单片机音乐播放实例
——程序设计 547
29.3.1 建立项目 547
29.3.2 程序设计 548
29.4 小结 550
第30章 实时时钟芯片应用 551
30.1 实时时钟芯片DS1302概述 551
30.1.1 实时时钟芯片DS1302概述 551
30.1.2 实时时钟芯片DS1302
命令字节 552
30.1.3 实时时钟芯片DS1302
数据格式 552
30.1.4 实时时钟芯片DS1302数据
传输方式 553
30.2 单片机读写实时时钟芯片实例 554
30.2.1 电路图 554
30.2.2 建立项目 555
30.2.3 主程序 555
30.2.4 复位函数 558
30.2.5 字节读取函数 558
30.2.6 字节写入函数 559
30.2.7 初始化函数 559
30.2.8 时钟字节写入函数 560
30.2.9 RAM字节写入函数 560
30.2.10 时钟寄存器内容显示函数 561
30.2.11 多字节突发方式读取
RAM函数 561
30.2.12 多字节突发方式写入
RAM函数 562
30.3 小结 562
第31章 静态RAM存储器
应用 563
31.1 静态RAM存储器概述 563
31.1.1 RAM存储器概述 563
31.1.2 静态RAM芯片HM628128 564
31.1.3 静态RAM芯片HM628128的
读写 564
31.2 静态RAM存储器读写实例 565
31.2.1 系统原理 566
31.2.2 串行通信接口概述 566
31.2.3 单片机与RS-232C的接口 571
31.2.4 系统电路原理图 572
31.2.5 建立项目 573
31.2.6 主程序设计 573
31.2.7 系统运行 576
31.3 小结 577
第32章 道路交通灯控制系统 578
32.1 交通灯控制系统概述 578
32.1.1 道路交通灯概述 578
32.1.2 交通灯控制系统 578
32.2 交通灯控制系统原理图 579
32.3 多任务交通灯控制系统程序 580
32.3.1 建立项目 580
32.3.2 多任务划分及程序设计 581
32.3.3 串行通信函数 586
32.3.4 获取命令函数 589
32.4 小结 590
第33章 单总线温度传感器 DS18S20 591
33.1 单总线概述 591
33.2 单总线温度传感器DS18S20 592
33.2.1 温度传感器DS18S20概述 592
33.2.2 DS18S20的供电方式 593
33.2.3 DS18S20的数据操作 593
33.3 单片机读写温度传感器
DS18S20实例 596
33.3.1 电路图 596
33.3.2 建立项目 597
33.3.3 DS18S20读写子函数 597
33.3.4 主函数 603
33.3.5 程序仿真 604
33.4 小结 605
第34章 Microware串行总线 EEPROM的应用 606
34.1 三线制Microware串行总线
概述 606
34.2 Microware串行总线接口的EEPROM 607
34.2.1 Microware串行总线接口
EEPROM概述 607
34.2.2 Microware串行总线接口
EEPROM的指令 607
34.2.3 Microware串行总线接口
EEPROM的指令时序 608
34.3 51系列单片机读写三线制
EEPROM实例 611
34.3.1 电路图 611
34.3.2 建立项目 611
34.3.3 三线制Microware串行总线
读写子函数 612
34.3.4 主程序 614
34.3.5 Microware串行总线仿真 616
34.4 小结 617
第35章 单片机控制打印机
实例 618
35.1 打印机概述 618
35.1.1 LASER PP40打印机概述 618
35.1.2 LASER PP40的文本模式 619
35.1.3 LASER PP40的图形模式 620
35.2 51系列单片机控制打印机实例 621
35.2.1 电路图 621
35.2.2 建立项目 622
35.2.3 程序设计 622
35.3 小结 623
第36章 A/D转换实例 624
36.1 A/D转换概述 624
36.1.1 A/D转换原理 624
36.1.2 A/D转换器的技术参数 625
36.1.3 A/D转换器的选择原则 627
36.2 8通道A/D转换器MAX197 627
36.2.1 MAX197的特性及引脚
功能 627
36.2.2 MAX197的接口、控制字
及时序 629
36.3 单片机读写A/D转换器实例 631
36.3.1 电路图 631
36.3.2 建立项目 632
36.3.3 程序设计 633
36.3.4 程序仿真 635
36.4 小结 636
第37章 单片机读写智能
IC卡 637
37.1 智能IC卡概述 637
37.1.1 智能IC卡分类 637
37.1.2 接触式IC卡 637
37.1.3 非接触式IC卡 638
37.2 智能IC卡芯片 638
37.2.1 IC卡芯片AT45DB041简介 638
37.2.2 AT45DB041D的内存空间
及其读写 639
37.2.3 AT45DB041D的指令 639
37.3 单片机读写智能IC卡实例 641
37.3.1 电路图 641
37.3.2 SPI接口单片机AT89S8253
简介 642
37.3.3 建立项目 643
37.3.4 IC卡芯片AT45DB041D
读写子函数 643
37.3.5 主程序 646
37.4 小结 648
第38章 单片机智能锂电池
充电管理 649
38.1 锂电池及其充电概述 649
38.1.1 锂电池概述 649
38.1.2 锂电池充电概述 650
38.2 智能充电管理芯片MAX1898 650
38.2.1 智能充电管理芯片
MAX1898概述 650
38.2.2 MAX1898充电工作原理 651
38.3 单片机智能控制锂电池充电
实例 652
38.3.1 电路图 653
38.3.2 智能充电器的功能 654
38.3.3 建立项目 654
38.3.4 程序设计 655
38.4 小结 656
【简介】 本书全面详细地讲述了单片机的原理、编程指南及应用案例,其中51系列单片机的编程部分是本书的重点。全书分为5篇共38章。首先介绍51系列单片机的开发概述及单片机的基本结构,接着介绍单片机的汇编程序设计语言,然后介绍单片机C51语言的程序设计,随后结合单片机的指令系统及各个功能部件详细讲解单片机的编程操作,以及单片机硬件资源的仿真和程序调试。本书最后还给出了在各个领域中常用到的一些典型案例,供读者在学习和工作中参考。【适用对象】 本书知识点覆盖全面、结构安排紧凑、讲解详细、实例丰富。对于51系列单片机的初学者,通过本书可以快速掌握单片机的程序设计。本书对具有一定开发经验的设计人员也有很好的参考价值。【页数】656【前言】 前 言 Introduction 51系列单片机是目前应用最广泛的一类微处理器,它以低廉的价格和强大的功能,受到广大电子设计爱好者和工程师的欢迎。51系列单片机内部具有丰富的硬件资源,例如,定时器/计数器、中断系统、串行接口,并且它还提供了详尽的指令操作系统,可以供程序员很方便地进行程序设计。在51系列单片机的开发过程中,程序设计是重点也是难点。初学者往往很难快速掌握单片机指令的应用、各个功能部件的编程方法及程序设计思路。本书重点针对51系列单片机的编程进行阐述,详细讲解各个指令及功能部件的编程方法,并给出大量的程序示例供读者学习参考。除此之外,本书也系统地介绍了51系列单片机的结构和原理,最后还给出了一些典型的应用案例。本书特色 本书首先详细介绍了51系列单片机的基础知识,然后对单片机的编程语言及程序设计方式进行了详细的讲解,接着还介绍了很多具有代表性的案例。 本书在讲解每个知识点的同时,均给出了其在程序设计中的应用实例,每个实例都可以仿真执行,读者可以快速掌握对应知识点在程序设计中的应用。 本书不局限于一种编程语言,对汇编语言和流行的单片机C语言都做了详细介绍,其中以应用最为广泛的单片机C语言作为重点,而且在绝大部分的知识点讲解中给出了汇编语言和单片机C语言的程序示例,部分知识点则根据程序本身的需要,选择一种更为方便的实现方式。 本书不仅介绍了基本的程序设计方式,还介绍了应用于51系列单片机的RTX-51实时多任务操作系统。 本书案例丰富,基本上涵盖了电子设计的各个领域,如键盘接口、LED、LCD液晶显示、CPLD、I2C总线、实时时钟、音乐播放、RAM存储器读写、RTX-51实时多任务操作系统、温度传感器、打印机、A/D转换和D/A转换等。 本书对每一个案例都详细介绍了知识背景、硬件及软件设计流程,并对程序代码进行了详细的注释,对开始的案例几乎是逐行注释,使之更加容易理解。本书的内容本书把实用性、系统性和完整性作为重点,详细介绍了51系列单片机的原理和功能,对于每一个知识点均给出了详细的程序设计方法和编程示例,最后还提供了一些典型的应用案例。本书内容分为5篇,共38章。第一篇是51系列单片机基础,共分为三章,详细介绍51系列单片机的发展、开发流程、基本结构和Keil C51开发工具等。第二篇是编程篇——汇编语言,共分为两章,详细介绍单片机汇编语言的程序设计和程序结构。第三篇是编程篇——C51,共分为10章,重点介绍单片机C51语言的程序设计。第四篇是51系列单片机编程指南篇,共分为7章,详细讲解单片机的指令系统、定时器/计数器、串行接口、中断及RTX-51实时多任务操作系统。在讲解的过程中,对每一个知识点都提供了详细的程序设计方法和程序示例。最后还对Keil µVision3集成开发环境下的单片机仿真和调试进行了介绍。第五篇是典型案例篇,共分为16章,详细介绍单片机在一些常用领域中的应用,对每一个应用均给出了完整的电路图和程序分析。本书结构紧凑,知识点涉及全面,内容翔实,案例丰富。由于本书内容较多,编写时间较仓促,所以书中难免有遗漏和不足之处,恳请广大读者提出宝贵意见,以便笔者做进一步改进。适合的读者 单片机的初学者 电子设计爱好者 电子工程师 系统开发人员 大学、大专等电子相关专业的学生及教师编 者
书籍详细信息 | |||
书名 | 精通51单片机开发技术与应用实例站内查询相似图书 | ||
9787121168888 如需购买下载《精通51单片机开发技术与应用实例》pdf扫描版电子书或查询更多相关信息,请直接复制isbn,搜索即可全网搜索该ISBN | |||
出版地 | 北京 | 出版单位 | 电子工业出版社 |
版次 | 1版 | 印次 | 1 |
定价(元) | 79.0 | 语种 | 简体中文 |
尺寸 | 26 × 18 | 装帧 | 平装 |
页数 | 676 | 印数 |
精通51单片机开发技术与应用实例是电子工业出版社于2012.6出版的中图分类号为 TP368.1 的主题关于 单片微型计算机-系统开发 的书籍。