|
曾幾何時,殘弈悟恩(我的筆名)也懷揣夢想,踏進大學(xué)校園,本以為會在相對開放的大學(xué)校園里有所作為,而現(xiàn)實的骨感,讓我開始漫無目的,找不到方向。一次沉重的打擊加一個偶然的機會,結(jié)識了單片機,也就是從那刻開始,便與單片機結(jié)下了深交。勝似轉(zhuǎn)角遇到愛,從此便放不下、離不開,通宵達旦,廢寢忘食…
如今,殘弈悟恩不再如那般年輕,然而回想起與單片機牽手的那些年,心頭依然會浮起滿滿的幸福。有人說,夢想,就是一種讓你感到堅持就是幸福的東西。從與單片機的相識到相知再到相伴,殘弈悟恩是幸福的,此刻,殘弈悟恩想把這幸福傳遞給每位讀者,并且感謝讀者們選擇了單片機,或許若干年之后,讀者們也會和殘弈悟恩一樣,回想起那些堅持與相伴,便會幸福,也會感激曾今奮斗的自己。
單片機這門技術(shù),比起當(dāng)今流行的ARM、DSP、FPGA顯得有些“遜色”,甚至隨著物聯(lián)網(wǎng)的發(fā)展,特別是智能硬件的普及,單片機已經(jīng)被集成到了某些藍牙芯片內(nèi)部,但其應(yīng)用的廣泛性并不亞于這三門技術(shù)的總和。讀者不要相信學(xué)單片機沒技術(shù)含量這樣的大“實話”,不要銘記單片機已過時的這種“正確”說法,也不要遲疑學(xué)完單片機對以后找工作有無幫助,更不要只是把單片機和金錢畫等號。讀者要堅信,有些設(shè)計,值得用一生去追求。
時至今日,書已成型。幾個月的寫作時間,不僅是一段時間、一段經(jīng)歷,更是一次突破。數(shù)個月的寫作包含了太多的辛酸和喜悅,成長和感悟。辛酸的是有時一連幾周不休息,有時晚上2、3點,寫著、寫著就會爬在電腦上睡著,更有甚著會焚膏繼晷、通宵達旦;喜悅的是能得到親人、朋友、網(wǎng)友們的支持和對本書的關(guān)注,書雖未出,但電子版已得到好多專業(yè)人士和網(wǎng)友的肯定;成長的是做事要逼自己一把,但合理的時間規(guī)劃必須的有,否則真心很累;感悟的是工作很重要,但身體更重要。因為身體是“1”,其它的房子、車子、票子、地位、名譽都是“0”,只有“1”在時,后面的“0”才有意義,“1”不在時,再多的“0”還是“0”。像殘弈悟恩這樣熬夜,對身體的摧殘是不可逆的,借此機會,向讀者們說聲:奮斗的同時,別忘了鍛煉身體。
關(guān)于目的
編寫這本書的目的是讓對單片機既有興趣,又能堅持“玩”下去,同時希望讀者能夠把它當(dāng)做是一個友好、易于使用、便于自學(xué)、樂于幫助的助手。為了達到這個目標(biāo),本書采用了以下策略:
盡量使用通俗、易懂的語言。有時也會特意用一些口語化的語言來闡述一個問題,而不是死磕概念,這樣做更能與讀者產(chǎn)生共鳴。
若只用語言、文字難以闡述的概念,多會采用圖表的形式來澄清。圖表可以刺激人的潛意識,崔西曰:潛意識是顯意識力量的3萬倍以上。
采用化整為零的方法,將枯燥、無味的知識分解成小部分,一點一滴的向讀者饋贈。
對于難理解、難記憶的知識點,多會采用舉例的方式,這樣讀者會好理解、易記憶。
關(guān)于內(nèi)容
Ø 入門篇包括第1~2章。第1章主要介紹了單片機的概念及其應(yīng)用,隨后分享了一些殘弈悟恩“玩”單片機的方法和經(jīng)驗;第二章主要介紹了“玩”單片機需要的一些物質(zhì)準(zhǔn)備,這些物質(zhì)包括硬件和軟件。
Ø 初級篇包括第3~11章。該篇以筆者自己開發(fā)的FSST15開發(fā)板為硬件平臺,由淺入深的帶領(lǐng)讀者從點亮一個LED小燈的實例開始,經(jīng)數(shù)碼管、蜂鳴器、按鍵、液晶、LED點陣等外設(shè),之后再經(jīng)由單片機內(nèi)部資源定時器、中斷、串口,讓讀者徹底走進單片機單片機,走出外設(shè)資源。同時,每個章節(jié)還穿插了C語言和電路基礎(chǔ)知識,繼而在掌握單片機基本編程的基礎(chǔ)上,重拾基礎(chǔ)。在此過程中,殘弈悟恩運用了通俗的語言,大量的實例,采用各個擊破的方式,讓讀者邊做實驗、邊掌握理論知識。
Ø 中級篇包含第12~17章。這部分內(nèi)容在保留第二部分的基礎(chǔ)上,增加了庫函數(shù)、IIC協(xié)議、PWM、D/A、A/D、紅外編解碼等實際中常用的知識點,為以后做項目打下堅實的根基。再次,還講述了實時操作系統(tǒng)——RTX51 Tiny,讓讀者從“玩”單片機開始,就對操作系統(tǒng)的概念有個深入的理解,以便為以后學(xué)習(xí)Linux、winCE等操作系統(tǒng)夯實基礎(chǔ);第17章,講述了硬件設(shè)計中很重要的一個知識點——PCB的設(shè)計,筆者以現(xiàn)階段流行的Altium Designer15、PADS9.5軟件為例,一步一步講解了元件的封裝,原理圖的設(shè)計,PCB的繪制。
Ø 高級篇包括第18~20章。第18章主要講述串口的擴展應(yīng)用,在此基礎(chǔ)上,以FSST15開發(fā)板上經(jīng)典的一鍵下載電路為例,講述了串口的應(yīng)用和編程,以及電路設(shè)計;第19章,主要講述了一個項目的大致開發(fā)流程,之后以多功能收音機項目為例,講述了整個開發(fā)流程和編程特點;第20章,簡述了控制中最常用的算法PID,接著講述了如何DIY一架四軸飛行器,這樣做,就是讓讀者能將所學(xué)的知識熟練的應(yīng)用到實際中,這樣才真正做到基于基礎(chǔ),高于理論,著眼應(yīng)用。
劉平
2015年11月于深圳
最后說明下和本書配套的四軸飛行器目前正眾籌,歡迎大家支持,我將持續(xù)更新內(nèi)容。更新目錄見下:
第1章 藉馬歇門 踏神圣路:進階STC15單片機(IAP15W4K58S4)的大門
1.1 單片機概述
1.1.1 單片機廠家簡介
1.1.2 STC15(IAP15W4K58S4)單片機簡述
1.2 為何學(xué)習(xí)STC15單片機
1.3 如何玩轉(zhuǎn)STC15單片機
1.3.1 不做浮躁的人
1.3.2 做有準(zhǔn)備的人
1.3.3 經(jīng)驗分享
第2章 欲善其事 必利其器:軟硬件平臺的搭建和使用簡述
2.1 硬件平臺—FSST15開發(fā)板
2.1.1 FSST15開發(fā)板功能框圖
2.1.2 FSST15開發(fā)板基本配置
2.2 開發(fā)環(huán)境—Keil μVision5
2.2.1 Keil μVision5的安裝
2.2.2 Keil μVision5的工程建立過程
2.3 我的第一個程序——點亮LED小燈
2.4 輔助開發(fā)工具
2.4.1 CH340驅(qū)動的安裝
2.4.2 單片機編程軟件——STC-ISP
2.5 課后習(xí)題
第三章 端倪初現(xiàn) 小試牛刀:基本元器件與LED小燈的介紹
3.1 電阻器的應(yīng)用概述
3.1.1 初識電阻
3.1.2 電流與電阻的關(guān)系
3.2 電容器的應(yīng)用概述
3.2.1 初識電容
3.2.2 電容的用途
3.2.3 實例解說儲能和濾波
3.3 二極管的應(yīng)用概述
3.3.1 二極管的特性
3.3.2 二極管的應(yīng)用
3.3.3 發(fā)光二極管
3.4 三極管應(yīng)用概述及使用誤區(qū)
3.4.1 三極管的基本開關(guān)電路
3.4.2 開關(guān)三極管的使用誤區(qū)
3.5 MOS管的應(yīng)用概述
3.5.1 MOS管基礎(chǔ)
3.5.2 MOS管的應(yīng)用
3.6 運算放大器的基本應(yīng)用
3.6.1 負(fù)反饋
3.6.2 同相放大電路
3.6.3 反相放大電路
3.7 STC15系列單片機的I/0口概述
3.7.1 I/0口的工作模式及配置介紹
3.7.2 I/0口各種不同的工作模式結(jié)構(gòu)框圖
3.8 LED小燈的原理解析
3.8.1 LED燈的原理說明
3.8.2 LED小燈的硬件電路
3.9 LED小燈的應(yīng)用實例
3.9.1 LED閃爍實例
3.9.2 LED跑馬燈實例
3.9.3 LED流水燈實例
3.10 課后習(xí)題
第4章 排兵布陣 步步扣殺:模塊化編程
4.1 夯實基礎(chǔ)——數(shù)值的換算以及邏輯運算
4.1.1 各進制之間的換算關(guān)系
4.1.2 數(shù)字電路和C語言中的邏輯運算
4.2 簡述單片機開發(fā)流程
4.3 Keil5的進階應(yīng)用——建模
4.4 單片機之模塊化編程
4.4.1 借說明開頭
4.4.2 用實踐解釋
4.5 模塊化編程的應(yīng)用實例
4.6 課后習(xí)題
第5章 點段融合 數(shù)碼面世:編程規(guī)范與數(shù)碼管的應(yīng)用
5.1 夯實基礎(chǔ)——C語言之編程規(guī)范
5.1.1 程序的排版
5.1.2 程序的注釋
5.2 基于STC15的單片機最小系統(tǒng)
5.2.1 電源
5.2.2 晶振
5.2.3 復(fù)位電路
5.2.4 程序下載電路
5.3 數(shù)碼管的原理解析
5.3.1 數(shù)碼管的原理說明
5.3.2 數(shù)碼管的硬件電路設(shè)計
5.3.3 知識拓展——74HC595
5.3.4 數(shù)碼管的真值表與基本的編程實例
5.4 數(shù)碼管的應(yīng)用實例
5.4.1 數(shù)碼管的靜態(tài)顯示例程
5.4.2 數(shù)碼管的動態(tài)掃描實例
5.5 課后習(xí)題
第6章 隨時度勢 順時而動:C語言的數(shù)據(jù)和定時器的應(yīng)用
6.1 夯實基礎(chǔ)——C語言之?dāng)?shù)據(jù)
6.1.1 變量與常量數(shù)據(jù)
6.1.2 變量的作用域
6.1.3 變量的存儲類別
6.1.4 變量的命名規(guī)則
6.2 單片機的內(nèi)部結(jié)構(gòu)和存儲器
6.2.1 STC15單片機的內(nèi)部框架結(jié)構(gòu)
6.2.2 中央處理器(CPU)
6.2.3 只讀存儲器(ROM)和隨機存儲器(RAM)
6.2.4 IAP15W4K58S4單片機的存儲結(jié)構(gòu)
6.3 STC15單片機的定時器
6.3.1 為學(xué)習(xí)定時器鋪道的幾個說明
6.3.2 定時器/計數(shù)器(T0/T1)的寄存器
6.3.3 定時器/計數(shù)器(T0/T1)的工作模式
6.3.4 定時器的簡單應(yīng)用實例和初始化總結(jié)
6.4 IAP15W4K58S4單片機的可編程時鐘輸出
6.5 定時器和時鐘輸出應(yīng)用實例
6.5.1 數(shù)碼管的靜態(tài)顯示例程(定時器)
6.5.2 可編程時鐘輸出例程
6.6 課后習(xí)題
第7章 存亡絕續(xù) 繼起不絕:C語言的條件判斷和中斷系統(tǒng)
7.1 夯實基礎(chǔ)——C語言之條件判斷
7.1.1 if…else語句
7.1.2 switch...case語句
7.2 單片機的省電模式和看門狗的應(yīng)用
7.2.1 省電模式的介紹
7.2.2 看門狗的介紹
7.2.3 LED燈閃爍是因為“狗”餓了
7.2.4 要讓系統(tǒng)OK必須實時“喂狗”
7.3 單片機的中斷系統(tǒng)
7.3.1 單片機中斷的產(chǎn)生背景和響應(yīng)過程
7.3.2 單片機中斷系統(tǒng)的框架和中斷源
7.3.3 單片機中斷系統(tǒng)的寄存器
7.3.4 與中斷函數(shù)有關(guān)的知識匯總與簡單應(yīng)用實例
7.3.5 中斷系統(tǒng)的優(yōu)先級
7.4 中斷系統(tǒng)的應(yīng)用實例
7.4.1 數(shù)碼管動態(tài)顯示的基本應(yīng)用實例
7.4.2 數(shù)碼管動態(tài)刷新的改進與消影的學(xué)習(xí)
7.5 課后習(xí)題
第8章 一呼百應(yīng) 脈脈相通:C語言的循環(huán)與串口的應(yīng)用
8.1 夯實基礎(chǔ)——C語言之循環(huán)
8.1.1 while循環(huán)
8.1.2 do...while循環(huán)
8.1.3 for循環(huán)
8.2 通信接口模塊的介紹
8.2.1 通信接口的基本分類
8.2.2 串行通信的基本概述
8.3 IAP15W4K58S4單片機的串行接口
8.3.1 與串行通信相關(guān)的基本寄存器
8.3.2 串口1的工作模式介紹
8.3.3 串口1工作模式1的波特率計算
8.3.4 串口1的應(yīng)用實例
8.4 RS-232通信接口概述
8.4.1 RS-232C串口通信標(biāo)準(zhǔn)與接口定義
8.4.2 RS-232C通信接口的電平轉(zhuǎn)換
8.5 USB轉(zhuǎn)串口通信
8.6 通過串行口實現(xiàn)數(shù)據(jù)的互傳應(yīng)用實例
8.7 課后習(xí)題
第9章 一踐一行 穩(wěn)打穩(wěn)扎:數(shù)組和字符串以及按鍵的學(xué)習(xí)
9.1 夯實基礎(chǔ)——C語言之?dāng)?shù)組、字符串
9.1.1 數(shù)組
9.1.2 字符串
9.2 IAP15W4K58S4單片機的可編程計數(shù)器陣列
9.2.1 CCP/PCA/PWM內(nèi)部結(jié)構(gòu)概述
9.2.2 CCP/PCA/PWM的捕獲模式應(yīng)用實例
9.2.3 CCP/PCA/PWM的16位軟件定時器模式應(yīng)用實例
9.2.4 CCP/PCA/PWM的高速脈沖輸出模式應(yīng)用實例
9.3 按鍵的處理方法
9.3.1 獨立按鍵的介紹
9.3.2 矩陣按鍵的組成
9.3.3 觸摸按鍵的概述
9.3.4 A/D采樣方式的按鍵介紹
9.4 獨立按鍵掃描方法以及消抖原理的介紹
9.4.1 獨立按鍵的掃描方法
9.4.2 鍵盤消抖的基本原理
9.4.3 帶消抖的按鍵應(yīng)用程序
9.5 矩陣按鍵的掃描方法和狀態(tài)機的介紹
9.5.1 矩陣按鍵的掃描方法
9.5.2 狀態(tài)機的應(yīng)用背景和概述
9.5.3 狀態(tài)機法的按鍵檢測
9.5.4 基于狀態(tài)機的獨立按鍵掃描法
9.6 按鍵掃描的應(yīng)用實例
9.6.1 行掃描法的矩陣按鍵應(yīng)用實例
9.6.2 高低電平翻轉(zhuǎn)法的矩陣按鍵應(yīng)用實例
9.6.3 基于狀態(tài)機的矩陣按鍵應(yīng)用實例
9.7 課后習(xí)題
第10章 世界之窗 包羅萬象:函數(shù)與液晶的基本應(yīng)用
10.1 夯實基礎(chǔ)——C語言之函數(shù)
10.1.1 函數(shù)的定義和應(yīng)用
10.1.2 函數(shù)的分類及命名規(guī)則
10.2 Keil5的軟件與硬件仿真以及延時的學(xué)習(xí)
10.2.1 基于Keil5的軟件仿真應(yīng)用實例
10.2.2 軟件仿真與延時的學(xué)習(xí)
10.2.3 基于Keil5與IAP系列單片機的硬件仿真應(yīng)用實例
10.3 1602液晶的應(yīng)用概述
10.3.1 1602液晶模組和電路設(shè)計的介紹
10.3.2 1602液晶的控制指令和時序圖
10.3.3 1602液晶的基本應(yīng)用實例
10.4 1602液晶的應(yīng)用實例
10.4.1 1602移屏指令的學(xué)習(xí)
10.4.2 液晶CGRAM的操作實例
10.4.3 串口和1602液晶的綜合應(yīng)用實例
10.5 課后習(xí)題
第11章 沙場點兵 看風(fēng)轉(zhuǎn)舵:指針與LED點陣屏的應(yīng)用
11.1 夯實基礎(chǔ)—C語言之指針
11.1.1 指針的基本用法
11.1.2 指針與數(shù)組
11.1.3 指針與函數(shù)
11.2 同步串行外圍接口(SPI接口)的應(yīng)用概述
11.2.1 SPI接口的介紹
11.2.2 單片機內(nèi)部SPI的寄存器
11.2.3 SPI接口的數(shù)據(jù)通信方式與時序圖
11.2.4 SPI的應(yīng)用模式與串行Flash的應(yīng)用實例
11.3 LED點陣屏的原理及應(yīng)用介紹
11.3.1 LED點陣屏的內(nèi)部原理
11.3.2 LED點陣屏的硬件電路設(shè)計
11.3.3 LED點陣屏的基本顯示實例
11.4 LED點陣屏的應(yīng)用實例
11.4.1 通過移屏方式顯示字符——I ♡ U
11.4.2 LED點陣屏的移屏簡易算法
11.5 課后習(xí)題
第12章 雙道同謀 有理有庫:I2C總線與庫開發(fā)的介紹
12.1 I2C總線的通信協(xié)議
12.1.1 I2C總線的初步認(rèn)識
12.1.2 I2C總線的時序格式
12.2 AT24C02的基本應(yīng)用
12.2.1 AT24C02的簡述和硬件電路設(shè)計
12.2.2 AT24C02的通信協(xié)議與時序圖
12.2.3 基于AT24C02的I2C總線協(xié)議與軟件分析
12.3 復(fù)合數(shù)據(jù)類型的介紹
12.3.1 結(jié)構(gòu)體
12.3.2 枚舉
12.3.3 typedef關(guān)鍵字的應(yīng)用介紹
12.4 STC15系列單片機內(nèi)部E2PROM的應(yīng)用
12.4.1 與單片機內(nèi)部E2PROM有關(guān)的寄存器
12.4.2 單片機內(nèi)部E2PROM的應(yīng)用實例
12.5 庫函數(shù)的介紹與應(yīng)用實例
12.5.1 STC15系列庫函數(shù)的介紹
12.5.2 庫函數(shù)的應(yīng)用實例
12.6 課后習(xí)題
第13章 疊矩重規(guī) 矩步方行:PWM的初步認(rèn)識與相關(guān)應(yīng)用
13.1 PWM的初步認(rèn)識
13.2 利用可編程計數(shù)陣列產(chǎn)生PWM
13.2.1 脈寬調(diào)節(jié)模式(PWM)
13.2.2 利用CCP/PCA輸出PWM的應(yīng)用實例
13.2.3 利用CCP/PCA高速脈沖輸出功能實現(xiàn)2兩路PWM
13.2.4 用T0輸出PWM
13.3 增強型高精度PWM的基本應(yīng)用介紹
13.3.1 與高精度PWM相關(guān)的功能寄存器
13.3.3 蜂鳴器和PWM的應(yīng)用實例
13.3.4 LED燈和PWM的應(yīng)用實例
13.4 常用的電機驅(qū)動方式
13.4.1 電機驅(qū)動芯片L298的初步認(rèn)識
13.4.2 H橋驅(qū)動電路的簡單介紹
13.5 三種常用電機的驅(qū)動方法
13.5.1 直流電機的學(xué)習(xí)
13.5.2 簡易步進電機的介紹與應(yīng)用
13.5.3 舵機的基本操作實例
13.6 課后習(xí)題
第14章 雨散云飛 波駭云屬:數(shù)模DA與模數(shù)DA的轉(zhuǎn)換
14.1 D/A和A/D轉(zhuǎn)換的初步介紹
14.1.1 D/A轉(zhuǎn)換原理
14.1.2 A/D轉(zhuǎn)換原理
14.2 STC15單片機內(nèi)部的ADC
14.2.1 STC15系列單片機內(nèi)部ADC的結(jié)構(gòu)
14.2.2 與ADC有關(guān)的寄存器介紹
14.2.3 ADC的簡單應(yīng)用實例
14.3 基于ADC的獨立按鍵檢測
14.4 電容感應(yīng)式觸摸按鍵(PWM+ADC)
14.5 基于PWM與RC濾波器的SPWM
14.6 課后習(xí)題
第15章 泥沙俱下 排沙簡金:紅外編解碼與邏輯分析儀
15.1 Saleae邏輯分析儀
15.1.1 示波器和邏輯分析儀的比較
15.1.2 邏輯分析儀的工作原理和分類
15.1.3 邏輯分析儀的相關(guān)概述
15.1.4 Saleae邏輯分析儀的使用步驟
15.2 紅外遙控的原理
15.3 紅外解碼過程分析
15.4 紅外解碼的具體實現(xiàn)例程
15.5 紅外編碼與發(fā)射的過程分析
15.6 紅外編碼與發(fā)射的應(yīng)用例程
15.7 課后習(xí)題
第20章 天上天下 唯她獨尊:PID算法與四軸飛行器的設(shè)計
20.1 PID算法介紹
20.1.1 PID算法概述
20.1.2 PID算法的分類與應(yīng)用實例
20.1.3 老外的位置式PID算法
20.2 四軸飛行器的硬件模型建立
20.2.1 搭建四軸飛行器的主板
20.2.2 搭建四軸飛行器的遙控器
20.3 軟件算法的介紹
20.3.1 四軸的運行狀況與電機轉(zhuǎn)動的關(guān)系
20.3.2 PID控制電機的參數(shù)整定
20.3.3 四元數(shù)與濾波算法
20.4 四軸主板的綜合程序
20.5 四軸遙控器的綜合程序
20.6 課后習(xí)題
http://www.zg4o1577.cn/bbs/dpj-80276-1.html
|
|