
软件工程师学硬件
根据软件工程师的知识结构,和软件工程师以及硬件入门者一起分享硬件知识。
我们都是工程师
计算机软硬件从业者
展开
-
【软件工程师学硬件】之 开关电源(4) —— 初识Viper12a
Viper12a是一个很不错的电源芯片,至少我是这样认为的,当然了,肯定有很多其他的很好的电源芯片。我之所以以Viper12a为例,一方面是其电路简单,便于说明问题;其次它用得比较广,什么电磁炉、影碟机上面电源芯片大部分都是它;其三价格也比较便宜,用它没什么思想负担。好了,闲话不说了。Viper12a与标准的电源芯片相比,有几点不一样:1、它集成了大功率开关管,所以不用外接开关管了,省了一笔钱...原创 2019-06-18 08:51:01 · 2009 阅读 · 0 评论 -
【软件工程师学硬件】之 开关电源(3)—— 单管降压适配器
自己用单管做一个开关电源,电路简单,很有意思。上次我们使用单管做一个手电筒的升压电路,生活中用得比较多的还是降压电路,即将220v交流降压整流成5v或者12v的直流电,那么如何做到呢?实际上电路和上节电路差不多,只不过是将高频变压器的初级匝数改成200左右,次级改成8、9圈,这样,就可以达到我们的要求了。这里要注意如下几点:1、开关管不能用普通的三极管,一般要使用MJE1300x系列的;2、...原创 2019-06-18 08:50:06 · 412 阅读 · 0 评论 -
【软件工程师学硬件】之 开关电源(2)—— 最简单的开关电源
软件工程师都喜欢“Hello World!”,硬件工程师喜欢用一个led,看看亮不亮。不管怎么样的方式,都反映了我们人类的思维逻辑从简单到复杂,如果一上来就整一个非常复杂的电路,是很容易让人发懵的。开关电源是一个很常见的电路,原理大家都明白,但是真要是设计出一个具体的电路,或者分析一个具体的电路,还真的不好说。尤其对于我们软件工程师来说,他们实际上并不熟悉复杂的电路,也没有电路分析基础,因此,我...原创 2019-06-17 11:33:18 · 1094 阅读 · 0 评论 -
【软件工程师学硬件】 之 开关电源(1)
非常感谢大家一如既往的关注。原打算将这个系列转移到头条文章中,但是苦于一个身份证只能认证一个头条号,而我有两个头条号,所以这个头条号无法实名认证,也就不能发表文章,感觉头条这个规则不是很人性。闲话少说,继续我们今天的话题。年龄稍微大一点的人可能都还记得,以前的手机充电器或者其他什么电器的适配器的重要特点就是特别重,而且功率越大越重,为什么那么重?原因是那里面有一个变压器,而且这个变压器是硅钢片...原创 2019-06-17 11:31:55 · 576 阅读 · 0 评论 -
【软件工程师学硬件】之 振荡器(2)
振荡器的工作原理很简单,大家在初中物理都学过单摆,就是一根悬挂着的绳子系着一个铁球,然后推一下铁球,铁球就摆动起来,但是摆动不了几下,就会渐渐停下来,什么原因?空气的阻力将能量渐渐消耗尽了,球就停止摆动了。如果想让小球一直不停的摆动,就得不停地推动小球。这样小球就不停地、稳定地摆动了。这个就是振荡,单片机里的振荡器实际上也和这个原理差不多,这个不断推动小球的动作,我们就把它看做是反馈,振荡器可以...原创 2019-06-17 11:30:54 · 744 阅读 · 0 评论 -
【软件工程师学硬件】之 振荡器(1)
软件工程师学习硬件,由于硬件本身固有的特性,可能需要软件工程师调整一下习惯,比如说,软件工程师以前的习惯是喜欢动脑,不太愿意动手,动手也就是敲敲代码,实际上还等于动脑。但是硬件不太一样,硬件是要动脑,更要动手。学习硬件如果不动手的话,绝大多数的结果很可能就是半途而废。硬件是由一个个元件构成的,这些元件的基本特性需要我们去了解,有人说了,我到用的时候查查手册不就行了吗?不一样。人之所以需要记忆,或...原创 2019-06-14 09:07:28 · 464 阅读 · 0 评论 -
【软件工程师学硬件】之 时序2
上一节我们用了一个简单的游戏来描述时序,但是单片机的时序比这个复杂多了。为了进一步描述时序,我们结合IIC协议来描述一下。IIC通信是单片机里非常普遍的通信协议,很多硬件之间的通信都遵从这个协议,至于协议的起源什么的,我这里不做详细介绍了,大家可以参考一下网上的一些文章。下面直接说IIC协议的通信过程。IIC协议里有两个重要的概念,就是SCL和SDA,SCL是啥?不要被英文给蒙了,实际上就是...原创 2019-06-14 09:05:10 · 437 阅读 · 0 评论 -
【软件工程师学硬件】之 时序1
软件工程师对用代码表现业务已经是很习惯了,所以经常见到一个软件的代码动辄成千上万行已经不是什么奇怪的事情。但是他们不太习惯硬件的规矩多,这个协议那个协议,另外就是但凡做一个操作之前需要一堆的初始化,这是很头疼的事情,而且还有令他们非常不舒服的就是动辄就要查手册,所以软件工程师看到硬件工程师们手册不离口甚至还打印一份放在身边就非常不解。这就是所谓的“隔行如隔山”。所以,很多人去硬件培训班需要很长时...原创 2019-06-14 09:03:54 · 612 阅读 · 0 评论 -
【软件工程师学硬件】之 让LED闪烁起来
很多人尤其是刚入门的硬件工程师比较纠结选择什么mcu芯片,比如做个闪烁的LED,是用at89c51还是pic16f887,甚至有人想到要用stm32或者esp8266等等。实际上完全没有那个必要,如果仅仅是兴趣或者是学习知识,玩哪种mcu都一样,就和你学习java和c#一样,都是语言,你不能说java比c#更牛x,java能做到的,c#也差不多能够做到,那硬件也是这样,不必要纠结这个,如果纠结这个...原创 2019-06-13 09:33:33 · 675 阅读 · 0 评论 -
【软件工程师学硬件】之 放大电路
放大电路是最基本的、非常重要电路之一,为什么说它基本呢?它基本上无处不在,无论是集成芯片还是分立式电路,放大电路也是随处可见。说它重要,那就是如果没有放大电路,电子电路基本上寸步难行。放大电路从开始到现在也已经经历了电子管时代、晶体管和集成电路三个阶段。我们小的时候还看见过很大一个玻璃管的放大器,那就是电子管,现在已经没有了;分立元件的放大器现在还能见到,但是也越来越少了;越来越多的是集成芯片放...原创 2019-06-13 09:27:55 · 980 阅读 · 0 评论 -
【软件工程师学硬件】之 进制转换
为什么要说一下这个进制转换,原因是软件工程师基本上都和十进制打交道的比较多,对二进制了解得很少,但是,在硬件程序中,很多涉及到位运算以及逻辑分析,如果不清楚二进制,可能会比较茫然。但是这里尽量避免掉进理论中,那样,我们的工程师们会更茫然。为了说明二进制,我们对比十进制来描述,可能就比较好理解一些。比如说十进制的1,用4位二进制来表示,就是0001,用8位二进制就是0000 0001,用16位二进...原创 2019-06-13 09:26:38 · 2194 阅读 · 0 评论 -
【软件工程师学硬件】之 点亮LED(at89c51)
几乎所有的单片机开发教程的第一个程序都千篇一律的是点亮一个LED。软件工程师可能不太理解为什么要这么做。但是软件工程师很熟悉另一个情形,就是所有软件语言教程的第一个程序都是打印“Hello!World!”,呵呵,实际上,你就将这个“Hello!World!”看作是点亮LED。因为单片机的最小系统为了方便学习,并没有装上显示模块,所以并不是说不可以在屏幕上打印一个字符。对于一个硬件工程师来说,显示方...原创 2019-06-13 09:25:32 · 745 阅读 · 0 评论 -
【软件工程师学硬件】之 At89c51
89c51,对于硬件工程师来说,已经是熟得不能再熟了,甚至很多资深硬件工程师已经非常讨厌这种芯片了。事实不然,我们每一个学硬件的从接触硬件的第一天开始,这个名字就深深地烙在心底,虽然他们后来大部分都转向ARM或者其他专业的芯片开发,但是,我不能不说正是89c51将我们带上硬件之路。关于at89c51的资料很多,我就不啰嗦了,这里只挑重点说,毕竟我不需要对大家的考试负责,呵呵呵。1、at89c5...原创 2019-06-13 09:24:18 · 2220 阅读 · 0 评论 -
【软件工程师学硬件】之 变压器
变压器在初中物理中就学过,所以我们的软件工程师基本上都知道,但是如果要学硬件的话,我们还需要了解多一些。中学里学到的那个变压器基本上属于低频变压器,这个变压器的构造大家都知道,由两个山字形磁芯或铁芯加上线圈骨架构成。线圈骨架上绕两个或两个以上线圈。决定变压器工作在低频还是高频与这个磁芯或铁芯有关系。比如我们看到的市电的变压器,就是高压线从上面穿过去的那个,体积特别大,那个工作频率就是交流电的频率...原创 2019-06-12 10:53:57 · 569 阅读 · 0 评论 -
【软件工程师学硬件】之 汇编
很多软件工程师对硬件语言有一个误解,也可能是听硬件大哥哥们说的。那就是学硬件必须要会汇编语言,汇编?那是个搞死人的语言,天书般的。实际上不然,今天我帮大家澄清一下吧。首先,硬件语言并非只有汇编,可以C语言,也可以是python,甚至其它语言,如现在比较流行的arduino。但是不管什么语言,都可以转换成汇编语言,并最终编译成机器语言。其次,汇编语言虽然运行效率高,但并非随便一段汇编的效率都很高...原创 2019-06-12 10:50:11 · 397 阅读 · 0 评论 -
【软件工程师学硬件】之 ADC
单片机只接受数字信号,很多书中都这么说,这句话没错,但是没说透,让我们的软件工程师有点一知半解。实际上,这个数字信号就是上次我们提到的方波信号或者其它能表示0和1的波形。但是我们实际生活中可很少有这么规则的波形,温度变化的曲线可是不规则的,比如北京夏季某天最高温度38度,最低温度25度,那全天温度会在最高和最低温度之间波动。但是这个38度和25度单片机不认识啊,怎么为?有办法,就是把这个数字变成...原创 2019-06-12 09:31:03 · 1527 阅读 · 0 评论 -
【软件工程师学硬件】之 继电器
大多数软件工程师都知道继电器,因为中学物理书里就提到过。实际上继电器就类似与我们之前所说的三极管,有两个回路,一个回路是小电流、低电压,一个回路是大电流、高电压。当三极管在开关状态时,就和继电器的作用差不多了。那继电器正是这样的结构,小电流回路接的是直流电,大电流回路可以直接接市电,也就是220伏的交流电。继电器有3.3v、5v、12v、24v等等的电压规格,这就是说这个继电器的工作电压不能低于...原创 2019-06-12 09:29:10 · 4014 阅读 · 0 评论 -
【软件工程师学硬件】之 通信
提到通信,软件工程师并不陌生,但他们更多的是指网络通信,尤其是指socket。你要是和软件工程师说什么串口、SPI、I2C、Modbus、CAN等等什么的,他们也会莫名其妙。俗话说,“隔行如隔山”,就是这么个道理。今天我们不说socket,只说硬件中的几个基本的通信方式。硬件虽然属于底层,但是通信也是少不了的,比如说,单片机要和电脑交换数据、单片机之间交换数据、单片机和传感器之间的数据交换以及...原创 2019-06-12 09:27:56 · 1283 阅读 · 0 评论 -
【软件工程师学硬件】之 PWM
PWM(Pulse Width Modulation),软件工程师最头疼的就是莫名其妙的硬件名词,怪怪的不好理解,还难记。实际上,这个PWM并不陌生,我们日常生活中如果没有它,估计好多事情做不了。我们也不用去记它的来历,只知道干什么用就成。生活中我们经常需要调节电灯的亮度、控制电动机的转速和方向,还有就是我们人手一个的充电器等等,可以说PWM无处不在。那这个PWM到底是个什么?PWM实际上就一种...原创 2019-06-12 09:26:06 · 2076 阅读 · 0 评论 -
【软件工程师学硬件】之 单片机
很多软件工程师从来没听说过单片机,你要是问他风扇为什么自己摇头转、洗衣机为什么能够自动搓洗、冰箱为什么能够自己控制温度?他会说因为里面有芯片!是的,他说的也对。因为里面有芯片。但是要纠正的是,单片机是芯片,芯片不一定是单片机。顾名思义,单片机就是一个小芯片,这个小芯片和电脑cpu一样,和外围一起,完成一系列的功能。说起单片机,老硬件会如数家珍一样,娓娓道来,什么at89c51、atmega12...原创 2019-06-12 09:23:24 · 1224 阅读 · 0 评论 -
【软件工程师学硬件】之 proteus
上次提到这个软件,一个仿真的软件。要说老外在制造方面还是比较牛,这点不能不佩服。为什么说这个软件比较牛?因为它可以在你没有开发板的情况,直接在proteus软件环境中画出一个电路图,并且这个电路可以运行,可以亮灯、发出声音,里面还有电动机可以转动,而且还有示波器、电流表、电压表、逻辑分析仪,一切都和真实的环境一样。这不禁让我想起“画饼充饥”这个成语了。它这个软件是真能画饼,而且真能充饥。你可以在...原创 2019-06-11 10:08:10 · 946 阅读 · 0 评论 -
【软件工程师学硬件】之 电容
很多工程师都阅读了这个系列,并且很多人点赞了,非常感谢你们。不过也有很多人都在纳闷,怎么没有弄个led闪闪,或者来段硬件代码,立马看看效果。我的建议是,写段代码,对于软件工程师来说是家常便饭,不是什么稀奇的事情了,但是对于硬件有一个初步的认识,还是很重要的,毕竟我们之前没有接触过硬件,所以还是先认识一些基本的元件,这样的话,就可以看懂电路图,做一些简单的电路,那时再说程序控制不迟。接着说电容,...原创 2019-06-11 10:07:09 · 374 阅读 · 0 评论 -
【软件工程师学硬件】之 认识三极管
三极管虽然只比二极管多一个脚,功能却差得离谱,我们软件工程师兄弟千万不能望文生义。以前在中学里学到的电子元件基本上都是两只脚,现在来个三只脚,不太适应。实际上,电子多只脚的情况很常见,尤其是以后我们说到的集成芯片,100多只脚也很常见,所以,没有必要感到陌生。就好比我们小时候没什么见识,觉得房子就应该只有一扇大门,长大后去镇上有钱人家玩,发现人家有两扇大门,再后来去省城当官的人家玩,发现楼上楼下...原创 2019-06-11 10:06:21 · 550 阅读 · 0 评论 -
【软件工程师学硬件】之 认识二极管
对于大多数软件工程师来说,你和他说电阻、电容、电感,倒还明白,但是你要是向他提及二极管,他可能就不知道了,因为貌似老师没教过。二极管是硬件电路中的基本元件,很多地方都用到它,那么要它干嘛呢?首先,它能整流。我们用的电源无非就是直流电和交流电,我们很多的电子元件没法直接用交流电,因为它方向老变啊,幅度忽大忽小,谁也受不了。于是需要将交流电变成直流电,就是电压稳定,电流方向不变的那种,完成这个任务...原创 2019-06-11 10:05:28 · 663 阅读 · 0 评论 -
【软件工程师学硬件】之 仿真
大多数软件工程师对仿真没有概念,因为软件里没有仿真的说法,但是软件开发里原型的说法,这个原型就有些类似于仿真。仿真,顾名思义,就是乱真,和真的差不多。这只是个说法,要是假的都能成为真的,就不需要真的了。仿真就是用硬件或者软件对硬件产品进行模拟以完成设计和开发过程。我们软件开发中的原型有这方面的作用,一般软件开发中,为了和客户方交流业务,或者便于项目组内部交流,都会先做一个原型或者demo程序,这...原创 2019-06-11 10:04:24 · 1186 阅读 · 0 评论 -
【软件工程师学硬件】之 半路出家如何入门硬件
很多人喜欢电子,但是苦于硬件太复杂,千头万绪,无从下手。实际上还是贾宝玉的话比较经典,“任你弱水三千,我只取一瓢饮”,意思就是任凭世上小姐姐再多,我只要你一个。学硬件也是这样,什么都想学,肯定是什么都学不会。硬件虽然很复杂,但也是有分类的,瞄准一个目标去努力,这点对于半道出家的兄弟,是比较适合的,我们毕竟不能和电子科班四五年的学生相比,他们理论基础非常扎实,在设计上面非常有优势,但是在实际动手能力...原创 2019-06-11 10:03:31 · 2310 阅读 · 0 评论 -
【软件工程师学硬件】之 认识电阻
电阻?软件工程师还是知道的,毕竟初中物理也学过,就是那种滑动变阻器。不过,一般的软件工程师对电阻的印象也就到此为止。滑动变阻器,那是一个古老的、并且深深刻在我们每个人脑海深处的电子器件,很多人对电子的最初的兴趣就是从它开始的。滑过来,灯泡逐渐变亮;滑过去,灯泡又逐渐变暗。这也就是老师所说的可变电阻。在我们实际的硬件生活中,可变电阻也有很多,但是没有那么大,那么大的个头也没办法搁到电路板上啊。能...原创 2019-06-11 10:02:41 · 510 阅读 · 0 评论 -
【软件工程师学硬件】之 EEPROM、FLASH
以前说过,硬件工程师比较精打细算,原因是单片机资源紧张,稍有不慎,空间就没了,程序就跑不了了。软件工程师可都是习惯了大内存、大硬盘的,所以入手硬件,也得学会精打细算。说到空间存储,软件工程师最熟悉的莫过于数据库了,一条sql解决了增加、删除、修改、查询的问题,真是方便啊。硬件工程师很辛苦,他们也有存储,但不是数据库,而是一个小芯片,一般就是EEPROM和FLASH,这两个有些区别,不过现在用FL...原创 2019-06-11 10:01:40 · 512 阅读 · 0 评论 -
【软件工程师学硬件】之 面包板
面包板就是一个塑料板,上面有很多孔,用来插电子元件的。硬件工程师一般都会有那么几块,主要是用来测试硬件小模块的,可见,硬件和软件差不多,软件工程师做一个大软件的时候,也可能会将其中某个单元分离出来进行单独调试和测试,确认没有问题了,再合进大系统中。硬件也差不多。为什么不直接自己做一个板子呢?一句话,代价大,不方便调试。当然也有的硬件工程师会自己做个小板子,但是留一些插针出来,方便外接一些元件以便...原创 2019-06-11 09:59:48 · 2926 阅读 · 0 评论 -
【软件工程师学硬件】之 开发板
硬件工程师口中总是离不掉那么几个词,其中开发板是频率比较高的。实际上这个开发板就相当于软件中demo程序,一般做软件项目的时候,软件工程师总是喜欢在网上东找西找,找个类似的项目源代码,down下来研究,然后以它为基础扩充功能。硬件也是这样,但凡开始硬件项目的时候,也是先找个相应的开发板,这个开发板不能算是正式的项目产品,工程师只能在上面测试程序和扩充外围硬件,然后框架确定之后,再完善电路图,找电路...原创 2019-06-11 09:40:14 · 991 阅读 · 0 评论 -
【软件工程师学硬件】之 接口
提到接口,软件工程师和硬件工程师的答案都差不多,接口即协议,但是两人却无法沟通。软件工程师认为接口是顶层设计,是程序构架;而硬件工程师的接口是两个硬件之间的通信。实际上,如果抽象地定义接口,两人就统一了,接口就是两个子系统或者模块之间的通信协议,而接口是设计也是将一个系统抽象成很多的接口而展现给使用者和开发者,即使用者和开发者与系统之间的“协议”。相比较软件工程师定义的接口,硬件工程师对接口的理解...原创 2019-06-10 13:42:31 · 1356 阅读 · 0 评论 -
【软件工程师学硬件】之 存储
软件工程师和硬件工程师都接触到存储,但是他们对待存储的态度大不相同,硬件工程师小心翼翼,而软件工程师则大大咧咧(大多数);硬件工程师很抠门,软件工程师则很大手。硬件工程师在分配变量的时候,总是要仔细斟酌,生怕浪费了空间,而软件工程师则只考虑算法实现,至于需要多少变量,变量占用了多少空间,则很少有人去考虑(一般是随手就是一个变量)。尤其是java和c#时代,更是如此。但是,如果你是一个软件工程师,并...原创 2019-06-10 13:41:18 · 275 阅读 · 0 评论 -
【软件工程师学硬件】之 时钟
软件工程师写程序不会去考虑时钟,除非是涉及到性能要求时,才会去看一看。硬件工程师则不然,他们对时间要求很苛刻,单片机的时钟频率,是他们关心的一个重要指标,4M、8M、12M、48M、72M、200M、400M等等,时钟频率越高,意味着单片机系统在单位时间里处理数据的速度越快,但是,硬件的价格也会越高,所以,也需要根据实际的需求来定,比如说,仅仅做一个定时器,就完全没有必要弄个400M频率的单片机了...原创 2019-06-10 13:43:37 · 591 阅读 · 0 评论 -
【软件工程师学硬件】之 定时器
软件工程师抵死也无法理解硬件的定时器,尽管他们也常用到定时功能,即使是定时功能,单位也不一样,软件工程师定时单位一般都是秒级以上,而硬件工程师的定时器大多数在毫秒级,甚至到微秒级,这是软件工程师难以理解的。至于说到定时器,却不是我们风扇上面的那个定时装置,尽管它和单片机中的定时器也有关系。一般的单片机都会有定时器,有的还有十来个,但是单片机中的定时器是一个宝贵的资源,可不能像我们软件程序中随手来一...原创 2019-06-10 13:44:43 · 542 阅读 · 0 评论 -
【软件工程师学硬件】之 PCB
PCB?软件工程师肯定不知道。但是你说电路板见过吗?他还是见过的。那PCB就是电路板,说这个硬件工程师不同意了,说这两个可不是一个意思,是的,你说其他的意思人家不明白,说到电路板就明白了。既然是由兴趣而学习,我们就不去纠缠复杂的概念,那样反而钻进死胡同出不来。实际上不仅仅是PCB,其他很多的概念都是如此,100个人心里有100个林黛玉未尝不是一件好事,最关键的是他要认识林黛玉。接着说PCB,为什...原创 2019-06-10 13:46:40 · 955 阅读 · 0 评论 -
【软件工程师学硬件】之 二进制、十六进制
想让软件工程师去接受二进制,算是勉勉强强,如果让他去接受十六进制,可能就有些为难他了。因为大部分软件工程师平时根本就不接触二进制和十六进制,他们唯一的进制就是十进制。但是,硬件是底层的玩意,偏偏只认识二进制,就是说,硬件程序编译之后全是二进制的,不然单片机不认识。即使硬件编程也可以用c语言,也可以使用十进制,但是硬件资源配置大多数都是以位的形式存在的,软件工程师很难理解这种位存储的方式,实际上软...原创 2019-06-10 13:47:41 · 602 阅读 · 1 评论 -
【软件工程师学硬件】之 最小系统
相信很多软件工程师和硬件工程师交谈时,常常听到最小系统。这是个新鲜词,只听说系统,哪来的最小系统?实际上,这也不是硬件工程师的黑话,而是事实使然。因为一个独立的单片机芯片即使你给它通上电,它也不一定工作,为啥?因为它缺东西,缺啥?缺得多了,如果它没有内部晶振的话,它可能需要一个外部晶振;它可能还需要一个电源电路,因为一般的单片机的工作电压基本上都是5伏或者3.3伏,别问为什么,就是这么规定的,这...原创 2019-06-10 13:48:41 · 594 阅读 · 0 评论 -
【软件工程师学硬件】之 示波器
工作几年之后,一般的硬件工程师家里都会弄得像个实验室似的,什么示波器、频率计、开发板什么的,如果按价值和重要性来分,示波器无疑是首屈一指,示波器是啥?软件工程师瞅着硬件工程师的工位就纳闷,瓶瓶罐罐真多,其实都是必备的工具。为什么说我们是工匠,工匠自然离不开工具了。再说示波器,因为单片机靠什么来指挥其他的硬件工作?指令嘛。那指令是啥?指令就是信号。那信号又是啥?信号就是我们之前说的波,其中方波是最...原创 2019-06-10 13:58:50 · 815 阅读 · 0 评论