1. 程式人生 > >51微控制器學習筆記之基礎部分

51微控制器學習筆記之基礎部分

目錄

一、普中微控制器詳解

二、51微控制器介紹

三、C語言基礎

四、微控制器最小系統

五、開發軟體安裝與工程建立

 

0開始,重新學微控制器,from 0 to 100.    ----2019/1/14

一、普中微控制器詳解

  電源介面(火牛介面):額定電壓5V

  ch340USB轉串列埠

  DB9串列埠:RS232晶片,可用於下載程式,要用普通線

  官方STC下載軟體是軟啟動的,是手動下載的

  晶振

  溫度感測器DS18B20

  紅外

  溫度和紅外不能插反,有方向

  獨立按鍵(8IO口)

  學會看原理圖

  交通燈(10LED

  AD/DA轉換(

0-5V,模擬訊號,SPI

  矩陣鍵盤(16個按鍵)

  555模組

  時鐘模組,有鈕釦電池,斷電也能走

  595模組:IO口擴充套件

  LED模組:245/573晶片,驅動數碼管

  靜態數碼管/動態數碼管

  1602LCD:注意方向

  12864LCD

  TFT彩屏(短接片的配置)

  165晶片:並轉串

  245晶片:雙向導通

  24c02e2prom,掉電不丟失

  138晶片:38譯碼器

  點陣:16*16,用595驅動

  電機(五線四相等)

  繼電器模組

  蜂鳴器模組

  復位電路

  供電按鍵

  微控制器插入方向:凹口朝手把

  堅持

  

二、51微控制器介紹

  1、從0開始,C語言基礎 

    ROM:只讀儲存器,掉電不丟失,存程式

    RAM:隨機儲存器,掉電丟失,存變數引數

    看一塊晶片:CPU位數,ROM/RAM大小,IO口數量,定時器,計數器等等

    DIP(直插)封裝/貼片封裝

   2、怎樣開始學習?

    1.實踐第一。

    2.補充必要的理論(數電、模電、C語言)知識,即缺什麼補什麼。

    3.做工程專案積累經驗。(可在網路上搜集題目,也可自己有什麼想法大膽的去試 驗)

   3、微控制器的預備知識

      1.電平特性

      2.2進位制與16進位制的表示及轉換

      3.二進位制數的邏輯運算

      4.8051微控制器介紹

      5.C51基礎知識

  4、電平特性

    數位電路中只有兩種電平:高電平和低電平

    高電平:5V或者3.3V,取決微控制器電源。

    低電平:0V

    RS232電平:計算機串列埠的電平

      高電平:-12V

      低電平:+12V

    所以當我們用微控制器跟電腦通訊的時候,我們要通過各種元器件將微控制器的電平轉換為計算機可識別的電平才能跟電腦進行通訊。(MAX232晶片)

  52進位制與16進位制的表示及轉換

    二進位制

      由於數位電路中的只有兩種電平的特性,計算機中使用的數字採用都是二進位制的。(1 高電平 0低電平)

      二進位制是使用01兩個數碼來表示的數,它的基數是2,進位規則是“逢二進一”。

     十六進位制

      十六進位制的基數是F,進位規則是“逢十六進一”。(0~9A~F

    二進位制和十六進位制之間的轉換

  6、二進位制數的邏輯運算

    1.“與”運算

      有00

      1&1=1 1&0=0 0&0=0

    2.“或”運算

      有11

      1|1=1 1|0=1 0|0=0

    3.“非”運算

      1的非得0,0的非得1

      ~1=0 ~0=1

    4.“異或”運算

      必須不同,否則沒有(0-----不同為1,相同為0

      1^1=01^0=10^0=0

  78051微控制器介紹

      1.80C51MCS-51系列中的一個典型品種;其它廠商以8051為基核開發出的 CMOS工藝微控制器產品統稱為80C51系列。當前常用的80C51系列微控制器主要產品 有:

    ﹡ Intel的:80C3180C5187C5180C3280C5287C52等;

    ﹡ ATMEL的:89C5189C5289C2051等;

    ﹡ Philips、華邦、Dallas STC Siemens(Infineon)等公司的許多產品 。

       2.P3口第二功能各引腳功能定義:

    P3.0RXD序列口輸入

    P3.1TXD序列口輸出

    P3.2INT0外部中斷0輸入

    P3.3INT1外部中斷1輸入

    P3.4T0定時器0外部輸入

    P3.5T1定時器1外部輸入

    P3.6WR外部寫控制

    P3.7RD外部讀控制

   3.匯流排(BUS)是計算機各部件之間傳送資訊的公共通道。微機中有內部匯流排和外部匯流排兩類。內部匯流排是CPU內部之間的連線。外部匯流排是指CPU與其它部件之間的連線。    外部匯流排有三種: 資料匯流排DBData  Bus, 地址匯流排 ABAddress  Bus)和控制匯流排 CBControl   Bus)。

    CPU:由運算和控制邏輯組成,同時還包括中斷系統和部分外部特殊功能暫存器;

    RAM:用以存放可以讀寫的資料,如運算的中間結果、最終結果以及欲顯示的資料;(掉電丟失)

    ROM:用以存放程式、一些原始資料和表格;(掉電不丟失)

    I/O口:四個8位並行I/O口,既可用作輸入,也可用作輸出;

         T/C:兩個定時/記數器,既可以工作在定時模式,也可以工作在記數模式;

   五個中斷源的中斷控制系統;

   一個全雙工UART(通用非同步接收發送器)的序列I/O口,用於實現微控制器之間或微控制器與微機之間的序列通訊;

  片內振盪器和時鐘產生電路,石英晶體和微調電容需要外接。最高振盪頻率取決於微控制器型號及效能。

 

  8、微控制器工作的基本時序

    機器週期和指令週期

       1) 振盪週期: 也稱時鐘週期, 是指為微控制器提供時鐘脈衝訊號的振盪源的週期,我們開發板上為12MHZ。 

       2) 狀態週期: 每個狀態週期為時鐘週期(振盪週期)的 2 , 是振盪週期經二分頻後得到的。 

       3) 機器週期: 一個機器週期包含 6 個狀態週期S1~S6, 也就是 12 個時鐘週期。 在一個機器週期內, CPU可以完成一個獨立的操作。 

       4) 指令週期: 它是指CPU完成一條操作所需的全部時間 每條指令執行時間都是有一個或幾個機器週期組成。

      MCS - 51 系統中, 有單週期指令、雙週期指令和四周期指令。

  9、學微控制器到底學什麼

    1.I/O口的控制,無論微控制器對外界進行何種控制,都是通過I/O口進行的。

    2.接受外部的控制,通過I/O來感受外部的電壓。

    3.51微控制器總共有P0P1P2P3四個8位雙向輸入輸出埠,每個埠都有鎖存器、輸出驅動器和輸入緩衝器。4I/O埠都能作輸入輸出口用。

    P0:開漏輸出,要外接上拉電阻

    P1/2/3:準雙向IO(內部有上拉電阻)

     上下拉電阻

    上拉電阻就是將不確定的訊號通過一個電阻拉到高電平,同時此電阻起到一個限流的作用,下拉就是下拉到低電平。

      1OC(漏極開路)門要輸出高電平,外部必須加上拉電阻。

      2、加大普通IO口的驅動能力。

      3、起到限流的作用。

      4、抵抗電磁干擾。

    上下拉電阻的選取原則(4.7k - 10k

      1、從降低功耗方面考慮應該足夠大,因為電阻越大,電流越小。

      2、從確保足夠的引腳驅動能力考慮應該足夠小,電阻越小,電流才能越大。

      3、開漏輸出時,過大的上拉電阻會導致訊號上升沿變緩。

  

  三、C語言基礎

 

    #include<reg51.h>

 

    void main() main不能寫錯

 

    {

 

      while(1)

 

      {

 

       }

 

    }

 

    包涵標頭檔案 reg51.h/reg52.h

 

    程式主函式 main不能寫錯

 

     0就為真

 

    ++a/a++

 

 

 

  C51的資料型別擴充定義

 

    sfr:特殊功能暫存器宣告

 

    sfr 變數名=地址值;

 

    *特殊功能暫存器在reg51.H這個標頭檔案裡面都幫我們定義好了,所以平時我們就不要自己去定義暫存器的名字。

 

    sbit:特殊功能位宣告

 

    sbit 變數名=地址值;

 

    *在給某個引腳取名的時候經常會用到。

 

    bit:位變數宣告

 

    *用來定義位資料變數

 

    例:sfr SCON = 0X98;

 

    sbit LED = P0^2;

 

  C51中常用到的一些預處理命令

 

    #define

 

    #define A P0(注意後面不用加分號)

 

    #typedef

 

    typedef unsigned char uint;(後面要加分號)

 

      重新定義一些常用的關鍵詞,可以增強程式的可移植性,因為在不同的編譯軟體上面,C語言的資料型別的關鍵詞的位寬是不一樣的。

 

    #ifndef#endif

 

    條件編譯,常用於標頭檔案的定義還有一些程式條件編譯

 

  C言語常用的運算子

 

    +   -   *   /  (加 減 乘 除)

 

    >   >=  <  <=  (大於  大於等於  小於  小於等於)

 

    ==  !=       (測試等於  測試不等於)(它是邏輯運算子)

 

    比如說:if(a==1)或者if(a!=1)

 

        {

 

          b=2;

 

         }

 

     &&  ||  !      (邏輯與    邏輯或  邏輯非 )

 

    比如說:if((a>0)&&(b>0))

 

    { do something}

 

 

 

  四、微控制器最小系統 (P0要接上拉)

 

    1.電源電路

 

    2.復位電路

 

    3.時鐘電路 12MHZ

 

    4.下載電路 

 

  五、開發軟體安裝與工程建立

    百度上有