零基础学单片机C语言程序设计

零基础学单片机C语言程序设计

赵建领, 等编著

出版社:机械工业出版社

年代:2013

定价:59.0

书籍简介:

单片机C51语言是目前最流行的单片机程序设计语言。本书由浅入深,循序渐进地讲解了C51语言的方方面面。本书知识点覆盖全面、结构安排紧凑、讲解详细、言简意赅、通俗易懂、实例丰富。内容包括51系列单片机开发环境和流程、程序设计基础以及编程指南,并给出了一些常用的典型案例。全书分为四篇,共21章,全面详细地讲述了单片机的程序设计基础、编程指南及应用案例。首先介绍了51系列单片机的基本结构以及单片机的开发概述,其次详细介绍了单片机程序设计的C51语言,然后结合单片机的硬件资源细致讲解了如何应用C51语言进行编程操作,最后结合实际应用,重点分析了在各个领域中常用到的一些典型案例,使读者更加融会贯通地掌握C51语言,以供读者在学习和工作中进行参考。在第21章中还介绍了部分常见的面试题及解答,方便读者做好入职前的准备工作。

书籍目录:

目  录

前言

第一篇 单片机C51概述

第1章 单片机开发概述1

1.1 单片机介绍1

1.1.1 单片机简介1

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

1.1.3 单片机引脚及功能3

1.1.4 单片机的应用领域4

1.2 单片机开发流程5

1.2.1 系统分析5

1.2.2 单片机选型5

1.2.3 程序设计8

1.2.4 仿真测试9

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简介16

2.2.2 Keil μ Vision3安装16

2.2.3 Keil μ Vision3界面概览17

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

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

2.3.1 创建项目22

2.3.2 创建源文件22

2.3.3 编译项目24

2.3.4 仿真调试24

2.3.5 程序下载25

2.4 小结25

2.5 习题与上机实践26

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

第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 变量作用域40

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修饰符45

3.8 C51的运算符47

3.8.1 算术运算符47

3.8.2 逻辑运算符49

3.8.3 关系运算符50

3.8.4 位运算符50

3.8.5 “,”运算符53

3.8.6 “?”运算符54

3.8.7 “sizeof”运算符54

3.8.8 地址操作运算符55

3.8.9 联合操作运算符55

3.8.10 强制类型转换运算符56

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

3.9 C51的表达式58

3.9.1 算术表达式58

3.9.2 赋值表达式59

3.9.3 逗号表达式60

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 开关语句74

4.1.7 程序跳转语句76

4.1.8 函数调用语句78

4.1.9 函数返回语句79

4.1.10 空语句80

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

4.2.1 顺序结构80

4.2.2 选择结构80

4.2.3 循环结构81

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

4.3 小结82

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的指针96

5.2.1 指针及相关概念97

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

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

5.2.4 指针变量的运算102

5.2.5 C51的字符指针103

5.2.6 C51的数组指针104

5.2.7 C51的指针数组109

5.3 C51的结构110

5.3.1 结构的声明110

5.3.2 结构变量的声明111

5.3.3 结构变量的初始化113

5.3.4 结构变量的使用114

5.3.5 C51的结构数组115

5.3.6 C51的结构指针116

5.3.7 C51的嵌套式结构119

5.3.8 C51的位结构121

5.4 C51的联合122

5.4.1 联合的声明和使用122

5.4.2 结构和联合的区别126

5.5 C51的枚举127

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

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

5.6 C51的位域131

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

5.6.2 位域变量的使用133

5.7 C51的类型声明134

5.7.1 类型声明的定义134

5.7.2 类型声明的使用135

5.8 小结135

5.9 上机实践135

第6章 C51的函数137

6.1 函数137

6.1.1 函数的概述137

6.1.2 函数的分类138

6.1.3 函数的定义139

6.1.4 函数的参数141

6.1.5 函数的返回值146

6.2 函数的作用域146

6.2.1 函数的作用范围146

6.2.2 函数代码的作用域147

6.2.3 函数变量的作用域147

6.3 函数的调用148

6.3.1 赋值调用149

6.3.2 引用调用149

6.3.3 递归调用150

6.3.4 嵌套调用151

6.4 C51的main函数153

6.4.1 无参main函数153

6.4.2 有参main函数153

6.5 C51的库函数154

6.5.1 I/O函数库154

6.5.2 标准函数库166

6.5.3 字符函数库173

6.5.4 字符串函数库184

6.5.5 内部函数库199

6.5.6 数学函数库201

6.5.7 绝对地址访问函数库207

6.5.8 变量参数表函数库210

6.5.9 全程跳转函数库211

6.5.10 偏移量函数库212

6.6 小结213

6.7 上机实践213

第7章 C51的存储结构215

7.1 单片机的存储器结构215

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

7.1.2 片内RAM的存储器结构216

7.2 C51的存储类型216

7.2.1 code存储类型217

7.2.2 data存储类型217

7.2.3 bdata存储类型218

7.2.4 idata存储类型218

7.2.5 pdata存储类型219

7.2.6 xdata存储类型219

7.3 C51的扩展数据类型219

7.3.1 sfr和sfr16型变量220

7.3.2 sbit型变量220

7.3.3 bit型变量221

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

7.4 C51变量的存储模式223

7.4.1 Small模式224

7.4.2 Compact模式224

7.4.3 Large模式224

7.5 C51的存储器指针225

7.5.1 一般指针225

7.5.2 存储器指针226

7.6 小结228

7.7 上机实践228

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

8.1 C51的预处理命令概述229

8.2 文件包含指令230

8.2.1 #include命令230

8.2.2 C51常用的头文件231

8.3 宏定义指令232

8.3.1 #define命令232

8.3.2 #undef命令234

8.4 条件编译指令235

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

8.4.2 #elif命令236

8.4.3 #ifdef、#ifndef命令237

8.5 其他编译指令238

8.5.1 #line命令238

8.5.2 #error命令238

8.5.3 #pragma命令239

8.6 C51的用户配置文件240

8.6.1 C51的启动代码详解240

8.6.2 C51的变量初始化文件246

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

8.6.4 C51的分组配置文件246

8.7 小结247

8.8 上机实践247

第三篇 C51单片机编程指南

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

9.1 定时器/计数器简介249

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

9.1.2 方式控制寄存器TMOD250

9.1.3 中断控制寄存器TCON251

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

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

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

9.2.1 定时器/计数器工作模式0254

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

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

9.3.1 定时器/计数器工作模式1255

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

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

9.4.1 定时器/计数器工作模式2257

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

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

9.5.1 定时器/计数器工作模式3259

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

9.6 小结261

9.7 上机实践261

第10章 C51中断程序设计263

10.1 单片机的中断系统263

10.1.1 单片机中断的典型概念263

10.1.2 单片机的中断类型264

10.1.3 中断请求标志及其C51访问265

10.1.4 中断允许标志及其C51访问268

10.1.5 中断优先级标志及其C51访问269

10.1.6 中断的C51处理过程269

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

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

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

10.5 小结276

10.6 上机实践276

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

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

11.1.1 单片机串行通信概述277

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

11.1.3 串行接口控制寄存器SCON279

11.1.4 特殊功能寄存器PCON282

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

11.2.1 模式0的波特率283

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

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

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

11.3.1 模式1的波特率287

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

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

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

11.4.1 模式2的波特率293

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

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

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

11.5.1 模式3的波特率297

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

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

11.6 小结303

11.7 上机实践303

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

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

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

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

12.2 RTX-51的系统函数308

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

12.2.2 清除信号标志函数308

12.2.3 启动任务函数309

12.2.4 删除任务函数309

12.2.5 获取当前任务号函数310

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

12.2.7 等待函数311

12.3 RTX-51的任务调度313

12.3.1 循环任务调度314

12.3.2 事件任务调度315

12.3.3 信号任务调度316

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

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

12.4 RTX-51 Tiny的任务管理318

12.4.1 RTX-51 Tiny的任务状态319

12.4.2 RTX-51 Tiny的事件319

12.4.3 RTX-51 Tiny的任务切换319

12.5 RTX-51 Tiny的系统配置320

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

12.5.2 RTX-51 Tiny系统参数322

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

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

12.6.2 RTX-51 Tiny的注意事项324

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

12.7.1 RTX-51 FULL函数一览325

12.7.2 RTX-51的技术参数327

12.8 小结328

12.9 上机实践328

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

13.1 Keil μ Vision3的程序调试329

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

13.1.2 断点331

13.1.3 性能分析器332

13.1.4 代码覆盖分析器334

13.1.5 调试命令335

13.2 系统资源仿真336

13.2.1 并行I/O端口仿真337

13.2.2 寄存器仿真338

13.2.3 中断仿真341

13.2.4 串行接口仿真344

13.2.5 定时器/计数器仿真348

13.2.6 看门狗定时器的仿真354

13.2.7 低功耗仿真356

13.3 小结357

13.4 上机实践357

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

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

14.1 键盘接口概述359

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

14.1.2 键盘设计注意事项360

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

14.2.1 扫描法及C51程序设计361

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

14.2.3 中断法及C51程序设计365

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

14.3.1 电路图367

14.3.2 程序设计368

14.4 小结371

14.5 上机实践371

第15章 C51液晶显示模块372

15.1 液晶显示模块概述372

15.1.1 液晶显示模块的分类372

15.1.2 液晶显示模块的特点373

15.2 液晶显示控制驱动器374

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

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

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

15.3.1 基本指令集378

15.3.2 扩充指令集380

15.3.3 控制器指令操作方式382

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

15.4.1 指令操作子函数384

15.4.2 数据操作子函数384

15.4.3 初始化子函数385

15.4.4 清屏子函数386

15.4.5 汉字显示子函数386

15.4.6 图形显示子函数387

15.5 液晶汉字显示实例388

15.5.1 电路设计388

15.5.2 程序设计390

15.6 液晶图形显示实例392

15.6.1 图形数组的提取392

15.6.2 图形显示程序设计393

15.7 小结395

15.8 上机实践396

第16章 C51模拟I2C总线397

16.1 I2C总线概述397

16.1.1 I2C总线工作原理397

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

16.1.3 I2C总线数据操作399

16.2 I2C总线接口EEPROM存储器400

16.3 C51模拟I2C总线协议401

16.3.1 延时子函数401

16.3.2 起始信号子函数401

16.3.3 终止信号子函数402

16.3.4 应答信号子函数402

16.3.5 非应答信号子函数403

16.3.6 应答位检查子函数403

16.3.7 单字节写子函数404

16.3.8 单字节读子函数404

16.3.9 多字节写子函数405

16.3.10 多字节读子函数405

16.4 C51读写EEPROM实例407

16.4.1 电路设计407

16.4.2 程序设计408

16.4.3 仿真分析410

16.5 小结411

16.6 上机实践411

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

17.1 单总线接口概述412

17.1.1 单总线接口结构412

17.1.2 单总线通信格式412

17.1.3 单总线的特点413

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

17.2.1 温度传感器DS18S20概述413

17.2.2 DS18S20的数据操作及指令414

17.2.3 DS18S20的访问流程417

17.2.4 温度转换操作417

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

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

17.3.1 电路设计426

17.3.2 程序设计428

17.3.3 仿真分析431

17.4 小结431

17.5 上机实践432

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

18.1 实时时钟芯片DS1302概述433

18.1.1 实时时钟芯片DS1302引脚433

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

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

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

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

18.2 DS1302的控制子函数438

18.2.1 复位子函数438

18.2.2 字节读取子函数439

18.2.3 字节写入子函数439

18.2.4 年设置子函数439

18.2.5 月设置子函数440

18.2.6 日设置子函数440

18.2.7 星期设置子函数440

18.2.8 小时设置子函数441

18.2.9 分钟设置子函数441

18.2.10 秒设置子函数441

18.2.11 写保护子函数442

18.2.12 写允许子函数442

18.2.13 充电控制子函数442

18.2.14 初始化子函数442

18.2.15 RAM字节写入子函数443

18.2.16 时钟显示子函数444

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

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

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

18.3.1 电路图446

18.3.2 程序设计446

18.3.3 仿真分析450

18.4 小结452

18.5 上机实践452

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

19.1 串行接口通信概述453

19.1.1 串行接口通信标准453

19.1.2 串行接口芯片458

19.1.3 双机及多机通信原理459

19.2 C51双机通信实例460

19.2.1 电路原理图460

19.2.2 发送方程序设计461

19.2.3 接收方程序设计463

19.3 C51多机通信实例464

19.3.1 主机程序设计464

19.3.2 从机程序设计468

19.4 小结472

19.5 上机实践472

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

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

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

20.2.1 电路原理图474

20.2.2 建立RTX-51 Tiny项目475

20.2.3 多任务划分476

20.2.4 多任务程序设计476

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

20.2.6 仿真调试488

20.3 小结490

20.4 上机实践490

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

21.1 C51编程类面试题491

21.1.1 预处理491

21.1.2 C51语言基础492

21.1.3 循环494

21.1.4 位操作495

21.1.5 实用子函数496

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

21.2.1 MCS-51硬件基础498

21.2.2 硬件编程500

书籍规格:

书籍详细信息
书名零基础学单片机C语言程序设计站内查询相似图书
丛书名零基础学编程
9787111449447
如需购买下载《零基础学单片机C语言程序设计》pdf扫描版电子书或查询更多相关信息,请直接复制isbn,搜索即可全网搜索该ISBN
出版地北京出版单位机械工业出版社
版次3版印次1
定价(元)59.0语种简体中文
尺寸19 × 26装帧平装
页数 448 印数 4500

书籍信息归属:

零基础学单片机C语言程序设计是机械工业出版社于2014.1出版的中图分类号为 TP312 ,TP368.1 的主题关于 单片微型计算机-C语言-程序设计 的书籍。