具体描述
内容简介
《51单片机轻松入门:基于STC15W4K系列(C语言版)》以最新流行的不需要外部晶振与复位电路的可仿真的高速STC15W4K系列单片机为核心,详细介绍了单片机内部功能模块,比如定时器、中断、串口、SPI接口、片内比较器、A/D转换器、可编程计数器阵列(CCP/PCA/PWM)等。每个重要知识点都有简短精炼的实例作验证。然后就是单片机常用外围接口的介绍与STC15W4K系列单片机的实际产品运用实例分析。另外,对单片机开发必须掌握的C语言基础知识与Keil开发环境也作了较为详细的介绍。对于没有学习过C语言的读者通过本书也能轻松进入以C语言开发单片机的学习状态。
为了快速验证本书的理论知识,作者设计了与本书配套的双核(两个仿真型单片机)实验板,功能强大,操作简单、直观,除用于本书实验测试外,也可用于产品前期开发。
本书可作为普通高校计算机类、电子类、自动控制类、仪器仪表类、机电一体化类等相关专业教学用书,对已有一定设计经验的单片机工程师也有重要的参考价值。
目录
第1章单片机高效入门
1.1单片机简介
1.1.1认识单片机
1.1.2单片机的用途
1.1.3典型芯片与C语言介绍
1.1.4本书的配套实验板及相关学习工具介绍
1.2点亮一个发光二极管
1.2.1单片机型号命名规则
1.2.2单片机引脚功能说明
1.2.3制作一个最简单的单片机实验电路
1.2.4使用KeilμVision3环境编写最简单的程序
1.2.5ISP下载程序到单片机
1.2.6程序解释
1.3Keil仿真
1.3.1软件仿真
1.3.2硬件仿真
1.4经典流水灯实例
1.5单片机C语言延时程序详解
1.5.1学会使用计算软件
1.5.2计算软件内部运算过程详解
1.5.3利用库函数实现短暂精确延时
1.5.4使用定时器/计数器实现精确延时
1.6main()、void main()和int main()的区别
1.7printf格式化输出函数
第2章单片机开发必须掌握的C语言基础
2.1简单数据类型与运算符
2.1.1原码、反码、补码、BCD码和格雷码
2.1.2常量
2.1.3变量的数据类型(bit、char、int、long、float)
2.1.4变量存储空间(code、data、bdata、idata、xdata)
2.1.5变量存储类型(auto、static、extern)
2.1.6变量作用域
2.1.7运算符
2.1.8运算符的优先级与结合性
2.2C51构造数据类型
2.2.1数组
2.2.2结构体
2.2.3共用体
2.2.4指针
2.2.5#define与typedef的区别
2.3流程与控制
2.3.1分支结构
2.3.2循环结构
2.3.3跳转结构
2.4函数
2.4.1函数定义
2.4.2调用格式
2.4.3传值调用与传地址调用的对比
2.4.4数组作为函数参数
2.4.5使用指针变量作为函数形式参数
2.4.6使用结构体变量指针作为函数参数
2.4.7函数作用域
2.4.8库函数
2.5模块化编程
2.5.1头文件的编写
2.5.2条件编译
2.5.3多文件程序(模块化编程)
第3章定时器/计数器、中断系统
3.1定时器/计数器
3.1.1单片机定时器/计数器工作原理概述
3.1.2定时器/计数器的相关寄存器
3.1.3定时器/计数器的工作方式
3.1.4初值计算
3.1.5编程举例
3.2可编程时钟输出
3.3中断系统
3.3.1中断系统结构图
3.3.2操作电路图中的开关(相关寄存器介绍)
3.3.3编写中断函数
3.3.4中断程序举例
3.3.5外部中断代码调试(按键的防抖技术)
第4章串口通信
4.1最基本的串口通信
4.1.1串口数据发送格式
4.1.2串口相关寄存器
4.1.3波特率计算步骤
4.1.4单片机与计算机通信的简单例子
4.2彻底理解串口通信协议
4.3串口隔离电路
4.4计算机扩展串口(USB转串口芯片CH340G)
4.5RS485串行通信
4.6SSI通信
4.6.1SSI数据通信格式
4.6.2SSI硬件电路
4.6.3SSI软件实现
4.7数据通信中的错误校验
4.7.1校验和(CheckSum)与重要的串口通信实例
4.7.2CRC校验
4.8单片机向计算机发送多种格式的数据
第5章SPI通信
5.1SPI总线数据传输格式
5.1.1接口定义
5.1.2传输格式
5.2SPI接口相关寄存器
5.2.1SPI相关的特殊功能寄存器
5.2.2SPI接口引脚切换
5.3SPI接口运用举例
第6章
I2C通信
6.1I2C总线数据传输格式
6.1.1各位传输要求
6.1.2多字节传输格式
6.2程序模块功能测试
6.2.1硬件仿真观察24C02读/写结果
(R/C时钟:22.118 4 MHz)
6.2.2硬件仿真观察24C32/64读/写结果
(R/C时钟:22.118 4 MHz)
6.324C02运用实例(断电瞬间存储整数或浮点数)
第7章单片机内部比较器与DataFlash存储器
7.1STC15W系列单片机内部比较器
7.1.1比较器结构图
7.1.2寄存器说明
7.1.3电路讲解与程序实例
7.2DataFlash存储器
7.2.1与DataFlash操作有关的寄存器介绍
7.2.2DataFlash操作实例(断电瞬间存储数据)
第8章可编程计数阵列CCP/PCA/PWM模块(可用作DAC)
8.1PCA模块总体结构图
8.2PCA模块的特殊功能寄存器
8.3PCA模块的工作模式与应用举例
第9章模/数转换器ADC
9.1ADC的主要技术指标
9.2使用单片机内部的10位ADC
9.2.1与ADC相关的特殊功能寄存器
9.2.2实例代码
9.312位ADC转换芯片MCP3202B
9.4单通道16位ADC转换芯片ADS1110A
9.5单通道18位ADC转换芯片MCP3421A0TE/CH
第10章数/模转换器DAC
10.1TLC5615数/模转换电路与基本测试程序
10.2TLC5615产生锯齿波、正弦波、三角波
10.3TLC5615的高级运用(播放歌曲)
第11章单片机实用小知识
11.1复位
11.1.1外部RST引脚复位
11.1.2软件复位
11.1.3内部低压检测复位
11.1.4看门狗定时器复位
11.2单片机的低功耗设计
11.2.1相关寄存器说明
11.2.2应用举例
11.3单片机扩展32 KB外部数据存储器62C
11.3.1电路讲解
11.3.2软件测试实例
第12章常用单片机接口程序
12.1数码管静态显示
12.2数码管动态显示
12.3独立键盘
12.4矩阵键盘
第13章1602液晶
13.11602液晶外形与电路图
13.21602液晶应用举例
13.31602液晶显示汉字与特殊符号
第14章精密电压表/电流表/通用显示器/计数器制作
14.1功能说明与电路原理分析
14.2程序实例
14.2.1通用显示器功能检测程序(外部程序)
14.2.2计数器功能检测程序(外部程序)
14.2.3模块程序
第15章步进电机测试
15.1步进电机的特点
15.2步进电机的3种励磁方式
15.3步进电机驱动电路
15.4步进电机驱动实例
15.5步进电机专用驱动器介绍
第16章频率检测
16.1频率检测的用途与频率定义
16.2频率检测实例
第17章DS1302时钟芯片
17.1DS1302的SPI数据通信格式
17.2程序实例
第18章红外通信
18.1红外通信电路与基本原理
18.2红外接收软件实例
第19章单总线DS18B20通信(长距离
无线通信)
19.1DS18B20运用基础
19.1.1单只DS18B20的温度检测电路
19.1.2DS18B20的通信时序
19.1.3DS18B20内部功能部件ROM、RAM和指令集
19.1.4读取温度步骤
19.2单只DS18B20的温度检测
19.3多只DS18B20的温度检测
19.3.1读取传感器代码
19.3.2读取传感器温度
第20章SD卡与znFAT文件系统
20.1认识SD卡与SD卡驱动程序
20.1.1认识SD卡
20.1.2电路讲解
20.1.3通信时序与完整驱动程序说明
20.2znFAT文件系统
20.2.1znFAT的移植方法
20.2.2znFAT移植实例
第21章MP3播放器实验
21.1MP3的介绍与电路讲解
21.1.1VS1003B引脚说明
21.1.2VS1003寄存器
21.2正弦测试
21.3通过SD卡播放MP3文件
第22章数字存储示波器技巧与逻辑分析仪的操作
22.1测量直流电源开关机瞬间输出的毛刺浪涌
22.2测量稍纵即逝的红外发射信号
22.3精确测量直流电源纹波
22.4示波器带宽选用依据
22.5逻辑分析仪快速入门
附录ASCII码表
参考文献
前言/序言
STC单片机是在传统8051单片机内核的基础上进行大幅度改进升级优化而来的新一代8051单片机,具有高速、高可靠、低功耗、外围模块多、ISP升级程序方便、价格低廉等显著优点,加上STC宏晶科技单片机的厂商“南通国芯微电子”属于中国大陆本土企业,当我们在产品设计过程中遇到问题时,便于与厂家沟通以获得技术支持,所以STC单片机已经被众多的产品设计工程师作为首选方案而运用到自己的产品中。
STC单片机的指令系统与标准的8051内核完全兼容,过去的51单片机书籍仍然可以拿来作为辅助参考资料。已经熟悉传统8051内核单片机的读者,可以轻松过渡到STC可仿真的超级强大的STC15系列单片机或STC早期的STC89系列单片机,本书的编写建立在笔者十多年的产品设计经验基础之上,具体编写从前到后又花费了近5年的时间,笔者本着十年磨一剑的精神把每一个章节的内容写出水平,因此本书内容翔实,语言简练,通俗易懂,对多年来传统单片机教材含糊不清的概念与重要知识都作了明确分析;全书程序代码编写规范,注重程序的通用性与移植性,让读者既能轻松看懂理论知识,又能方便地将程序代码移植到产品中去。
本教材主讲的单片机型号是STC公司的IAP15W4K58S4(既能仿真又能便用USB直接下载程序),是目前STC最先进的芯片之一,内部资源十分丰富,具有58 KB程序存储器,4 096字节数据存储器,5个定时器,4个独立串口,8通道10位高速A/D转换器, 1个SPI接口支持主机与从机模式,2路CCP/PCA/PWM,6路带死区控制的专用PWM,1个比较器等,支持USB直接下载程序和串口下载程序,内部集成有高精度R/C时钟与高可靠复位电路,支持2.5~5.5 V宽工作电压范围,只需提供电源就能成为单片机最小系统,只需加上一个RS232电平转换芯片或USB转串口芯片再与计算机相连就能成为一个功能完美的仿真系统。程序仿真调试非常方便,用此芯片可以完成本书很多高级实验,比如TLC5615数/模转换芯片播放歌曲、SD卡读/写等。另外,此单片机在软件与硬件上都完全兼容资源略少的上一代单片机STC15F2K60S2系列,因此本书也完全适用于STC15F2K60S2系列的学习。为降低实际产品成本,本书还辅助性地介绍了STC15W404S系列、STC15W404S系列。其资源更少一些,但引脚仍然很多,同样支持宽电压供电,带比较器功能,支持SPI主机与从机模式等。在功能要求比较简单的产品上,为进一步降低成本,读者也可使用STC15W401AS系列或STC15W100系列芯片。
本教材在编写过程中得到了北京航空航天大学出版社和STC单片机创始人姚永平先生的大力支持,使本书在总体架构上的先进性与实用性得到了保证,并由姚永平先生亲自担任本教材的主审,在此向北京航空航天大学出版社和姚永平先生深表谢意。
《单片机实用开发指南:从原理到项目实战》 一、 前言:点燃你的嵌入式开发梦想 在当今科技飞速发展的时代,嵌入式系统无处不在,从你手中的智能手机到家中的智能电器,再到工业自动化生产线,都离不开其强大的支撑。而单片机,作为嵌入式系统的核心,正是这一切的基石。本书旨在为你打开通往单片机开发世界的大门,让你在掌握理论知识的同时,也能亲手实践,将创意变为现实。无论你是初学者,还是希望提升技能的开发者,本书都将是你不可或缺的助手。我们将从最基础的概念讲起,循序渐进,让你在清晰的逻辑和丰富的实例中,一步步构建起坚实的单片机开发能力。 二、 核心理论:打牢单片机开发的根基 单片机是什么?为什么选择它? 我们将深入剖析单片机的定义,解释它为何能成为嵌入式系统的核心。你会了解到单片机集成CPU、存储器、I/O接口等功能单元于一体的独特优势,以及它在成本、功耗、体积上的卓越表现。 对比其他微处理器,理解单片机在特定应用场景下的不可替代性,例如物联网设备、家用电器控制、汽车电子等。 单片机内部结构详解 CPU核心: 详细介绍CPU的工作原理,包括指令集、寄存器、时钟信号、总线等。我们将以经典CPU架构为例,阐述指令的取指、译码、执行过程,以及CPU如何与外围设备交互。 存储器系统: 深入讲解程序存储器(ROM/Flash)和数据存储器(RAM)的功能与区别。了解它们在程序运行和数据处理中的作用,以及如何根据需求选择合适的存储器类型。 I/O端口: 详细解析通用的输入/输出(GPIO)端口,包括其工作模式(输入、输出、复用功能)、寄存器配置(方向寄存器、数据寄存器、上拉/下拉控制等)。通过实际案例,让你学会如何灵活控制LED、读取按键等。 定时器/计数器: 深入理解定时器和计数器的原理,掌握其工作模式(定时、计数、PWM输出)、预分频器、重载值等关键参数的设置。学会如何利用它们实现精确延时、周期性事件触发、频率测量等功能。 中断系统: 详细讲解中断的概念、中断源(外部中断、定时器中断、串口中断等)、中断向量表、中断优先级、中断服务程序(ISR)的编写。掌握如何高效地处理外部事件,提高系统的响应速度和实时性。 串行通信接口(UART): 深入学习UART的工作原理,包括波特率生成、数据位、停止位、校验位等通信参数的设置。掌握如何利用UART实现单片机与其他设备(如PC、其他单片机、传感器)之间的数据传输。 其他常用外设: 根据实际需要,可能会包含ADC(模数转换)、DAC(数模转换)、SPI、I2C等常用外设的原理介绍与应用,让你能够处理更复杂的信号采集和设备控制。 C语言在单片机开发中的应用 基础语法回顾与强化: 针对单片机开发场景,复习C语言的核心语法,包括变量类型、运算符、控制语句(if-else, switch, for, while)、函数等,并强调其在嵌入式环境下的特性。 指针与内存管理: 深入讲解C语言指针的概念、操作以及在单片机开发中的重要性,包括数组指针、函数指针,以及如何通过指针访问硬件寄存器。 位操作: 详细介绍C语言中的位运算符(&, |, ^, ~, <<, >>)及其在单片机开发中的强大作用,例如通过位操作直接控制I/O口、配置寄存器等。 宏定义与预处理: 学习如何使用宏定义简化代码、提高可读性,以及预处理指令(include, define, ifdef)在项目构建中的作用。 结构体与联合体: 掌握结构体和联合体的定义与使用,它们在组织和管理复杂数据结构,特别是硬件寄存器模型时非常有用。 嵌入式C语言特性: 介绍一些嵌入式C语言特有的关键字和概念,例如`volatile`关键字的重要性,以及如何进行类型转换以匹配硬件需求。 三、 开发工具与环境搭建:迈出实践的第一步 集成开发环境(IDE)的选择与配置: 我们将推荐并详细介绍一款或多款主流的单片机开发IDE(例如Keil MDK, IAR Embedded Workbench, 或针对特定系列的高性能IDE)。 指导读者完成IDE的安装、工程创建、编译器和调试器的配置。 硬件选型与基础知识: 开发板的选择: 介绍如何选择一款合适的单片机开发板,并阐述其在学习和开发过程中的优势。 最小系统搭建: 讲解单片机工作的基本电路需求,包括电源、晶振、复位电路等,让你理解开发板的构成。 外围元器件介绍: 详细介绍LED、按键、蜂鸣器、LCD显示屏、传感器(如温度、湿度、光敏、红外传感器)等常用外围元器件的原理、选型与连接方法。 代码烧录与调试: 烧录器(下载器)的使用: 详细介绍常用的单片机烧录器(如ST-Link, J-Link, 或USB转串口下载器)的工作原理和使用方法。 在线调试: 深入讲解如何利用IDE的在线调试功能,包括设置断点、单步执行、查看变量值、内存内容,以及观察寄存器状态,让你能够精准定位和解决代码中的问题。 四、 项目实战:将理论付诸行动 本书的重头戏在于大量的实践项目,每个项目都将紧密结合前面讲解的理论知识,并通过详细的代码示例和步骤指导,让你亲手完成: 入门级项目: LED闪烁: 最经典的入门项目,通过控制LED的亮灭,让你熟悉I/O口输出操作和延时函数的使用。 按键控制LED: 学习如何读取按键输入,实现按下LED亮起,松开LED熄灭的功能,掌握I/O口输入操作。 流水灯: 进阶LED控制,通过定时器中断实现LED的动态变化,进一步理解定时器和中断的应用。 蜂鸣器发声: 学习控制蜂鸣器发出不同频率的声音,为你的项目增加声音提示。 中级项目: LCD1602/LCD12864字符/图形显示: 学习驱动LCD显示屏,在屏幕上显示各种字符、数字和简单的图形,为用户提供直观的信息交互。 ADC数据采集: 连接电位器或传感器,通过ADC采集模拟信号,并将其转换为数字量显示在LCD上,让你掌握模拟量处理。 UART通信: 实现单片机与PC之间的串口通信,通过PC发送指令控制单片机,或通过单片机将采集到的数据发送到PC。 基于定时器的PWM输出: 控制LED亮度或舵机角度,学习如何生成PWM信号,实现精细化的模拟量输出。 高级项目: 温湿度监测系统: 连接温湿度传感器(如DHT11, SHT20),实时采集温湿度数据,并通过LCD显示,利用UART将数据上传。 简易交通灯控制器: 模拟真实交通灯逻辑,实现红、黄、绿灯的顺序切换,并考虑行人信号灯。 红外遥控接收与发送: 学习红外通信协议,实现接收和发送红外遥控指令,控制家电设备。 舵机/步进电机控制: 学习控制舵机和步进电机,实现精确的位置控制和运动,广泛应用于机器人和自动化领域。 基于SPI/I2C的总线通信: 学习如何与SPI/I2C接口的传感器或模块进行通信,例如EEPROM存储器、OLED显示屏等。 五、 进阶技巧与扩展:持续学习的动力 固件升级(OTA)概念与实现初步: 介绍固件升级的原理和在嵌入式开发中的重要性。 低功耗设计: 讲解如何在单片机项目中实现低功耗,延长电池寿命。 内存优化与代码效率: 探讨如何优化代码,提高执行效率,充分利用单片机的资源。 驱动程序编写: 学习如何为新的外设编写通用的驱动程序。 实时操作系统(RTOS)简介: 简要介绍RTOS的概念,以及它在处理复杂并发任务中的优势。 嵌入式系统安全基础: 探讨嵌入式系统可能面临的安全威胁,以及一些基本的安全防护措施。 六、 附录:参考资料与资源 常用寄存器速查表: 提供常用外设寄存器的对照表,方便查阅。 推荐参考书籍与网站: 列出进一步学习的资源。 开发工具下载链接: 方便读者获取所需软件。 七、 结语:开启你的嵌入式开发之旅 通过本书的学习,你将不仅仅掌握单片机的基本原理和编程技巧,更重要的是,你将获得独立解决问题、设计和实现嵌入式系统的能力。本书的设计理念是以“实战驱动学习”,鼓励读者动手实践,在错误中学习,在成功中成长。我们相信,这本书将是你踏入嵌入式开发领域最坚实的起点,为你开启无限的创新可能。现在,就让我们一起,点燃你的嵌入式开发梦想,创造属于你的智能未来!