文章目錄
- 1、單片機
- 1-1、簡介
- 1-2、應用場景
- 2、51單片機
- 2-1、背景
- 2-2、主要品牌及其產品
- 2-3、基本組成
- 2-4、命名規則
- 3、單片機內部結構
- 3-1、單片機內部結構圖
- 3-2、單片機內部結構
- 3-3、單片機內部管腳圖
- 3-4、單片機最小系統
- 3-5、開發板介紹
- 4、點亮LED
- 4-1、新建工程
- 4-1-1、創建工程文件
- 4-1-2、選擇芯片型號
- 4-1-3、啟動文件
- 4-1-4、Main
- 4-2、LED介紹
- 4-3、LED模塊
- 4-3、Code
- 4-4、Download Code
- 5、LED Flash
- 5-1、新建工程
- 5-2、創建延時函數
- 5-3、Download code
- 5-4、實驗表現
- 6、流水燈
- 6-1、新建工程
- 6-2、C51數據類型
- 6-3、Plus版本
- 參考資料
1、單片機
1-1、簡介
單片機(Single-Chip Microcomputer)是一種集成電路芯片,是采用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。
單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統集成到一個芯片上。相當于一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。概括的講:一塊芯片就成了一臺計算機。它的體積小、質量輕、價格便宜、為學習、應用和開發提供了便利條件。同時,學習使用單片機是了解計算機原理與結構的最佳選擇。
1-2、應用場景
單片機的使用領域已十分廣泛,如智能儀表、實時工控、通訊設備、導航系統、家用電器等。從二十世紀九十年代開始,單片機技術就已經發展起來,隨著時代的進步與科技的發展,目前該技術的實踐應用日漸成熟,單片機被廣泛應用于各個領域。現如今,人們越來越重視單片機在智能電子技術方面的開發和應用,單片機的發展進入到新的時期,無論是自動測量還是智能儀表的實踐,都能看到單片機技術的身影。當前工業發展進程中,電子行業屬于新興產業,工業生產中人們將電子信息技術成功運用,讓電子信息技術與單片機技術相融合,有效提高了單片機應用效果。作為計算機技術中的一個分支,單片機技術在電子產品領域的應用,豐富了電子產品的功能,也為智能化電子設備的開發和應用提供了新的出路,實現了智能化電子設備的創新與發展。
單片機也被稱為單片微控器,屬于一種集成式電路芯片。在單片機中主要包含CPU、只讀存儲器ROM和隨機存儲器RAM等,多樣化數據采集與控制系統能夠讓單片機完成各項復雜的運算,無論是對運算符號進行控制,還是對系統下達運算指令都能通過單片機完成。 由此可見,單片機憑借著強大的數據處理技術和計算功能可以在智能電子設備中充分應用。簡單地說,單片機就是一塊芯片,這塊芯片組成了一個系統,通過集成電路技術的應用,將數據運算與處理能力集成到芯片中,實現對數據的高速化處理。
2、51單片機
2-1、背景
51單片機泛指兼容英特爾8051指令系統的8位單片機統稱,技術源自Intel 1980年代推出的8051內核,廣泛應用于家電控制、汽車電子、工業測控及通信設備領域,也是國內高校單片機教學的主要硬件平臺。典型型號包括ATMEL的89C51、89S51及STC公司的增強型89C52(本文使用改系列單片機)等,主流廠商涵蓋Atmel、STC、Philips等。該系列采用哈佛架構,集成8位CPU、Flash程序存儲器、RAM數據存儲器及定時器/中斷系統。新型號如89S51支持33MHz工作頻率與ISP在線編程,內置雙工UART、看門狗定時器及改進型加密算法,全系保持向下兼容特性。硬件層面配備40引腳PDIP封裝,包含4組準雙向I/O端口,支持寬電壓供電(3.3V-5.5V)及外部晶振電路配置。開發工具鏈涵蓋Keil集成環境與STC-ISP燒錄軟件。
2-2、主要品牌及其產品
- Intel(英特爾):80C31、80C51、87C51,80C32、80C52、87C52等;
- Atmel(艾特梅爾):89C51、89C52、89C2051,89S51(RC),89S52(RC)等;
- Philips(飛利浦)、華邦、Dallas(達拉斯)、Siemens(西門子)等公司的許多產品;
- STC(宏晶):STC89C51、STC90C51、STC11系列、STC15系列、STC8系列等。
2-3、基本組成
8051單片機通常至少具備以下功能和外設:
- 8位CPU
- 數據存儲器(RAM:Random Access Memory,512字節(512Byte),類似于電腦的內存條)
- 程序存儲器(ROM:Read Only Memory,8K字節(8KB) Flash,類似于電腦的硬盤)
- 4組8位共32個輸入輸出口
- 5至6個中斷源,分2個優先級
- 全雙工串行口
- 工作頻率:最大40MHz(本開發板使用)
2-4、命名規則
STC89C52系列區分90C版本及HD版本,如何識別90C版及HID版:通過查詢單片機表面文字最下面一行最后幾個字母,最后幾個字母為90C,則該單片機為90C版本(本開發板使用);最后幾個字母為HD,則該單片機為HD版本。
3、單片機內部結構
3-1、單片機內部結構圖
STC89C52系列單片機是STC推出的新一代高速/低功耗/超引強抗干擾/超低價的單片機,指令代碼完全兼容傳統8051單片機,12時鐘每機器周期和66時鐘每機器周期可以任意選擇。在KeilC開發環境中,選擇Intel8052編譯,頭文件包含<reg51.h>即可。
功能清單如下所示:
- 增強型8051單片機,6時鐘每機器周期和12時鐘每機器周期可任意選擇,指令代碼完全兼容傳統8051。
- 工作電壓:
STC89C52系列工作電壓:5.5V-3.8V(5V單片機)。
STC89LE52系列工作電壓:3.6V-2.4V(3V單片機)。 - 工作頻率范圍:0 ~ 35MHz,相當于普通8051的0 ~ 70MIHz,實際工作頻率可達42MHz。
- 片內Flash程序存儲器:4K/8K/12K/14K/16K/32K/40K/48K/56K/62K字節
- 片上集成1280字節或512字節RAM
- 通用I/0口(35/39個),復位后為:P1/P2/P3/P4是準雙向口/更弱上拉(普通8051傳統I/O口);P0口是開漏輸出,作為總線擴展用時,不用加上拉電阻,作為I/O口用時,需加上拉電阻。
- ISP(在系統可編程)/IAP(在應用可編程),無需專用編程器,無需專用仿真器可通過串口(RxD/P3.0.TxD/P3.1)直接下載用戶程序,數和沙即可完成一片
- 有EEPROM功能
- 看門狗
- 內部集成MAX810專用復位電路,外部晶體20M以下時,可省外部復位電路,復位腳可直接接地。
- 共3個16位定時器/計數器,其中定時器0還可以當成2個8位定時器使用。
- 4路外部中斷,下降沿中斷或低電平觸發中斷,Power Down模式可由外部中斷低電平觸發中斷方式喚醒。
- 通用異步串行口(UART),還可用定時器軟件實現多個UART。
- 工作溫度范圍:-40 ~ +85°C(工業級)/0~75°C(商業級)
- 封裝:LQFP-44,PDIP-40,PLCC-44,PQFP-44。強烈推薦選擇擇LQFP-44貼片封裝。
3-2、單片機內部結構
STC89C52系列單片機的內部結構框圖如所示。STC89C52單片機中包含中央處理器(CPU)、程序存儲器(Flash)、數據存儲器(SRAM)、定時/計數器、UART串口、I/O接口、EEPROM、看門狗等模塊。STC89C52系列單片機幾乎包含了數據采集和控制中所需的所有單元模塊,可稱得上一個片上系統。
3-3、單片機內部管腳圖
3-4、單片機最小系統
- 復位電路:電容充電時相當于短路,通過C1直接鏈接RST引腳,隨著C1不斷充電,之后C1就會斷路,RST連接GND,從而達到上電復位的效果。
- 對于最小系統而言,給單片機供電后,連接晶振電路即可運行起來,為了保證產品的穩定性,需要集成復位電路或晶振電路。
3-5、開發板介紹
4、點亮LED
4-1、新建工程
4-1-1、創建工程文件
4-1-2、選擇芯片型號
4-1-3、啟動文件
4-1-4、Main
4-2、LED介紹
4-3、LED模塊
4-3、Code
#include <REGX52.H>void main()
{/* Light Up LED0 */P2 = 0xFE;
}
4-4、Download Code
5、LED Flash
5-1、新建工程
5-2、創建延時函數
5-3、Download code
#include <REGX52.H>
#include <INTRINS.H>void Delay500ms() //@12.000MHz
{unsigned char i, j, k;_nop_();i = 4;j = 205;k = 187;do{do{while (--k);} while (--j);} while (--i);
}void main()
{while(1){/* 1. Light Up one Led. */P2 = 0xFE;/* 2. Delay 500ms. */Delay500ms();/* 3. Light Down one Led. */P2 = 0xFF;/* 4. Delay 500ms. */Delay500ms();}
}
5-4、實驗表現
LED Flash
6、流水燈
6-1、新建工程
#include <REGX52.H>
#include <INTRINS.H>void Delay500ms() //@12.000MHz
{unsigned char i, j, k;_nop_();i = 4;j = 205;k = 187;do{do{while (--k);} while (--j);} while (--i);
}void main()
{while(1){/* 1. Light Up one Led P0. */P2 = 0xFE;/* 2. Delay 500ms. */Delay500ms();/* 3. Light Up one Led P1. */P2 = 0xFD;/* 4. Delay 500ms. */Delay500ms();/* 5. Light Up one Led P2. */P2 = 0xFB;/* 6. Delay 500ms. */Delay500ms();/* 7. Light Up one Led P3. */P2 = 0xF7;/* 8. Delay 500ms. */Delay500ms();/* 9. Light Up one Led P4. */P2 = 0xEF;/* 10. Delay 500ms. */Delay500ms();/* 11. Light Up one Led P5. */P2 = 0xDF;/* 12. Delay 500ms. */Delay500ms();/* 13. Light Up one Led P6. */P2 = 0xBF;/* 14. Delay 500ms. */Delay500ms();/* 15. Light Up one Led P7. */P2 = 0x7F;/* 16. Delay 500ms. */Delay500ms();}
}
6-2、C51數據類型
6-3、Plus版本
#include <REGX52.H>
#include <INTRINS.H>void Delay1ms(unsigned int xms) //@12.000MHz
{unsigned char i, j;while(xms){_nop_();i = 2;j = 239;do{while (--i);} while (--j);xms--;}
}void main()
{while(1){/* 1. Light Up one Led P0. */P2 = 0xFE;/* 2. Delay 500ms. */Delay1ms(500);/* 3. Light Up one Led P1. */P2 = 0xFD;/* 4. Delay 500ms. */Delay1ms(500);/* 5. Light Up one Led P2. */P2 = 0xFB;/* 6. Delay 500ms. */Delay1ms(500);/* 7. Light Up one Led P3. */P2 = 0xF7;/* 8. Delay 500ms. */Delay1ms(500);/* 9. Light Up one Led P4. */P2 = 0xEF;/* 10. Delay 500ms. */Delay1ms(500);/* 11. Light Up one Led P5. */P2 = 0xDF;/* 12. Delay 500ms. */Delay1ms(500);/* 13. Light Up one Led P6. */P2 = 0xBF;/* 14. Delay 500ms. */Delay1ms(500);/* 15. Light Up one Led P7. */P2 = 0x7F;/* 16. Delay 500ms. */Delay1ms(500);}
}
參考資料
- 單片機
- STC: 1T 8051 單片機創新者, ISP/IAP 技術創新者,中華有為:除了勝利,我們已無路可走
- 8051 microcontroller FAQ
- 51單片機入門教程-2020版 程序全程純手打 從零開始入門