书籍详情
《STC单片机C语言程序设计:体系架构、编程实例及项目实战》[26M]百度网盘|亲测有效|pdf下载
  • STC单片机C语言程序设计:体系架构、编程实例及项目实战

  • 出版社:清华大学出版社京东自营官方旗舰店
  • 出版时间:2018-11
  • 热度:11310
  • 上架时间:2024-06-30 09:38:03
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

编辑推荐

本书以STC公司的IAP15W4K58S4单片机和Keil μVision5集成开发环境为平台,系统地介绍了C语言程序设计的理论与实践。作者以本书为核心,构建了由公开视频教学资源、设计案例代码、教学课件、QQ交流群等学生学习资源,以方便广大读者与作者交流互动。本书特色:
(1) 知识全面 全面介绍单片机芯片、数字逻辑、8051 CPU内核、助记符指令、C语言基础、C语言应用程序开发等几个方面。
(2) 内容权 参考了Keil μVision 8051集成开发环境应用手册及STC公司1新的数据手册,将1权的单片机C语言程序设计内容反映在本书中。
(3) 实例丰富 通过大量的设计实例,对单片机C语言程序设计的各个知识模块进行了详细的讲解。全书提供了140多个实例,充分满足教师教学和学生自学的需要。
(4) 软硬融合 以软件和硬件协同设计为主线,将C编程语言与STC 8051单片机平台进行系统化深度融合,使读者能深入理解并掌握软件和硬件之间内在关系。

内容简介

本书系统地论述了STC单片机的C语言程序设计方法。全书共分为27章,主要内容包括: 单片机基础知识,STC单片机硬件知识,数值表示及转换,STC单片机CPU子系统,STC单片机CPU指令系统,STC单片机集成开发环境,STC单片机汇编语言编程基础,STC单片机C语言编程入门,STC单片机C语言变量和数据类型,STC单片机C语言运算符,STC单片机C语言描述语句,STC单片机C语言数组,STC单片机C语言指针,STC单片机C语言函数,STC单片机C语言预处理指令,STC单片机C语言复杂数据结构,STC单片机C语言高级编程技术,STC单片机时钟、复位和电源模式原理及实现,STC单片机比较器原理及实现,STC单片机计数器和定时器原理及实现,STC单片机异步串行收发器原理及实现,STC单片机ADC原理及实现,STC单片机SPI原理及实现,STC单片机CCP/PCA/PWM模块原理及实现,STC 单片机增强型PWM发生器原理及实现,RTX51操作系统原理及实现,综合项目实例: 风扇转速控制系统的设计与实现。
本书将C语言程序设计与STC单片机的各个知识点进行系统化融合,不仅系统地介绍C语言程序设计的各个知识点及其在单片机中的具体应用,而且更加突出学习方法。为了方便读者自学,本书提供了大量的设计案例和公开教学视频。
本书可作为读者零基础学习单片机C语言程序设计的参考用书,也可作为单片机竞赛、单片机认证考试的参考用书。

作者简介

何宾,著名的嵌入式技术和EDA技术专家,长期从事电子设计自动化方面的教学和科
研工作,与全球多家知名的半导体厂商和EDA工具厂商保持紧密合作。目前已经出版嵌入式和EDA方面的著作20余部,内容涵盖电路仿真、电路设计、可编程逻辑器件、数字信号处理、单片机、嵌入式系统、片上可编程系统等。典型的代表作有《Xilinx FPGA数字信号处理1指南——从HDL、模型到C的描述》《STC单片机原理及应用》《Altium Designer 15.0电路仿真、设计、验证与工艺实现1指南》《模拟电子系统设计指南(基础篇)》《模拟电子系统设计指南(实践篇)》《EDA原理及VHDL实现——从晶体管、门电路到Xilinx Vivado的数字系统设计》《EDA原理及Verilog HDL实现——从晶体管、门电路到Xilinx Vivado的数字系统设计》。

目录

第1章 单片机基础知识

1.1单片机发展历史

1.2单片机内部架构

1.3单片机与嵌入式系统的关系

1.4单片机硬件开发平台

1.5运行第一个单片机程序

1.6单片机编程语言

第2章STC单片机硬件知识

2.1STC单片机发展历史

2.2STC单片机IAP和ISP

2.3STC单片机命名规则及封装

……

2.4STC单片机结构及功能

2.5STC单片机的I/O驱动原理

2.6STC单片机硬件下载电路设计

……

2.7STC单片机电源系统设计

2.8调试单片机系统所用到的仪器

第3章数值表示及转换

3.1常用数制

……

3.2正数表示方法

3.3正数码制转换

……

3.4负数表示方法

……

3.5负数补码的计算

……

3.6定点数表示

3.7浮点数表示

第4章STC单片机CPU子系统

4.1STC单片机CPU内核功能单元

……

4.2STC单片机存储器结构和地址空间

……

4.3STC单片机中断系统原理及功能

……

第5章STC单片机CPU指令系统

5.1STC单片机CPU寻址模式

……

5.2STC单片机CPU指令集

……

第6章STC单片机集成开发环境

6.1Keil μVision集成开发环境介绍

……

6.2Keil μVision软件开发流程介绍

……

6.3Keil μVision软件开发流程实现

……

6.4U8W编程器

……

第7章STC单片机汇编语言编程基础

7.1汇编语言程序结构

7.2汇编代码中段的分配

……

7.3汇编语言符号及规则

……

7.4汇编语言操作数描述

……

7.5汇编语言控制描述

……

7.6汇编语言设计流程

……

7.7单片机端口控制汇编语言程序设计

……

7.8单片机中断汇编语言程序设计

……

第8章STC单片机C语言编程入门

8.1高级编程语言概念

……

8.2选择C语言的理由

8.3C语言发展历史

8.4C语言程序框架

8.5C语言词法构成

第9章STC单片机C语言变量和数据类型

9.1C语言中的常量和变量

……

9.2C51编译器支持的数据类型

……

9.3自定义数据类型

9.4变量存储种类和存储类型

……

9.5定位变量的绝对位置

第10章STC单片机C语言运算符

10.1C语言运算符分类

10.2C语言运算符优先级

10.3赋值运算符

10.4算术运算符

10.5递增和递减运算符

10.6关系运算符

10.7逻辑运算符

10.8位运算符

10.9复合赋值运算符

10.10逗号运算符

10.11条件运算符

10.12强制类型转换符

10.13sizeof运算符

第11章STC单片机C语言描述语句

11.1输入输出语句

11.1.1putchar函数

11.1.2getchar函数

11.1.3printf函数

11.1.4scanf函数

11.1.5puts函数

11.1.6gets函数

11.2表达式语句

11.3条件语句

11.3.1条件语句格式1

11.3.2条件语句格式2

11.3.3条件语句格式3

11.4开关语句

11.5循环语句

11.5.1while语句

11.5.2dowhile语句

11.5.3for语句

11.5.4goto语句

11.5.5break语句

11.5.6continue语句

11.6返回语句

11.7C语言端口控制实现

第12章STC单片机C语言数组

12.1一维数组的定义和操作

12.1.1一维数组的定义

12.1.2一维数组初始化

12.1.3一维数组的操作

12.2多维数组的定义和操作

12.2.1多维数组的定义

12.2.2多维数组初始化

12.2.3多维数组的操作

第13章STC单片机C语言指针

13.1C51编译器中指针的分类

13.2通用指针

13.2.1未指定存储区域的通用指针

13.2.2指定存储区域的通用指针

13.3指定存储器类型的指针

13.4指针转换

13.5指针变量输入

13.6指向指针的指针

13.7抽象指针

第14章STC单片机C语言函数

14.1函数定义和声明

14.1.1标准C函数定义和声明

14.1.2扩展C函数定义和声明

14.1.3存储器模型

14.2函数调用原理

14.2.1函数调用格式

14.2.2参数和堆栈

14.2.3参数和寄存器

14.2.4返回值

14.3函数调用实现分析

14.4函数变量的存储方式

14.5数组类型传递参数

14.6指针类型传递参数

14.7指向函数的指针

14.8可重入函数设计

14.9中断函数设计

14.9.1C语言中断函数的声明格式

14.9.2外部中断电路原理

14.9.3C语言中断程序的编写和测试

第15章STC单片机C语言预处理指令

15.1文件包含

15.1.1包含用户头文件

15.1.2包含系统头文件

15.1.3只包含一次文件

15.2宏定义及使用

15.2.1简单的宏定义

15.2.2复杂的宏定义

15.2.3宏操作符

15.2.4预定义的宏

15.3条件编译

15.4其他预处理命令

15.4.1#line

15.4.2#message

15.4.3#error

15.4.4#pragma

第16章STC单片机C语言复杂数据结构

16.1结构

16.1.1结构类型的定义

16.1.2结构变量的定义

16.1.3结构变量内元素的引用

16.1.4指向结构的指针

16.2联合

16.3枚举

16.4链表

16.4.1单链表的存储结构

16.4.2建立链表

16.4.3查找结点

16.4.4删除结点

16.4.5插入结点

第17章STC单片机C语言高级编程技术

17.1C程序中使用汇编语言

17.1.1内嵌汇编语言

17.1.2调用汇编程序

17.2优化代码策略

17.3C语言动态图形交互设计

17.3.1动态图形交互硬件平台

17.3.2STC单片机对触摸屏的控制

17.3.3STC单片机对触摸屏的初始化

17.3.4触摸屏基本绘图流程

17.3.5绘制不同图形的具体实现方法

17.3.6设计头文件说明

17.3.7主处理文件main函数设计

第18章STC单片机时钟、复位和电源模式原理及实现

18.1STC单片机时钟

18.2STC单片机复位

18.2.1外部RST引脚复位

18.2.2软件复位

18.2.3掉电/上电复位

18.2.4MAX810专用复位电路复位

18.2.5内部低压检测复位

18.2.6看门狗复位

18.2.7程序地址非法复位

18.3STC单片机电源模式

18.3.1低速模式

18.3.2空闲模式

18.3.3掉电模式

第19章STC单片机比较器原理及实现

19.1STC单片机比较器结构

19.2STC单片机比较器寄存器组

19.2.1比较控制寄存器1

19.2.2比较控制寄存器2

19.3STC单片机比较器应用

第20章STC单片机计数器和定时器原理及实现

20.1计数器/定时器模块简介

20.2计数器/定时器寄存器组

20.2.1定时器/计数器0/1控制寄存器TCON

20.2.2定时器/计数器工作模式寄存器TMOD

20.2.3辅助寄存器AUXR

20.2.4T0~T2时钟输出寄存器和外部中断允许INT_CLKO(AUXR2)

20.2.5定时器T0和T1中断允许控制寄存器IE

20.2.6定时器T0和T1中断优先级控制寄存器IP

20.2.7定时器T4和定时器T3控制寄存器T4T3M

20.2.8定时器T2、T3和T4的中断控制寄存器IE2

20.3计数器/定时器工作模式原理和实现

20.3.1定时器/计数器0工作模式

20.3.2定时器/计数器1工作模式

20.3.3定时器/计数器2工作模式

20.3.4定时器/计数器3工作模式

20.3.5定时器/计数器4工作模式

第21章STC单片机异步串行收发器原理及实现

21.1RS232标准简介

21.1.1RS232传输特点

21.1.2RS232数据传输格式

21.1.3RS232电气标准

21.1.4RS232参数设置

21.1.5RS232连接器

21.2STC单片机串口模块简介

21.2.1串口模块结构

21.2.2串口引脚

21.3串口1寄存器及工作模式

21.3.1串口1寄存器组

21.3.2串口1工作模式

21.3.3人机交互控制的实现

21.3.4按键扫描及串口显示

21.4串口2寄存器及工作模式

21.4.1串口2寄存器组

21.4.2串口2工作模式

21.5串口3寄存器及工作模式

21.5.1串口3寄存器组

21.5.2串口3工作模式

21.6串口4寄存器及工作模式

21.6.1串口4寄存器组

21.6.2串口4工作模式

21.7红外通信的原理及实现

21.7.1红外收发器的电路原理

21.7.2红外通信波形捕获

21.7.3红外通信协议

21.7.4红外检测原理

21.7.5串口通信原理

21.7.6设计实现

第22章STC单片机ADC原理及实现

22.1ADC原理

22.1.1ADC的参数

22.1.2ADC的类型

22.2STC单片机内ADC的结构原理

22.2.1STC单片机内ADC的结构

22.2.2ADC转换结果的计算方法

22.3STC单片机内ADC寄存器组

22.3.1P1口模拟功能控制寄存器

22.3.2ADC控制寄存器

22.3.3时钟分频寄存器

22.3.4ADC结果高位寄存器

22.3.5ADC结果低位寄存器

22.3.6中断使能寄存器

22.3.7中断优先级寄存器

22.4直流电压测量及串口显示

22.4.1直流分压电路原理

22.4.2软件设计流程

22.4.3具体实现过程

22.5直流电压测量及LCD屏显示

22.5.1硬件电路设计

22.5.21602字符LCD原理

22.5.3软件设计流程

22.5.4具体实现过程

22.6交流电压测量及LCD屏显示

22.6.1硬件电路设计

22.6.212864图形点阵LCD原理

22.6.3软件设计流程

22.6.4ADC外部输入信号要求

22.6.5具体实现过程

22.7温度测量及串口显示

第23章STC单片机SPI原理及实现

23.1STC SPI模块结构及功能

23.1.1SPI传输特点

23.1.2SPI模块功能

23.1.3SPI接口信号

23.1.4SPI接口的数据通信方式

23.1.5SPI模块内部结构

23.2SPI模块寄存器组

23.2.1SPI控制寄存器

23.2.2SPI状态寄存器

23.2.3SPI数据寄存器

23.2.4中断允许寄存器2

23.2.5中断优先级寄存器

23.2.6控制SPI引脚位置寄存器

23.3SPI模块配置及时序

23.3.1SPI配置模式

23.3.2主/从模式的注意事项

23.3.3通过SS修改模式

23.3.4写冲突

23.3.5数据模式时序

23.47段数码管的驱动与显示

23.4.1系统控制电路原理

23.4.27段数码管原理

23.4.374HCT595原理

23.4.4系统软件控制流程

23.4.5程序具体实现

第24章STC单片机CCP/PCA/PWM模块原理及实现

24.1CCP/PCA/PWM结构

24.2CCP/PCA/PWM寄存器组

24.2.1PCA工作模式寄存器

24.2.2PCA控制寄存器

24.2.3PCA比较捕获寄存器

24.2.4PCA的16位计数器

24.2.5PCA捕获/比较寄存器

24.2.6PCA模块PWM寄存器

24.2.7PCA模块引脚切换寄存器

24.3CCP/PCA/PWM工作模式

24.3.1捕获模式

24.3.216位软件定时器模式

24.3.3高速脉冲输出模式

24.3.4脉冲宽度调制模式

第25章STC单片机增强型PWM发生器原理及实现

25.1增强型PWM发生器简介

25.2增强型PWM发生器相关寄存器组

25.2.1端口配置寄存器

25.2.2PWM配置寄存器

25.2.3PWM控制寄存器

25.2.4PWM中断标志寄存器

25.2.5PWM外部异常控制寄存器

25.2.6PWM计数器

25.2.7PWM时钟选择寄存器

25.2.8PWM2翻转计数器

25.2.9PWM2控制寄存器

25.2.10PWM3翻转计数器

25.2.11PWM3控制寄存器

25.2.12PWM4翻转计数器

25.2.13PWM4控制寄存器

25.2.14PWM5翻转计数器

25.2.15PWM5控制寄存器

25.2.16PWM6翻转计数器

25.2.17PWM6控制寄存器

25.2.18PWM7翻转计数器

25.2.19PWM7控制寄存器

25.2.20PWM中断优先级控制寄存器

25.3生成单路PWM信号

25.4生成两路互补PWM信号

25.5步进电机的驱动和控制

25.5.1五线四相步进电机工作原理

25.5.2步进电机28BYJ48电气性能

25.5.3步进电机的驱动

25.5.4使用软件驱动步进电机

25.5.5使用增强型PWM模块驱动步进电机

25.5.6设计下载和验证

第26章RTX51操作系统原理及实现

26.1操作系统的必要性

26.1.1单任务程序

26.1.2轮询程序

26.2操作系统基本知识

26.2.1操作系统的作用

26.2.2操作系统的功能

26.3RTX51操作系统的任务

26.3.1定义任务

26.3.2管理任务

26.3.3切换任务

26.4RTX51操作系统内核函数

26.5RTX51操作系统实现

26.5.1RTX51操作系统实现1

26.5.2RTX51操作系统实现2

26.5.3RTX51操作系统实现3

第27章综合项目实例: 风扇转速控制系统的设计与实现

27.1项目需求分析

27.1.1划分软件和硬件边界

27.1.2设计过程中的细节问题

27.2离散PID控制算法及其参数

27.2.1离散PID控制算法

27.2.2参数整定方法

27.3风扇原理、驱动和运动特性

27.3.1风扇原理

27.3.2风扇驱动

27.3.3风扇运动特性

27.4反馈信号处理方法

27.4.1比较器的硬件设置

27.4.2比较器的程序配置方案

27.4.3比较器处理结果分析

27.5输出测速信号的处理

27.5.1设计思路

27.5.2程序设计方案

27.6单片机串口数据通信

27.6.1设计思路

27.6.2现象分析

27.7PID控制算法中关键问题

27.8系统的硬件结构原理图

27.9控制系统设计代码

27.10上位机应用程序开发

附录ASTC单片机选型表636

附录BSTC四轴飞行器643

附录CGNTSMK2开发板原理图645

精彩书摘

  第3章
  CHAPTER 3
  数值表示及转换
  本章介绍数值表示及转换方法,包括常用码制、正数表示方法、正数码制转换、负数表示方法、负数补码的计算、定点数表示和浮点数表示。
  在单片机CPU系统的程序设计中,经常会用到数值表示的基本概念和运算方法,是系统地学习后续单片机内容的基础,务必要掌握本章内容。
  3.1常用数制
  数字逻辑工作在开关状态下,即二进制状态。为了满足不同的运算需求,人们又制定了十进制和十六进制来表示数字的规则。其中,十进制是日常生活中经常用到的一种记数规则。
  3.1.1二进制
  二进制是以2为基数的进位制,即逢2进1,如表3.1所示。计算机系统采用二进制记数规则。因为采用二进制记数,只需要0和1两个数字符号,简单方便,并且很容易通过半导体元器件实现逻辑0和逻辑1两个状态。通过0和1的组合,就可以表示任意一个二进制数。
  为了表示方便,在C/C++语言中,二进制数以0b开头,如0b1011、0b010111; 在汇编语言中,二进制数以B或b结尾,如1011B或1011b、010111B或01011b。
  3.1.2十进制
  十进制是以10为基数的进位制,即逢10进1,如表3.1所示。在十进制记数规则中,只出现0~9这十个数字。通过这些数字的组合,就可以表示任意一个十进制数。
  计算机系统对十进制数的表示没有特殊的要求。
  3.1.3十六进制
  十六进制是以16为基数的进位制,即逢16进1,如表3.1所示。在十六进制记数规则中,只使用数字0~9和字母A(或a)、B(或b)、C(或c)、D(或d)、E(或e)、F(或f)表示。
  注: A(或a)、B(或b)、C(或c)、D(或d)、E(或e)、F(或f)分别对应十进制数的10、11、12、13、14、15。
  为了表示方便,在C/C++语言中,十六进制数以0x开头,如0x1234、0xE1DD; 在汇编语言中,十六进制数以H结尾,如1234H、E1DDH。
  注: 这种对应关系,只限制在非负的整数范围。对于负数整数的表示方法,将在后面进行详细的说明。
  ……

前言/序言

  前言
  嵌入式系统技术正朝着“软件”和“硬件”协同设计、协同调试和协同仿真的方向发展。C语言不再只是纯粹意义上的软件或者编程工具,而是成为嵌入式系统设计的基础和必备的知识。
  从整个嵌入式系统开发的角度来看,要能够真正使用C语言进行嵌入式系统的软件程序开发,必须掌握最基本的数字逻辑、处理器和指令集的知识,这里说的掌握知识不是指简单地记住指令集或者C语言的语法,而是要能够“清楚”知道C语言的每个语法知识点与处理器架构、指令集之间的关系。
  目前,嵌入式开发中使用ARM处理器变得非常流行,但是由于ARM处理器结构本身比较复杂,并且内核比较封闭,对于初学者而言,要在ARM处理器上掌握C语言程序设计的各个知识点是一件比较痛苦的事情。相对而言,传统的8051,尤其是STC公司的增强型8051单片机处理器内核以及结构框架比较简单,并且开发环境采用了Keil μVision5软件工具,这对于一个初学者而言,可以看到构成嵌入式系统的各个细节,包括处理器内核架构、指令集和接口与C语言之间的关系。
  通过Keil μVision5集成开发环境提供的“可视化”软件仿真和硬件调试(仿真)工具,读者可以清楚地知道在运行C语言程序时,8051内核寄存器的细节、片内基本RAM和片内扩展RAM的内容以及C语言与指令集的关系。对于C语言中的语法难点,如数组、函数、指针和结构体等概念,也可以一目了然。
  基于STC公司可硬件仿真的IAP15W4K58S4单片机学习C语言程序设计的最大好处在于,读者能真正理解以C语言为代表的“软件”和以STC增强型8051单片机为代表的“硬件”两者之间的关系。特别需要指出的是,通过STC公司可硬件仿真的IAP15W4K58S4单片机,读者可以在真实的单片机硬件平台上观察C语言运行的所有细节问题。在Keil μVision5上的纯软件仿真,并不能替代硬件仿真(硬件调试),这是因为纯粹的软件仿真很难模拟一些硬件环境,如中断和接口等。
  作者编写本书的目的在于力图从“软件”和“硬件”两个角度反映出C语言的本质和内在特点。通过把C语言程序设计和单片机进行有机结合,使得读者从零起点学习C语言不再是一件枯燥和痛苦的事情。全书共分为27章,以STC公司最新推出的IAP15W4K58S4单片机为硬件平台,使用Keil最新的μVision5集成开发系统,设计了大量C语言程序案例,这些案例都通过硬件和软件进行了验证和测试。
  为了方便读者的学习,本书配套提供所有设计实例的源代码以及公开教学视频资源,读者可通过本书提供的学习说明获取相关的资源。
  在编写本书的过程中,作者参考了STC公司最新的技术文档和手册,以及STC学习板原理图和PCB图,在此向STC公司表示衷心的感谢。作者的学生汤宗美、张艳辉、王帅和王中正负责了部分章节的编写工作,汤宗美对本书的全部稿件进行了初步的完善和修改。在本书编写的过程中,得到了STC公司员工在技术和市场服务方面的热心帮助,特别是得到了STC公司姚永平先生的支持和帮助,他对作者在本书编写过程中遇到的各种技术问题进行了耐心细致的解答。在本书的出版过程中,也得到了清华大学出版社各位编辑的帮助和指导,在此也表示深深的谢意。
  由于作者水平有限,编写时间仓促,书中难免有疏漏之处,敬请读者批评指正。
  作者2018年8月于北京