现在的电子产品,随便拿来一个拆开,都能看到单片机的身影,单片机在电子产品中已经成了标配。因为现在的电子产品都是以单片机为核心,根据不同的需求加以不同的外设电路,再做一些认证相关的设计工作,都是这个构架。以智能手环为例,可以实现步数统计、心率检测、液晶显示、与手机蓝牙通讯、手机来电振动等功能,这些功能通过选用相关的传感器、元器件来实现,最后单片机做数据处理和逻辑处理,核心还是单片机,功能框图如下所示。
1-以单片机为核心的智能手环电路框图
如今,各种家电、智能穿戴设备、各种数码产品层出不穷,需求量越来越大,这也使得单片机工程师这个岗位需求量巨大,在不同的公司中,这个岗位有不同的称呼,如单片机工程师、电子工程师、硬件工程师、数电工程师等。相对于互联网程序员,单片机工程师低调的多,因为硬件是一个平台,是幕后,所有的效果、界面都是由代码呈现的,所以程序员成了台上的明星。平台可能只有一个,但是明星却有很多,这就要求你这个平台够硬。可以单片机工程师的重要性并不亚于程序员,而单片机工程师的待遇也不会很差,前提是你要坚持住。
2-华为体脂秤的国产单片机,来自芯海科技
所以,单片机是一门很有用的技术,学会单片机可以找一份很好的研发岗工作,享受很好的工资待遇。但是万事开头难,在初学入门阶段可能摸不着头脑无从下手毫无头绪,如果有了比较好的学习方法,单片机学习起来也是很有趣、很容易的。和大家分享一下单片机以及单片机C语言编程的学习方法。
单片机开发板集成了各种常用的外设资源,并有详细的配套例程和教程,大大方便了初学者的学习。不管你是从51单片机开始,还是直接从STM32、AVR开始,建议选购一块单片机开发板。大家在选择开发板的时候,可以按照以下几个方面认真筛选:
硬件资源的丰富程度,开发板配套的硬件资源越多,那初学者所接触的内容也就越多,所涉及的知识面也就越广,在后期扩展学习时也就越方便。
配套程序的丰富程度,开发板还配备了和硬件资源相关的例程,在前期需要根据例程学习单片机寄存器的配置方式、要学习软件控制硬件的原理,所以例程丰富利于初学者学习。
是否有及时的技术支持,在初学阶段会碰到各种各样的问题,问题可能很简单但是需要别人的指点,如果有技术支持与之对接那就很容易解决在学习过程中遇到的各种问题,事半功倍。
头文件不要选择修过的,较大的开发板厂商都修改了单片机的头文件,这么做的目的是为了统一自己的风格,跟其他竞争对手区分开来,也保护了自己的消费群体,从短期来看这可能方便了初学者的学习,但是却不推荐这么做。因为用久了他们的头文件,就会生疏原始的头文件,如果换了另一种品牌的单片机可能很不习惯,甚至都不知道怎么去使用原始的头文件。我们学习的是单片机,并不是开发板厂商提供的平台。
3-单片机开发板实物图
GPIO口是单片机最基本、最重要的资源,所有的外设资源都是通过连接GPIO口来实现的,单片机开发板也配套了很多与GPIO相关的硬件资源,例如流水灯控制、按键输入检测、蜂鸣器控制、继电器控制、数码管显示、液晶显示等,这些都是通过GPIO的输入或者输出功能来实现的。几乎每一个初学者都是把流水灯作为入手单片机的第一个项目。通过这些基本的操作,初学者能学到单片机GPIO口的基本概念、配置方式还有相关硬件电路的设计原理,为后面的继续学习打下坚实的基础。
下面是典型按键输入检测电路和蜂鸣器驱动电路,通过这两个电路可以学会很多基本的电路设计知识和程序设计知识。
4-基本的输入输出电路
图中按键输入检测电路中的的电阻R75叫做上拉电阻,在按键没有按下的时候单片机检测到高电平,按键按下后检测到低电平,这个电阻可以防止因引脚悬空所带来的误检测。蜂鸣器 驱动电路中是通过三极管来控制蜂鸣器,电阻R76用作限流保护蜂鸣器,电阻R78用于下拉防止误动作,这个电路中三级管工作在截止和饱和状态。当单片机输出高电平1时三极管饱和导通蜂鸣器发声,当单片机输出低电平0时三极管截止蜂鸣器不工作。
单片机的功能之所以强大,是因为集成了很多片上资源,常见的如定时器功能、AD采样功能、外部中断资源、PWM功能等,合理的利用这些资源可以提高电路的设计效率、降低电路的设计难度,使技术方案更加优化、产品成本更低、性能更稳定。所以学习这些片上资源非常重要。
定时器/计数器功能,定时器可以实现计时功能,实现精确的定时、延时功能;而计数器可以实现外部时钟源、脉冲源的计数功能,可以统计脉冲信号的个数,实现频率/周期的计算等功能。
AD采用功能,这个功能可以实现模拟信号向数字信号的转化功能,将模拟信号量化为数字信号,方便单片机处理。该功能在传感器产品中应用比较多,比如温度采集、电流采集等。配合相关元器件/敏感探头的使用可以将环境中连续的物理量转化为数字量,单片机处理后可以精确的得到实时的物理量的值。
中断资源,所谓中断就是优先级较高的事件把正在进行的事件打断,中断事件处理完毕后再接着处理刚才的事件,使用中断资源可以节省单片机的资源,提高单片机的执行效率。
上图是一个简单的温度检测电路,感温元器件使用具有负温度系数的热敏电阻NTC来实现,当环境温度升高时NTC的阻值减小,那么NTC两端的电压就变小,单片机通过AD采样功能采集NTC两端的电压值,通过该电压值反推出当前NTC的电阻值,再根据NTC电阻值和温度的对应关系计算出当前环境的温度值,从而实现了温度传感器的功能。
单片机带有通讯功能,常用的通讯功能有UART、IIC、SPI、CAN、USB等,UART即可以实现通讯功能,又能实现单片机程序的下载功能,所以UART基本是单片机的标配资源。UART配合其他电平转换芯片可以衍生出多种通信方式,如通过MAX232芯片可以RS232的通讯、通过MAX485可以实现RS485总线的通讯功能、通过42675可以CAN总线通讯等功能。除此之外,还可以通过UART实现wifi无线传输、蓝牙无线传输和RF射频等无线通讯功能。
上图是通过MAX3845所实现的RS485接口电路,电平转化芯片通过UART和单片机连接,实现数据的透传功能,图中的三极管用于通讯时的数据方向的切换。
按照以上步骤学习完,你应该对单片机掌握了一大半了,对常见的外设电路了解的也差不多了,接下来需要实战一下。
学习单片机的目的就是为了以后能够用单片机设计出方案合理、性能稳定、成本占优的产品,所以要抓住参与项目的机会,在项目中锻炼实践动手能力,学会项目的开发流程。开发产品中会涉及到需求的分析、技术方案的制订、芯片的选型、技术原理的实现、功能调试、各中认证等工作,最后才是产品的量产。同时,要学会和项目同事打交道,提升自己的项目领导能力。
7-产品开发流程
经常有朋友问我,让我给推荐学习单片机的书籍。单片机不是一门偏重理论的课程,而是重在动手实践。不建议大家以看书为主,在早些年的时候我也看过很多关于单片机教学的书籍,但是看多了就发现了问题,市面上很多关于单片机相关的书籍都是塑成形的基本内容大同小异,而且都是以单片机的数据手册内容为主,或者是直接翻译过去的,或者是直接摘录的。任何一种芯片,最权威的资料永远都是官网发布的数据手册,现在单片机厂商都很注重资料的分享和学习笔记的分享,甚至很多单片机厂商为了推广单片机都做了各种技术方案挂在网站上。所以,大家在使用单片机的过程中遇到了问题首先要去翻阅数据手册和官网的学习笔记,这是最直接有效的方法。
以上就是关于学习单片机的几点建议,希望对大家起到一定的启发作用。