硬件DIY一直是技术宅的另一个标杆,若是说真正可以将软件和硬件玩到一块的话,那么就说明他已经宅到必定的境界了!!本人目前写JAVA,Python,主要是在WEB应用开发方面,不过最近有点乏了,先把这些放一边,玩玩之前的老本行,硬件驱动编写,用C语言直接操做电路板的芯片,貌似在OSC上还历来没有过吧!! 闲言碎语不要讲,讲讲今天要玩的东西,理论上来讲,玩硬件DIY首先要设计意见的电路原理图,而后本身用三氯化贴和覆铜板来制做印刷电路板,苦于本身已经离开电子设计行业有两年多了,好多材料很差买了,只能从网上搞个现成的PCB版玩玩。不过通常的模拟电子电路么什么玩的,为何,由于么法写程序,就装配电气元件不符合个人兴趣方向,今天咱们来个高智商的东西。单片机开发版。这种很便宜 淘宝网上一百多一个,随便都能买到。为了避免去话电路板,我就花钱偷了个懒了!!今天玩什么?今天主要玩玩LED小灯泡,这个最好玩,也最容易玩,并且还可以玩出不少花样出来。 先说说咱们的这个原理: 第一,电源的供电方式,咱们使用5V的USB供电,这个最容易找到,也最安全,当前有些不怕死的回本身作电源,不过这个不建议去作,由于“不作就不会死”。曾经被220V的电电过,有些阴影。 第二,电气原理图设计,其实点亮小LED灯不算什么难事,高中的物理只要没有睡觉的,基本都能搞得出来。如今把这个电路过程当中的几个难点说说: 第一,LED正常工做的状况下,两端压降是1.5V,正常工做的电流都是15-25mA不等,固然,根据欧姆定义来计算的话,假如我在这个位置加上5V的电压,LED铁铁的要被烧坏,因此,咱们须要电阻的支持,须要多大的电阻?R=U/I,R=(5-1.5)/0.025,大概最小也得这么个数吧,不过这个都是个概数。只要不超过最大的LED工做电流,基本都能算OK。 第二,点亮LED的原理,咱们假设LED正常工做,个人芯片要给LED的一端输出低电平,也就是说,LED的正极接5V电压,LED负极由个人芯片输出低电平,这样LED正向偏执,导通条件成立,因此就能亮了。如今假设我有8个LED灯,假设硬件都是OK的,只要程序OK,那么咱们的LED灯就可以正常启动。先将条件说明以下: P1.0-P1.7分别是从低到高的编号 对应D0-D7八个LED灯。P1.0输入低电平(0)为D0灯亮,那么对应等的亮灭就可以得出来了。
管脚排列说明:(左→右 P1.7-P1.6-P.15-....-P1.0)编程
D0对应的输入编码是:0xfe(1111 1110)D0 亮 D1对应的输入编码是:0xfd(1111 1101)D1 亮 D2对应的输入编码是:0xfb(1111 1011)D2 亮 D3对应的输入编码是:0xf7(1111 0111)D3 亮 D4对应的输入编码是:0xef(1110 1111)D4 亮 D5对应的输入编码是:0xdf(1101 1111)D5 亮 D6对应的输入编码是:0xbf(1011 1111)D6 亮 D7对应的输入编码是:0x7f(0111 1111)D7 亮
反正以上的规律就是,只要某一个上等于0.则对应的LED灯就亮了.因此点灯的程序就是这样的:安全
<!-- lang: cpp --> #include <reg52.h> void main(void){ P1 = 0xFE;//D0灯亮 while(1){ }
}编辑器
上面这是最简单的一个灯亮。想要其余灯亮 对应的更改输出编码就对了。下面附赠一个演示程序。可让灯闪起来。编码
<!-- lang: cpp --> void delay(unsigned int ms){ while(ms--);
}设计
这是个简单的延时程序,不过你要精确的话,须要根据晶振的频率和指令周期等参数综合使用,先无论咋样,闪起来再说。LED灯点亮的原理就是这样,有兴趣能够本身使用Protel99画个PCB版子玩玩,编程IDE用Keil uVision2。code
OSC的编辑器又开始扯淡了,版式死都调很差!!!开发