入門篇
第1章經(jīng)典的LED例子
1.18051單片機(jī)點(diǎn)亮LED
1.2PIC單片機(jī)點(diǎn)亮LED
1.3MSP430單片機(jī)點(diǎn)亮LED
1.4STM32單片機(jī)點(diǎn)亮LED
1.5Arduino點(diǎn)亮LED
第2章LED點(diǎn)亮例子剖析
2.1LED電路解析
2.2單片機(jī)科普
2.2.1計(jì)算機(jī)主板
2.2.2手機(jī)CPU
2.2.3單片機(jī)內(nèi)部組成
2.3單片機(jī)運(yùn)行程序解剖
2.3.1CPU運(yùn)行程序的本質(zhì)
2.3.2點(diǎn)亮一顆LED匯編代碼剖析
第3章初學(xué)者搭建電路神器面包板
3.1初學(xué)者使用面包板的好處
3.2面包板使用簡介
3.3面包板在實(shí)際項(xiàng)目中的妙用
3.3.1原型電路驗(yàn)證
3.3.2單片機(jī)連接分立元器件或模塊
3.3.3多平臺(tái)、多模塊系統(tǒng)驗(yàn)證
第4章開發(fā)環(huán)境搭建
4.18051單片機(jī)Keil開發(fā)環(huán)境搭建
4.1.18051單片機(jī)軟件安裝與編譯
4.1.2STC系列8051單片機(jī)固件下載
4.2STM32單片機(jī)開發(fā)環(huán)境搭建
4.2.1STM32單片機(jī)軟件安裝與編譯
4.2.2STM32單片機(jī)固件下載
4.3MSP430開發(fā)環(huán)境搭建
4.3.1軟件安裝與編譯
4.3.2代碼下載
4.4PIC開發(fā)環(huán)境搭建
4.4.1軟件安裝與編譯
4.4.2PIC單片機(jī)代碼下載
4.5Arduino開發(fā)環(huán)境搭建
4.5.1Arduino IDE開發(fā)環(huán)境搭建
4.5.2Arduino IDE代碼下載
4.5.3MSP430 Arduino開發(fā)環(huán)境搭建
4.6Proteus仿真環(huán)境搭建
第5章I/O端口的基本輸出多變的輸出控制
5.1I/O基本知識(shí)
5.1.1萬物皆有電阻
5.1.2歐姆定律
5.1.3I/O專業(yè)術(shù)語
5.2單片機(jī)I/O端口輸出電路內(nèi)部剖析
5.2.1STC單片機(jī)I/O端口
5.2.2PIC16單片機(jī)I/O端口
5.2.3MSP430單片機(jī)I/O端口
5.2.4STM32單片機(jī)I/O端口
5.3I/O作為輸出使用的幾種方式
5.3.1小電流輸出驅(qū)動(dòng)
5.3.2電平匹配或小功率驅(qū)動(dòng)
5.3.3大功率大電壓驅(qū)動(dòng)
5.3.4設(shè)備工作電壓遠(yuǎn)高于安全電壓
第6章I/O端口的基本輸入不限于按鍵輸入
6.1開關(guān)基礎(chǔ)知識(shí)普及
6.1.1微動(dòng)開關(guān)
6.1.2感應(yīng)開關(guān)
6.1.3電容觸摸開關(guān)
6.1.4人體感應(yīng)模塊
6.1.5普通66按鍵
6.2單片機(jī)I/O輸入模式
6.2.1上拉輸入
6.2.2下拉輸入
6.2.3浮空輸入
6.3單片機(jī)I/O端口輸入電路內(nèi)部剖析
6.3.18051單片機(jī)I/O輸入
6.3.2PIC16單片機(jī)I/O輸入
6.3.3MSP430單片機(jī)I/O輸入
6.3.4STM32單片機(jī)I/O輸入
6.4幾種常用的輸入方式
6.4.1直連單片機(jī)I/O端口
6.4.2匹配電平后連接單片機(jī)I/O端口
6.4.3超過安全電壓或跨距離信號(hào)輸入
第7章單片機(jī)引腳不夠用外掛擴(kuò)展芯片
7.1使用擴(kuò)展芯片情形及步驟
7.28051單片機(jī)驅(qū)動(dòng)8線譯碼器
7.38051單片機(jī)實(shí)現(xiàn)74HC245收發(fā)器驅(qū)動(dòng)
7.48051單片機(jī)驅(qū)動(dòng)74HC573鎖存器
第8章中斷單片機(jī)一心多用卻不落下重要事情
8.1生活中的中斷場(chǎng)景
8.28051單片機(jī)外部中斷
8.3PIC16單片機(jī)中斷
8.4MSP430單片機(jī)中斷
8.5STM32單片機(jī)中斷
8.6Arduino外部中斷
8.7外部中斷總結(jié)
第9章不甘只為定時(shí)器它還有很多妙用
9.18051單片機(jī)定時(shí)器
9.2PIC16定時(shí)器
9.3MSP430定時(shí)器
9.4STM32定時(shí)器
9.5Arduino定時(shí)器
9.6定時(shí)器使用總結(jié)
第10章較少引腳多做事總線
10.1總線的誕生
10.2總線初探
10.2.1手動(dòng)模擬驅(qū)動(dòng)74HC595
10.2.28051單片機(jī)驅(qū)動(dòng)74HC595
10.3SPI總線原理與使用
10.3.1SPI總線介紹
10.3.28051單片機(jī)驅(qū)動(dòng)MCP23S08輸出
10.3.38051單片機(jī)讀取MCP23S08按鍵值
10.4I2C總線驅(qū)動(dòng)PCA9554
10.4.1I2C總線簡單介紹
10.4.2輸出控制流水燈
10.4.3讀取I2C輸入數(shù)據(jù)控制LED
第11章串口通信單片機(jī)與外界溝通常用方式
11.1原始通信方式與基本模式
11.1.1單工通信模式
11.1.2半雙工通信模式
11.1.3全雙工通信模式
11.2串口通信由來
11.3串口通信單片機(jī)實(shí)現(xiàn)
11.3.18051單片機(jī)串口通信
11.3.2PIC16單片機(jī)串口通信
11.3.3MSP430單片機(jī)串口通信
11.3.4STM32單片機(jī)串口通信
11.3.5Arduino單片機(jī)串口通信
11.3.6串口通信總結(jié)
11.4同是串口通信,別被接口和協(xié)議弄糊涂
11.4.1串口通信物理接口
11.4.2串口通信協(xié)議
第12章非常重要卻常被忽略的技能調(diào)試
12.1使用硬件調(diào)試器
12.1.1PIC單片機(jī)調(diào)試
12.1.2MSP430單片機(jī)調(diào)試
12.1.3STM32調(diào)試
12.1.4單片機(jī)調(diào)試器使用總結(jié)
12.2一顆LED能反饋的信息眾多
12.2.1定時(shí)器中斷中使用LED調(diào)試
12.2.2串口通信中使用LED調(diào)試
12.2.3LED直接顯示設(shè)備狀態(tài)
12.3使用最方便的調(diào)試方式串口
12.4任何時(shí)候要有快速找到解決問題的辦法
12.4.1軟硬件問題確定
12.4.2盡可能用熟悉的東西,找可靠渠道購買
第13章有趣的顯示方式
13.1生活中的LED變形記
13.2單總線全彩燈
第14章A/D數(shù)字與模擬世界溝通的橋梁
14.1A/D原理
14.2PIC單片機(jī)A/D
14.3MSP430單片機(jī)A/D
14.4STM32單片機(jī)A/D
14.5Arduino A/D
第15章以為只是PWM,沒想到有這么多魔法
15.1PWM介紹
15.1.1多種方式實(shí)現(xiàn)PWM
15.1.2專用名詞解釋
15.2呼吸燈原理剖析
15.3舵機(jī)控制
15.4步進(jìn)電動(dòng)機(jī)控制
15.4.1步進(jìn)電動(dòng)機(jī)原理
15.4.2步進(jìn)電動(dòng)機(jī)控制實(shí)現(xiàn)
15.5PWM直流電動(dòng)機(jī)調(diào)速
提高篇
第16章學(xué)了很多東西,實(shí)際項(xiàng)目中如何用硬件部分
16.1實(shí)際項(xiàng)目電路與單片機(jī)入門電路差距
16.2供電電路
16.2.1開發(fā)板供電
16.2.2消費(fèi)電子產(chǎn)品供電
16.2.3工業(yè)控制器供電
16.2.4車用控制器供電
16.2.5電源電路總結(jié)
16.3輸入電路
16.3.1開發(fā)板輸入電路
16.3.2工業(yè)輸入電路
16.3.3車用輸入電路
16.4輸出電路
16.4.1工業(yè)功率輸出電路
16.4.2車用功率輸出電路
16.5A/D采集電路
16.5.1工業(yè)A/D輸入電路
16.5.2車用A/D輸入電路
16.6通信電路
16.6.1開發(fā)板通信電路
16.6.2車用通信電路
16.7對(duì)比分析總結(jié)
第17章別讓單片機(jī)學(xué)習(xí)停留在點(diǎn)亮LED
17.1初學(xué)者單片機(jī)軟件能力徘徊不前
17.2怎么改變這種現(xiàn)狀
17.2.1項(xiàng)目分解能力
17.2.2程序框架搭建能力
17.2.3算法能力
17.3單片機(jī)成長捷徑
17.4站在巨人的肩膀上
17.4.1Arduino平臺(tái)
17.4.2開源代碼托管平臺(tái)
第18章要想路走得遠(yuǎn),編程規(guī)范少不了
18.1組織結(jié)構(gòu)
18.1.1工程文件組織結(jié)構(gòu)
18.1.2文件夾代碼組織結(jié)構(gòu)
18.1.3程序結(jié)構(gòu)
18.2標(biāo)識(shí)符命名
18.2.1命名基本原則
18.2.2宏與常量命名
18.2.3變量命名
18.2.4函數(shù)命名
18.2.5文件命名
18.3代碼排版
18.3.1代碼縮進(jìn)
18.3.2代碼分行
18.3.3頭文件
18.3.4注釋排版
18.3.5代碼可讀性
18.4注釋
18.4.1注釋基本原則
18.4.2文件注釋
18.4.3函數(shù)與代碼注釋
18.6變量、結(jié)構(gòu)、常量、宏
18.7函數(shù)規(guī)范
18.7.1函數(shù)命名
18.7.2函數(shù)參數(shù)
18.8變量和結(jié)構(gòu)規(guī)范
18.9宏表達(dá)式與常量規(guī)范
18.10表達(dá)式規(guī)范
第19章模塊化程序編寫
19.1點(diǎn)亮LED模塊化程序改造
19.1.1.h文件編寫
19.1.2.c文件編寫
19.2模塊化程序編寫進(jìn)階
19.3打造可重復(fù)利用的軟件模塊
第20章多功能電子鐘項(xiàng)目開發(fā)基本流程
20.1項(xiàng)目需求
20.2項(xiàng)目規(guī)格說明
20.3項(xiàng)目總體方案
20.4項(xiàng)目概要設(shè)計(jì)
20.4.1硬件概要方案
20.4.2軟件概要設(shè)計(jì)
20.5項(xiàng)目詳細(xì)設(shè)計(jì)
20.6項(xiàng)目調(diào)試與驗(yàn)證
20.7項(xiàng)目測(cè)試
20.8項(xiàng)目批量階段
第21章網(wǎng)紅樓梯燈
21.1項(xiàng)目需求
21.2項(xiàng)目規(guī)格說明
21.3項(xiàng)目總體方案
21.4項(xiàng)目概要設(shè)計(jì)
21.4.1硬件概要方案
21.4.2軟件概要方案
21.5項(xiàng)目詳細(xì)設(shè)計(jì)
21.5.1硬件詳細(xì)方案
21.5.2軟件詳細(xì)方案
21.6項(xiàng)目調(diào)試與驗(yàn)證
21.7項(xiàng)目測(cè)試
第22章狀態(tài)機(jī)編程,不止于按鍵
22.1狀態(tài)機(jī)實(shí)現(xiàn)按鍵功能
22.2狀態(tài)機(jī)基本原理與實(shí)現(xiàn)
22.3狀態(tài)機(jī)串口接收協(xié)議
22.3.1簡單版串口協(xié)議
22.3.2實(shí)用串口協(xié)議
第23章可以不用操作系統(tǒng),但是要會(huì)操作系統(tǒng)方式編程
23.1不要被操作系統(tǒng)嚇到,其實(shí)它也可以很簡單
23.2動(dòng)手寫一個(gè)簡單操作系統(tǒng)
23.2.1構(gòu)造一個(gè)簡單的調(diào)度器
23.2.2任務(wù)更新與啟動(dòng)
23.3與市面主流系統(tǒng)對(duì)比
第24章算法和程序是兩碼事
24.1程序和算法
24.1.1算法本質(zhì)
24.1.2程序本質(zhì)及與算法之間聯(lián)系
24.2單片機(jī)項(xiàng)目中的典型算法
24.2.1濾波算法
24.2.2PID算法
24.2.3校驗(yàn)算法
24.3別在程序上花太多時(shí)間,算法才是值得付出的
第25章Windows和單片機(jī)平臺(tái)算法對(duì)比
25.1貪吃蛇
25.1.1貪吃蛇游戲?qū)崿F(xiàn)要點(diǎn)
25.1.2貪吃蛇原理解析
25.2Windows系統(tǒng)下貪吃蛇代碼解析
25.2.1游戲區(qū)域初始化
25.2.2繪制食物與蛇身
25.2.3檢測(cè)蛇碰撞
25.2.4蛇吃食物
25.2.5蛇身移動(dòng)坐標(biāo)更新
25.2.6蛇身變換方向
25.3單片機(jī)實(shí)現(xiàn)貪吃蛇
25.3.1游戲變量與宏定義
25.3.2復(fù)位蛇身與游戲開始
25.3.3按鍵檢測(cè)與設(shè)定蛇運(yùn)動(dòng)方向
25.3.4蛇身移動(dòng)坐標(biāo)更新
25.3.5吃食物檢測(cè)
25.3.6產(chǎn)生新食物
25.3.7碰撞檢測(cè)
25.3.8顯示蛇與食物
25.4俄羅斯方塊
25.4.1俄羅斯方塊類型
25.4.2方塊下落顯示區(qū)域
25.4.3預(yù)覽方塊和分?jǐn)?shù)顯示
25.4.4按鍵檢測(cè)和移動(dòng)方塊
25.4.5旋轉(zhuǎn)方塊
25.4.6方塊消除
第26章數(shù)據(jù)結(jié)構(gòu)感受不到你的存在
26.1鏈表多任務(wù)調(diào)度
26.1.1單向鏈表
26.1.2雙向鏈表
26.2隊(duì)列通信緩沖
26.2.1環(huán)形隊(duì)列基本操作
26.2.28051單片機(jī)隊(duì)列操作示例
26.2.3隊(duì)列操作在實(shí)時(shí)系統(tǒng)中的應(yīng)用
第27章代碼版本工具讓代碼管理更規(guī)范
27.1混亂的代碼管理方式
27.1.1復(fù)制粘貼標(biāo)題命名法
27.1.2復(fù)制粘貼日期管理法
27.3使用工具科學(xué)管理代碼,讓重復(fù)的代碼不再重復(fù)
27.3.1代碼管理軟件介紹
27.3.2代碼管理軟件安裝
27.3.3代碼管理軟件打開與使用
27.4Git科普及作用
27.4.1Git簡介
27.4.2Git能夠解決的問題
27.4.3Git實(shí)現(xiàn)原理
第28章不用寫一行代碼的開發(fā)方式基于模型開發(fā)
28.1一個(gè)基于模型的簡單例子
28.2當(dāng)你以寫代碼為榮時(shí),殊不知正在被機(jī)器悄悄取代
28.3任意單片機(jī)使用基于模型開發(fā)
28.3.18051單片機(jī)使用Simulink模型開發(fā)
28.3.2Simulink生成模型代碼簡單剖析
28.3.3其他單片機(jī)模型移植
28.4基于模型開發(fā)方式進(jìn)階思考
第29章打造實(shí)用的Arduino平臺(tái)
29.1打造個(gè)人的Arduino開發(fā)平臺(tái)
29.1.1添加Arduino支持的單片機(jī)類型
29.1.2添加Arduino軟件庫
29.2Arduino IDE多文件工程建立
29.3多種仿真平臺(tái)總有一個(gè)適合你
29.3.1使用Proteus仿真Arduino
29.3.2在線TinkerCAD仿真
29.3.3使用在線Wokwi仿真
第30章萬能開發(fā)工具VS Code
30.1VS Code簡介
30.2VS Code開發(fā)環(huán)境搭建
30.3單片機(jī)開發(fā)平臺(tái)PlatformIO
30.3.1添加PlatformIO擴(kuò)展插件
30.3.2PlatformIO新建8051單片機(jī)工程
30.3.3PlatformIO新建Arduino工程