《零基础学单片机C语言程序设计 第2版》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:赵建领,薛园园等编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2012
  • ISBN:9787111373483
  • 页数:506 页
图书介绍:单片机C51语言是目前最流行的单片机程序设计语言。本书由浅入深,循序渐进地讲解了C51语言的方方面面。

第一篇 单片机C51概述 1

第1章 单片机开发概述 1

1.1单片机介绍 1

1.1.1单片机简介 1

1.1.2单片机的主要组成部分 1

1.1.3单片机引脚及功能 2

1.1.4单片机的应用领域 4

1.2单片机开发流程 5

1.2.1系统分析 5

1.2.2单片机选型 5

1.2.3程序设计 8

1.2.4仿真测试 8

1.2.5程序下载 9

1.3单片机开发语言概述 9

1.3.1单片机汇编语言 9

1.3.2单片机C51语言 10

1.4小结 11

1.5习题与上机实践 11

第2章 构建C51集成开发环境 12

2.1 51系列单片机的最小硬件系统 12

2.1.1时钟振荡电路 13

2.1.2单片机的复位电路 14

2.2 Keil μ Vision3集成开发环境 15

2.2.1 Keil μ Vision3简介 15

2.2.2 Keil μ Vision3安装 15

2.2.3 Keil μ Vision3界面概览 17

2.2.4 Keil μ Vision3的各种常用窗口 17

2.3 Keil μ Vision3中C51的开发流程 21

2.3.1创建项目 21

2.3.2创建源文件 22

2.3.3编译项目 24

2.3.4仿真调试 24

2.3.5程序下载 25

2.4小结 25

2.5习题与上机实践 26

第二篇 C51语言程序设计指南 27

第3章 C51语言程序设计基础 27

3.1 C51程序的基本结构 27

3.2 C51编程规范及注意事项 28

3.2.1注释 28

3.2.2命名 29

3.2.3格式 29

3.3 C51的标识符与关键字 30

3.3.1标识符 30

3.3.2关键字 30

3.4 C51的变量类型 32

3.4.1 C51的数据类型 32

3.4.2整型变量 33

3.4.3浮点型变量 34

3.4.4字符型变量 35

3.4.5指针型变量 36

3.4.6无值型变量 37

3.5 C51的常量类型 37

3.5.1整型常量 37

3.5.2浮点型常量 38

3.5.3字符型常量 39

3.5.4转义字符 40

3.6变量作用域 41

3.6.1变量作用域的基本规则 41

3.6.2自动变量 42

3.6.3全局变量 43

3.6.4静态变量 44

3.6.5寄存器变量 45

3.7分隔符与const修饰符 45

3.7.1 C51分隔符 45

3.7.2 const修饰符 46

3.8 C51的运算符 47

3.8.1算术运算符 47

3.8.2逻辑运算符 49

3.8.3关系运算符 50

3.8.4位运算符 51

3.8.5“,”运算符 53

3.8.6“?”运算符 54

3.8.7“sizeof”运算符 55

3.8.8地址操作运算符 55

3.8.9联合操作运算符 56

3.8.10类型转换运算符 56

3.8.11运算符优先级和结合性 57

3.9 C51的表达式 59

3.9.1算术表达式 59

3.9.2赋值表达式 59

3.9.3逗号表达式 61

3.9.4关系表达式 61

3.9.5逻辑表达式 62

3.10小结 63

3.11上机实践 63

第4章 C51语句和流程 65

4.1 C51语句 65

4.1.1变量声明语句 65

4.1.2表达式语句 66

4.1.3复合语句 66

4.1.4循环语句 67

4.1.5条件语句 70

4.1.6开关语句 75

4.1.7程序跳转语句 76

4.1.8函数调用语句 78

4.1.9函数返回语句 79

4.1.10空语句 80

4.2 C51的流程控制结构及程序示例 81

4.2.1顺序结构 81

4.2.2选择结构 81

4.2.3循环结构 81

4.2.4流程控制结构程序示例 82

4.3小结 83

4.4上机实践 83

第5章 C51的数据结构 85

5.1 C51的数组 85

5.1.1数组定义及数组元素 85

5.1.2一维数组 87

5.1.3一维字符串数组 90

5.1.4二维数组 92

5.1.5二维字符串数组 95

5.1.6多维数组 96

5.2 C51的指针 97

5.2.1指针及相关概念 97

5.2.2指针变量的定义及赋值 98

5.2.3取址运算符和取值运算符 101

5.2.4指针变量的运算 102

5.2.5 C51的字符指针 103

5.2.6 C51的数组指针 104

5.2.7 C51的指针数组 109

5.3 C51的结构 111

5.3.1结构的声明 111

5.3.2结构变量的声明 112

5.3.3结构变量的初始化 114

5.3.4结构变量的使用 115

5.3.5 C51的结构数组 116

5.3.6 C51的结构指针 117

5.3.7 C51的嵌套式结构 121

5.3.8 C51的位结构 122

5.4 C51的联合 123

5.4.1联合的声明和使用 123

5.4.2结构和联合的区别 128

5.5 C51的枚举 129

5.5.1枚举和枚举变量的声明 129

5.5.2枚举变量的赋值和使用 131

5.6 C51的位域 133

5.6.1位域和位域变量的声明 133

5.6.2位域变量的使用 135

5.7 C51的自定义类型 136

5.7.1自定义类型的声明 136

5.7.2自定义类型的使用 136

5.8小结 137

5.9上机实践 137

第6章 C51的函数 138

6.1函数 138

6.1.1函数的概述 138

6.1.2函数的分类 139

6.1.3函数的定义 140

6.1.4函数的参数 142

6.1.5函数的返回值 146

6.2函数的作用域 147

6.2.1函数的作用范围 147

6.2.2函数变量的作用域 147

6.3函数的调用 149

6.3.1赋值调用 149

6.3.2引用调用 150

6.3.3递归调用 150

6.3.4嵌套调用 152

6.4 C51的main函数 153

6.4.1无参main函数 153

6.4.2有参main函数 154

6.5 C51的库函数 154

6.5.1 I/O函数库 154

6.5.2标准函数库 166

6.5.3字符函数库 174

6.5.4字符串函数库 186

6.5.5内部函数库 201

6.5.6数学函数库 204

6.5.7绝对地址访问函数库 209

6.5.8变量参数表函数库 212

6.5.9全程跳转函数库 214

6.5.10偏移量函数库 215

6.6小结 216

6.7上机实践 216

第7章 C51的存储结构 218

7.1单片机的存储器结构 218

7.1.1 51系列单片机的存储区域 218

7.1.2片内RAM的存储器结构 218

7.2 C51的存储类型 219

7.2.1 code存储类型 220

7.2.2 data存储类型 220

7.2.3 bdata存储类型 220

7.2.4 idata存储类型 221

7.2.5 pdata存储类型 221

7.2.6 xdata存储类型 222

7.3 C51的扩展数据类型 222

7.3.1 sfr和sfr16型变量 223

7.3.2 sbit型变量 223

7.3.3 bit型变量 224

7.3.4 51单片机寄存器的定义 224

7.4 C51变量的存储模式 226

7.4.1 Small模式 227

7.4.2 Compact模式 227

7.4.3 Large模式 227

7.5 C51的存储器指针 228

7.5.1一般指针 228

7.5.2存储器指针 229

7.6小结 231

7.7上机实践 231

第8章 C51的预处理命令和用户配置文件 232

8.1 C51的预处理命令概述 232

8.2文件包含指令 233

8.2.1 #include命令 233

8.2.2 C51常用的头文件 234

8.3宏定义指令 234

8.3.1 #define命令 235

8.3.2 #undef命令 237

8.4条件编译指令 238

8.4.1 #if、#else和#endif命令 238

8.4.2 #elif命令 239

8.4.3 #ifdef、#ifndef命令 239

8.5其他编译指令 241

8.5.1 #line命令 241

8.5.2 #error命令 241

8.5.3 #pragma命令 242

8.6 C51的用户配置文件 243

8.6.1 C51的启动代码详解 243

8.6.2 C51的变量初始化文件 248

8.6.3 C51的基本I/O函数文件 249

8.6.4 C51的分组配置文件 249

8.7小结 250

8.8上机实践 250

第三篇 C51单片机编程指南 253

第9章 C51定时器/计数器程序设计 253

9.1定时器/计数器简介 253

9.1.1定时器/计数器的结构 253

9.1.2方式控制寄存器TMOD 254

9.1.3中断控制寄存器TCON 255

9.1.4定时器/计数器的初值 257

9.1.5定时器/计数器的初始化 257

9.2定时器/计数器工作模式0的C51程序设计 257

9.2.1定时器/计数器工作模式0 258

9.2.2定时器/计数器模式0的程序设计 258

9.3定时器/计数器工作模式1的C51程序设计 259

9.3.1定时器/计数器工作模式1 259

9.3.2定时器/计数器模式1的程序设计 260

9.4定时器/计数器工作模式2的C51程序设计 261

9.4.1定时器/计数器工作模式2 261

9.4.2定时器/计数器模式2的程序设计 261

9.5定时器/计数器工作模式3的C51程序设计 262

9.5.1定时器/计数器工作模式3 262

9.5.2定时器/计数器模式3的程序设计 263

9.6小结 264

9.7上机实践 264

第10章 C51中断程序设计 266

10.1单片机的中断系统 266

10.1.1单片机的中断类型 266

10.1.2中断请求标志及其C51访问 267

10.1.3中断允许标志及其C51访问 270

10.1.4中断优先级标志及其C51访问 270

10.1.5中断的C51处理过程 271

10.2外部中断源的C51程序设计 274

10.3定时中断源的C51程序设计 275

10.4串行中断源的C51程序设计 276

10.5小结 277

10.6上机实践 277

第11章 C51串行接口程序设计 279

11.1 51系列单片机的串行接口 279

11.1.1单片机串行通信概述 279

11.1.2单片机串行接口的内部结构 280

11.1.3串行接口控制寄存器SCON 281

11.1.4特殊功能寄存器PCON 284

11.2串行口工作模式0的C51程序设计 284

11.2.1模式0的波特率 285

11.2.2模式0的数据发送及C51程序设计 285

11.2.3模式0的数据接收及C51程序设计 287

11.3串行口工作模式1的C51程序设计 289

11.3.1模式1的波特率 290

11.3.2模式1的数据发送及C51程序设计 291

11.3.3模式1的数据接收及C51程序设计 293

11.4串行口工作模式2的C51程序设计 295

11.4.1模式2的波特率 295

11.4.2模式2的数据发送及C51程序设计 295

11.4.3模式2的数据接收及C51程序设计 297

11.5串行口工作模式3的C51程序设计 299

11.5.1模式3的波特率 300

11.5.2模式3的数据发送及C51程序设计 301

11.5.3模式3的数据接收及C51程序设计 303

11.6小结 305

11.7上机实践 305

第12章 C51下的RTX-51实时多任务操作系统 307

12.1 RTX-51实时多任务操作系统简介 307

12.1.1单任务程序与多任务程序的比较 307

12.1.2 RTX-51实时多任务操作系统种类 309

12.2 RTX-51的系统函数 310

12.2.1中断调用的发送信号函数 310

12.2.2清除信号标志函数 311

12.2.3启动任务函数 311

12.2.4删除任务函数 312

12.2.5当前任务号函数 312

12.2.6任务调用的发送信号函数 313

12.2.7等待函数 313

12.3 RTX-51的任务调度 316

12.3.1循环任务调度 316

12.3.2事件任务调度 316

12.3.3信号任务调度 317

12.3.4优先级及抢先任务切换 318

12.3.5 RTX-51的主要概念和特性 319

12.4 RTX-51 Tiny的任务管理 320

12.4.1 RTX-51 Tiny的任务状态 320

12.4.2 RTX-51 Tiny的事件 321

12.4.3 RTX-51 Tiny的任务切换 321

12.5 RTX-51 Tiny的系统配置 321

12.5.1 RTX-51 Tiny系统配置文件 321

12.5.2 RTX-51 Tiny系统参数 324

12.6 RTX-51 Tiny的要求及注意事项 325

12.6.1 RTX-51 Tiny的要求及技术参数 325

12.6.2 RTX-51 Tiny的注意事项 326

12.7 RTX-51 FULL实时多任务操作系统简介 327

12.7.1 RTX-51 FULL函数一览 327

12.7.2 RTX-51的技术参数 329

12.8小结 329

12.9上机实践 329

第13章 Keil μ Vision3的调试和仿真 330

13.1 Keil μ Vision3的程序调试 330

13.1.1 Keil μ Vision3的程序调试模式 330

13.1.2断点 332

13.1.3性能分析器 333

13.1.4代码覆盖分析器 335

13.1.5调试命令 336

13.2系统资源仿真 337

13.2.1并行I/O端口仿真 338

13.2.2寄存器仿真 339

13.2.3中断仿真 342

13.2.4串行接口仿真 345

13.2.5定时器/计数器仿真 350

13.2.6看门狗定时器的仿真 356

13.2.7低功耗仿真 357

13.3小结 358

13.4上机实践 359

第四篇 C51程序设计典型案例 361

第14章 C51矩阵式键盘程序设计 361

14.1键盘接口概述 361

14.1.1独立式按键和矩阵式键盘 361

14.1.2键盘设计注意事项 362

14.2矩阵式键盘C51程序设计 363

14.2.1扫描法及C51程序设计 363

14.2.2线反转法及C51程序设计 365

14.2.3中断法及C51程序设计 367

14.3 C51矩阵式键盘设计实例 369

14.3.1电路图 369

14.3.2程序设计 370

14.4小结 373

14.5上机实践 373

第15章 C51液晶显示模块 374

15.1液晶显示模块概述 374

15.1.1液晶显示模块的分类 374

15.1.2液晶显示模块的特点 375

15.2液晶显示控制驱动器 376

15.2.1液晶显示控制驱动器概述 376

15.2.2液晶显示控制驱动器功能说明 376

15.3液晶显示控制器指令集 380

15.3.1基本指令集 380

15.3.2扩充指令集 383

15.3.3控制器指令操作方式 385

15.4点阵图形型液晶操作子函数 386

15.4.1指令操作子函数 387

15.4.2数据操作子函数 387

15.4.3初始化子函数 388

15.4.4清屏子函数 388

15.4.5汉字显示子函数 389

15.4.6图形显示子函数 390

15.5液晶汉字显示实例 390

15.5.1电路设计 391

15.5.2程序设计 393

15.6液晶图形显示实例 395

15.6.1图形数组的提取 395

15.6.2图形显示程序设计 397

15.7小结 399

15.8上机实践 399

第16章 C51模拟I2C总线 400

16.1 I2C总线概述 400

16.1.1 I2C总线工作原理 400

16.1.2 I2C总线器件的寻址方式 401

16.1.3 I2C总线数据操作 402

16.2 I2C总线接口EEPROM存储器 403

16.3 C51模拟I2C总线协议 403

16.3.1延时子函数 403

16.3.2起始信号子函数 404

16.3.3终止信号子函数 404

16.3.4应答信号子函数 405

16.3.5非应答信号子函数 405

16.3.6应答位检查子函数 406

16.3.7单字节写子函数 406

16.3.8单字节读子函数 407

16.3.9多字节写子函数 407

16.3.10多字节读子函数 409

16.4 C51读写EEPROM实例 410

16.4.1电路设计 410

16.4.2程序设计 411

16.4.3仿真分析 413

16.5小结 414

16.6上机实践 414

第17章 C51模拟单总线接口 415

17.1单总线接口概述 415

17.2单总线温度传感器及C51操作 416

17.2.1温度传感器DS18S20概述 416

17.2.2 DS18S20的数据操作及指令 417

17.2.3 DS 18S20的访问流程 419

17.2.4温度转换操作 420

17.2.5 C51模拟单总线操作子函数 421

17.3 C51单总线温度传感器实例 428

17.3.1电路设计 428

17.3.2程序设计 430

17.3.3仿真分析 433

17.4小结 433

17.5上机实践 434

第18章 实时时钟芯片应用 435

18.1实时时钟芯片DS 1302概述 435

18.1.1实时时钟芯片DS 1302引脚 435

18.1.2实时时钟芯片DS 1302的日期操作 436

18.1.3实时时钟芯片DS 1302的控制操作 437

18.1.4实时时钟芯片DS 1302的RAM操作 438

18.1.5实时时钟芯片DS 1302数据传输方式 438

18.2 DS 1302的控制子函数 440

18.2.1复位子函数 440

18.2.2字节读取子函数 440

18.2.3字节写入子函数 441

18.2.4年设置子函数 441

18.2.5月设置子函数 442

18.2.6日设置子函数 442

18.2.7星期设置子函数 442

18.2.8小时设置子函数 443

18.2.9分钟设置子函数 443

18.2.10秒设置子函数 443

18.2.11写保护子函数 444

18.2.12写允许子函数 444

18.2.13充电控制子函数 444

18.2.14初始化子函数 444

18.2.15 RAM字节写入子函数 445

18.2.16时钟显示子函数 446

18.2.17多字节突发方式读取RAM子函数 446

18.2.18多字节突发方式写入RAM子函数 447

18.3 C51读写实时时钟芯片实例 448

18.3.1电路图 448

18.3.2程序设计 448

18.3.3仿真分析 453

18.4小结 454

18.5上机实践 454

第19章 C51通信接口程序设计 456

19.1串行接口通信概述 456

19.1.1串行接口通信标准 456

19.1.2串行接口芯片 460

19.1.3双机及多机通信原理 462

19.2 C51双机通信实例 462

19.2.1电路原理图 462

19.2.2发送方程序设计 463

19.2.3接收方程序设计 465

19.3 C51多机通信实例 466

19.3.1主机程序设计 467

19.3.2从机程序设计 471

19.4小结 475

19.5上机实践 475

第20章 道路交通灯多任务控制系统 476

20.1交通灯多任务控制系统概述 476

20.2 C51交通灯多任务控制系统 476

20.2.1电路原理图 477

20.2.2建立RTX-51 Tiny项目 477

20.2.3多任务划分 478

20.2.4多任务程序设计 479

20.2.5串行通信及命令获取子函数 487

20.2.6仿真调试 492

20.3小结 493

20.4上机实践 493

第21章 常见面试题及解答 495

21.1 C51编程类面试题 495

21.1.1预处理 495

21.1.2 C51语言基础 496

21.1.3循环 498

21.1.4位操作 499

21.1.5实用子函数 500

21.2与MCS-51硬件相关的面试题 502

21.2.1 MCS-51硬件基础 502

21.2.2硬件编程 504