51单片机C语言开发详解PDF电子书下载
- 电子书积分:16 积分如何计算积分?
- 作 者:张天凡等编著
- 出 版 社:北京:电子工业出版社
- 出版年份:2008
- ISBN:9787121064012
- 页数:508 页
第1章 单片机基础知识 2
1.1单片机简介 2
1.2单片机的发展状况 2
1.3单片机的应用领域 3
1.3.1机电一体化 3
1.3.2智能仪表仪器 4
1.3.3工业现场控制 4
1.3.4军事技术 5
1.3.5分布式控制系统 5
1.3.6家用电子产品 6
1.4单片机的发展趋势:高性能化 6
1.4.1采用双CPU结构 6
1.4.2增加数据总线宽度 7
1.4.3采用流水线结构 7
1.5单片机的发展趋势:存储器大容量化 7
1.5.1不断增大存储容量 7
1.5.2Flash技术 7
1.5.3程序保密处理 8
1.6单片机的发展趋势:接口多样化 8
1.6.1引脚数目不断增多 8
1.6.2并行口的驱动能力不断提高 8
1.6.3I/O口的逻辑控制功能不断增强 8
1.6.4特殊的串行接口功能不断增多 8
1.7单片机的发展趋势:集成化 9
1.7.1外围电路集成 9
1.7.2片内ROM、RAM等集成 9
1.7.3其他功能模块集成 9
1.8单片机的发展趋势:低功耗化 10
1.9MCS-51单片机的选型 10
第2章 AT89S51单片机系统结构和性能 12
2.1AT89S51的性能参数 12
2.2AT89S51单片机内部结构 13
2.2.18051结构 13
2.2.2AT89S51内部结构 14
2.2.3算术逻辑运算单元(ALU) 15
2.2.4特殊功能寄存器组(SFR) 15
2.2.5SFR——程序计数器(PC) 16
2.2.6SFR——累加器(ACC) 17
2.2.7SFR——B寄存器 17
2.2.8SFR——堆栈指针(SP) 17
2.2.9SFR——数据指针(DPTR) 18
2.2.10SFR——程序状态字(PSW) 18
2.2.11SFR——工作寄存器R0~R7 19
2.2.12节电模式(Idle Mode) 19
2.2.13掉电模式(Power Down Mode) 19
2.3AT89S51单片机的引脚描述 19
2.3.1供电引脚 20
2.3.2外接晶振引脚 20
2.3.3内部时钟方式 21
2.3.4有源晶振 21
2.3.5外部时钟信号 21
2.3.6控制引脚:RST 21
2.3.7控制引脚:ALE/PROG 22
2.3.8控制引脚:PSEN 22
2.3.9控制引脚:EA/VPP 22
2.3.10I/O引脚:P0口 22
2.3.11I/O引脚:P1口 23
2.3.12I/O引脚:P2口 23
2.3.13I/O引脚:P3口 23
2.4AT89S51单片机存储器的组织形式 24
2.4.1程序存储器 25
2.4.2数据存储器 25
2.4.3工作寄存器区 26
2.4.4位寻址区 27
2.4.5堆栈和数据缓冲器区 27
2.4.6位寻址空间 28
2.5AT89S51单片机的输入输出接口 28
2.5.1I/O口的读/改/写特性 28
2.5.2端口负载能力与接口要求 29
2.5.3外扩存储器接口 29
2.6AT89S51单片机的复位与CPU时序 31
2.6.1复位电路 31
2.6.2CPU时序 32
2.6.3CPU时序:单字节单周期指令时序 33
2.6.4CPU时序:双字节单周期指令时序 33
2.6.5CPU时序:单字节双周期指令时序 33
2.6.6CPU时序:MOVX指令时序 34
2.7AT89S51单片机的定时器与时钟 34
2.7.1AT89S51定时器工作原理 34
2.7.2定时器T0和T1的内部结构 35
2.7.3定时器工作模式:模式0 38
2.7.4定时器工作模式:模式1 40
2.7.5定时器工作模式:模式2 41
2.7.6定时器工作模式:模式3 42
2.8AT89S51单片机的中断系统 43
2.8.1中断基本概念 43
2.8.2AT89S51中断系统 45
2.8.3定时器/计数器控制寄存器(TCON) 46
2.8.4串行口控制寄存器(SCON) 46
2.8.5中断使能控制寄存器(IE) 46
2.8.6中断优先级控制寄存器(IP) 47
2.8.7AT89S51中断初始化与扩展 48
2.8.8AT89S51中断请求与清除 49
2.8.9AT89S51中断响应时间 49
2.9AT89S51单片机的看门狗 51
2.9.1看门狗的基本概念 51
2.9.2AT89S51看门狗的操作方法 51
2.10AT89S51的编程接口 51
2.10.1并行编程接口 51
2.10.2串行编程接口 53
第3章 AT89S51单片机的指令系统 54
3.1指令系统概述 54
3.1.1指令格式 54
3.1.2 AT89S51的伪汇编指令 55
3.2 AT89S51单片机的寻址方式 57
3.2.1立即寻址 57
3.2.2直接寻址 57
3.2.3寄存器寻址 58
3.2.4寄存器间接寻址 58
3.2.5相对寻址 58
3.2.6基址加变址寻址 58
3.2.7位寻址 59
3.2.8页面寻址 59
3.2.9寻址方式与存储器的对应 59
3.3AT89S51单片机的数据传送指令 60
3.3.1以累加器A为目的操作数的指令 60
3.3.2以Rn为目的操作数的指令 60
3.3.3以直接地址为目的操作数的指令 60
3.3.4以间接地址为目的操作数的指令 60
3.3.516位数据传送的指令 61
3.3.6查表指令 61
3.3.7累加器A与片外RAM数据传送指令 61
3.3.8堆栈操作指令 61
3.3.9交换指令 62
3.4AT89S51单片机的算术操作指令 62
3.4.1不带进位的加法指令 62
3.4.2带进位的加法指令 63
3.4.3带进位的减法指令 63
3.4.4增量(加1)指令 63
3.4.5减量(减1)指令 63
3.4.6十进制调整指令 64
3.4.7乘法指令 64
3.4.8除法指令 64
3.5AT89S51单片机的逻辑与移位指令 64
3.5.1对累加器A的单操作数的逻辑操作指令 64
3.5.2两个操作数的逻辑操作指令 65
3.6AT89S51单片机的程序控制流指令 66
3.6.1无条件转移指令 66
3.6.2条件转移指令 66
3.6.3调用和返回指令 68
3.6.4空操作指令 69
3.7AT89S51单片机的位操作指令 69
3.7.1位数据传送指令 69
3.7.2位变量修改指令 70
3.7.3位变量逻辑与、或指令 70
3.7.4位变量条件转移指令 70
第4章 KeilC51单片机开发环境 71
4.1C语言编程基础 71
4.1.1C51源程序的基本结构 71
4.1.2标识符与关键字 73
4.13数据类型 75
4.1.4常量与变量 76
4.1.5函数 79
4.1.6数组与指针 81
4.1.7结构体与联合体 83
4.1.8类型定义 87
4.1.9宏定义与条件编译 88
4.2Keil C51开发工具 90
4.2.1μVision 3集成开发环境结构 91
4.2.2Keil C51的C编译器 92
4.2.3Keil C51的A51宏汇编器 93
4.2.4Keil C51的BL51代码连接器/定位器 93
4.2.5Keil C51的OC51目标文件转换器 94
4.2.6Keil C51的OH目标HEX文件转换器 95
4.2.7Keil C51的LIB51库文件管理器 95
4.3μVision 3集成开发环境 95
4.3.1μ Vision 3IDE 95
4.3.2μ Vision 3 C51编译器与测试程序 98
4.3.3μ Vision 3的安装 99
4.4集成开发环境的使用 101
4.4.1 μVision 3的项目管理窗口 102
4.4.2 μ Vision 3的菜单栏 105
4.4.3 μ Vision 3的工具栏 111
4.4.4 μ Vision 3的快捷键 113
4.4.5 μ Vision 3的功能窗口 115
4.4.6源代码编辑窗口 115
4.4.7Watch &Call Stack窗口 116
4.4.8Memory窗口 118
4.4.9CPU寄存器窗口 118
4.4.10串行窗口 119
4.4.11性能分析窗口 119
4.4.12代码覆盖窗口 120
4.4.13符号浏览窗口 121
4.5项目的开发与管理 121
4.5.1创建项目 121
4.5.2添加配置启动代码 123
4.5.3项目设置 127
4.5.4Target选项卡 128
4.5.5Output选项卡 131
4.5.6Listing选项卡 132
4.5.7C51选项卡 132
4.5.8A51选项卡 134
4.5.9BL51 Locate选项卡 135
4.5.10BL51 Misc选项卡 135
4.5.11Debug选项卡 136
4.5.12项目编译 136
4.5.13列表文件(C语言) 137
4.5.14列表文件(汇编语言) 142
第5章 ATMEL AT89S51学习板简介 144
5.1开发板硬件构成 144
5.2模块介绍 145
5.2.1单片机最小系统 145
5.2.2跑马灯 146
5.2.3键盘阵列 147
5.2.44位8段共阴极数码管 147
5.2.5A/D转换模块 147
5.2.6D/A输出模块 149
5.2.7RS-232通信模块 149
5.2.8CAN通信接口 150
5.2.9其他扩展接口 151
第6章 I/O输出实战——跑马灯驱动电路与软件设计 152
6.1跑马灯电路设计 152
6.1.1跑马灯 152
6.1.2发光二极管基础知识 152
6.1.3发光二极管与单片机接口 154
6.1.4发光二极管的限流 155
6.1.5跑马灯电路设计 156
6.2跑马灯软件设计 157
6.2.1第一个单片机程序 157
6.2.2跑马灯编程——工作状态指示 159
6.2.3跑马灯编程——蛇形花样 162
6.2.4跑马灯编程——龙舞花样 164
6.2.5定时器中断延时程序设计 167
6.3问题与思考 173
6.3.1跑马灯电路设计问题 173
6.3.2延时程序设计问题 174
6.3.3计时器程序设计问题 175
第7章 输入接口实战——键盘接口电路与软件设计 179
7.1键盘接口电路设计 179
7.1.1键盘基本原理 179
7.1.2按键确认 180
7.1.3按键消抖 181
7.1.4键值的读取 182
7.1.5对重键的处理 182
7.1.6直接式键盘接口电路设计 182
7.1.7阵列式键盘接口电路设计 183
7.1.8中断键盘接口电路设计 184
7.2键盘接口程序设计 186
7.2.1直接式键盘接口软件设计 186
7.2.2键盘接口软件消抖程序设计 190
7.2.3阵列式键盘接口软件设计 194
7.2.4中断式阵列键盘接口软件设计 198
7.2.5中断式直接键盘接口软件设计 202
7.3问题与思考 204
7.3.1直接键盘接口电路设计问题 205
7.3.2阵列式键盘接口电路设计问题 206
7.3.3中断键盘接口电路设计问题 206
第8章 串口通信实战——RS-232接口电路与软件设计 208
8.1串行通信基本原理 208
8.1.1同步通信与异步通信 209
8.1.2波特率 209
8.1.3单工、半双工与全双工通信 210
8.2 RS-232通信接口设计 211
8.2.1RS-232通信协议 211
8.2.2RS-232通信接口定义 212
8.2.3RS-232接口芯片MAX232 214
8.2.4基于AT89S51的RS-232接口电路设计 215
8.2.5单片机之间的UART通信 215
8.2.6RS-232串口调试软件 216
8.3RS-232通信程序设计 218
8.3.1单片机向计算机发送数据实例 218
8.3.2计算机向单片机发送数据实例 222
8.3.3串口通信中断实例 225
8.3.4蓝牙通信模块扩展实例 229
8.4问题与思考 236
第9章 A/D转换实战——模拟量输入电路与软件设计 237
9.1A/D转换器的基本原理 237
9.1.1逐次逼近式A/D转换器原理 237
9.1.2双积分式A/D转换器原理 238
9.1.3A/D转换器的技术指标 239
9.2基于AT89S51的A/D转换器电路设计 240
9.2.1 ADC0809扩展电路设计 240
9.2.2 AD7812扩展电路设计 244
9.3基于AT89S51的A/D转换实用案例 246
9.3.1 AD7812扩展软件设计 246
9.3.2温度测量 252
9.3.3电流测量 263
9.3.4 光强测量 270
9.4问题与思考 274
9.4.1磁珠(Ferrite Bead) 274
9.4.2电流测量电路 275
9.4.3光敏电阻测量电路 275
第10章 D/A转换实战——模拟量输出电路与软件设计 277
10.1D/A转换器的基本原理 277
10.1.1权电阻式D/A转换器原理 277
10.1.2R-2R T型网络D/A转换器原理 278
10.1.3R-2R倒T型网络D/A转换器原理 279
10.1.4D/A转换器的转换精度 280
10.1.5D/A转换器的转换速度 280
10.1.6D/A转换器的温度系数 281
10.2 DAC0832数模转换器电路设计 281
10.2.1DAC0832的内部结构 281
10.2.2电流电压转换接口 282
10.2.3DAC0832的直接工作方式 283
10.2.4DAC0832的单缓冲工作方式 283
10.2.5DAC0832的双缓冲工作方式 284
10.3串行接口DAC7614数模转换器电路设计 285
10.3.1DAC7614的内部结构 285
10.3.2DAC7614的单端工作模式 286
10.3.3DAC7614的双端工作模式 287
10.3.4DAC7614的数字接口 287
10.4基于PWM的低成本数模转换器电路设计 289
10.4.1 PWM简介 289
10.4.2基于单运放的阻容滤波D/A转换器 289
10.5 DAC0832程序设计 290
10.5.1 AT89S51扩展DAC0832的双缓冲电路 290
10.5.2精密电压参考源AD780 291
10.5.3 D/A转换程序设计 292
10.6三角波发生器设计 295
10.6.1三角波发生器电路 295
10.6.2定时器中断 296
10.6.3三角波发生器程序设计 297
10.7 DAC7614程序设计 302
10.7.1 DAC7614扩展电路 302
10.7.2隔离电源DCP010505 303
10.7.3光耦6N137 304
10.7.4 DAC7614程序设计 304
10.8PWM DAC程序设计 307
10.8.1电路原理图 307
10.8.2程序设计 307
10.9问题与思考 310
第11章 综合实例——多功能数字温度计设计 314
11.1系统结构与分析 314
11.1.1多功能数字温度计功能分析 314
11.1.2多功能数字温度计系统分析 314
11.2 DS1620温度传感器电路 315
11.2.1 DS1620的性能指标 315
11.2.2 DS1620的引脚定义 315
11.2.3 DS1620的温度格式 316
11.2.4 DS1620的三线数据串行接口 317
11.2.5 DS1620的控制寄存器 317
11.2.6DS1620的操作字 318
11.2.7DS1620的单独工作模式 318
11.2.8DS1620的单片机接口电路 319
11.3MAX7219数码管驱动电路 320
11.3.1MAX7219的性能指标 320
11.3.2MAX7219的引脚定义 320
11.3.3MAX7219的串行数据通信 321
11.3.4MAX7219的内部寄存器地址 322
11.3.5MAX7219的数字位寄存器 323
11.3.6MAX7219的停机寄存器 323
11.3.7MAX7219的测试寄存器 323
11.3.8MAX7219的亮度寄存器 323
11.3.9MAX7219的扫描界限寄存器 324
11.3.10MAX7219的译码寄存器 324
11.3.11MAX7219驱动电路设计 325
11.4其他硬件电路设计 326
11.4.1AT89S51单片机最小系统电路 326
11.4.2键盘输入电路 327
11.4.3电源电路 327
11.4.4多功能数字温度计的硬件电路 328
11.5多功能数字温度计软件设计 329
11.5.1软件结构分析 329
11.5.2DS1620驱动程序设计 330
11.5.3MAX7219驱动程序设计 333
11.5.4键盘接口程序设计 336
11.5.5蜂鸣器驱动程序设计 337
11.5.6定时器时钟基准设计 337
11.5.7时钟显示程序设计 339
11.5.8闹铃程序设计 341
11.5.9按键操作程序设计 341
11.5.10显示温度程序设计 344
11.5.11主程序 345
11.6多功能数字温度计工程文件 345
11.6.1主函数 346
11.6.2温度传感器DS1620函数库 347
11.6.3DS1620引脚定义 349
11.6.4数码管驱动MAX7219函数库 349
11.6.5MAX7219头文件定义 351
11.6.6键盘操作函数 353
11.6.7键盘操作定义 357
11.6.8时钟函数库 357
11.6.9时间函数定义 361
第12章 综合实例——工业CAN网络控制系统节点设计 362
12.1系统结构与分析 362
12.1.1工业CAN网络控制系统节点功能分析 362
12.1.2工业CAN网络控制系统分析 362
12.2CAN总线知识简介 363
12.2.1CAN总线的特点 363
12.2.2CAN总线的物理层 364
12.2.3CAN总线的报文帧 364
12.2.4CAN总线的仲裁 367
12.3工业CAN网络控制系统节点硬件电路设计 368
12.3.1AT89S51单片机最小系统电路 368
12.3.2CAN总线控制电路 369
12.3.3CAN收发器电路 372
12.3.4时钟显示电路 374
12.3.5数字量输入输出 374
12.3.6跑马灯及其他接口电路 375
12.3.7工业CAN网络控制节点总电路 376
12.4工业CAN网络控制系统通信协议设计 377
12.4.1拓扑结构与接口定义 377
12.4.2通信约定协议 378
12.4.3标识符定义 378
12.4.4过程数据对象(PDO) 380
12.4.5服务数据对象(SDO) 383
12.4.6同步对象(SYNC) 383
12.4.7时间戳对象(TIME) 383
12.4.8紧急对象(EMCY) 384
12.5工业CAN网络控制节点程序设计 385
12.5.1SJA1000芯片寄存器与关键字定义 385
12.5.2SJA1000.c底层驱动函数库 390
12.5.3时钟操作定义 391
12.5.4时钟操作函数库 391
12.5.5485信息定义 397
12.5.6485通信函数库 399
12.5.7Max7219寄存器与关键字定义 403
12.5.8Max7219数码管驱动函数库 405
12.5.9数码管操作函数库 406
12.5.10CAN总线操作函数库 407
12.5.11输入输出管理函数 410
12.5.12综合节点功能函数 412
12.5.13引脚定义 424
12.5.14CAN操作函数声明 425
12.5.15特殊变量定义 426
第13章 综合实例——GPS接收机 428
13.1系统结构与分析 428
13.1.1GPS接收机功能分析 428
13.1.2GPS接收机系统分析 428
13.2GPS定位知识简介 429
13.2.1GPS定位的特点 429
13.2.2GPS定位的主要功能 429
13.2.3GPS定位系统的发展历史 430
13.2.4现今的GPS系统 430
13.2.5GPS的定位原理 432
13.3GPS通信协议——NMEA Protocol 433
13.3.1NMEA协议结构 433
13.3.2定位信息GPGGA帧 434
13.3.3卫星信息GPGSA帧 435
13.3.4地理定位信息GPGLL帧 436
13.3.5卫星状态GPGSV帧 436
13.3.6最小信息GPRMC帧 437
13.3.7地表矢量GPVTG帧 438
13.3.8信号残差计算GPGRS帧 438
13.3.9伪随机误差GPGST帧 439
13.3.10时间信息GPZDA帧 439
13.3.11自修正GPGBS帧 440
13.4GPS接收机显示终端——点阵型LCD液晶 440
13.4.1KS0713简介 440
13.4.2KS0713的单片机接口 441
13.4.3KS0713的并行通信时序 442
13.4.4KS0713的串行通信时序 443
13.4.5KS0713的Data RAM 444
13.4.6KS0713的列寻址 444
13.4.7KS0713的页寻址 445
13.4.8液晶驱动时序 445
13.4.9 KS0713的控制指令 445
13.4.10读显示数据指令Read Display Data 447
13.4.11写显示数据指令Write Display Data 447
13.4.12读取状态指令Read Status 448
13.4.13显示开/关指令Display ON/OFF 448
13.4.14初始化行指令Initial Display Line 448
13.4.15 参考电压选择指令Reference Voltage Select 449
13.4.16设置页地址指令Set Page Address 449
13.4.17设置列地址指令Set Column Address 449
13.4.18选择ADC指令ADC Select 450
13.4.19翻转指令Reverse Display ON / OFF 450
13.4.20全满显示指令Entire Display ON / OFF 451
13.4.21选择LCD偏移指令Select LCD Bias 451
13.4.22设置读偏移指令Set Modify-Read 451
13.4.23复位读偏移指令Reset Modify-Read 451
13.4.24复位治疗Reset 452
13.4.25 SHL选择指令SHL Select 452
13.4.26功耗控制指令Power control 452
13.4.27线性电阻选择指令Regulator Resistor Select 452
13.4.28设置静态指示状态指令Set Static Indicator State 453
13.5GPS接收机硬件电路设计 453
13.5.1单片机最小电路 453
13.5.2电源电路 454
13.5.3GPS模块电路 455
13.5.4LCD点阵液晶电路 456
13.5.5内存扩展电路 457
13.5.6GPS接收机硬件原理图 458
13.6GPS接收机程序设计 458
13.6.1NMEA基本信息定义info.h分析 459
13.6.2时间结构定义time.h分析 461
13.6.3帧类型定义sentence.h分析 461
13.6.4帧初始化操作sentencer.c分析 463
13.6.5NMEA数据流解码parser.c分析 464
13.6.6NMEA解码封装声明parser.h分析 471
13.6.7解码封装parser.c分析 472
13.6.8地理函数声明Mymath.h分析 479
13.6.9地理计算函数Mymath.c分析 480
13.6.10字符串处理函数MyFormat.c分析 486
13.6.11调试函数声明context.h分析 490
13.6.12调试函数context.c分析 490
13.6.13液晶显示定义LCD library.h分析 492
13.6.14液晶显示函数库LCD- library.c分析 493
13.6.15主程序main.c分析 505
- 《高等数学试题与详解》西安电子科技大学高等数学教学团队 2019
- 《区块链DAPP开发入门、代码实现、场景应用》李万胜著 2019
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《高含硫气藏开发腐蚀控制技术与实践》唐永帆,张强 2018
- 《幼儿园课程资源丛书 幼儿园语言教育资源》周兢编 2015
- 《单片机原理及应用》庄友谊 2020
- 《高等学校“十三五”规划教材 C语言程序设计》翟玉峰责任编辑;(中国)李聪,曾志华,江伟 2019
- 《手工皮艺 时尚商务皮革制品制作详解》王雅倩责任编辑;陈涤译;(日)高桥创新出版工坊 2019
- 《音乐语言的根基》张艺编著 2019
- 《主题公园开发与管理》梁增贤编著 2019
- 《市政工程基础》杨岚编著 2009
- 《家畜百宝 猪、牛、羊、鸡的综合利用》山西省商业厅组织技术处编著 1959
- 《《道德经》200句》崇贤书院编著 2018
- 《高级英语阅读与听说教程》刘秀梅编著 2019
- 《计算机网络与通信基础》谢雨飞,田启川编著 2019
- 《看图自学吉他弹唱教程》陈飞编著 2019
- 《法语词汇认知联想记忆法》刘莲编著 2020
- 《培智学校义务教育实验教科书教师教学用书 生活适应 二年级 上》人民教育出版社,课程教材研究所,特殊教育课程教材研究中心编著 2019
- 《国家社科基金项目申报规范 技巧与案例 第3版 2020》文传浩,夏宇编著 2019
- 《流体力学》张扬军,彭杰,诸葛伟林编著 2019
- 《电子测量与仪器》人力资源和社会保障部教材办公室组织编写 2009
- 《少儿电子琴入门教程 双色图解版》灌木文化 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《通信电子电路原理及仿真设计》叶建芳 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《电子应用技术项目教程 第3版》王彰云 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017