nygaozhan 发表于 2023-10-4 19:21:44

没学数模电可以玩单片机吗?

大一只学了c,电路分析,数模大二上,但是我想在假期理解单片机基本原理。如果可以 怎么入门

sdwgw 发表于 2023-10-4 19:22:41

玩单片机一个非常重要的作用就是可以比较深入地理解C语言的指针,以及2进制数据在内存中的表示。用C语言玩单片机只需要基本的模电数电知识即可,比如高电平和低电平,二极管单向导电性,三极管中间的引脚如何控制通断,这些知识看几个例子非常容易理解。

wangbo821 发表于 2023-10-4 19:22:49

看了楼上的几篇回答,我告诉你可以玩,但是没有数电模电等知识会制约你玩的高度。

单纯的玩单片机还可以

如果只是简简单单的玩单片机,完全可以,因为单片机说简单点就是控制每个引脚,到什么时间干啥事情。我记得我刚刚接触单片机的时候是高中,那时候也不懂什么寄存器啥的。买的一块Arduino,跟着网上的例程玩呗,刚刚开始点亮一个LED灯,后面就是做呼吸灯啥的,你看没有数模点的基础不也照样玩嘛。

http://pic1.zhimg.com/v2-eb885da6dee1439a2d65b328262d1b55_r.jpg?source=1940ef5c

上面是Arduino,下面是ST公司的低功耗开发板

简单的玩还是可以的。
进阶的玩,没有数模电不行!!!

为什么说不行呢?
首先不说单片机内部的问题,先说说外围的电路吧。
假设你只有三个GPIO,但是你得控制8个LED闪烁。没有数电你能够搞定?
学过数电的人肯定可以想出来使用译码器。

http://pic1.zhimg.com/v2-ab6f356c64bd8ecb8c4ef6062d9798d4_r.jpg?source=1940ef5c

74LS138


来一个高阶的
假设你会使用单片机内部的ADC,现在要进行电压快速的采样,不过你的ADC的采样率只能100K,按照奈奎斯特采样定理,你最多能采集50Khz的信号,那么你外部不添加滤波器你采样的信号就有可能出现问题。这个问题是我最近在搞STM32单片机的FFT遇到的一个问题。

http://pica.zhimg.com/v2-1cf1660f9d25f29ad25763d57b890903_r.jpg?source=1940ef5c

10K的采样率,1024点FFT

假设你得采集一个非常微弱的电压信号,可是按照单片机内部的ADC的分辨率来说不一定能够采集到。那么你怎么玩?

http://picx.zhimg.com/v2-67df13ec1d149c996dddf8812e4afb87_r.jpg?source=1940ef5c
这个时候你不加外部的放大器你压根采集不到,不仅需要模电而且需要很灵活的用到模电,放大电路还有很多种呢,同相比例,反向比例。为什么要用差分,在不同的环境下的需求不一样,放大电路也得跟着动态调整。
在说ADC,目前大家使用的片内ADC只能采集到正电压,我想问你如果这时候需要采集负电压怎么办?

http://pica.zhimg.com/v2-f98dbaf7dec8ae0ea37ac0707fc1c0a2_r.jpg?source=1940ef5c
那就可以用运算放大器把电压抬起来呀,或者简单点使用二极管钳位一下,还有我在野火的教学视频中看到一个使用四个电阻制作的可以采集负电压的电路,使用到基尔霍夫定律,你说你没有模电的基础你连ADC只能采集到正电压。
说了一些外部电路的问题,那回头看看内部的问题吧。
我想问一下单片机内部的输出速度有什么区别?
如果学过STM32单片机的人都知道GPIO在作为输出的时候有一个输出速度的配置,请问那是干啥的,为什么有不同速度。很多人查资料说是功耗,那么为什么功耗有区别,其实这个我现在也是稀里糊涂的貌似在开发的时候没有遇到这些问题。但是一些对功耗有需求的项目,能不能考虑到这一点呢?不知道楼主的玩是什么样的玩法,是玩个三四天就吃灰吗?
我还想问一下单片机GPIO的上下拉有啥用,为什么要上下拉。我记得我有个同学,他在使用编码器想看看电机转的多快的时候,一致读编码器的数据是有问题的,把我喊过去看,我看了他编码器的型号看了手册后发现输出要上拉电阻,没有上拉电阻的话编码器的输出幅度很小,可以使用示波器查看。结果我哪个同学就在编码器的输出上焊了上拉电阻。我在问题主,上拉电阻多大才行呀???结果我哪个同学还是不能读出编码器的数据又喊我过去看,我通过示波器查看波形输出正常,为啥单片机的触发不对呢?自己看他写的代码,他尽然把单片机的GPIO上拉了高电平。。。。我服了。单片机空闲状态下本来就是高电平了,怎么可能采集到真确的数据呢。我叫他换成下拉试试,结果就好了。你说一个上拉电阻不是数模电的知识吗?
我还想问一下单片机GPIO推挽输出和浮空输出分别用在什么场合?你要不懂会不会导致你写的代码实现不了你想要的功能?
总结:如果你想玩单片机,而且想要玩的还不错那就得学习数模电,甚至你得拥有自动控制,信号与系统,数字信号处理等知识单片机只是一个载体。可以说是一种实现功能的工具,具体如何实现,还得依靠很多其他的知识。


http://picx.zhimg.com/v2-1016350b0671877f0487988a4498c86e_r.jpg?source=1940ef5c

使用Matlab生成的滤波器系数

比如我最近在研究的数字滤波器就用到了大量的数字信号处理的知识,如果你后面想用单片机或者其他的期间如FPGA,DSP等完成信号的调制与解调那你得知道通信原理,高频电路等知识。
现在很多的学科都是要与其他学科联系在一起得了,加油学的越多越发觉自己不会的更多

ggm 发表于 2023-10-4 19:23:15

我们首先来看一下数电模电在单片机中的应用。数电知识在单片机中主要解决各种数字信号的处理、运算,如数制转换、数据运算等。模电知识在单片机中主要解决各种模拟信号的处理问题,如采集光照强度、声音的分贝、温度等模拟信号。而数电、模电的相互转换就靠单片机了。
对于单片机初学者而言,没有数电模电基础,是可以入门的。推荐自学单片机的朋友要有自己的开发板,吃透这个开发板的原理图,那么大多数基本电路就可以通过原理图衍生设计出来,所以搞懂开发板的原理图很重要。下面给大家分析一个案例。
      比如我们做一个项目:使用热敏电阻测量环境温度,并将温度值显示在LED数码管上。热敏电阻感知环境温度,并将温度信号传递给单片机,这是模拟电路模块,在电路板设计时热敏电阻测温电路运用了模电的知识。单片机将模拟型号转换成数字信号,最终转换成温度数据显示在LED数码管上,这里就涉及数电知识。初学者完成这个项目设计是没问题的,它涉及的数、摸电知识较少。
如果你深入学习单片机,要做复杂的项目,那么数电、模电的知识就是必学的了。比如我们画了一个原理图,它包含很多模拟电路模块和数字电路模块,那么在做PCB设计时,就需要考虑数电、模电两模块之间的相互干扰,它们能否共用地线等问题。
又比如我们拿到一个新的元器件,它采集模拟信号传递给单片机,那么在使用这个元器件时我们就需要根据它的时序图编写信号采集代码,在单片机中编写相应的摸、数转换代码,这就涉及较深入的数电模电知识了。
所以我的总结是:单片机初学者没有必要刻意恶补数电模电知识,后期深入学习时按需补充相应知识就行了。最后,需要相关数电、模电资料的可以找我要。

0nwn0 发表于 2023-10-4 19:23:41

这就要取决于你想着么玩了。可以玩得深沉,也可以随便玩玩。要做一两个毕设级的项目,根本就不需要什么深入理解原理。
我做个不恰当的比喻吧,数模原理和单片机使用的关系,就和汽车原理和驾驶汽车的关系差不多。你不是做汽车研发工程师,就无需对汽车底层原理进行过深的理解,只要能掌握好交规及驾驶室里给你的人机操作设备即可。
当然,也有略微不同。嵌入式开发分为软硬件开发,如果是玩,少一个方面都玩不起来。这时候还是需要对电气接口原理有所了解。

xuhu 发表于 2023-10-4 19:24:29

大多数人学不会单片机,或者说还没入门就放弃的原因除了C语言就是数电模电了。
当初我自学时,就是因为看模拟电路教程,看的我怀疑人生,差点放弃继续单片机。
大多数初学者问题基本都一样,不知道学单片机需要什么基础知识。
看到很多文章说要学模拟电路、数字电路、C语言、微机原理、单片机、会看芯片手册等等。
有很多,我做了这么多年开发都没接触过的知识。
这些文章让多少初学者走了弯路,又让多少初学者渴望进入这个行业,又不得不望而却步。
下面来分享下自己的经验,以下内容绝对有非常大的参考价值,因为我的学历不高,也非电子专业,属于自学转行,不知不觉在这个行业做了10年。

一、定位
首先,我们要明白一点,不管做什么,前期的定位是非常重要的。
定位越清晰,你的学习周期越短,见效的时间也越快
做单片机开发涉及的技术太多了,从职业定位来说可以分为:
1. 硬件工程师
2. 单片机软件工程师
1. 硬件工程师
大多数都是做方案应用,初中级难度不大,即便你是工厂修电路板的,稍微学习1-2个月都能成为中级。
这就为什么很多人说硬件比软件的工资要低,就是大多数人都是处在中级。
中级硬件工程师的工作内容是:设计原理图、画PCB、整理物料清单(BOM)、焊接样品、调试硬件功能、生产跟进。
而高级硬件工程师的工资待遇就不一样了,分分钟秒杀单片机软件开发工程师,但是要达到那个程度比较难,因为只能靠时间、项目、经验累积,是不可能靠看书或者看视频教程达到的。
2. 单片机软件工程师
所以,我一直对我的学员说,我们的定位是软件。
因为软件相对成长速度比硬件快(工资),而且做软件肯定会接触到硬件。
比如说功能调不出来的时候,我们首先需要去排查硬件有没问题,然后再排查软件。
这个过程,其实就是对你硬件的经验积累,当你做的产品多了,解决的问题多了,自然而然就达到中级硬件的水平了。
然后你只需要学一下怎么画原理图,怎么画元器件封装,怎么画PCB,其实你就已经具备基本的全栈能力了,能独立完成一些产品从硬件到软件设计的了。
二、需要学习的知识
那既然是定位软件,那重心肯定是在编程和单片机上面,然后电路这块你只需要知道是什么信号,什么协议输入到单片机、又是输出什么信号、什么协议控制外围电路的就可以了。
那是不是就非常简单了?
常用的无非就是电平控制、单口通讯、IIC、SPI、串口、ADC、FSMC之类的。
至于电路具体是怎么实现的,其实我们根本不需要关心,我们只需要关心最终输入和输出是什么信号协议就好了。
当然,你还是需要一点电路基础的,我们针对性地给学员录制了一些必备的基础电路知识:

http://picx.zhimg.com/v2-637958fa216956a79ffe15265ddc6971_r.jpg?source=1940ef5c
基本不需要接触到模拟电路那些复杂的公式计算,就是简单地欧姆定律和二极管、三极管等元器件常规作用。
最后总结,现在互联网资料教程实在是泛滥了,新手往往很难从中去筛选合哪些要学的,哪些讲的比较好的。
所以我们前期一定要先有定位,然后根据定位去找需要学习的知识,把这些知识记录在表格里制定一个详细的学习计划。
最后把计划拆分成每天需要学习哪些内容,花费多长时间。

http://picx.zhimg.com/v2-f419b236210097cdba0c7164838ec7cf_r.jpg?source=1940ef5c
这也是我自己这几年学习和工作的方式,几天半个月看不出效果,当你坚持2-3个月甚至半年1年,你绝对会为你当初的坚持而感到荣幸。
这个道理很多人都懂,但是真正能执行到位的有多少?
最后彩蛋时间,最近有同学跟我要单片机的资料,我特意花一个月时间,总结了我10年产品研发经验,收集了这份史上最良心、最硬核、最实用的「单片机入门到高级教程+工具包+22个热门项目」,无偿分享给大家。


http://pica.zhimg.com/v2-657596598fee18328e8945c8e78ef474_r.jpg?source=1940ef5c

资料包几乎覆盖了C语言、单片机、模电数电、原理图和PCB设计、单片机高级编程等等,非常适合初学者入门和进阶。

除此以外,再含泪分享我压箱底的22个热门开源项目,包含源码+原理图+PCB+说明文档,让你迅速进阶成高手!


http://pic1.zhimg.com/v2-e1e73d5e64e66ddaddf640db1d199d79_r.jpg?source=1940ef5c

据说有小伙伴靠这份顺利入职BAT,所以一定要保存起来好好学习!

后期我也会组建一些技术交流群,让大家能认识更多的大佬,有个好的圈子,你对行业的认知将在最前沿。

大家想要上面「单片机入门到高级教程工具包 + 进入单片机交流群」,可以点击下方⬇️卡片看文章开头领取。

无际单片机:单片机入门到高级开挂学习路径(附教程+工具)

或者可以找「无际单片机」,全网同名的。

更多无际原创的个人成长经历、行业经验、技术干货等等,请点击下面链接⬇️
电子工程师的能力有多可怕?为什么我学了几天 STM32 感觉一脸茫然?谁能教教我怎么学单片机,先学什么,怎么入门?Stm32学了好久了,感觉独立做项目还是有力不从心的感觉?无际单片机:单片机怎么实现模块化编程?思维+实例+系统教程(实用程度令人发指)无际单片机:c语言回调函数的使用及实际作用详解无际单片机:手把手教你c语言队列实现代码,通俗易懂超详细!无际单片机:新手学习单片机最常见的六大误区,你进坑了吗?


http://picx.zhimg.com/v2-634275ef3ed3ba3f64535603d065a0c3_r.jpg?source=1940ef5c
页: [1]
查看完整版本: 没学数模电可以玩单片机吗?