当前位置:首页 > 工业技术
51单片机C语言开发详解
51单片机C语言开发详解

51单片机C语言开发详解PDF电子书下载

工业技术

  • 电子书积分:16 积分如何计算积分?
  • 作 者:张天凡等编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2008
  • ISBN:9787121064012
  • 页数:508 页
图书介绍:本书以Atmel公司生产的8051内核单片机AT89S51为实例,由浅入深地详细讲解了51单片机的结构体系、软件开发流程与硬件设计方法,并基于AT89S51单片机,通过具体详实的实例,讲解了单片机系统中输入与输出、RS232通讯、SPI总线、内存扩展、数模转换、模式转换、键盘接口、CAN总线通讯、LCD液晶驱动、LED数码管显示等常见的嵌入式设计与实现方法。在完成了各模块的学习讲解后,通过数个真实项目实例,详细阐述嵌入式系统综合设计的流程、方法与实战经验。本书不但适合于学习8051单片机的读者,对使用其他种类单片机的读者也极具参考价值。
《51单片机C语言开发详解》目录

第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

相关图书
作者其它书籍
返回顶部