历史上的今天
返回首页

历史上的今天

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

2022年12月27日 | 很多人说单片机很简单,有些本专业学生为什么学起来这么吃力?

2022-12-27 来源:zhihu

在网上看到这么一个话题,自己特别有感触,不自觉的想写一下自己的看法。

单片机编程,我们的教材是《单片机原理及应用》。 当时我们的很多同学都觉得单片是最难的。

单片机对于大学生而言, 是一个新的学科,不像语文,英语,代数,数电等,学了很多年。

而且单片机里面的很多理论知识又非常抽象,不知道如何理解,很多东西都是要靠死记硬背。

大学单片机教程里面主要针对的就是单片机的设计原理,单片机的寄存器介绍,GPIO的结构,定时器的工作原理,以及汇编指令集体等。

这些东西往往是最枯燥的,而且是很难记忆的。

很多同学在网络上搜索了一下,网上说单片机编程的学习很简单,这让大家大跌眼镜。

为什么?接下来我从四点给大家简单的解析一下。

1.大学学习和实际工作的目标不一样

大学学习的目标是掌握单片机的原理和理论,同学们的目标是期末考试能考60分,这门课就算是过关了。

但单片机程序开发的实际工作不一样,实际工作中主要针对的是单片机的应用和开发,是要求你在规定的时间内完成产品的开发。

老板要你3天完成产品开发,你绝对不能超过3天,因为老板要赚钱,要算利润。

2.大学教材缺少实战

大学的单片机学习,大家基本上都是围绕着《单片机编程与应用》这本书学习,没有配套的学习套件,开发板,项目实战。

脱离了应用,理论就无法落地,也无法得到验证,这加剧了单片机学习的难度。

当然,以上这些情况随着大学办学条件越来越好,单片机学习的开发环境都有所好转。

很多大学都设立了“单片机电子大赛实验室”,主要是针对“全国电子专业人才设计与技能大赛”的,在这里大家可以参与单片机开发的实战

3.大学学习的理论知识和实际的需求严重脱轨

我参加工作10多年了,一直从事单片机程序的开发工作,如果现在回到大学,拿他们的期末考试卷考试,我基本上可以确定自己是不及格。

一方面是因为自己参加工作太多年,都是基于单片机产品开发应用的,理论知识基本上全忘了,另一方面,大学教材的知识,在单片机开发实际工作中基本上用不到。

就像单片机的结构是冯诺依曼?还是哈佛结构?我们工作中需要了解吗?不需要。

大学教材里单片机的编程语言,主要学习的是汇编,但实际工作中,用得是非常非常少的。

也就是说单片机大学的教材和实际的工作需求没有完美的接轨。

4.单片机学习需要理论和实战相结合

理论知识过于枯燥,不能理解原理,死记硬背是很痛苦的,而且又是最容易忘记的。

如果单片机的学习,理论可以和实战有效结合的话,单片机学习就会变得非常容易上手。

而且理论和实战相互结合,也可以帮助你更加有效的理解单片机的理论知识。

我在这里给大家举个例子,说明一下单片机编程的实战有多简单。

例如:如果要完成点亮LED1,代码见下:

#include “reg52.h” //单片机头文件sbit  LED1 = P2^7; //LED1对应的IO定义  P2.7脚void main(void){
   LED1 = 0; // P2.7 输出低电平,LED1 亮 while(1); // 无线循环等待}


当然我们实际的代码不会这么粗糙。

说到这里,大家感觉还是有点迷茫,如果想找一个单片机编程相关的工作,单片机开发需要学习那些知识呢?

第一: 单片机编程C语言基础

大学学习的汇编语言,在实际工作中基本上用不到,目前绝大数的单片机编程用的都是C语言。

市面上绝大多数C语言教程都是针对纯软件方向,开发环境和开发模式会有差别。

针对单片机的C语言编程入门视频教程可以找无际单片机编程,学完可以无缝过度到单片机的开发。

第二:单片机的外设驱动

C语言学会之后,大家需要掌握单片机的外设驱动,例如GPIO的输入输出,外部中断,定时器,ADC等。

以上两个是单片机产品开发的基础,有了这些基础,大家就可以做一下单片机开发的简单项目了,就可以开始实战了。


推荐阅读

史海拾趣

问答坊 | AI 解惑

51单片机鲜为人知的秘密...

51管脚的内部详细结构(几乎所有教材上都看不到的),也许你遇到的一些莫名其妙的问题也和它有关呵…

查看全部问答>

基于Web的嵌入式设备管理

随着互联网络硬件、软件的迅猛发展,嵌入式系统被广泛应用到工作和生活的各个领域中,如何对这些设备进行治理成为嵌入式系统软件开发中的一个重要方面。用户只有通过设备所提供的治理接口对共进行配置、治理和监控,因些治理接易用程度和效率成为衡 ...…

查看全部问答>

2009年全国大学生电子设计竞赛 题目预测汇总.doc

本帖最后由 paulhyde 于 2014-9-15 09:25 编辑 2009年全国大学生电子设计竞赛 题目预测汇总.doc  …

查看全部问答>

如何打包KEIL C的某个文件

大家好,我想问一下如何打包程序里的某个.C文件,谢谢!…

查看全部问答>

如何添加自己的驱动?

感谢朋友的帮忙,我下载了DM9000网卡驱动,我想把它添加到我的PB工程里去,如何添加呢? 下载的驱动解压后包括如下几个文件:dm9000.dll,dm9000.map,dm9000.pdb,dm9000.rel 我该如何做??? …

查看全部问答>

stm32的湿度范围是?

                                  …

查看全部问答>

维修支招:车用传感器的保养与维修

车用传感器现在应用得很广泛。它是汽车计算机系统的输入装置,能将汽车运行中各种工况信息转化成电讯号输给计算机,以便发动机处于最佳工作状态。车用传感器很多,判断传感器出现的故障时,不应只考虑传感器本身,而应考虑出现故障的整个电路。因此 ...…

查看全部问答>

帮忙解释一下程序,谢谢!!!主要是if()内的。跪求

void UART0_Init (void)                   //  串口初始化 {            SCON0 = 0x10;           ...…

查看全部问答>

MSP430仿真器MSP-FET430UIF仅能识别为TUSB3410 Device,无法下载程序

MSP430仿真器MSP-FET430UIF仅能识别为TUSB3410 Device,无法下载程序 用IAR 5.4时提示固件升级,我就点了YES。之后升级过程中提示将插头拔出再插入,我照做了,但是后来就提示升级失败。再后来就无法使用了。现在将仿真器插上之后,设备管理器显示 ...…

查看全部问答>