想学单片机怎么入手?51单片机入门自学最佳指南
曾经我是自学单片机然后跨行成功,今天来分享下自己的经验。
在网上看了很多文章,很多人说现在51单片机已经过时了,建议从STM32开始学习。
或者单片机没有钱途,直接搞ARM+Linux。
即便如此,我的建议还是从51开始学习,51是基础,学习难度也是新手比较容易接受的。
别人怎么学,或者到底有没有从事过这个行业的工作我们都不知道。
为什么我经常跟大家说,我的学习方法和路径适合大多数人参考?
因为我可以向大家保证的是,我就是这么自学过来的,而且我也在这个行业从事了多年的开发。
我的学历各方面也是普通得不能再普通了,我都能学会,而你学不会,这只能说明你方向不对,或者没用心 。
STM32的定位是给有经验的开发工程师快速做出产品,软件是基于固件库开发,不涉及到寄存器的配置,新手直接进入这种开发模式会一脸懵逼,不知道底层的原理。
ARM+Linux确实工资会高些,相对的门槛也高,学习难度大,如果不够自律,新手很难通过自学学会。
而且,如果你做过单片机开发再去学习ARM+Linux的方向,你会比直接学习这个理解得更透彻,基础更好。
打个比方,你直接学习可能需要半年甚至1年,等你做了单片机开发后去学可能只需要1-2个月。
我们学习的目的无非就是想通过这门技术先找到一份工作养家糊口对吧?
我当初自学到就业也就花了3个多月时间,所以从学习周期和回报率来说,先学习单片机开发是非常不错的选择。
至于后期你想不想进阶到Linux看自己选择,一般单片机开发做好就能让你过上不错的生活了。
Ok,那废话不多说,下面开始讲下51单片机入门自学最佳路径:
1.基础电路
学习单片机必须掌握基本的电路基础,比如说欧姆定律,二极管、三极管开关原理,LED灯驱动电路,按键检测电路,ADC检测电路等等。
有个量化标准就是,你学到能把市面上任意一款51开发板上的电路原理图看懂就可以了。
2.学习C语言
通过编写C语言或者汇编来控制单片机,汇编目前用得不多,所以建议只学C语言就行了。
针对单片机c语言我们无际单片机编程专门为零基础学员录制了一套教程,大家可以到我们公号获取。
C语言学完结构体,指针足以,如果指针前期学不懂也没关系,等你多做几个小项目以后就知道怎么用,该用在什么场合了。
3.单片机
能够把每个51单片机外设都用起来(外部中断、定时器、串口等等),最后做一个类似于电子时钟一样的小项目来培养自己的产品思维。
以上就是做单片机开发必备的技能,这些买个开发板跟着视频自学完全能学会。
关于后续如何提升,除了做项目,没有更好的选择,这也是我们特训营的价值之一:以项目为导向。
所以很多人问开发板才几百块,为什么我们收几千,我们除了带做产品,还提供7x12小时的技术支持,不管学什么,我最怕的就是碰到问题找不到可以指导的人 。
最后总结很多新手之所以学不会,有几个原因:
1. 花太多精力去研究模拟电路,数字电路
2. 学习过程中不懂得培养自己的兴趣,学习技术是很枯燥的过程,每学一个知识点最好做点有意思的东西来培养下自己的兴趣,同时还能提升自己编程的熟练度。
3. 没有学习氛围,没人实时指导和纠正方向。
单片机学习系列教程——《初识51单片机》
亲爱的朋友们,本周我们邀请嘉糖给我们讲解嵌入式学习系列教程,每天连载更新,学习过程中,有任何疑问,欢迎大家关注微信公众号ickeybbs提问。
什么是 51 单片机?
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。51单片机是基础入门的一个单片机,51系列的单片机一般不具备自编程能力。
51单片机的功能
·8位CPU·4kbytes程序存储器(ROM) (52为8K)
·128bytes的数据存储器(RAM) (52有256bytes的RAM)
·32条I/O口线·111条指令,大部分为单字节指令
·21个专用寄存器
·2个可编程定时/计数器·5个中断源,2个优先级(52有6个)
·一个全双工串行通信口
·外部数据存储器寻址空间为64kB
·外部程序存储器寻址空间为64kB
·逻辑操作位寻址功能·双列直插40PinDIP封装
·单一+5V电源供电
CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:用以存放程序、一些原始数据和表格;
I/O口:四个8位并行I/O口,既可用作输入,也可用作输出
T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统;
一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M。
51单片机的时钟电路?
51单片机的时钟电路包括两部分,即芯片内的振荡器和芯片外跨接的晶振及负载电容器。
定时器计数器
定时器/计数器简称定时器,其作用主要包括产生各种时标间隔、记录外部事件的数量等,是微机中最常用、最基本的部件之一。803l单片机有2个16位的定时器/计数器:定时器0(T0)和定时器1(T1)。
T0由2个定时寄存器TH0和TL0构成,T1则由TH1和TL1构成,它们都分别映射在特殊功能寄存器中,从而可以通过对特殊功能寄存器中这些寄存器的读写来实现对这两个定时器的操作。作定时器时,每一个机器周期定时寄存器自动加l,所以定时器也可看作是计量机器周期的计数器。由于每个机器周期为12个时钟振荡周期,所以定时的分辨率是时钟振荡频率的1/12。作计数器时,只要在单片机外部引脚T0(或T1)有从1到0电平的负跳变,计数器就自动加1。计数的最高频率一般为振荡频率的l/24。
工作方式:
T0或T1无论用作定时器或计数器都有4种工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作状态。下面以T1为例,分述各种工作方式的特点和用法。
1 、工作方式0 :
13位方式由TL1的低5位和TH1的8位构成13位计数器(TL1的高3位无效)。工作方式0的结构见下图:
图中,C/T为定时/计数选择:C/T=0,T1为定时器,定时信号为振荡周期12分频后的脉冲;C/T=l,T1为计数器,计数信号来自引脚T1的外部信号。
定时器T1能否启动工作,还受到了R1、GATE和引脚信号INT1的控制。由图中的逻辑电路可知,当GATE=0时,只要TR1=1就可打开控制门,使定时器工作;当GATE=1时,只有TR1=1且INT1=1,才可打开控制门。GATE,TR1,C/T的状态选择由定时器的控制寄存器TMOD,TCON中相应位状态确定,INT1则是外部引脚上的信号。
在一般的应用中,通常使GATE=0,从而由TRl的状态控制Tl的开闭:TRl=1,打开T1;TRl=0,关闭T1。在特殊的应用场合,例如利用定时器测量接于INT1引脚上的外部脉冲高电平的宽度时,可使GATE=1,TRl=1。当外部脉冲出现上升沿,亦即INT1由0变1电平时,启动T1定时,测量开始;一旦外部脉冲出现下降沿,亦即INT1由l变O时就关闭了T1。
定时器启动后,定时或计数脉冲加到TLl的低5位,从预先设置的初值(时间常数)开始不断增1。TL1计满后,向THl进位。当TL1和THl都计满之后,置位T1的定时器回零标志TFl,以此表明定时时间或计数次数已到,以供查询或在打开中断的条件下,可向CPU请求中断。如需进一步定时/计数,需用指令重置时间常数。
2 、工作方式1 :
16位方式。与工作方式0基本相同,区别仅在于工作方式1的计数器TL1和TH1组成16位计数器,从而比工作方式0有更宽的定时/计数范围。工作方式1的结构见下图。
3 、工作方式2
8位自动装入时间常数方式。由TLl构成8位计数器,THl仅用来存放时间常数。启动T1前,TLl和THl装入相同的时间常数,当TL1计满后,除定时器回零标志TFl置位,具有向CPU请求中断的条件外,THl中的时间常数还会自动地装入TLl,并重新开始定时或计数。所以,工作方式2是一种自动装入时间常数的8位计数器方式。由于这种方式不需要指令重装时间常数,因而操作方便,在允许的条件下,应尽量使用这种工作方式。当然,这种方式的定时/计数范围要小于方式0和方式1。工作方式2的结构见下图.
4 、工作方式3
2个8位方式。工作方式3只适用于定时器0。如果使定时器1为工作方式3,则定时器1将处于关闭状态。
当T0为工作方式3时,THo和TL0分成2个独立的8位计数器。其中,TL0既可用作定时器,又可用作计数器,并使用原T0的所有控制位及其定时器回零标志和中断源。TH0只能用作定时器,并使用T1的控制位TRl、回零标志TFl和中断源,见下图。
通常情况下,T0不运行于工作方式3,只有在T1处于工作方式2,并不要求中断的条件下才可能使用。这时,T1往往用作串行口波特率发生器(见1.4),TH0用作定时器,TL0作为定时器或计数器。所以,方式3是为了使单片机有1个独立的定时器/计数器、1个定时器以及1个串行口波特率发生器的应用场合而特地提供的。这时,可把定时器l用于工作方式2,把定时器0用于工作方式3。
下才可能使用。这时,T1往往用作串行口波特率发生器,TH0用作定时器,TL0作为定时器或计数器。所以,方式3是为了使单片机有1个独立的定时器/计数器、1个定时器以及1个串行口波特率发生器的应用场合而特地提供的。这时,可把定时器l用于工作方式2,把定时器0用于工作方式3。
控制寄存器
定时器/计数器T0和T1有2个控制寄存器-TMOD和TCON,它们分别用来设置各个定时器/计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。其中,TCON寄存器中另有4位用于中断系统。
1 、定时器方式控制寄存器TMOD
TMOD在特殊功能寄存器中,字节地址为89H,无位地址。TMOD的格式如下图年示。
由图可见,TMOD的高4位用于T1,低4使用于T0,4种符号的含义如下:
GATE:门控制位。其作用见图1.6。GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时器/计数器的打开或关闭。
C/T:定时器/计数器选择位。C/T=1,为计数器方式;C/T=0,为定时器方式。
M1M0:工作方式选择位,定时器/计数器的4种工作方式由M1M0设定。
M1M0=00:工作方式0(13位方式)。
M1M0=01:工作方式1(16位方式)。
M1M0=10:工作方式2(8位自动装入时间常数方式)。
MlM0=11:工作方式3(2个8位方式--仅对T0)。
2. 定时器控制寄存器--TCON
TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H一8FH,由于有位地址,十分便于进行位操作。
TCON的格式如下图所示。其中,TFl,TRl,TF0和TR0位用于定时器/计数器;IEl,ITl,IEo和IT0位用于中断系统。
TFl,TRl用于定时器T1;TF0,TR0用于定时器T0。两组符号有相同的含义。
TF:定时器/计数器中断请求标志位。当定时器计满回零时,TF=1,并可申请中断;当CPU响应中断并进入中断服务程序后,TF自动清零。如对TF查询,定时器回零后,要用指令将TF清零。
TR:定时器/计数器开闭控制位。
IEl,ITl用于外部中断1(1NTl);IE0,IT0用于外部中断0(1NT0)。两组符号的含义相同。
IT:下跳沿/低电平引起外部中断请求的选择位。IT=1,由下跳沿引起;IT=0,由低电平引起。
IE:外部中断的中断申请标志。IE=0,表明无外部中断请求;IE=1,表明有外部中断请求。当有外部中断请求时,IE自动为1,单片机CPU响应此中断后,IE自动清零。
先要有一个定时器的函数声明对TH0定时器的高八位低八位附初值。
然后打开总中断,和启用定时器。
8051单片机提供5个中断请求源,具有2个中断优先级,可实现两级中断服务程序嵌套,由片内特殊功能寄存器中的中断允许寄存器IE控制CPU是否响应中断请求;由中断优先级寄存器IP安排各中断源的优先级,同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。用户可以用关中断指令(或复位)来屏蔽所有的中断请求,也可以用开中断指令使CPU接收中断请求。每一个中断源可以用软件独立地控制为开中断或关中断状态;每一个中断源的中断级别均可用软件设置
MCS-51提供了五个中断源,其中两个外部中断源,由INT0、INT1引脚输入;两个为片内的定时/计数器T0、T1溢出时产生的中断请求TF0、TF1;一个片内串行口的发送中断TI或接收中断RI。
(1)INT0(P3.2)外部中断0请求信号输入端。可由IT0(TCON.0)选择其为低电平有效还是下降沿有效,当CPU检测到P3.2引脚上出现信号时,使中断标志IE0(TCON.1)置1,向CPU申请中断。
以下是给初学者的一点个人建议!
作为一个初学者,如何单片机入门?
首先把C 语言学好是必须的,51单片机编程对C 语言还是有一定的要求。
然后要把电路搞懂,学会看原理图,会画简单的电路图,51单片机对原理图要求不是很高,只要用心很快就能理解。
个人觉得,你在学51时,不要着急着去敲代码,先看它的资料文档,建议看官方的资料,看datasheeed,看它的管脚定义,单片机的使用比较简单,通俗的说就是给高低电平去控制即可。
了解了51的特性,知道它能干嘛之后,先从最简单的点亮LED 开始。不过这里要求你能后灵活快速的在进制数值之间转换,给1或者0去控制LED 。通过第一个小项目,你应该对它有一点了解了,这时可以做流水灯,数码管之类的东西了。
几个玩意下来,该学它的定时器和中断了,个人觉得这个是玩51最重要的,没有这两个,基本玩不出什么花样。这里就不详细说它们的原理了,基本走下来就完了吧,这时候玩一些小项目,得靠自己了。比如智能小车,蓝牙小车,远程控制系统等等。
本文属于原创,如需转载,请联系微信公众号 ickeybbs ,最新电子行业资讯、教程以及开发板样片申请,请关注“云汉电子社区”官方微信公众号ickeybbs
相关问答
自学 51单片机 需要哪些知识?自学51单片机需要一定的电子基础知识,如模拟电路、数字电路、计算机组成原理等;需要了解汇编语言和C语言,理解嵌入式系统的原理和应用;需要掌握单片机的基本...
怎样读 51单片机 内程序?我们在读程序之前呢,首先要明白这么一点内容,对读程序和写程序会有很大的帮助,那就是在51单片机中,每条程序语句都是逐个执行的,因为51单片机是单核CPU,一...
学习51单片机 并且会应用到底是在学什么?新型的51器件要比买的开发板上带的80c51强大好多,例如内置ad,多中断,更强的抗干扰和更多端口和ram。它就想是一把剑,如果很厉害,在很多地方,都可以将持枪...新...
51单片机 怎么学啊,看不懂,有推荐的网课和书籍么?王云51单片机教程,很多人都是看这本书入门的,这本书还有配套的教学视频,入门看这本书足够了。王云51单片机教程,很多人都是看这本书入门的,这本书还有配套的教学...
有没有人告诉我 51单片机 要学多久?网上不是流传着不至一个10天学会51单片机的教程吗,静下心来,边看教程边实验,10天是可以入门的,但要熟练应用,要经过大量的练习,因你学的不是单片机本身,单...
51单片机 C语言需要 学习 哪些知识?答主从事嵌入式、单片机开发工作有几年了,负责硬件电路的设计和程序的编写调试等,所以结合自身的情况给与回答。1.单片机编程与PC编程不同单片机C语言和PC编...
arm单片机与 51单片机学习 有区别吗?有区别,而且还是有一些差别的,51单片机其实适合新手入门,他的寄存器少,内存也较小,所以很容易上手。arm则不一样,它是另外一套架构,相对来说比较复杂一些...
许多人都在学 51单片机 学会它有什么用处?是不是可以搞电路设...51单片机基本属于做编程硬件的入门单片机。他用的C语言编程。说白了就是通过编程控制电位的高低来实现控制电路的过程,楼主学好了之后还有msp430、AVR等等单...
51单片机 rand怎么用?51单片机没有产生rand随机数的功能,我不知道你用单片机产生随机数到底想干嘛,如果非得使用rand随机数,可以采用两种办法:要么通过键盘采用人工方式录入随机数...
请问怎样才算学会 单片机51 ?学会单片机没有什么用,关键是要会用单片机做一些满足一些功能的成品。估计你现在没有怎么接触过这类东西。实践太少,只在一些小开发板上写过几个点亮小LED,检...