图书介绍
精通51单片机开发技术与应用实例PDF|Epub|txt|kindle电子书版本网盘下载
- 赵建领,崔昭霞编著 著
- 出版社: 北京:电子工业出版社
- ISBN:9787121168888
- 出版时间:2012
- 标注页数:656页
- 文件大小:171MB
- 文件页数:658页
- 主题词:单片微型计算机-系统开发
PDF下载
下载说明
精通51单片机开发技术与应用实例PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一篇 51系列单片机基础19
第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
第二篇 编程篇——汇编语言67
第4章 汇编语言程序设计67
4.1汇编语言程序概述67
4.1.1汇编语言简介67
4.1.2汇编语言程序设计步骤68
4.1.3汇编语言程序实例68
4.2伪指令68
4.2.1汇编程序起始伪指令ORG69
4.2.2汇编程序结束伪指令END69
4.2.3等值伪指令EQU(或=)69
4.2.4 数据地址赋值伪指令DATA70
4.2.5定义字节伪指令DB70
4.2.6定义字伪指令DW70
4.2.7定义空间伪指令DS71
4.2.8位地址符号伪指令BIT71
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
第三篇 编程篇——C5187
第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 #defie命令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 #error243
14.5.3 #pragma244
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和sfr16255
15.3.2 sbit255
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系列单片机编程指南篇261
第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和1315
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定时器/计数器2327
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串行口的工作模式0361
19.3.1模式0的发送及扩展输出端口361
19.3.2模式0的接收及扩展输入端口362
19.4串行口的工作模式1364
19.4.1模式1的发送364
19.4.2模式1的接收365
19.5串行口的工作模式2367
19.5.1模式2的发送367
19.5.2模式2的接收368
19.6串行口的工作模式3369
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 signal387
20.3.2清除信号标志函数os_clear_signal387
20.3.3启动任务函数os_create_task388
20.3.4删除任务函数os_delete_task388
20.3.5当前任务号函数os_running_task_id389
20.3.6发送信号函数os_send_signal389
20.3.7等待函数os_wait389
20.3.8等待函数os_wait1390
20.3.9等待函数os_wait2391
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
第五篇 典型案例篇434
第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转换芯片AD558494
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章 可编程逻辑器件CPLD507
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单片机读写E2PROM536
28.3.1串行E2PROM存储器简介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实时时钟芯片DS 1302概述551
30.1.1实时时钟芯片DS 1302概述551
30.1.2实时时钟芯片DS 1302命令字节552
30.1.3实时时钟芯片DS 1302数据格式552
30.1.4实时时钟芯片DS 1302数据传输方式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芯片HM628128564
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章 单总线温度传感器DS18S20591
33.1单总线概述591
33.2单总线温度传感器DS18S20592
33.2.1温度传感器DS18520概述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串行总线E2 PROM的应用606
34.1三线制Microware串行总线概述606
34.2 Microware串行总线接口的E2PROM607
34.2.1 Microware串行总线接口E2PROM概述607
34.2.2 Microware串行总线接口E2PROM的指令607
34.2.3 Microware串行总线接口E2PROM的指令时序608
34.3 51系列单片机读写三线制E2PROM实例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