• 巧学易用单片机——从零基础入门到项目实战
21年品牌 40万+商家 超1.5亿件商品

巧学易用单片机——从零基础入门到项目实战

全新正版 极速发货

73.56 6.2折 119 全新

库存4件

广东广州
认证卖家担保交易快速发货售后保障

作者王良升

出版社清华大学出版社

ISBN9787302626893

出版时间2023-02

装帧平装

开本16开

定价119元

货号1202821228

上书时间2024-08-07

谢岳书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
前言

 

 


为初学者打造一本全方位介绍单片机入门与进阶的图书,帮助初学者入门,并梳理单片机学习过程中的整个脉络是本书的主旨。可能有读者会问,市面上有这么多单片机入门书和视频,本书在内容上有什么优势?这里简单谈谈自己的看法,笔者曾经带过很多初学者,也经常与刚踏入单片机行业或放弃该行业的从业者进行交流,加上笔者本身是通过一步步自学过来的,对单片机学习过程中的“坑”深有体会,这里所讲的“坑”倒也不是学习单片机本身面临的知识点难度,而是适合初学者的一套学习方法。所以在本书中,读者也将看到介绍方法与思路贯穿全书。其实各行各业都一样,入门这一步非常困难,困难在刚开始读者对很多知识(以单片机为例: C语言、单片机原理、模拟电路基础知识、数字电路基础知识、计算机原理、I2C总线、SPI总线、寄存器)都不懂,不知道从何学起,但是一旦入门,很多读者经常会感慨“原来就这么回事”,脉络清晰了,怎么去补充知识,怎么去学,自然而然也就清晰了。本书内容仅仅帮助初学者如何去学习,限于篇幅,许多知识点没有进一步展开介绍,俗话说得好: “师傅领进门,修行靠个人。”单片机和嵌入式开发也一样,入门之后,可每个人根据职业规划或爱好朝着自己的方向不断地补充新的知识和技能。

 

许多初学者以为单片机开发就是写代码,在笔者看来,写代码应该放到最后一步。首先读者需要将整个单片机项目分解、细化,看一下哪些知识点是自己熟悉的,哪些知识点是自己不熟悉的,不熟悉的知识点再进一步分解成哪些是需要花时间与精力解决的,整个项目要使用什么样的软件框架,把关键问题解决之后再去写代码,会起到事半功倍的效果。

 

掌握模块化设计思路,其实各行各业都有这种模块化思想,例如一辆机动车自上而下看包括发动机、变速箱、底盘、外观、内饰等,如果再进一步分解发动机,则包括排气系统、进气系统、冷却系统、燃油系统、配气机构、曲轴连杆等模块。单片机系统中这种模块化思想也体现得淋漓尽致,一个单片机包括CPU、RAM、Flash、时钟系统、输入输出(I/O)、I2C、SPI、串口、定时器、RTC模块等;一个单片机项目包含的程序模块通常有数字输入模块、数字输出模块、通信模块、系统调度模块等,掌握这种模块化设计思想会让你在各行各业中获益良多。

 

笔者是个物理爱好者,大学期间学的也是物理学专业,出于对电子技术的热爱,从大二开始,不断参加各种科技、电子协会,帮助班上和在校同学解决各种电器问题,小到吹风机、音响,大到电视机、计算机、空调、洗衣机等,还多次积极协助组织参与“三下乡”活动,将科技知识带进农村,为老百姓切切实实答疑解惑并解决实际电器问题。此外,笔者也多次参加各层级举办的电子类竞赛,尽管有的比赛成绩不是很理想,但是在竞赛过程中都能学有所获,受益良多。正是这些实战经历,使笔者在很多方面对单片机和嵌入式的理解比较独特,也希望这些独特的理解能帮到各位读者。

 

本书内容安排从每个阶段实用的角度出发,秉持着通俗易懂的原则,第一部分主要介绍单片机入门知识,与众多介绍单片机入门的方式不同,笔者特地选择了市面上常用的4种单片机(STC89C52RC、PIC16、MSP430和STM32)与开源界非常流行的Arduino开发平台进行对比,一方面通过对比帮助读者了解不同单片机的开发方式; 另一方面也可以总结这些单片机开发方式的共同点,以便读者以后碰到新单片机时可以将这种技巧快速应用其中。另外需要指出的是,关于上面4款单片机其实在业内有非常优秀的入门教程,8051单片机有郭老师的《10天学会单片机》视频、STM32有野火的《零死角玩转STM32》和正点原子的《手把手教你学STM32》,所以在介绍该部分内容时笔者只挑重点,有些甚至是一笔带过,但是该部分资料都会统一放在本书提供的资源中。

 

一直以来,单片机进阶是很多初学者面临的老大难问题,一方面市面上系统性的书籍比较少; 另一方面单片机进阶学习需要结合实际项目,单纯通过理论方式很难将这些经验描述到位。笔者花了很多心思梳理了单片机进阶的整个知识框架,从第16章在实际工程应用中的电路着手到第17章的软件痛点分析,其中参考了网上大量文章及初具规模公司中实用的一些规范; 第18章介绍了基础版的代码规范,旨在帮助读者养成一个良好的代码编写习惯。实际项目中的程序往往是复杂但又有迹可循的; 第19章特地介绍了如何编写模块化程序,以便读者更好地读懂和编写有一定代码量的单片机程序,而要做好一个单片机项目,特别是在多人协作开发时,一个好的研发流程显得尤为重要,很多技术公司发展到一定规模后都面临流程上的问题; 第20章以一个实际的案例介绍了一个完整项目的基本开发流程,为了更进一步让读者对这种开发方式有所理解; 第21章特地补充了一个实际做好的项目,帮助读者巩固研发流程; 从第22章开始主要介绍一些实际项目中的技巧,例如第22章中的状态机原理及实际项目中哪些地方用到状态机,并进一步延伸出状态机更广泛的用途; 第23章则使用通俗易懂的方式介绍操作系统方式编程和如何打造一个基础版的操作系统,通过与市面上主流的实时系统μC/OSⅡ做对比,读者会发现其实开发操作系统也没有想象中那么难。在校期间,很多计算机与电子类专业学生经常会听到老师说算法才是程序的灵魂,但是算法到底是什么及单片机中算法该如何应用在第24章中进行了详细介绍。为了让读者进一步认识算法; 第25章和第26章详细介绍了两个非常熟悉的游戏(贪吃蛇与俄罗斯方块)在Windows和单片机上的实现方式,让读者可以更进一步地理解算法的本质。单片机软件本身是抽象的,单片机能实现相应功能,其实主要是程序编写者的功劳,为了将这些单片机资源利用好,数据结构起到了重要作用,第26章还详细介绍了单片机中常用的几种数据结构。许多单片机入门者包括从业多年的工程师对于如何维护代码一直比较模糊,特别是多人协作开发同一个项目时,这种问题显得尤为突出; 第27章针对当前流行的分布式代码版本管理作了基础和实用的介绍,这种管理方式无论是对于写代码还是文档管理都是一个非常不错的选择。笔者认为技术从业者要勇于探索和拥抱新的技术、新的开发方式,人类社会的进步就是机器不断取代人力的过程,单片机开发也一样,特别是长期从事单片机开发行业的工程师应该有感触,绝大部分时间是在做一些普通人都能做的事情,对于一款单片机来讲它的资源、开发方式基本上是固定的,所以第28章介绍了一种基于模型的开发方式,这种开发方式在未来一定会得到全面普及,只是以何种方式、何时出现的问题。一个好的工具、平台同样也能提高项目的开发效率,第29章介绍的Arduino开发平台,尽管许多读者非常熟悉,但是也希望通过本书的这种介绍方式使读者能对开源平台有一个全新的理解,而第30章的VS Code也算是微软近年来的大作,几乎横跨整个代码界,其便捷性和可扩展性给工程师带来了极大的便利性。

 

最后感谢周围关心与支持笔者的亲人与朋友。

 

本书写作过程比较仓促,书中难免存在疏漏之处,希望读者能够批评指正,也真心希望读者能通过本书学到或悟到一些对您有用的东西。

 


王良升2022年10月

 

 

 

 

 

配套资源

 

 

 

 

 

 

 

 

 

 

 

 



 
 
 
 

商品简介

单片机是一门对综合性知识要求非常高的课程,单片机的入门一直以来对初学者来讲是个老大难题,而入门后如何将这些知识运用到实际项目中,进一步提升单片机开发使用技能又是一个难题。一般来讲,实战项目带有很多技巧性,需要大量的知识和经验积累。针对这些情况,本书将从入门和实用的角度出发,全面系统的介绍单片机从入门到进阶及实战的技巧。全书包含两大部分,第一部分以单片机入门为主,通过对比8051、PIC16、MSP430、STM32多种单片机和Arduino开发平台下I/O、中断、定时器、扩展芯片、I2C总线、SPI总线及串口等外设模块的使用方式,总结介绍了一套适用于通用单片机外设的开发方法;第二部分结合实际单片机项目中的方法与技巧,从工程的角度出发,围绕读者将会面对的工程领域电路及软件开发方法、代码规范、模块化程序编写、项目基本开发流程、实用状态机编程、单片机操作系统思维方式编程、算法的本质及常用算法原理与应用场景、单片机中的数据结构、代码版本管理、基于模型开发方式实例分析与移植、Arduino开发平台介绍与基本使用方法、VS Code开发工具在单片机中的应用,让入门读者近距离感受工程项目中的开发方式。 本书适合作为电子信息类本、专科学生入门与进阶单片机知识的参考书,也可作为电子爱好者实战参考书,对于单片机或嵌入式工程师来讲也是一本不错的参考书籍。



作者简介

王良升,长沙智能驾驶研究院电气工程师。主导参与多项整车自动驾驶电子电气方案设计与改造项目,目前主要从事自动驾驶电子电气架构的研发。主持研发工程车整车控制器、非标自动化设备整机电子电气系统、自动驾驶整车电子电气架构,拥有10年以上丰富的单片机与底层软件项目开发经验。



目录


入门篇

第1章经典的LED例子

1.18051单片机点亮LED

1.2PIC单片机点亮LED

1.3MSP430单片机点亮LED

1.4STM32单片机点亮LED

1.5Arduino点亮LED

第2章LED点亮例子剖析

2.1LED电路解析

2.2单片机科普

2.2.1计算机主板

2.2.2手机CPU

2.2.3单片机内部组成

2.3单片机运行程序解剖

2.3.1CPU运行程序的本质

2.3.2点亮一颗LED汇编代码剖析

第3章初学者搭建电路神器——面包板

3.1初学者使用面包板的好处

3.2面包板使用简介

3.3面包板在实际项目中的妙用

3.3.1原型电路验证

3.3.2单片机连接分立元器件或模块

3.3.3多平台、多模块系统验证

第4章开发环境搭建

4.18051单片机Keil开发环境搭建

4.1.18051单片机软件安装与编译

4.1.2STC系列8051单片机固件下载

4.2STM32单片机开发环境搭建

4.2.1STM32单片机软件安装与编译

4.2.2STM32单片机固件下载

4.3MSP430开发环境搭建

4.3.1软件安装与编译

4.3.2代码下载

4.4PIC开发环境搭建

4.4.1软件安装与编译

4.4.2PIC单片机代码下载

4.5Arduino开发环境搭建

4.5.1Arduino IDE开发环境搭建

4.5.2Arduino IDE代码下载

4.5.3MSP430 Arduino开发环境搭建

4.6Proteus仿真环境搭建

第5章I/O端口的基本输出——多变的输出控制

5.1I/O基本知识

5.1.1万物皆有电阻

5.1.2欧姆定律

5.1.3I/O专业术语

5.2单片机I/O端口输出电路内部剖析

5.2.1STC单片机I/O端口

5.2.2PIC16单片机I/O端口

5.2.3MSP430单片机I/O端口

5.2.4STM32单片机I/O端口

5.3I/O作为输出使用的几种方式

5.3.1小电流输出驱动

5.3.2电平匹配或小功率驱动

5.3.3大功率大电压驱动 

5.3.4设备工作电压远高于安全电压

第6章I/O端口的基本输入——不限于按键输入

6.1开关基础知识普及

6.1.1微动开关

6.1.2感应开关

6.1.3电容触摸开关

6.1.4人体感应模块

6.1.5普通6×6按键

6.2单片机I/O输入模式

6.2.1上拉输入

6.2.2下拉输入

6.2.3浮空输入

6.3单片机I/O端口输入电路内部剖析

6.3.18051单片机I/O输入

6.3.2PIC16单片机I/O输入

6.3.3MSP430单片机I/O输入

6.3.4STM32单片机I/O输入

6.4几种常用的输入方式

6.4.1直连单片机I/O端口

6.4.2匹配电平后连接单片机I/O端口

6.4.3超过安全电压或跨距离信号输入

第7章单片机引脚不够用——外挂扩展芯片

7.1使用扩展芯片情形及步骤

7.28051单片机驱动——8线译码器

7.38051单片机实现74HC245收发器驱动

7.48051单片机驱动74HC573锁存器

第8章中断——单片机“一心多用”却不落下重要事情

8.1生活中的中断场景

8.28051单片机外部中断

8.3PIC16单片机中断

8.4MSP430单片机中断

8.5STM32单片机中断

8.6Arduino外部中断

8.7外部中断总结

第9章不甘只为定时器——它还有很多妙用

9.18051单片机定时器

9.2PIC16定时器

9.3MSP430定时器

9.4STM32定时器

9.5Arduino定时器

9.6定时器使用总结

第10章较少引脚多做事——总线

10.1总线的诞生

10.2总线初探

10.2.1手动模拟驱动74HC595

10.2.28051单片机驱动74HC595

10.3SPI总线原理与使用

10.3.1SPI总线介绍

10.3.28051单片机驱动MCP23S08输出

10.3.38051单片机读取MCP23S08按键值

10.4I2C总线驱动PCA9554

10.4.1I2C总线简单介绍

10.4.2输出控制流水灯

10.4.3读取I2C输入数据控制LED 

第11章串口通信——单片机与外界沟通常用方式

11.1原始通信方式与基本模式

11.1.1单工通信模式

11.1.2半双工通信模式

11.1.3全双工通信模式

11.2串口通信由来

11.3串口通信单片机实现

11.3.18051单片机串口通信

11.3.2PIC16单片机串口通信

11.3.3MSP430单片机串口通信

11.3.4STM32单片机串口通信

11.3.5Arduino单片机串口通信

11.3.6串口通信总结

11.4同是串口通信,别被接口和协议弄糊涂

11.4.1串口通信物理接口

11.4.2串口通信协议

第12章非常重要却常被忽略的技能——调试

12.1使用硬件调试器

12.1.1PIC单片机调试

12.1.2MSP430单片机调试

12.1.3STM32调试

12.1.4单片机调试器使用总结

12.2一颗LED能反馈的信息众多

12.2.1定时器中断中使用LED调试

12.2.2串口通信中使用LED调试

12.2.3LED直接显示设备状态

12.3使用最方便的调试方式——串口

12.4任何时候要有快速找到解决问题的办法

12.4.1软硬件问题确定

12.4.2尽可能用熟悉的东西,找可靠渠道购买

第13章有趣的显示方式

13.1生活中的LED变形记

13.2单总线全彩灯

第14章A/D——数字与模拟世界沟通的桥梁

14.1A/D原理

14.2PIC单片机A/D

14.3MSP430单片机A/D

14.4STM32单片机A/D

14.5Arduino A/D

第15章以为只是PWM,没想到有这么多“魔法”

15.1PWM介绍

15.1.1多种方式实现PWM

15.1.2专用名词解释

15.2呼吸灯原理剖析

15.3舵机控制

15.4步进电动机控制

15.4.1步进电动机原理

15.4.2步进电动机控制实现

15.5PWM直流电动机调速

提高篇

第16章学了很多东西,实际项目中如何用——硬件部分

16.1实际项目电路与单片机入门电路差距

16.2供电电路

16.2.1开发板供电

16.2.2消费电子产品供电

16.2.3工业控制器供电

16.2.4车用控制器供电

16.2.5电源电路总结

16.3输入电路

16.3.1开发板输入电路

16.3.2工业输入电路

16.3.3车用输入电路

16.4输出电路

16.4.1工业功率输出电路

16.4.2车用功率输出电路

16.5A/D采集电路

16.5.1工业A/D输入电路

16.5.2车用A/D输入电路

16.6通信电路

16.6.1开发板通信电路

16.6.2车用通信电路

16.7对比分析总结

第17章别让单片机学习停留在点亮LED

17.1初学者单片机软件能力徘徊不前

17.2怎么改变这种现状

17.2.1项目分解能力

17.2.2程序框架搭建能力

17.2.3算法能力

17.3单片机成长捷径

17.4站在巨人的肩膀上

17.4.1Arduino平台

17.4.2开源代码托管平台

第18章要想路走得远,编程规范少不了

18.1组织结构

18.1.1工程文件组织结构

18.1.2文件夹代码组织结构

18.1.3程序结构

18.2标识符命名

18.2.1命名基本原则

18.2.2宏与常量命名

18.2.3变量命名

18.2.4函数命名

18.2.5文件命名

18.3代码排版

18.3.1代码缩进

18.3.2代码分行

18.3.3头文件

18.3.4注释排版

18.3.5代码可读性

18.4注释

18.4.1注释基本原则

18.4.2文件注释

18.4.3函数与代码注释

18.6变量、结构、常量、宏

18.7函数规范

18.7.1函数命名

18.7.2函数参数

18.8变量和结构规范

18.9宏表达式与常量规范

18.10表达式规范

第19章模块化程序编写

19.1点亮LED模块化程序改造

19.1.1.h文件编写

19.1.2.c文件编写

19.2模块化程序编写进阶

19.3打造可重复利用的软件模块

第20章多功能电子钟——项目开发基本流程

20.1项目需求

20.2项目规格说明

20.3项目总体方案

20.4项目概要设计

20.4.1硬件概要方案

20.4.2软件概要设计

20.5项目详细设计

20.6项目调试与验证

20.7项目测试

20.8项目批量阶段

第21章网红楼梯灯

21.1项目需求

21.2项目规格说明

21.3项目总体方案

21.4项目概要设计

21.4.1硬件概要方案

21.4.2软件概要方案

21.5项目详细设计

21.5.1硬件详细方案

21.5.2软件详细方案

21.6项目调试与验证

21.7项目测试

第22章状态机编程,不止于按键

22.1状态机实现按键功能 

22.2状态机基本原理与实现

22.3状态机串口接收协议

22.3.1简单版串口协议

22.3.2实用串口协议

第23章可以不用操作系统,但是要会操作系统方式编程

23.1不要被操作系统吓到,其实它也可以很简单

23.2动手写一个简单操作系统

23.2.1构造一个简单的调度器

23.2.2任务更新与启动

23.3与市面主流系统对比

第24章算法和程序是两码事

24.1程序和算法

24.1.1算法本质

24.1.2程序本质及与算法之间联系

24.2单片机项目中的典型算法

24.2.1滤波算法

24.2.2PID算法

24.2.3校验算法

24.3别在程序上花太多时间,算法才是值得付出的

第25章Windows和单片机平台算法对比

25.1贪吃蛇

25.1.1贪吃蛇游戏实现要点

25.1.2贪吃蛇原理解析

25.2Windows系统下贪吃蛇代码解析

25.2.1游戏区域初始化

25.2.2绘制食物与蛇身

25.2.3检测蛇碰撞

25.2.4蛇吃食物

25.2.5蛇身移动坐标更新

25.2.6蛇身变换方向

25.3单片机实现贪吃蛇

25.3.1游戏变量与宏定义

25.3.2复位蛇身与游戏开始

25.3.3按键检测与设定蛇运动方向

25.3.4蛇身移动坐标更新

25.3.5吃食物检测

25.3.6产生新食物

25.3.7碰撞检测

25.3.8显示蛇与食物

25

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP