历史上的今天
返回首页

历史上的今天

今天是:2025年12月14日(星期日)

2022年12月14日 | 单片机应该怎么学习,可以速成吗?

2022-12-14 来源:zhihu

单片机有啥用?如果你是学电子的、学自动化的理工生,并且到大三了还说不上四五条,那只能说你这学白上了!!!


如果你学的不是跟这相关的专业,觉得很新奇吗,离我们生活很远吗?那这抱歉了,你真想多了,说新奇啊--单片机诞生于1971年,比咱们年龄都大吧。


说离我们远啊,你每天都会遇到,电梯送你上下楼,图书馆的门禁拦住你又放你进去,上厕所方便后自动冲水,这些其实都是单片机君们在默默的工作。


单片机从1971年发展至今,各方面都得到了发展,种类上更丰富,集成度更高,价格更便宜,功能上更强大。一般的书籍和网上的资料都会说单片机在仪器仪表、工业控制、家用电器、医用设备、航空航天等方面有广泛的应用。


工业控制主要是因为单片机工作的稳定程度是最高最稳定的,如工业机器人的控制啊、流水线啊都需要稳定的重复工作,所以就专门嵌入一个微控制器到这个系统里去执行已经编辑好的程序。


嵌入式系统的稳定度是最高的,极少出现死机、程序跑飞的现象,所以啊,电梯、游乐场里过山车啊飞轮啊都由单片机控制。


家用电器很多啊,比如自动洗衣机,你输入个数它就知道要洗多久,洗完之后它又自动用清水洗,又甩干。


都是单片机在按照已经编好的程序在干活,而且智能家居现在是一个很热门的话题,让你整个家都是智能的,包括地板和窗户。


这里的例子真的很多,大家到百度上一百度都能百度出一大堆,我就不再累述。


因为单片机体积小、控制功能强、功耗低、环境适应能力强、扩展灵活和使用方便,导航、控制、测控、通信等各个领域都要依仗于它。


其实没必要说要学,没人要你学,学这件事要是自己想学,然后才能学好才能坚持下来,这里只是跟你说这东西挺好的,学不学你自己决定。


而不能说学了之后对你好,我觉得这种叫勾引,很卑鄙,不知道大家什么感受,其实我觉得大学里最后留在心里的都是自己喜欢的自己自学的东西。


老师教的有时应付考试的,真的没留下啥痕迹,其实这也不奇怪,就比如说接触了单片机,一学一看还挺有意思,自己就喜欢了,又自己查书查资料,又自己开始动手干活,自己买元件,自己请教别人,自己制造出了作品,自己发现问题和解决。


其实这个学习的过程是多维度的,不但收获了知识还增强了综合解决问题的能力,比课堂上老师直接灌输的一维学习方式要强太多了。


况且在课堂上,大多数时候还是我们在非自愿、受威逼利诱的情况下迎合应试教育。


学校有时会说一句话:我们的学生基础知识扎实,工作之后上手快!明显胡说八道,上手快靠什么,靠能力。


考试、知识和能力是三码事,不能因为努力取得了好的考试成绩就说掌握了知识,更不能说这知识又都转化成了能力,而在现实生活中,直接使用的是能力。


那你告诉告诉我要看多少本书才能学会包饺子?我觉得大学校园里的主题词不是青春、也不是奋斗,而是迷茫。大家不知道为了什么要伺候好每个科目的成绩,不知道为了什么要考研、出国,不知道自己想干什么能干什么,大概都是为了别人说的一句好,甚至是以后会好。


一个东西如果自己觉得不感兴趣觉没意义,最好真的不学。


如果真的感兴趣,如果可以,通过这样的一次学习经历把学习的主动性、积极性从大学那僵尸一大波一大波的教室里解放出来。


不奢求老师家长社会的扯淡,美好未来的色诱,不屈服应试教育的挂科惩罚的迫害,只是简简单单的学点东西,不管有没有用,只是自己愿意没有为什么。


单片机学习是很难的,不能速成,你必须承认这一点,有些号称能帮你从入门到精通,那些大多都是牛皮膏药,基本上讲的都是些入门的东西,市面上的讲单片机的书本内容基本上八九成是一样的。


学习单片机的视频,八九成一样,不同的人讲的,主讲人的水平高低不同。


而正真高深的单片机程序处理,你在网上基本上找不到,偶尔能有那么一两个高手把自己的一点点心得分享出来,也许你半天都不能领悟其真谛。


正真的高手是这么炼成的?唯有自己日积月累,不断坚持、思考读成熟的程序,加上自己对程序的悟性,等到2到3年方可有所造诣。


首先我们来谈谈C语言基础,单片机程序开发,基本上用的是C语言,你的语言学的怎么样?对于关键词的使用是否已经融会贯通了?对于语法规则是否已经掌握?


这是一门实践的知识,没有实践你的C语言等于0,他的功能可不是书上那些例子,输个数做个加减乘除把结果输出,利用他的关键字及语法规则,勾画出无限的生产力。


对于C语言的知识你要达到这种水平:当你的想法出现的时候,功能要求已有并且你能立刻用C语言描绘出来。


C语言只是一个工具,实现我们的想法的工具,对于工具的使用要信手拈来!

例如把一个字节数据高底位一一兑换、把脉冲数转换为时间及检测出按键的连续两次按下等等,看到问题的时候具体的实现代码在老海呈现了没。


工具用熟了以后,我们该学习什么?对语法熟练以后就应该重点学习程序设计的方法,请大家分清两个概念,C语言只是工具,会C语言并代表你会设计程序。


首先是能将复杂的功能要求拆分为若干个细小功能,用C语言描述实现,再将这些小功能用你的C语言工具串起来组成我们所需要的复杂功能。


整个过程下来C语言都只是实现你想法的工具,看到这里你是否还敢用“玩”、“精通”来形容单片机吗,当真正进入单片机殿堂的时候你会感觉这是一个浩瀚无边的宇宙,你会越发感觉自己的渺小,只有更好,没有最好。


总结几点个人的学习的经验:


C语言与程序设计的学习是相辅相成的,他们共同进步,就如同你的两只脚,谁都不能超过谁很远。


学习单片机之前请先学习C语言,请不要相信什么零基础也能学好,至少20天,要把基础知识掌握,在进入单片机学习,视频网上一大把,学会操作基础模块,在这个阶段你可以在网上寻找知识学习,将你开发板的模块程序都练一遍。

当你开发板学完了,这个时候该这么办了,这就是我今天重点要讲的。


如果你就是浅尝辄止,那么你可以说自己入门了,如果你想有所造诣那么你还远着了,对于走过了这个阶段以后,我的要求就是“背程序”,就如同别人学习英语背文章增强语感。


我说所的“背程序”,并非死记硬背,属于一种重复强化训练,围绕几个主题:


按键读取;

数码管显示(重复计算显示代码);

LCD1602液晶显示;

AT24C02读写;

DS1302读写;

DS18B20读写。

每个项目从建工程到下载成功要在20分钟以内,最好练到在10分钟左右。


对于代码需要精简而又有内涵,当你做好以后能增强你的语感及常规程序设计能力。


最后以同样的方式训练一个综合项目——多功能数字钟,这个项目可能需要一个上午才能做好。


这个过程的目的很简单,增强C语言工具的使用能力,在单片机编程这块,对于基础模块的程序设计能力,完成从感觉自己什么都懂,可要写点什么东西时又不知如何下手到实现一些简单功能程序能迅速写出来的转变。


这个方式枯燥乏味但是效果还可以,可以借鉴借鉴。


完成了上述工作,紧接着多练习综合项目,这个时候只能靠自己,学程序没有别的,只能多练,多想!


用你的开发板编写:计算器、电子日历、电子密码等各类能把你开发板上的资源综合起来用的程序。


假想就是在做项目,要对自己提出苛刻的功能要求,切记不多说差不多了,要做到完美。


再往下走,完美要回过头学习单片机原理,去学习汇编,学习单片机的运行原理对你编程有极大的帮助,再把你的C语言书拿出来,细细的看前几章节。


再往下走,你应该去研究指针了,将指针应用到你的程序当中,它可以给你解决以往你所遇到的很棘手的问题。


讲到指针,该想到结构体了,我们应该去学习链表了,我们要将简单数据结构应用到单片机了。


这个期间你如果能去学习在操作系统上的编程是很有必要的,如在VC上做简单功能界面,Linux系统编程。


这可以让你看看别人优秀代码,从中吸取经验,就算看不到源代码,也可以从别人的函数所具备的功能上思考的自己的函数设计,改善自己的函数,我的很多函数功能设计方式就是这么来的。


真心希望你坚持下来了,到这个时候你基本上已经能独立解决很多问题了。


关于单片机学习,内容远不止这些,上述只讲了单片机的程序设计方面,硬件这一块也极为重要,不理解硬件也设计不好程序。


推荐阅读

史海拾趣

Directed Energy Inc公司的发展小趣事

在电子行业中,创新是企业持续发展的关键。Directed Energy Inc始终将创新作为企业的核心竞争力之一,不断投入研发资源,推动技术创新和产品升级。公司拥有一支高素质的研发团队,他们紧跟行业发展趋势,不断探索新的技术和应用,为公司的发展注入了源源不断的动力。这种持续的创新精神使得Directed Energy Inc在电子行业中始终保持领先地位。

Array Microsystems Inc公司的发展小趣事

随着技术的不断成熟和产品的广泛应用,Array Microsystems Inc开始寻求市场拓展的机会。公司积极与各大电子设备制造商建立合作关系,将其阵列传感器技术应用于智能手机、平板电脑等消费电子产品中。通过与这些企业的战略合作,Array Microsystems Inc不仅扩大了市场份额,还提升了品牌知名度。同时,公司还积极开拓海外市场,将产品推向全球范围。

Cantec Electronic Co Ltd公司的发展小趣事

在追求经济效益的同时,Cantec Electronic Co Ltd也积极履行社会责任,坚持绿色发展理念。公司投入大量资金进行环保设施的建设和改造,确保生产过程中的废弃物得到有效处理。同时,公司还积极研发环保型电子产品,推动整个行业的绿色转型。这一举措不仅提升了公司的社会形象,也为公司的可持续发展提供了有力保障。

成都芯进(CrossChip)公司的发展小趣事

2023年6月,成都芯进电子宣布完成超1亿元A轮融资。这一轮融资的成功,不仅为公司的发展提供了充足的资金保障,也吸引了更多知名产业机构和投资基金的关注。公司借此机会扩大了研发团队和生产规模,进一步提升了产品的研发和生产能力。

ARCOL公司的发展小趣事

随着电子技术的飞速发展,ARCOL公司意识到只有不断创新才能在激烈的市场竞争中立于不败之地。因此,公司加大了对研发的投入,积极引进先进的生产设备和技术,不断推出创新性的产品。通过不断优化生产工艺和提升产品质量,ARCOL的产品在市场上逐渐占据了领先地位。

Diodes公司的发展小趣事

随着科技的快速发展和市场的不断变化,客户需求也在不断更新。为了满足客户不断变化的需求,Diodes公司始终保持敏锐的市场洞察力和创新力。公司不断推出新产品、新技术和新应用方案,以满足客户在性能、可靠性、成本等方面的需求。同时,Diodes还积极与客户沟通交流,了解客户的实际需求和反馈意见,不断优化产品和服务。这些努力使得Diodes能够紧跟市场步伐、满足客户需求,在激烈的市场竞争中保持领先地位。

问答坊 | AI 解惑

433M无线导游应用评估方案

无论在人山人海的热门旅游景点、展览中心,拥挤的集市上,声音吵杂的工厂,还是在环境安静的博物馆、公司单位、会场、教室, 无线龙无线导游系统都可以让您清晰的听到导游、演说者的一字一句,您不用担心因为注意力分散而掉队,或听不清领导的指示 ...…

查看全部问答>

请教ATmega16使用EEPROM存储数据时遇到的现象???

以下是我做实验的一段小程序: #include #include void port_init(void) { PORTA = 0xFF; DDRA  = 0xFF; PORTB = 0x00; DDRB  = 0x00; PORTC = 0x00; //m103 output only DDRC  = 0x00; PORTD = ...…

查看全部问答>

nand flash驱动的问题

大家好,请问:smflash_lib.lib这个库是在哪里生成的呀?我在BSP没有发现在生成这个库的地方!谢谢 了!…

查看全部问答>

对IDE和SATA的I/O端口比较了解的高手看看

  最近要把原来写过的IDE接口的硬盘读写程序改成SATA的,用到1F0~1F7和3F6~3F7这些I/O映射地址对硬盘控制芯片的寄存器进行寻址,现在我需要知道用SATA接口时,这些I/O地址应该是什么,只要知道对SATA操作的I/O端口地址就能解决所有问题了,请 ...…

查看全部问答>

求教

本帖最后由 paulhyde 于 2014-9-15 09:43 编辑 请问:单电源和双电源运放之接有什么区别,在运用上应当注意什么?  …

查看全部问答>

MEGA8熔丝位

MEGA8用STK500下载程序时, STUDIO里 选择FUSE  里选择内部1M晶振 然后点入别的界面  在点FUSE 他有改成默认的外部的了 以前用MEGA16的时候,不会出现这种情况的   不知道为什么…

查看全部问答>

请教个问题:关于CC2530_2591模块

原理图中CC2530很多引脚都是连接到插座上,想请教下这些插座的作用以及插座上几个焊盘接gnd或者VCC的原因。另外一个问题就是可不可以改变插座引脚的位置以更方便自己PCB布局。我画的是2层板布局。…

查看全部问答>

JLINK仿真器

使用JLINK仿真器在STM32调试的时候,要添加相关的器件中,下拉菜单中还有好多其他的芯片,我在想不同的芯片就有不同的外设,那JLINK都能仿真吗…

查看全部问答>

怎么在basic rf中使用外部中断呢?

大家好,请教大家一个问题,怎么在basic rf中使用外部中断呢?因为我发现basic rf有时会关闭全局中断。谢谢!…

查看全部问答>

关于航模飞行控制

本人新手,想做直升机航模的自行控制测量,求大神指点各模块采用哪些元器件比较好…

查看全部问答>