第二課學習

      開始學習第二課,課程是點亮LED燈,呵呵,就是如何通過程序如何控制LED燈。不過開始還是要學習一下單片機的一些基礎知識,這個無論如何要記住的,我記性不太好,所以也把它記下來。

      單片機內部資源的三大指標:

      FLASH(程序存儲空間<ROM>)

      RAM(內存)

      SFR(特殊功能寄存器)

      我個人的理解,如果將一塊單片機比做電腦的話,FLASH就相當於電腦的硬盤,RAM就相當於電腦的內存。而我們的電腦是由若干部件組成的,而一塊單片機就把電腦的主要部件都包括了。SFR目前還不知道是什麼意思,根據小宋老師的說法,在後面再繼續學習,這裏先挖個坑,後面再來補上。

      單片機最小系統,即單片機能夠獨立運行的系統的組成,包含三個要素:

      電源電路(提供能量)

      復位電路(相當於用來重啓這個最小系統的)

      晶振電路(類似於人的心臟,提供執行頻率,和我們平時所瞭解的比如CPU的頻率是多少類似)。

      單片機的電源一般是5V,要連到VCC這個針腳,VCC表示爲高電平,即電源提供處,GND則表示接地,也可以表示爲低電平,比如一節5V的電池,則VCC接電池的正極,GND則接電池的負極即可。從原理圖上看的話,單片機的第40引腳用於接高電平,20腳接低電平,當然針對不同的單片機,其引腳的定義是不一樣的,使用時注意VCC與GND的標識就行了。這個電路主要用於提供能量的,即電源電路。這個電源電路見下圖:


      至於電源電路的C21表示什麼意思,以及有什麼作用,這裏先埋個坑,後面再來填。

      晶振電路如下:


      其連接的是單片機的第18,19兩個引腳,這個電路怎麼連,目前不得知,後面再來看。從上面的圖上看得出來,其工作頻率是11.0592MHZ,從這個數據上來看,即表示其一秒鐘能夠執行11.0592M的指令,這個估計與我們平常所見的CPU的頻率一樣的道理。

      復位電路如下:


      其電路連接目前不得知爲什麼這樣連,不過有一點需要明確,一是下面的紅色的那個部分表示接地,而右邊的RST這個標識表示連接至單片機的RST對應的連接線上,從單片機的電路圖上看的話,其實際接的是第9引腳。從單片機的標識上來看的話,其標識爲RST,也表現其表示的是復位引腳。

      從上面的介紹可以看出來,所謂的最小系統是指除單片機以外的且必須包含的與單片機相連的外圍電路。

      另外,恐怕需要將一些簡寫記住,比如在單片機上標識的VCC表示高電平,GND表示低電平,或者接地,RST表示復位。同時從RST的電路還需要明白一個東西,那就是一旦如果電路在某個地方劃不下時,可以考慮對引腳命名,然後在其他地方畫電路,並按同樣的命名方式標識即可,比如這裏的復位電路就是一例。

      如何通過編程的方式控制LED燈的亮滅?

      在開發板原理圖中,USB接口電路里面有個LED的電路圖,從該圖上我們需要明白如下的一些知識點,首先是USB接口電路這塊目前無法得知應該如何去連接,以及實際的器件應該怎麼識別和判定引腳,這個恐怕要留到後面再看了。最小的LED電路中在本處接了一個R34表示第34個電阻,其值爲1K,根據小宋老師的講解,這裏的值是有一個計算過程的,需要考慮LED的工作電壓和電流,比如此處的工作電壓是1.6V-2.4V之間,工作電流是2ma-20mA之間(mA爲毫安的意思),通過計算能夠得出需要的電阻值範圍是150毆至1.5K毆之間,此處用1K的電阻,自然是滿足的,這裏面的這個R34電阻起的作用自然是保護LED了,因爲加在整個LED上的電壓是5V,而LED不能夠承受這麼大的電壓,自然用一個電阻來分壓了,這裏的電阻通過自身的特性,再根據額定的電流,然後就可以減少LED的壓力,所以要記住此處的電阻叫限流電阻,即其可以限制電流的大小,其越大,則其渡過的電流就越小,因爲整個電壓是一定的。而我們用單片機來控制LED的亮滅,從剛纔的USB電路圖來看是無法控制的,因爲其外接的高電平和低電平都固定了的,但我們可以控制與單片機相連的LED燈,如果我們將LED的正電平接到VCC上,通過控制單片機的引腳的高低電平,就可以使LED進行亮滅的控制了。當然如果我們將LED的負極接到GND上,通過單片機引腳進行高低電平的控制,也是可以實現的,道理都一樣。同時在這裏就需要明白另外一個道理了,就是單片機的IO口,我們的單片機有32個IO口,也就是說一共可以有32個高低電平的輸入輸出(目前是這麼理解的),其輸入輸出只能有兩個值就是高電平和低電平,如果我們通過程序將某個口設置爲1則表示其爲高電平,如果其爲0則表示爲低電平。

      程序代碼的一些理解。

      SFR到底是什麼?前面提及到了,但無法理解,現在先解釋一下我個人的理解,從代碼的角度上來說,其就是單片機C語言的關鍵字,表示其定義的變量爲SFR類型的變量,爲什麼說是單片機C語言,是因爲其和標準和C語言還是有區別的,因爲標準C語言是沒有SFR這樣的關鍵字的。這個SFR在被編譯後,就會指向單片機內部的一個特殊的器件,就是寄存器這個地方,目前我對這個不瞭解,只有先略過。通過查看一器件手機能夠找到對對應的寄存器的一些變量定義和描述。從其定義上來看,其主要是通過16進制來定義一些單片機的IO口的位置。#include指令的作用是包含一些常用的變量的集合,因爲在實際工作中,一些通用的變量是可以被大家共同使用的,所以可以單獨寫成一個文件供大家使用,這個涉及到C語言的一些語法,有時間可以細細看看。

      關鍵字sbit表於表示某一個IO口。

      按教程的學習,今天成功的實現了LED2的亮滅控制。關於38譯碼器以及三極管控制方面的得等第三課的學習才得知。

      在第一個程序中,我稍微改變了一下

       LED=0;

       while(1)

       {

       }

      把LED的付值放在了上面,我主要是想,免得while循環老是在給LED賦值,感覺不爽。

      當然留下來的問題是很多的,比如實際電路的連線是怎麼連起來的,如何走線,這個恐怕要涉及到板子的設計生產上來,而這個只有隨着繼續的深入學習才能夠掌握的,現在這裏只是記一下。如何進行電路的設計這些也需要繼續學習。

      不過今天總體來說還是有收穫的,至少明白了單片機上開發是怎麼個回事,並且進行了實際的操作,這種感覺遠比書上來得快,這更加堅信了我後面繼續學習的信心。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章