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

  • 购买积分:15 如何计算积分?
  • 作  者:赵建领,薛园园等编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2009
  • ISBN:9787111264514
  • 页数:466 页
图书介绍:本书讲述51系列单片机开发环境和流程、程序设计基础以及编程指南,并给出一些常用的经典案例。

第一篇 单片机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 单片机开发流程 4

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

第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 编译项目 23

2.3.4 仿真调试 24

2.3.5 程序下载 24

2.4 小结 25

第二篇 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的标识符与关键字 29

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 字符型变量 34

3.4.5 指针型变量 36

3.4.6 无值型变量 36

3.5 C51的常量类型 37

3.5.1 整型常量 37

3.5.2 浮点型常量 38

3.5.3 字符型常量 38

3.5.4 转义字符 39

3.6 变量作用域 40

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

3.6.2 自动变量 41

3.6.3 全局变量 42

3.6.4 静态变量 44

3.6.5 寄存器变量 44

3.7 分隔符与const修饰符 44

3.7.1 C51分隔符 44

3.7.2 const修饰符 45

3.8 C51的运算符 46

3.8.1 算术运算符 46

3.8.2 逻辑运算符 48

3.8.3 关系运算符 49

3.8.4 位运算符 50

3.8.5 “,”运算符 52

3.8.6 “?”运算符 53

3.8.7 “sizeof”运算符 54

3.8.8 地址操作运算符 54

3.8.9 联合操作运算符 55

3.8.10 类型转换运算符 55

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

3.9 C51的表达式 57

3.9.1 算术表达式 57

3.9.2 赋值表达式 58

3.9.3 逗号表达式 59

3.9.4 关系表达式 60

3.9.5 逻辑表达式 61

3.10 小结 62

第4章 C51语句和流程 63

4.1 C51语句 63

4.1.1 变量声明语句 63

4.1.2 表达式语句 63

4.1.3 复合语句 64

4.1.4 循环语句 65

4.1.5 条件语句 68

4.1.6 开关语句 72

4.1.7 程序跳转语句 73

4.1.8 函数调用语句 76

4.1.9 函数返回语句 77

4.1.10 空语句 77

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

4.2.1 顺序结构 78

4.2.2 选择结构 78

4.2.3 循环结构 79

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

4.3 小结 80

第5章 C51的数据结构 81

5.1 C51的数组 81

5.1.1 数组定义及数组元素 81

5.1.2 一维数组 83

5.1.3 一维字符串数组 86

5.1.4 二维数组 88

5.1.5 二维字符串数组 91

5.1.6 多维数组 92

5.2 C51的指针 92

5.2.1 指针及相关概念 92

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

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

5.2.4 指针变量的运算 97

5.2.5 C51的字符指针 98

5.2.6 C51的数组指针 100

5.2.7 C51的指针数组 104

5.3 C51的结构 106

5.3.1 结构的声明 106

5.3.2 结构变量的声明 107

5.3.3 结构变量的初始化 108

5.3.4 结构变量的使用 109

5.3.5 C51的结构数组 110

5.3.6 C51的结构指针 112

5.3.7 C51的嵌套式结构 115

5.3.8 C51的位结构 117

5.4 C51的联合 118

5.4.1 联合的声明和使用 118

5.4.2 结构和联合的区别 122

5.5 C51的枚举 123

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

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

5.6 C51的位域 127

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

5.6.2 位域变量的使用 129

5.7 C51的自定义类型 130

5.7.1 自定义类型的声明 130

5.7.2 自定义类型的使用 131

5.8 小结 131

第6章 C51的函数 132

6.1 函数 132

6.1.1 函数的概述 132

6.1.2 函数的分类 133

6.1.3 函数的定义 134

6.1.4 函数的参数 136

6.1.5 函数的返回值 140

6.2 函数的作用域 140

6.2.1 函数的作用范围 141

6.2.2 函数变量的作用域 141

6.3 函数的调用 142

6.3.1 赋值调用 143

6.3.2 引用调用 143

6.3.3 递归调用 144

6.3.4 嵌套调用 145

6.4 C51的main函数 147

6.4.1 无参main函数 147

6.4.2 有参main函数 147

6.5 C51的库函数 147

6.5.1 I/O函数库 148

6.5.2 标准函数库 160

6.5.3 字符函数库 167

6.5.4 字符串函数库 179

6.5.5 内部函数库 194

6.5.6 数学函数库 197

6.5.7 绝对地址访问函数库 202

6.5.8 变量参数表函数库 206

6.5.9 全程跳转函数库 207

6.5.10 偏移量函数库 208

6.6 小结 209

第7章 C51的存储结构 210

7.1 单片机的存储器结构 210

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

7.1.2 片内RAM的存储器结构 210

7.2 C51的存储类型 211

7.2.1 code存储类型 211

7.2.2 data存储类型 212

7.2.3 bdata存储类型 212

7.2.4 idata存储类型 213

7.2.5 pdata存储类型 213

7.2.6 xdata存储类型 213

7.3 C51的扩展数据类型 214

7.3.1 sfr和sfr16型变量 214

7.3.2 sbit型变量 215

7.3.3 bit型变量 215

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

7.4 C51变量的存储模式 218

7.4.1 Small模式 218

7.4.2 Compact模式 219

7.4.3 Large模式 219

7.5 C51的存储器指针 219

7.5.1 一般指针 219

7.5.2 存储器指针 220

7.6 小结 222

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

8.1 C51的预处理命令概述 223

8.2 文件包含指令 223

8.2.1 #include命令 224

8.2.2 C51常用的头文件 225

8.3 宏定义指令 225

8.3.1 #define命令 225

8.3.2 #undef命令 228

8.4 条件编译指令 228

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

8.4.2 #elif命令 229

8.4.3 #ifdef、#ifndef命令 230

8.5 其他编译指令 231

8.5.1 #line命令 232

8.5.2 #error命令 232

8.5.3 #pragma命令 233

8.6 C51的用户配置文件 234

8.6.1 C51的启动代码详解 234

8.6.2 C51的变量初始化文件 239

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

8.6.4 C51的分组配置文件 240

8.7 小结 241

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

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

9.1 定时器/计数器简介 243

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

9.1.2 方式控制寄存器TMOD 244

9.1.3 中断控制寄存器TCON 245

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

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

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

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

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

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

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

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

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

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

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

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

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

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

9.6 小结 253

第10章 C51中断程序设计 254

10.1 单片机的中断系统 254

10.1.1 单片机的中断类型 254

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

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

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

10.1.5 中断的C51处理过程 259

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

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

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

10.5 小结 264

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

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

11.1.1 单片机串行通信概述 265

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

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

11.1.4 特殊功能寄存器PCON 269

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

11.2.1 模式0的波特率 270

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

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

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

11.3.1 模式1的波特率 275

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

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

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

11.4.1 模式2的波特率 280

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

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

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

11.5.1 模式3的波特率 284

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

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

11.6 小结 289

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

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

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

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

12.2 RTX-51的系统函数 293

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

12.2.2 清除信号标志函数 294

12.2.3 启动任务函数 294

12.2.4 删除任务函数 295

12.2.5 当前任务号函数 295

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

12.2.7 等待函数 296

12.3 RTX-51的任务调度 299

12.3.1 循环任务调度 299

12.3.2 事件任务调度 299

12.3.3 信号任务调度 300

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

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

12.4 RTX-51 Tiny的任务管理 303

12.4.1 RTX-51 Tiny的任务状态 303

12.4.2 RTX-51 Tiny的事件 303

12.4.3 RTX-51 Tiny的任务切换 304

12.5 RTX-51 Tiny的系统配置 304

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

12.5.2 RTX-51 Tiny系统参数 307

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

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

12.6.2 RTX-51 Tiny的注意事项 308

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

12.7.1 RTX-51 FULL函数一览 309

12.7.2 RTX-51的技术参数 311

12.8 小结 311

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

13.1 Keil μ Vision3的程序调试 312

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

13.1.2 断点 314

13.1.3 性能分析器 315

13.1.4 代码覆盖分析器 317

13.1.5 调试命令 318

13.2 系统资源仿真 319

13.2.1 并行I/O端口仿真 319

13.2.2 寄存器仿真 321

13.2.3 中断仿真 323

13.2.4 串行接口仿真 327

13.2.5 定时器/计数器仿真 331

13.2.6 看门狗定时器的仿真 337

13.2.7 低功耗仿真 338

13.3 小结 330

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

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

14.1 键盘接口概述 341

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

14.1.2 键盘设计注意事项 342

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

14.2.1 扫描法及C51程序设计 343

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

14.2.3 中断法及C51程序设计 347

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

14.3.1 电路图 348

14.3.2 程序设计 349

14.4 小结 352

第15章 C51液晶显示模块 353

15.1 液晶显示模块概述 353

15.1.1 液晶显示模块的分类 353

15.1.2 液晶显示模块的特点 354

15.2 液晶显示控制驱动器 354

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

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

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

15.3.1 基本指令集 359

15.3.2 扩充指令集 361

15.3.3 控制器指令操作方式 363

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

15.4.1 指令操作子函数 365

15.4.2 数据操作子函数 366

15.4.3 初始化子函数 366

15.4.4 清屏子函数 366

15.4.5 汉字显示子函数 367

15.4.6 图形显示子函数 368

15.5 液晶汉字显示实例 368

15.5.1 电路设计 369

15.5.2 程序设计 371

15.6 液晶图形显示实例 373

15.6.1 图形数组的提取 373

15.6.2 图形显示程序设计 375

15.7 小结 377

第16章 C51模拟I2C总线 378

16.1 I2C总线概述 378

16.1.1 I2C总线工作原理 378

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

16.1.3 I2C总线数据操作 379

16.2 I2C总线接口EEPROM存储器 380

16.3 C51模拟I2C总线协议 381

16.3.1 延时子函数 381

16.3.2 起始信号子函数 382

16.3.3 终止信号子函数 382

16.3.4 应答信号子函数 383

16.3.5 非应答信号子函数 383

16.3.6 应答位检查子函数 384

16.3.7 单字节写子函数 384

16.3.8 单字节读子函数 384

16.3.9 多字节写子函数 385

16.3.10 多字节读子函数 386

16.4 C51读写EEPROM实例 387

16.4.1 电路设计 388

16.4.2 程序设计 388

16.4.3 仿真分析 390

16.5 小结 391

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

17.1 单总线接口概述 392

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

17.2.1 温度传感器DS18S20概述 393

17.2.2 DS18S20的数据操作及指令 394

17.2.3 DS18S20的访问流程 396

17.2.4 温度转换操作 396

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

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

17.3.1 电路设计 405

17.3.2 程序设计 406

17.3.3 仿真分析 409

17.4 小结 410

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

18.1 实时时钟芯片DS1302概述 411

18.1.1 实时时钟芯片DS1302引脚 411

18.1.2 实时时钟芯片DS1302的日期操作 412

18.1.3 实时时钟芯片DS1302的控制操作 413

18.1.4 实时时钟芯片DS1302的RAM操作 414

18.1.5 实时时钟芯片DS1302数据传输方式 414

18.2 DS1302的控制子函数 415

18.2.1 复位子函数 416

18.2.2 字节读取子函数 416

18.2.3 字节写入子函数 416

18.2.4 年设置子函数 417

18.2.5 月设置子函数 417

18.2.6 日设置子函数 417

18.2.7 星期设置子函数 418

18.2.8 小时设置子函数 418

18.2.9 分钟设置子函数 418

18.2.10 秒设置子函数 419

18.2.11 写保护子函数 419

18.2.12 写允许子函数 419

18.2.13 充电控制子函数 419

18.2.14 初始化子函数 420

18.2.15 RAM字节写入子函数 421

18.2.16 时钟显示子函数 421

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

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

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

18.3.1 电路图 423

18.3.2 程序设计 424

18.3.3 仿真分析 428

18.4 小结 429

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

19.1 串行接口通信概述 430

19.1.1 串行接口通信标准 430

19.1.2 串行接口芯片 434

19.1.3 双机及多机通信原理 436

19.2 C51双机通信实例 436

19.2.1 电路原理图 436

19.2.2 发送方程序设计 437

19.2.3 接收方程序设计 439

19.3 C51多机通信实例 440

19.3.1 主机程序设计 441

19.3.2 从机程序设计 445

19.4 小结 449

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

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

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

20.2.1 电路原理图 451

20.2.2 建立RTX-51 Tiny项目 451

20.2.3 多任务划分 452

20.2.4 多任务程序设计 453

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

20.2.6 仿真调试 464

20.3 小结 466