具體描述
內容簡介
《51單片機輕鬆入門:基於STC15W4K係列(C語言版)》以最新流行的不需要外部晶振與復位電路的可仿真的高速STC15W4K係列單片機為核心,詳細介紹瞭單片機內部功能模塊,比如定時器、中斷、串口、SPI接口、片內比較器、A/D轉換器、可編程計數器陣列(CCP/PCA/PWM)等。每個重要知識點都有簡短精煉的實例作驗證。然後就是單片機常用外圍接口的介紹與STC15W4K係列單片機的實際産品運用實例分析。另外,對單片機開發必須掌握的C語言基礎知識與Keil開發環境也作瞭較為詳細的介紹。對於沒有學習過C語言的讀者通過本書也能輕鬆進入以C語言開發單片機的學習狀態。
為瞭快速驗證本書的理論知識,作者設計瞭與本書配套的雙核(兩個仿真型單片機)實驗闆,功能強大,操作簡單、直觀,除用於本書實驗測試外,也可用於産品前期開發。
本書可作為普通高校計算機類、電子類、自動控製類、儀器儀錶類、機電一體化類等相關專業教學用書,對已有一定設計經驗的單片機工程師也有重要的參考價值。
目錄
第1章單片機高效入門
1.1單片機簡介
1.1.1認識單片機
1.1.2單片機的用途
1.1.3典型芯片與C語言介紹
1.1.4本書的配套實驗闆及相關學習工具介紹
1.2點亮一個發光二極管
1.2.1單片機型號命名規則
1.2.2單片機引腳功能說明
1.2.3製作一個最簡單的單片機實驗電路
1.2.4使用KeilμVision3環境編寫最簡單的程序
1.2.5ISP下載程序到單片機
1.2.6程序解釋
1.3Keil仿真
1.3.1軟件仿真
1.3.2硬件仿真
1.4經典流水燈實例
1.5單片機C語言延時程序詳解
1.5.1學會使用計算軟件
1.5.2計算軟件內部運算過程詳解
1.5.3利用庫函數實現短暫精確延時
1.5.4使用定時器/計數器實現精確延時
1.6main()、void main()和int main()的區彆
1.7printf格式化輸齣函數
第2章單片機開發必須掌握的C語言基礎
2.1簡單數據類型與運算符
2.1.1原碼、反碼、補碼、BCD碼和格雷碼
2.1.2常量
2.1.3變量的數據類型(bit、char、int、long、float)
2.1.4變量存儲空間(code、data、bdata、idata、xdata)
2.1.5變量存儲類型(auto、static、extern)
2.1.6變量作用域
2.1.7運算符
2.1.8運算符的優先級與結閤性
2.2C51構造數據類型
2.2.1數組
2.2.2結構體
2.2.3共用體
2.2.4指針
2.2.5#define與typedef的區彆
2.3流程與控製
2.3.1分支結構
2.3.2循環結構
2.3.3跳轉結構
2.4函數
2.4.1函數定義
2.4.2調用格式
2.4.3傳值調用與傳地址調用的對比
2.4.4數組作為函數參數
2.4.5使用指針變量作為函數形式參數
2.4.6使用結構體變量指針作為函數參數
2.4.7函數作用域
2.4.8庫函數
2.5模塊化編程
2.5.1頭文件的編寫
2.5.2條件編譯
2.5.3多文件程序(模塊化編程)
第3章定時器/計數器、中斷係統
3.1定時器/計數器
3.1.1單片機定時器/計數器工作原理概述
3.1.2定時器/計數器的相關寄存器
3.1.3定時器/計數器的工作方式
3.1.4初值計算
3.1.5編程舉例
3.2可編程時鍾輸齣
3.3中斷係統
3.3.1中斷係統結構圖
3.3.2操作電路圖中的開關(相關寄存器介紹)
3.3.3編寫中斷函數
3.3.4中斷程序舉例
3.3.5外部中斷代碼調試(按鍵的防抖技術)
第4章串口通信
4.1最基本的串口通信
4.1.1串口數據發送格式
4.1.2串口相關寄存器
4.1.3波特率計算步驟
4.1.4單片機與計算機通信的簡單例子
4.2徹底理解串口通信協議
4.3串口隔離電路
4.4計算機擴展串口(USB轉串口芯片CH340G)
4.5RS485串行通信
4.6SSI通信
4.6.1SSI數據通信格式
4.6.2SSI硬件電路
4.6.3SSI軟件實現
4.7數據通信中的錯誤校驗
4.7.1校驗和(CheckSum)與重要的串口通信實例
4.7.2CRC校驗
4.8單片機嚮計算機發送多種格式的數據
第5章SPI通信
5.1SPI總綫數據傳輸格式
5.1.1接口定義
5.1.2傳輸格式
5.2SPI接口相關寄存器
5.2.1SPI相關的特殊功能寄存器
5.2.2SPI接口引腳切換
5.3SPI接口運用舉例
第6章
I2C通信
6.1I2C總綫數據傳輸格式
6.1.1各位傳輸要求
6.1.2多字節傳輸格式
6.2程序模塊功能測試
6.2.1硬件仿真觀察24C02讀/寫結果
(R/C時鍾:22.118 4 MHz)
6.2.2硬件仿真觀察24C32/64讀/寫結果
(R/C時鍾:22.118 4 MHz)
6.324C02運用實例(斷電瞬間存儲整數或浮點數)
第7章單片機內部比較器與DataFlash存儲器
7.1STC15W係列單片機內部比較器
7.1.1比較器結構圖
7.1.2寄存器說明
7.1.3電路講解與程序實例
7.2DataFlash存儲器
7.2.1與DataFlash操作有關的寄存器介紹
7.2.2DataFlash操作實例(斷電瞬間存儲數據)
第8章可編程計數陣列CCP/PCA/PWM模塊(可用作DAC)
8.1PCA模塊總體結構圖
8.2PCA模塊的特殊功能寄存器
8.3PCA模塊的工作模式與應用舉例
第9章模/數轉換器ADC
9.1ADC的主要技術指標
9.2使用單片機內部的10位ADC
9.2.1與ADC相關的特殊功能寄存器
9.2.2實例代碼
9.312位ADC轉換芯片MCP3202B
9.4單通道16位ADC轉換芯片ADS1110A
9.5單通道18位ADC轉換芯片MCP3421A0TE/CH
第10章數/模轉換器DAC
10.1TLC5615數/模轉換電路與基本測試程序
10.2TLC5615産生鋸齒波、正弦波、三角波
10.3TLC5615的高級運用(播放歌麯)
第11章單片機實用小知識
11.1復位
11.1.1外部RST引腳復位
11.1.2軟件復位
11.1.3內部低壓檢測復位
11.1.4看門狗定時器復位
11.2單片機的低功耗設計
11.2.1相關寄存器說明
11.2.2應用舉例
11.3單片機擴展32 KB外部數據存儲器62C
11.3.1電路講解
11.3.2軟件測試實例
第12章常用單片機接口程序
12.1數碼管靜態顯示
12.2數碼管動態顯示
12.3獨立鍵盤
12.4矩陣鍵盤
第13章1602液晶
13.11602液晶外形與電路圖
13.21602液晶應用舉例
13.31602液晶顯示漢字與特殊符號
第14章精密電壓錶/電流錶/通用顯示器/計數器製作
14.1功能說明與電路原理分析
14.2程序實例
14.2.1通用顯示器功能檢測程序(外部程序)
14.2.2計數器功能檢測程序(外部程序)
14.2.3模塊程序
第15章步進電機測試
15.1步進電機的特點
15.2步進電機的3種勵磁方式
15.3步進電機驅動電路
15.4步進電機驅動實例
15.5步進電機專用驅動器介紹
第16章頻率檢測
16.1頻率檢測的用途與頻率定義
16.2頻率檢測實例
第17章DS1302時鍾芯片
17.1DS1302的SPI數據通信格式
17.2程序實例
第18章紅外通信
18.1紅外通信電路與基本原理
18.2紅外接收軟件實例
第19章單總綫DS18B20通信(長距離
無綫通信)
19.1DS18B20運用基礎
19.1.1單隻DS18B20的溫度檢測電路
19.1.2DS18B20的通信時序
19.1.3DS18B20內部功能部件ROM、RAM和指令集
19.1.4讀取溫度步驟
19.2單隻DS18B20的溫度檢測
19.3多隻DS18B20的溫度檢測
19.3.1讀取傳感器代碼
19.3.2讀取傳感器溫度
第20章SD卡與znFAT文件係統
20.1認識SD卡與SD卡驅動程序
20.1.1認識SD卡
20.1.2電路講解
20.1.3通信時序與完整驅動程序說明
20.2znFAT文件係統
20.2.1znFAT的移植方法
20.2.2znFAT移植實例
第21章MP3播放器實驗
21.1MP3的介紹與電路講解
21.1.1VS1003B引腳說明
21.1.2VS1003寄存器
21.2正弦測試
21.3通過SD卡播放MP3文件
第22章數字存儲示波器技巧與邏輯分析儀的操作
22.1測量直流電源開關機瞬間輸齣的毛刺浪湧
22.2測量稍縱即逝的紅外發射信號
22.3精確測量直流電源紋波
22.4示波器帶寬選用依據
22.5邏輯分析儀快速入門
附錄ASCII碼錶
參考文獻
前言/序言
STC單片機是在傳統8051單片機內核的基礎上進行大幅度改進升級優化而來的新一代8051單片機,具有高速、高可靠、低功耗、外圍模塊多、ISP升級程序方便、價格低廉等顯著優點,加上STC宏晶科技單片機的廠商“南通國芯微電子”屬於中國大陸本土企業,當我們在産品設計過程中遇到問題時,便於與廠傢溝通以獲得技術支持,所以STC單片機已經被眾多的産品設計工程師作為首選方案而運用到自己的産品中。
STC單片機的指令係統與標準的8051內核完全兼容,過去的51單片機書籍仍然可以拿來作為輔助參考資料。已經熟悉傳統8051內核單片機的讀者,可以輕鬆過渡到STC可仿真的超級強大的STC15係列單片機或STC早期的STC89係列單片機,本書的編寫建立在筆者十多年的産品設計經驗基礎之上,具體編寫從前到後又花費瞭近5年的時間,筆者本著十年磨一劍的精神把每一個章節的內容寫齣水平,因此本書內容翔實,語言簡練,通俗易懂,對多年來傳統單片機教材含糊不清的概念與重要知識都作瞭明確分析;全書程序代碼編寫規範,注重程序的通用性與移植性,讓讀者既能輕鬆看懂理論知識,又能方便地將程序代碼移植到産品中去。
本教材主講的單片機型號是STC公司的IAP15W4K58S4(既能仿真又能便用USB直接下載程序),是目前STC最先進的芯片之一,內部資源十分豐富,具有58 KB程序存儲器,4 096字節數據存儲器,5個定時器,4個獨立串口,8通道10位高速A/D轉換器, 1個SPI接口支持主機與從機模式,2路CCP/PCA/PWM,6路帶死區控製的專用PWM,1個比較器等,支持USB直接下載程序和串口下載程序,內部集成有高精度R/C時鍾與高可靠復位電路,支持2.5~5.5 V寬工作電壓範圍,隻需提供電源就能成為單片機最小係統,隻需加上一個RS232電平轉換芯片或USB轉串口芯片再與計算機相連就能成為一個功能完美的仿真係統。程序仿真調試非常方便,用此芯片可以完成本書很多高級實驗,比如TLC5615數/模轉換芯片播放歌麯、SD卡讀/寫等。另外,此單片機在軟件與硬件上都完全兼容資源略少的上一代單片機STC15F2K60S2係列,因此本書也完全適用於STC15F2K60S2係列的學習。為降低實際産品成本,本書還輔助性地介紹瞭STC15W404S係列、STC15W404S係列。其資源更少一些,但引腳仍然很多,同樣支持寬電壓供電,帶比較器功能,支持SPI主機與從機模式等。在功能要求比較簡單的産品上,為進一步降低成本,讀者也可使用STC15W401AS係列或STC15W100係列芯片。
本教材在編寫過程中得到瞭北京航空航天大學齣版社和STC單片機創始人姚永平先生的大力支持,使本書在總體架構上的先進性與實用性得到瞭保證,並由姚永平先生親自擔任本教材的主審,在此嚮北京航空航天大學齣版社和姚永平先生深錶謝意。
《單片機實用開發指南:從原理到項目實戰》 一、 前言:點燃你的嵌入式開發夢想 在當今科技飛速發展的時代,嵌入式係統無處不在,從你手中的智能手機到傢中的智能電器,再到工業自動化生産綫,都離不開其強大的支撐。而單片機,作為嵌入式係統的核心,正是這一切的基石。本書旨在為你打開通往單片機開發世界的大門,讓你在掌握理論知識的同時,也能親手實踐,將創意變為現實。無論你是初學者,還是希望提升技能的開發者,本書都將是你不可或缺的助手。我們將從最基礎的概念講起,循序漸進,讓你在清晰的邏輯和豐富的實例中,一步步構建起堅實的單片機開發能力。 二、 核心理論:打牢單片機開發的根基 單片機是什麼?為什麼選擇它? 我們將深入剖析單片機的定義,解釋它為何能成為嵌入式係統的核心。你會瞭解到單片機集成CPU、存儲器、I/O接口等功能單元於一體的獨特優勢,以及它在成本、功耗、體積上的卓越錶現。 對比其他微處理器,理解單片機在特定應用場景下的不可替代性,例如物聯網設備、傢用電器控製、汽車電子等。 單片機內部結構詳解 CPU核心: 詳細介紹CPU的工作原理,包括指令集、寄存器、時鍾信號、總綫等。我們將以經典CPU架構為例,闡述指令的取指、譯碼、執行過程,以及CPU如何與外圍設備交互。 存儲器係統: 深入講解程序存儲器(ROM/Flash)和數據存儲器(RAM)的功能與區彆。瞭解它們在程序運行和數據處理中的作用,以及如何根據需求選擇閤適的存儲器類型。 I/O端口: 詳細解析通用的輸入/輸齣(GPIO)端口,包括其工作模式(輸入、輸齣、復用功能)、寄存器配置(方嚮寄存器、數據寄存器、上拉/下拉控製等)。通過實際案例,讓你學會如何靈活控製LED、讀取按鍵等。 定時器/計數器: 深入理解定時器和計數器的原理,掌握其工作模式(定時、計數、PWM輸齣)、預分頻器、重載值等關鍵參數的設置。學會如何利用它們實現精確延時、周期性事件觸發、頻率測量等功能。 中斷係統: 詳細講解中斷的概念、中斷源(外部中斷、定時器中斷、串口中斷等)、中斷嚮量錶、中斷優先級、中斷服務程序(ISR)的編寫。掌握如何高效地處理外部事件,提高係統的響應速度和實時性。 串行通信接口(UART): 深入學習UART的工作原理,包括波特率生成、數據位、停止位、校驗位等通信參數的設置。掌握如何利用UART實現單片機與其他設備(如PC、其他單片機、傳感器)之間的數據傳輸。 其他常用外設: 根據實際需要,可能會包含ADC(模數轉換)、DAC(數模轉換)、SPI、I2C等常用外設的原理介紹與應用,讓你能夠處理更復雜的信號采集和設備控製。 C語言在單片機開發中的應用 基礎語法迴顧與強化: 針對單片機開發場景,復習C語言的核心語法,包括變量類型、運算符、控製語句(if-else, switch, for, while)、函數等,並強調其在嵌入式環境下的特性。 指針與內存管理: 深入講解C語言指針的概念、操作以及在單片機開發中的重要性,包括數組指針、函數指針,以及如何通過指針訪問硬件寄存器。 位操作: 詳細介紹C語言中的位運算符(&, |, ^, ~, <<, >>)及其在單片機開發中的強大作用,例如通過位操作直接控製I/O口、配置寄存器等。 宏定義與預處理: 學習如何使用宏定義簡化代碼、提高可讀性,以及預處理指令(include, define, ifdef)在項目構建中的作用。 結構體與聯閤體: 掌握結構體和聯閤體的定義與使用,它們在組織和管理復雜數據結構,特彆是硬件寄存器模型時非常有用。 嵌入式C語言特性: 介紹一些嵌入式C語言特有的關鍵字和概念,例如`volatile`關鍵字的重要性,以及如何進行類型轉換以匹配硬件需求。 三、 開發工具與環境搭建:邁齣實踐的第一步 集成開發環境(IDE)的選擇與配置: 我們將推薦並詳細介紹一款或多款主流的單片機開發IDE(例如Keil MDK, IAR Embedded Workbench, 或針對特定係列的高性能IDE)。 指導讀者完成IDE的安裝、工程創建、編譯器和調試器的配置。 硬件選型與基礎知識: 開發闆的選擇: 介紹如何選擇一款閤適的單片機開發闆,並闡述其在學習和開發過程中的優勢。 最小係統搭建: 講解單片機工作的基本電路需求,包括電源、晶振、復位電路等,讓你理解開發闆的構成。 外圍元器件介紹: 詳細介紹LED、按鍵、蜂鳴器、LCD顯示屏、傳感器(如溫度、濕度、光敏、紅外傳感器)等常用外圍元器件的原理、選型與連接方法。 代碼燒錄與調試: 燒錄器(下載器)的使用: 詳細介紹常用的單片機燒錄器(如ST-Link, J-Link, 或USB轉串口下載器)的工作原理和使用方法。 在綫調試: 深入講解如何利用IDE的在綫調試功能,包括設置斷點、單步執行、查看變量值、內存內容,以及觀察寄存器狀態,讓你能夠精準定位和解決代碼中的問題。 四、 項目實戰:將理論付諸行動 本書的重頭戲在於大量的實踐項目,每個項目都將緊密結閤前麵講解的理論知識,並通過詳細的代碼示例和步驟指導,讓你親手完成: 入門級項目: LED閃爍: 最經典的入門項目,通過控製LED的亮滅,讓你熟悉I/O口輸齣操作和延時函數的使用。 按鍵控製LED: 學習如何讀取按鍵輸入,實現按下LED亮起,鬆開LED熄滅的功能,掌握I/O口輸入操作。 流水燈: 進階LED控製,通過定時器中斷實現LED的動態變化,進一步理解定時器和中斷的應用。 蜂鳴器發聲: 學習控製蜂鳴器發齣不同頻率的聲音,為你的項目增加聲音提示。 中級項目: LCD1602/LCD12864字符/圖形顯示: 學習驅動LCD顯示屏,在屏幕上顯示各種字符、數字和簡單的圖形,為用戶提供直觀的信息交互。 ADC數據采集: 連接電位器或傳感器,通過ADC采集模擬信號,並將其轉換為數字量顯示在LCD上,讓你掌握模擬量處理。 UART通信: 實現單片機與PC之間的串口通信,通過PC發送指令控製單片機,或通過單片機將采集到的數據發送到PC。 基於定時器的PWM輸齣: 控製LED亮度或舵機角度,學習如何生成PWM信號,實現精細化的模擬量輸齣。 高級項目: 溫濕度監測係統: 連接溫濕度傳感器(如DHT11, SHT20),實時采集溫濕度數據,並通過LCD顯示,利用UART將數據上傳。 簡易交通燈控製器: 模擬真實交通燈邏輯,實現紅、黃、綠燈的順序切換,並考慮行人信號燈。 紅外遙控接收與發送: 學習紅外通信協議,實現接收和發送紅外遙控指令,控製傢電設備。 舵機/步進電機控製: 學習控製舵機和步進電機,實現精確的位置控製和運動,廣泛應用於機器人和自動化領域。 基於SPI/I2C的總綫通信: 學習如何與SPI/I2C接口的傳感器或模塊進行通信,例如EEPROM存儲器、OLED顯示屏等。 五、 進階技巧與擴展:持續學習的動力 固件升級(OTA)概念與實現初步: 介紹固件升級的原理和在嵌入式開發中的重要性。 低功耗設計: 講解如何在單片機項目中實現低功耗,延長電池壽命。 內存優化與代碼效率: 探討如何優化代碼,提高執行效率,充分利用單片機的資源。 驅動程序編寫: 學習如何為新的外設編寫通用的驅動程序。 實時操作係統(RTOS)簡介: 簡要介紹RTOS的概念,以及它在處理復雜並發任務中的優勢。 嵌入式係統安全基礎: 探討嵌入式係統可能麵臨的安全威脅,以及一些基本的安全防護措施。 六、 附錄:參考資料與資源 常用寄存器速查錶: 提供常用外設寄存器的對照錶,方便查閱。 推薦參考書籍與網站: 列齣進一步學習的資源。 開發工具下載鏈接: 方便讀者獲取所需軟件。 七、 結語:開啓你的嵌入式開發之旅 通過本書的學習,你將不僅僅掌握單片機的基本原理和編程技巧,更重要的是,你將獲得獨立解決問題、設計和實現嵌入式係統的能力。本書的設計理念是以“實戰驅動學習”,鼓勵讀者動手實踐,在錯誤中學習,在成功中成長。我們相信,這本書將是你踏入嵌入式開發領域最堅實的起點,為你開啓無限的創新可能。現在,就讓我們一起,點燃你的嵌入式開發夢想,創造屬於你的智能未來!