精华内容
下载资源
问答
  • 51单片机自学入门总结,其中包括I/0口的控制,单片机的发光二极管,数码管,中断,定时器,计数器。
  • 学习51单片机硬件和编程基础缺一不可。 比如说基本电子元器件电阻电容、电感、三极管、按键开关、二极管等等。 再比如说模拟电路、数字电路、AD Layou软件、C语言等等知识。 很多人看到这里,还没开始就已经结束了。...

    学习51单片机硬件和编程基础缺一不可。

    比如说基本电子元器件电阻电容、电感、三极管、按键开关、二极管等等。

    再比如说模拟电路、数字电路、AD Layou软件、C语言等等知识。

    很多人看到这里,还没开始就已经结束了。

    要学的东西也太多了吧吧吧吧!!!还不如去做纯软件工资高。

    额。。工资这个问题先不讨论,可以看我最近几篇文章的讲解。

    其实做单片机也好,嵌入式也罢。

    对于初学者最忌讳的就是:我要吃透某款单片机,或者吃透C语言,甚至吃透模电数电。

    因为想要吃透,需要一定的项目经验来沉淀,就拿C语言指针来说,虽然你会用了,但是鬼知道它用在什么场合。

    直到你几年后进了芯片原厂写SDK库,你才发现原来指针简直就是写回调函数,封装代码的神器。

    Ok,废话不多说,接下来我说下对于一个初学者,做单片机开发之前必须要掌握哪些知识。

    从2个方面来解答:
    1.硬件
    2.软件

    一、硬件
    1.熟悉常用的元器件,如果你不知道哪些,找一个51开发板,把原理图上的元器件全部熟悉一遍,知道他们的工作原理和使用场景。

    2.熟悉欧姆定律,基础电路,直到你知道开发板上所有电路的原理。

    3 熟悉51单片机所有外设(IO、定时器、中断、串口等等),这个跟C语言同步学,一边学一遍实操效果才好!

    二、软件
    软件主要是C语言编程和Layout软件的使用。
    1.C语言
    C语言学完结构体和指针,指针和结构体不懂没关系,当你的代码量上去以后自然就懂了,前面千万别死磕,浪费时间。

    2.Layout
    个人推荐Protel99 SE或者AD就可以了,这两个比较简单,前期会用这个软件看原理图即可。

    学完以上这些东西,基本上就已经入门了,你可以做一个电子闹钟的小项目来巩固一下基础和培养项目开发的编程思维。

    展开全文
  • 在网上看了很多文章,很多人说现在51单片机已经过时了,建议从STM32开始学习。 或者单片机没有钱途,直接搞ARM+Linux。 我的建议是从51开始学习,51是基础,学习难度也是新手比较容易接受的。 STM32的定位是给有...

    曾经我是自学单片机然后跨行成功,今天来分享下自己的经验。

    在网上看了很多文章,很多人说现在51单片机已经过时了,建议从STM32开始学习。

    或者单片机没有钱途,直接搞ARM+Linux。

    我的建议是从51开始学习,51是基础,学习难度也是新手比较容易接受的。
    在这里插入图片描述

    STM32的定位是给有经验的开发工程师快速做出产品,软件是基于固件库开发,不涉及到寄存器的配置,新手直接进入这种开发模式会一脸懵逼,不知道底层的原理。

    ARM+Linux确实工资会高些,相对的门槛也高,学习难度大,如果不够自律,新手很难通过自学学会。
    我们学习的目的无非就是想通过这门技术先找到一份工作养家糊口对吧?
    我当初自学到就业也就花了3个多月时间,所以从学习周期和回报率来说,先学习单片机开发是非常不错的选择。

    至于后期你想不想进阶到Linux看自己选择,一般单片机开发做好就能让你过上不错的生活了。

    Ok,那废话不多说,下面开始讲干货。

    一、51单片机入门自学最佳路径
    1.基础电路
    学习单片机必须掌握基本的电路基础,比如说欧姆定律,二极管、三极管开关原理,LED灯驱动电路,按键检测电路,ADC检测电路等等。

    有个量化标准就是,你学到能把市面上任意一款51开发板上的电路原理图看懂就可以了。

    2.学习C语言
    通过编写C语言或者汇编来控制单片机,汇编目前用的不多,所以建议只学C语言就行了。

    C语言学完结构体,指针足以,如果指针前期学不懂也没关系,等你多做几个小项目以后就知道怎么用,该用在什么场合了。

    3.单片机
    能够把每个51单片机外设都用起来(外部中断、定时器、串口等等),最后做一个类似于电子时钟一样的小项目来培养自己的产品思维。

    二、总结
    很多新手之所以学不会,有几个原因:
    1.花太多精力去研究模拟电路,数字电路
    2.学习过程中不懂得培养自己的兴趣,学习技术是很枯燥的过程,每学一个知识点最好做点有意思的东西来培养下自己的兴趣,同时还能提升自己编程的熟练度。

    展开全文
  • 51单片机的发展史可谓“悠久”啊,现在讲的51单片机,可以说包括的型号很多,因为一切以51单片机核为核心的单片机都可以包括在51单片机中。51单片机的代表型号是AT89S51,AT89S52等,这两个型号就是我在学单片机时最...
  • 51单片机自学笔记

    2014-09-21 14:41:20
    51单片机自学笔记,看完后保证单片机入门了。
  • 51单片机入门程序——秒表程序示例

    万次阅读 多人点赞 2018-06-14 23:37:59
    下午自学了一下单片机的前几章的知识,理解了数码管的显示原理以及静态显示和动态扫描的编程方法。其中,比较重要的几个概念有:数码管公共端类型(共阴极、共阳极)、位选(决定多位数码管中哪一位显示)、段选(决定...

    下午自学了一下单片机的前几章的知识,理解了数码管的显示原理以及静态显示和动态扫描的编程方法。其中,比较重要的几个概念有:数码管公共端类型(共阴极、共阳极)、位选(决定多位数码管中哪一位显示)、段选(决定数码管显示的数字),另外还有锁存器(教材P36,可通过控制锁存端来改变数据输出的状态)。

    上周单片机实验课的内容是编一个秒表,在4位数码管中分别显示分和秒还有分秒,即最多可显示“9:59.9”。这里我用两个键实现了秒表的启动/暂停和清零功能,代码如下:

    1. #include <reg51.h>  
    2. #define uint unsigned int  
    3. #define uchar unsigned char  
    4. sbit S1 = P1^3;  
    5. sbit S2 = P1^1;  
    6. sbit S3 = P1^2;  
    7. sbit S4 = P1^0;  
    8. sbit beep = P2^7;  
    9. sbit a = P0^0;  
    10. sbit b = P0^1;  
    11. sbit c = P0^2;  
    12. sbit d = P0^3;  
    13. sbit e = P0^4;  
    14. sbit f = P0^5;  
    15. sbit g = P0^6;  
    16. sbit p = P0^7;  
    17. sbit key1 = P1^4;  
    18. sbit key2 = P1^5;  
    19. sbit key3 = P3^6;  
    20. sbit key4 = P3^7;  
    21. uchar num,kms,sec,min;  
    22. uchar code N[10] = {0xc0, 0xf9 ,0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; //0, 1, 2, 3, ...8, 9  
    23. uchar code Z[10] = {0x40, 0x79 ,0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10}; //0., 1., 2., ... 8., 9.  
    24.   
    25. void delayms(uint xms)  
    26. {  
    27.     uint i,j;  
    28.     for(i = xms; i > 0; i--)  
    29.         for(j = 110; j > 0; j--);  
    30. }  
    31.   
    32. void init()  
    33. {  
    34.     TMOD = 0x01;  
    35.     TH0 = 0x3c;  
    36.     TL0 = 0xb0;  
    37.     S3 = 1;  
    38.     S1 = S2 = S4 = 0;  
    39.     P0 = N[0];  
    40.     delayms(5);  
    41.   
    42.     S3 = 0;  
    43.     S1 = S2 = S4 = 1;  
    44.     P0 = Z[0];  
    45.     delayms(5);  
    46.   
    47.     EA = 1;  
    48.     TR0 = 0;  
    49.     ET0 = 1;      
    50.     kms = sec = min = 0;  
    51. }  
    52.   
    53. void display()  
    54. {  
    55.     uchar shi, ge;  
    56.     if(kms >= 0)  
    57.     {  
    58.         S4 = 0;  
    59.         S1 = S2 = S3 = 1;  
    60.         P0 = N[kms];  
    61.     }  
    62.     delayms(5);  
    63.     if(sec >= 0)  
    64.     {  
    65.         shi = sec/10;  
    66.         ge = sec%10;  
    67.   
    68.         S3 = 0;  
    69.         S1 = S2 = S4 = 1;  
    70.         P0 = Z[ge];  
    71.         delayms(5);  
    72.   
    73.         S2 = 0;  
    74.         S1 = S3 = S4 = 1;  
    75.         P0 = N[shi];  
    76.     }  
    77.     delayms(5);  
    78.     if(min >= 0)  
    79.     {  
    80.         S1 = 0;  
    81.         S2 = S3 = S4 = 1;  
    82.         P0 = N[min];  
    83.     }  
    84.     delayms(5);  
    85. }  
    86.   
    87. void keyscan()  
    88. {  
    89.     if(key1 == 0)  
    90.     {  
    91.         delayms(10);  
    92.         if(key1 == 0)  
    93.         {  
    94.             while(!key1);  
    95.             TR0 = ~TR0;  
    96.         }  
    97.     }  
    98.     if(key2 == 0)  
    99.     {  
    100.         delayms(10);  
    101.         if(key2 == 0)  
    102.         {  
    103.             min = sec = kms = 0;  
    104.             while(!key1);  
    105.         }  
    106.     }  
    107. }  
    108.   
    109. main()  
    110. {  
    111.     init();  
    112.     while(1)  
    113.     {  
    114.         keyscan();  
    115.         display();        
    116.     }  
    117. }  
    118.   
    119. void T0_time() interrupt 1  
    120. {  
    121.     TH0 = 0x3c;  
    122.     TL0 = 0xb0;  
    123.         num++;  
    124.     if(num == 2)  
    125.     {  
    126.         num = 0;  
    127.         kms++;  
    128.         if(kms == 10)  
    129.         {  
    130.             kms = 0;  
    131.             sec++;  
    132.             if(sec == 60)  
    133.             {  
    134.                 sec = 0;  
    135.                 min++;  
    136.                 if(min == 10)  
    137.                 {  
    138.                     TR0 = 0;  
    139.                     min = 9;  
    140.                     sec = 59;  
    141.                     kms = 9;  
    142.                 }  
    143.             }  
    144.         }  
    145.     }  
    146. }   

    程序通过“Keil uVision4”调试,大家也可以在板子上运行一下试试。

    注意:需要根据板子的端口定义相关变量,不要不分青红皂白就直接使用我的程序哈。

    最后上个图,第一次做单片机,希望以后还有时间可以做更深入的更好玩的东西。


    展开全文
  • 回想起当初学习AT89S52的日子还近在眼前:毕业后的第一年呆在亲戚...经过两个多月的挫折后我静下来思考,并上网查询一些前辈经验,又经过快2周的考虑我决定先自学单片机,毕竟电子信息专业的,有一点基础.于是买来了开发...

    回想起当初学习AT89S52的日子还近在眼前:毕业后的第一年呆在亲戚公司做了10个月设备管理.乏味的工作和繁杂的琐事让我郁闷不已.思考很久后终于辞职.投奔我的同学去了,开始并不曾想到要进入工控行业,知识想找一份电子类技术职业,至于什么职业我根本没有目标可言.经过两个多月的挫折后我静下来思考,并上网查询一些前辈经验,又经过快2周的考虑我决定先自学单片机,毕竟电子信息专业的,有一点基础.于是买来了开发板(我还在这个论坛上发过小程序呢),下来了大量的资料,几乎很多是从本论坛下载的,我还是得感觉这么多的前辈啊,他们的经验让新人少走了很多弯路.我说下我的学习过程,每个人有每个人的学习方法,希望至少能给刚进入的朋友们一点信心吧.

    语言选择:  在买来开发板前我其实已经看过3遍C语言教程了(潭浩强的).但是我选择了重头学习汇编指令.我花了1周熟悉汇编指令,在这一周里我先看透了开发板的原理图,不认识的芯片从网上下了资料,大概的了解芯片的功能.

    实验:我买了本<C51开发宝典>,根据别人的例子开始了实验.我记得我做第一个流水灯花了我2天时间.我按照别人例程完成后,又自己思考下能不能用别的方法实现,那时我自己又想了几种方法,虽然现在看来不足以称为好方法,但至少也算自己独立思考的了.这里我要说下我做实验并未按照开发板提供的实验去做,我是自己看完电路图然后自己订了个实现功能实验,实验如下:

    第一个实验: 流水灯(开始一遍是参考例子,主要为了熟悉汇编语言的写法),然后自己用定时器再实现一遍,接着再自己整些花哨的流水花样.

    第二个实验: 秒表.从0秒运行到24小时,按键可以停止,继续,复位.这个实验其实分为了点亮数码管--动态显示数码管--秒表计时三部分.我自己在实现了从1~9的计数后卡在了10之后的自动计数,无奈之下参考了前辈的10进制的程序,经过1周的努力完成了这第二个实验.

    第三个实验S1820B测温. 从开始的打印出前辈的液晶程序看了有1周多,大概了解了
    1602液晶模块的驱动程序后又花了1周时间熟悉DS1820B的时序.在这个过程中几次痛苦的想放弃了,
    程序根本吃不透.最后我总算是将前辈的程序看了差不多,自己做这个实验时也仅仅是将显示的内容和位置作了修改,其他内容认为看懂了就偷懒没自己写.当看到程序跑起来后还是蛮开心的.

    在开始的自学2个多月里我根本不懂IIC,SPI,和RS232,485等串行通信,每个芯片我都根据芯片手册的时序图来痛苦的吃读写指令/.后来进入公司后才发现之前自学的好多芯片是通过以上几种通信方式来通信的.
    自学了2个多月后我也终于找到了我人生中的第二份工作可能也是很重要的一次转折的工作.在工作中我暂时还是以学习为主,需要学习的太多了,也是工作后我开始改用C语言写代码.在这里回头看看,我只想告诉新的朋友们:多上网看看前辈的经验,可以少走很多弯路.还有就是基础的知识还是必须自己去吃吃的.完!

    转载于:https://blog.51cto.com/14355585/2407628

    展开全文
  • 自学51单片机指导书

    2013-07-03 17:07:09
    自学51单片机入门很容易,新手一定要看看
  • 学习汇编语言先从 C51汇编学起,本教程简单易懂,对于汇编语言入门很有帮助
  • 一部非常好的单片机自学入门书籍,通俗易懂,强力推荐。
  • 王云的51单片机教程全套资料,大家可以随便下载了。链接:http://www.yunlongdz.cn/1/110.htm 想学好单片机其实并不困难,单片机是一门实践性非常强的的学科,学习时要理论与实践并重量,现在网上学习单片机的...
  • 作为一个初学者,如何单片机入门?我需要那些知识和设备? 知识上,其实不需要多少东西,会简单的C语言,知道51单片机的基本结构就可以了。一般的大学毕业生都可以了,自学过这2门课程的高中生也够条件。 设备上,...
  • 51单片机教程

    2018-12-24 22:46:46
    51单片机入门,简单易懂,自学教材。
  • 现在单片机书籍有很多,但也不是每一本都适合初学的,初学肯定是首先带有视频教程的书,像王云老师的这本51单片机教程,是非常不错的,书带的"云龙51单片机视频"比较全面,且所有课程中的代码都是一行一行...
  • 自学开始 第一次写博客可能叙述和排版上会有很多纰漏,这是我入门学习汇编语言的第一天,希望把学习到的知识能在这里分享给大家你有兴趣的伙伴可以继续关注我的博客。 ...
  • 单片机自学读本 界面友好 易学易用 51 单片机 C语言 入门 自学 教材
  • 51单片机入门,学习单片机技术的好文档,轻松学习c51的单片机
  • 让你在一周内入门单片机``这是一个MCS-51单片机指令系统
  • 51单片机学习资料书籍分享

    千次阅读 2019-01-24 20:46:48
    4-51单片机C语言编程入门以及keil_uvision使用 5-51单片机C语言教程 6-51单片机入门到精通 7-51单片机轻松入门—基于STC15W4K系列 8-51单片机自学笔记 9-单片机C语言程序设计实训100例 10-单片机外围电路设计攻略...
  • 51入门单片机开发板的原理图和PCB,供自学者自制学习,可自己手工制作开发板学习
  • 单片机自学读本(平凡老师) 平凡老是的51单片机基础教程!! 不但是单片机入门的首选,而且还是一份很好的51单片机资料!!!
  • 单片机C语言轻松入门

    2010-10-20 17:46:58
    《单片机C语言轻松入门》以80C51单片机的C语言为例来学习使用C语言进行单片机程序开发,介绍了C语言的基础知识、Keil软件的使用、程序的编写与调试方法及其他相关知识。《单片机C语言轻松入门》结合了作者多年教学、...
  • 作为一个初学者,如何单片机入门?我需要那些知识和设备? 知识上,其实不需要多少东西,会简单的C语言,知道51单片机的基本结构就可以了。一般的大学毕业生都可以了,自学过这2门课程的高中生也够条件。
  • 包含了4个文件:单片机资料大全(入门与提高)、单片机自学教程、keil c51教程。以供大家学习交流用。
  • 现在市面上的单片机开发板可以说用泛滥来形容了。 有时候选择太多,让人无法下手,特别是对于新手来说。...我的建议是入门一定要先学51,然后再STM32,如果你认为你特别聪明,想直接从STM32开始我也
  • 作为一个初学者,如何单片机入门?我需要那些知识和设备? 知识上,其实不需要多少东西,会简单的 C 语言,知道 51单片机的基本结构就可以 了。一般的大学毕业生都可以了,自学过这 2 门课程的高中生也够条件。 ...
  • 单片机入门到高级开挂学习路径(附教程+工具) 我当初自学的时候,是看郭老师的教程和开发板上手的,比较适合零基础。 入门到没什么好说的了,买个开发板,对着视频每个实验做一遍基本就上手了。 也可以到小破站找...

空空如也

空空如也

1 2 3
收藏数 47
精华内容 18
关键字:

51单片机入门自学