博客
单片机的学习,最重要的一点就是多实践。站在岸上学不会游泳。没有实践,恐怕永远也学不好单片机。我将和大家一起,选择一款适合自己的单片机实验板。
<strong>方案选择</strong>
我们主要有三个可选方案:
1、自己动手搭建学习板;
2、购买成品开发板;
3、使用Proteus等仿真软件。
首先,“嵌入式”这是个概念,准确的定义没有,各个书上都有各自的定义。但是主要思想是一样的,就是相比较PC机这种通用系统来说,嵌入式系统是个专用系统,结构精简,在硬件和软件上都只保留需要的部分,而将不需要的部分裁去。所以嵌入式系统一般都具有便携、低功耗、性能单一等特性。
然后,MCU、DSP、FPGA这些都属于嵌入式系统的范畴,是为了实现某一目的而使用的工具。
前面介绍了集成电路的管脚编号识别,这里我们简单了解下51单片机的40个管脚具体的作用。对于没有接触过复杂电子元器件的读者来说,或许会感觉非常难,但实际上完全不需要有畏惧心理。
<strong>单片机管脚</strong>
<strong>1、搞清楚功能、编制方案。</strong>
接到一个单片机项目设计文件之后,并不是马上动手编写程序,而是仔细研究用户提出的技术要求或者技术说明,根据这些技术要求和技术说明,也就是客户要求,把程序应该具备的主要功能写清楚,写仔细,这是最关键的工作。如不清楚,应向客户和使用者问清楚,否则在设计完成以后会发现有些功能由于事先没有考虑清楚再重新设计将会很麻烦,可能有些需要重新增加的功能很容易补充,而有些可能由于没有事先考虑周全而无法实现。
<strong>2、编制总流程图和各功能模块的流程图</strong>
在前文大家都有见到集成电路的图片,其外形有很多种。在这些芯片中真正起作用的部分是集成在硅片上的晶体管。而我们看到的样子,则是在其外部用外壳进行封装。把硅片上的电路管脚,用导线接引到外部接头处,以便于其它器件连接。封装有安装、固定、密封、保护芯片及增强电热性等作用。硅片必须与外界隔离,以防止空气中的杂质对电路的腐蚀等造成电气性能下降。
<strong>【规则1】设计满足要求的最精简的系统。</strong>
正确估计单片机的能力,知道单片机能做什么,最大程度的挖掘单片机的潜力对一个单片机系统设计者来说是至关重要的。我们应该有这样一个认识,即单片机的处理能力是非常强大的。
早期的PC机,其CPU(8086)处理能力和8051相当,却能处理相当复杂的任务。单片机的能力的关键就在软件设计者编写的软件上。只有充分地了解到单片机的能力,才不会做出“冗余”的系统设计。而采用许多的外围芯片来实现单片机能实现的功能。这样做,即增加了系统成本,也可能会降低了系统的可靠性。
<strong>【规则2】使用看门狗。</strong>
在初学51单片机的时候,总是伴随很多有关与晶振的问题,其实晶振就是如同人的心脏,是血液的是脉搏,把单片机的晶振问题搞明白了,51单片机的其他问题迎刃而解……
有关51单片机有关晶振的问题一并总结出来,希望对学51的童鞋来说能有帮助。
一,为什么51单片机爱用11.0592MHZ晶振?
其一:因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。
本例程通过PC机的串口调试助手将数据发送至STM32,接收数据后将所接收的数据又发送至PC机,具体下面详谈。
<strong>实例一:</strong>
void USART1_IRQHandler(u8 GetData)
{
u8 BackData;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //中断产生
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志.
GetData = UART1_GetByte(BackData); //也行GetData=USART1->DR;
大家都用过计算器,有没有想过它是怎么实现的呢?这里我不详述计算器的原理,而只对思路进行简单介绍。等我们学会了单片机,也可以亲手制作一个计算器。
<font color="blue"><strong>用电路进行数学计算</strong></font>
单片机有很多种,比较常见的有51单片机,AVR,MSP430,PIC,STM32等。现在我将从比较简单易学的51单片机说起,带领大家进入单片机的精彩世界。
<strong>8051系列单片机</strong>
提起二极管,大家一般都会想到它有个“单向导通,反向截至”的“倔脾气”,因此在电路中发挥着重要的功能。也有人用恰好利用了二极管的反向压降作稳压管使用。
但是,二极管也有它不为人知“敏感”的一面。这一点使他更增添了几分神秘色彩。
二极管是个敏感体质,它对温度,热量,那是相当的敏感。1N4148这种二极管常见程度已经可以用“俯拾即是”来形容了。在这里,我们就以它为例,对其的“敏感”特性进行介绍。恩,你可以边听,边拿一只在手上观察。
让我们先来看看1N4148二极管的“体检报告”吧:
反向恢复速度:超级快 小于 0.000000004 秒(4纳秒)
正向耐压:较低 约 100V
反向耐压:较低 约
电路设计不仅有很多技巧,同样也存在很多误区。本文将介绍电路稳定性设计当中的十个误区。
<strong>误区1:产品故障=产品不可靠</strong>
产品出现问题,有时候并不是研发的问题,曾经有案例,面向国内中等以上发达地区的设备,因为在国内用的不错,所以出口到了哥伦比亚,但在那里频频故障,故障的原因在于中国大陆中等以上发达地区的海拔都比较低,所以高海拔地区,设备的气密性受到了挑战,设备内外压差增大泄露率增加。
项目立项时只考虑了低海拔,所以人家的设计是没问题的,您老总就这样要求的嘛,谁决策了拿这个型号出口哥伦比亚,他才是罪魁祸首,如果管研发的老总参与决策而没提出反对意见,他简直就是最大的罪人,毕竟销售的高管决策不懂技术还是可以原谅的,技术副总的错误则是无能。
到现在为止,相信大家对单片机已经有了一个基本概念,但是我们为什么要学习单片机呢?我们需要找到爱上单片机的一万个理由。
<strong>单片机在实际中的应用</strong>
单片机在生活中应用非常广泛。各种家电,如洗衣机,电冰箱,电饭煲,电子称,等等,往往会称自己的产品是高科技、全自动、微电脑控制的智能产品……对于没有接触过单片机之类器件的人来说,会感觉真的是很难想象的高科技。而当你学会单片机之后,你的想法就完全不一样了。你可能只是淡淡一笑,然后暗暗的想,人家用的什么单片机?怎么写的程序?要不改天也来自制一个类似的玩玩?当然我并不否认单片机是高科技,我这里也不是有意要冒犯家电厂商,请大家理解o(╯□╰)o。
单片机晶振旁边两个对地电容叫晶振的负载电容,分别接在晶振的两个脚上和对地的电容,一般在几十皮发。它会影响到晶振的谐振频率和输出幅度,一般订购晶振时候供货方会问你负载电容是多少。
一般单片机的晶振工作于并联谐振状态,也可以理解为谐振电容的一部分。它是根据晶振厂家提供的晶振要求负载电容选值的,换句话说,晶振的频率就是在它提供的负载电容下测得的,能最大限度的保证频率值的误差。也能保证温漂等误差。两个电容的取值都是相同的,或者说相差不大,如果相差太大,容易造成谐振的不平衡,容易造成停振或者干脆不起振 。晶振负载电容值指的是晶振的交流电路中参与振荡与晶振串联或者并联的负载电容值。晶振的电路频率主要是有晶振自身决定,既然负载电容参与电路振荡,肯定会对频率多少起到微调作用。负载电容值越小,振荡电路就会反而越高。
十个不要:
1、不要第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。
2、初学者请不要看太多的书,那会误人子弟的。先找一本好书系统的学习,很多人用了很久都是只对部分功能熟悉而已,不系统还是不够。
3、看datasheet(数据手册)和用户指南(user guide),不要因为很难,而自己又是初学者所以就不看;datasheet永远是最好的参考手册,虽然它的文字有时候很难看懂,或者不够直观。
4、不要被一些专用词汇迷惑,最根本的是先了解最基础的知识。
5、不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引申出很多知识点;不会举一反三你进永远学不会。
从本文开始进入单片机入门篇的学习。入门篇主要介绍各种单片机基础知识概念。
入门篇阅读建议:根据个人已经掌握的知识,有重点的去读。如果介绍到你已经学过的知识,你只需要简单阅读一下,或者直接跳过。如果看后面的文章感觉有些知识掌握的还不好,可以在回来看入门篇相关的介绍。
<strong>数字的发明</strong>
我以前一直用的是51,不过一直是C51,对C语言已经有10多年的经验,汇编用的很少,后来因为项目需要转到了ARM。一开始对ARM什么都不懂,看了本《ARM体系结构与编程》也是云里雾里的,但是也许是因为无知者无畏吧,我直接就在MDK中建立一个工程,添加了自带的启动文件,然后做了个main函数,里面一个死循环没有操作任何硬件,居然跑起来了。然后以此为基础,慢慢的开始控制GPIO和串口通信,当时突然发现,我的项目不就是搞搞这些吗?其他的什么运行模式、什么链接寄存器、什么PC寄存器关我鸟事,我只要能控制外设就行了。至于它是怎么实现的,那是编译器和链接器的事情。
单片机的拉电流和灌电流都是对单片机的输出而言的,是单片机驱动能力的具体体现。
灌电流
<center><img src="http://mcu.eetrend.com/files/2017-11/%E5%8D%9A%E5%AE%A2/100008899-29906…; alt="单片机的拉电流和灌电流"></center>
<font color="blue">1. C语言编程和汇编语言在开发单片机编程各有哪些优缺点?</font>
答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。
C语言编程是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。
作为一名电子技术从业人员,你学过单片机吗?你会运用单片机吗?我想你一定学过,但不一定会运用。因为学习单片机比学习其他学科需要付出更多的努力和代价,不仅要学习理论知识还要练习实际操作,而且主要是在实际操作中才能真正学到单片机技术。此外,学习单片机还需要投入一定的学习成本,随着你学习知识的扩展成本还会增加。
学习单片机的动机不外乎有四种:一是为兴趣爱好而学,二是为专业而学;三是为饭碗而学;四是在工作中被逼而学。不管是哪种动机,因主修专业的不同以及电子基础的深浅不同,对于不同的人可能采用不同的学习方法,根据笔者的亲身学习经验和教授徒弟学习的感受,提出笔者的学习方法和步骤。
<font size="3"><strong> 第一步:基础理论知识学习</strong></font>