基本介紹
內容簡介
劉平編寫這本《深入淺出玩轉51單片機(工程師經驗手記)》的目的是讓那些對單片機有興趣、又能堅持“玩”下去的初學者能夠把它當作一個友好、易於使用、便於自學、樂於幫助的助手。為了達到這個目標,本書採用以下方式:
儘量使用通俗、易懂的語言來闡述問題,便於讀者理解。
採用化整為零的方法,將枯燥、無味的知識分解成小部分,一點一滴地介紹。
對於難理解、難記憶的知識點,儘量採用舉例的方式,使讀者好理解、易記憶。
作者簡介
劉平【網名 殘弈悟恩】曾就職於珠海某電子公司,熱愛電子產品的研發工作,擅長鑽研、記錄和分析經驗與技術。先後在EDN和AET上創辦“51單片機助學”小組,現創立了蘭州文軒電子科技有限公司。
圖書目錄
第一部分 準備篇
筆記1 三問敲開單片機的大門
1.1 什麼是單片機
1.2 為何玩單片機
1.3 如何玩單片機
筆記2 開發必備
2.1 單片機開發流程
2.2 開發平台:MGMC-V1.0實驗板
2.3 開發環境:Keil μ Vision4
實例1 我的第一個程式
2.4 輔助工具
第二部分 實例篇
筆記3 點亮你心中的希望之燈——LED燈
3.1 夯實基礎——各進制的換算
3.2 工程圖示LED
3.3 LED的點點滴滴
3.4 實例解讀LED
實例2 一閃一閃亮晶晶——讓一個LED燈閃爍顯示
實例3 跑馬的漢子——LED跑馬燈(傻瓜版)
實例4 跑馬的漢子——LED跑馬燈(高級版)
實例5 美女長發飄飄流——LED流水燈
3.5 知識擴展——混合編程
實例6 C語言/彙編聯合編程
筆記4 奮鬥警鐘長鳴——蜂鳴器
4.1 夯實基礎——二極體
4.2 蜂鳴器的點點滴滴
4.3 實例詮釋蜂鳴器
實例7 國際求救信號:SOS
實例8 生日快樂
4.4 知識擴展——數字電路和C語言中的邏輯運算
筆記5 數字世界——數碼管
5.1 夯實基礎——三極體
5.2 工程圖示數碼管
5.3 數碼管的點點滴滴
5.4 實例詮釋數碼管
實例9 靜以修身——數碼管靜態顯示
實例10 動人心弦——數碼管動態掃描
5.5 知識擴展——MOS管
筆記6 無怨無悔的定時器打擾者——中斷
6.1 夯實基礎——C語言編程規範
6.2 定時器和中斷的點點滴滴
實例11 “鬼火”燈(一)
6.3 實例詮釋定時器和中斷
實例12 “鬼火”燈(二)
實例13 4位計數器伴隨8盞“鬼火”燈
附加實例 請個大師來捉“鬼”——數碼管的消隱
6.4 知識擴展——復位和晶振電路
筆記7 另類事件的引發者——按鍵
7.1 夯實基礎——C語言之數據
7.2 工程圖示按鍵
7.3 按鍵的點點滴滴
7.4 實例詮釋按鍵
實例14 孤獨的操作手——獨立按鍵
實例15 孕育生命的搖籃——矩陣(按鍵一行列掃描法)
實例16 孕育生命的搖籃——矩陣(按鍵一高低電平翻轉法)
7.5 延時版的消抖背後埋藏著多少深思——狀態機法
實例17 獨立按鍵的檢測——狀態機法
7.6 知識擴展——存儲器
筆記8 Hello Word——液晶
8.1 夯實基礎——C語言條件判斷
8.2 工程圖示LCD
8.3 1602液晶的點點滴滴
實例18 Welcome-MGTECH
8.4 實例詮釋LCDl602
實例19 舞動的字母
8.5 12864液晶的點點滴滴
實例20 王勃,您好
8.6 實例詮釋LCDl2864
實例21 新春快樂——LCD12864
實例22 BirdsLOVE& &簡易計算器——基於LCD12864
實例23 2864液晶的點、線、面
實例24 12864液晶的串口操作法
8.7 知識擴展——Keil4的軟仿真
筆記9 夜晚需要它點綴——LED點陣
9.1 夯實基礎——C語言之循環
9.2 LED點陣的點點滴滴
實例25 點亮LED點陣的第一行
9.3 實例詮釋LED點陣
實例26 顯示“I LOVE YOU”
實例27 “心”動
實例28 流星雨
實例29 山寨版交通指示燈
9.4 知識擴展——各種版本的延時
筆記10 小橋流水——串口通信
10.1 夯實基礎——C語言之數組、字元串
10.2 工程圖示串口
10.3 串口的點點滴滴
10.4 實例詮釋串口
實例30 調試的第三隻手——串口調試
實例31 通信的橋樑——收發必須統一
實例32 上位機與下位機通信載體——串口
10.5 知識擴展——上拉電阻和下拉電阻
筆記11 有一種匯流排叫I2C匯流排
11.1 夯實基礎——C語言之函式
11.2 工程圖示EEPROM
11.3 I2C匯流排和AT24(202的點點滴滴
11.4 實例詮釋I2C匯流排的操作方法
實例33 讀/寫必須統一——AT24C02
實例34 單片機開關機多少次
11.5 知識擴展——單片機的I/O口
筆記12 探究數模、模數的奧秘
12.1 夯實基礎——運算放大器
12.2 工程圖示A/D及D/A
12.3 D/A及A/D的點點滴滴
12.4 實例詮釋A/D和D/A
實例35 互換的代價——A/D&&D/A
實例36 簡易多波形發生器
12.5 知識擴展——10種軟體濾波算法
筆記13 感知冷熱的神秘儀器——溫度感測器
13.1 夯實基礎——C語言之指針
13.2 工程圖示溫度感測器
13.3 溫度感測器的點點滴滴
13.4 實例詮釋溫度感測器
實例37 基於LM75的溫度測試儀
13.5 知識擴展——單片機還養了一隻小“狗”
實例38 LED燈閃爍是因為“狗”餓了
實例39 要讓系統OK必須實時餵狗
筆記14 響聲十二下、開始新一天——時鐘
14.1 夯實基礎——C語言之結構體
14.2 時鐘晶片的點點滴滴
14.3 實例詮釋時鐘
實例40 基於PCF8563的時鐘設計
14.4 知識擴展——與電磁兼容有關的幾個概念
筆記15 玩轉紅外編、解碼
15.1 夯實基礎——電源
15.2 工程圖示紅外編、解碼
15.3 紅外編、解碼的點點滴滴
15.4 實例詮釋紅外編解碼
實例41 紅外解碼
實例42 紅外編碼之發射
15.5 知識擴展——案例解說電源
第三部分 拓展篇
筆記16 重建程式——模組化編程
16.1 Keil4的進階套用——建模
16.2 單片機的模組化編程
16.3 源檔案路徑的添加
16.4 模組化編程的套用實例
實例43 模組化編程——8燈閃爍
實例44 模組化編程——基於定時器的時鐘
筆記17 流行的作業系統——RTX51 Tiny
17.1 概述
17.2 RTX51 Tiny作業系統
17.3 RTX51 Tiny的套用實例
實例45 流星慧燈——基於RTX51 Tiny
實例46 基於RTX51 Tiny的MGMC-V1.0全板測試程式
筆記18 高級指揮者——上位機
18.1 簡述上位機
18.2 上位機編程
18.3 上位機的套用實例
實例47 基於LabWindows/CVI簡易串口助手
實例48 基於V$2010的簡易串口助手
實例49 基於LabVIEW的簡易串口助手
筆記19 DIY必備基礎——PCB
19.1 PCB設計流程
19.2 PCB問答
19.3 PCB軟體的使用
第四部分 項目篇
筆記20 如何搭建MCU的最小系統
20.1 單片機的體系結構
20.2 單片機最小系統
20.3 4種最小系統的搭建方法
筆記21 DIY搖搖棒——1+1項目
21.1 項目概述
21.2 硬體設計
21.3 軟體設計
筆記22 DIY“空調”——菜鳥級項目
22.1 項目概述
22.2 硬體設計
22.3 軟體設計
22.4 DIY“空調”的製作點睛
筆記23 升級版的DIY“空調”——PID算法
23.1 PID概述
23.2 PID方式轉換
23.3 “老外”的PID算法
筆記24 無線溫/濕度測試系統——基於nRF24L01
24.1 項目簡介
24.2 兩個子模組的準備
24.3 發射系統的設計
24.4 接收系統的下位機設計
24.5 接收系統的上位機開發
筆記25 基於Android手機的藍牙智慧型小車
25.1 電機驅動
25.2 實例解讀3種電機
25.3 藍牙模組
25.4 手機控制界面
25.5 曬曬藍牙智慧型小車
筆記26 基於LD3320的語音點歌系統
26.1 工程簡介
26.2 LD3320概述
26.3 系統的調試點睛
筆記27 基於單片機的簡易電視機
27.1 項目背景
27.2 DIY電視的硬體設計
27.3 軟體調試
參考文獻
序言
單片機比起當今流行的ARM、DSP、FPGA顯得有些“遜色”,但其套用的廣泛性並不亞於這三門技術的總和。
本書特點
編寫這本書的目的是讓那些對單片機有興趣、又能堅持“玩”下去的初學者能夠把它當作一個友好、易於使用、便於自學、樂於幫助的助手。為了達到這個目標,本書採用以下方式:
儘量使用通俗、易懂的語言來闡述問題,便於讀者理解。
採用化整為零的方法,將枯燥、無味的知識分解成小部分,一點一滴地介紹。
對於難理解、難記憶的知識點,儘量採用舉例的方式,使讀者好理解、易記憶。
關於內容
全書分為4部分,分別為:準備篇、實例篇、拓展篇、項目篇。
準備篇包含筆記1~2。筆記1主要介紹了單片機的概念及其套用,隨後分享了一些筆者玩單片機的方法和經驗。筆記2主要介紹了玩單片機需要硬體和軟體。
實例篇包括筆記3~15。以筆者自己開發的MGMCV1.0實驗板為硬體平台,由淺入深地帶領讀者從點亮一個LED小燈的實例開始;再到數碼管、蜂鳴器、液晶、LED點陣等外設;之後經由單片機內部資源定時器、中斷、串口;再進階到I2C匯流排,A/D、D/A轉換,時鐘、溫度感測器,最後介紹紅外的編、解碼。在此過程中,筆者運用大量的實例,採用各個擊破的方式,讓讀者邊做實驗、邊掌握理論知識。
拓展篇包含筆記16~19。筆記16講述了工程中最常套用、但其他書本上很少講解的模組化編程。筆記17主要講述了RTX51 Tiny——作業系統,讓讀者從玩單片機開始就對作業系統的概念有個深入的理解,為以後學習Linux、WinCE等作業系統打下堅實的根基。筆記18講述了工控中常用的上位機編程。上位機的編程方式很多,這裡主要講述了基於VS2010、LabVIEW、LabWindows/CVI的編程方法。筆記19講述了硬體設計中很重要的一個知識點——PCB的設計。筆者以現階段流行的Altium Designer 2013和PADS 9.5軟體為例,一步一步講解了元件的封裝、原理圖的設計、PCB的繪製。
項目篇包括筆記20~27。該篇從搭建一個單片機的最小系統開始,之後慢慢過渡到如何製作一個搖搖棒、簡易空調、無線系統、藍牙智慧型小車,最後DIY一台簡易電視(該項目可直接套用到機頂盒、TV行業的測試中)。
關於實驗板
本書所有實例都基於MGMCV1.0實驗板的,該實驗板由筆者親自開發,原理的設計、元件的選型、模組的配置、PCB的繪製等都是精心篩選、策劃的,而且配套了嚴謹、規範、可移植性高的原始碼以及筆者錄製的《31天環遊單片機》視頻、筆者原創的《單片機那些事兒——初級篇、中級篇、高級》PDF資料。
MGMCV1.0實驗板除配套有豐富的教程和視頻以外,還具備以下特性:
接口豐富:32個I/O口、電源連線埠、4個A/D轉換輸入連線埠和1個D/A轉換連線埠全部用排針引出;液晶、單片機、步進電機、紅外萬能接收頭、LED點陣、USB、RS232都預留有與其對應的接線端子或者插座;此外,還預留了時鐘晶片的PWM、中斷以及溫度感測器的中斷外擴連線埠。
資源豐富:此實驗板集成了大量的外圍設備,詳見2.2.2小節。
設計靈活:此實驗板在一些器件選型上比較靈活,如溫度感測器並沒有選擇DS18B20,而是選取了工程中常用的LM75A;時鐘晶片沒有選擇DS1302,而是選擇了精確度更高的PCF8563。
人性化設計:實驗板無論從布局、還是操作方面,都考慮到了人性化的設計,將操作部分放置在左端,顯示部分放置在了右端。同時考慮到調試、供電、通信分開引線的複雜性,此實驗板採用了STC官方推薦的USB轉RS232晶片——CH340T,即可實現一線下載、供電、通信。
關於本書配套資料