開天闢地第一章

硬件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的編輯器又開始扯淡了,版式死都調很差!!!開發

相關文章
相關標籤/搜索