《平凡的探索:單片機工程師與教師的思考》通過一系列單片機項目開發(fā)案例的分析,有側重地展示各個案例,包括作者開發(fā)過程中曾走過的彎路,盡可能地啟迪讀者的思維,教給讀者“學習與開發(fā)”的方法。
《平凡的探索:單片機工程師與教師的思考》共分15章,第1章介紹開發(fā)環(huán)境,其余各章分別針對一個案例進行介紹。這些案例有一些是專門設計的學習任務,有一些是從實際項目中提取而來。各章的內容除了知識點的介紹外,還盡可能引導讀者進行思考,理解諸如“如何開發(fā)出符合客戶要求的產品”,“如何不斷跟蹤新知識、新技術”等問題,幫助讀者盡快從“學習者”轉變?yōu)椤伴_發(fā)者”。
《平凡的探索:單片機工程師與教師的思考》適用于已掌握單片機基本知識的工程師、大學生等人員閱讀,也可以作為單片機開發(fā)人員的參考用書。
《平凡的探索:單片機工程師與教師的思考》特色:作者從事單片機開發(fā)與教學工作多年,經常與各類學員打交道,同時作者也經常關注各電子論壇和博客,從中逐漸體會到人們在單片機學習過程中的思維模式,并據此設計了一些教學方案,撰寫了一些教材,獲得了學員和讀者的認可!镀椒驳奶剿鳎簡纹瑱C工程師與教師的思考》是作者為那些已初步入門,但在進一步提高過程中遇到困難的學員和讀者而編寫的。 《平凡的探索:單片機工程師與教師的思考》強調建立真實的教學情景,為講清楚某個知識點,盡可能找一個用到該知識點的工程實例來分析;找不到合適的工程實例時,就專門為此設計一個應用作品。 《平凡的探索:單片機工程師與教師的思考》所舉的例子,并不著眼于“高科技、新技術”,也并不提供實現這些例子功能的“完美”解決方案,而是希望讀者能夠“動起來”。多數例子是易實現的,并有一定的“應用”效果;部分例子在分析完后,又專門為讀者設計了略深一層次的應用要求,以激發(fā)讀者自行動手練習的欲望。 《平凡的探索:單片機工程師與教師的思考》所分析的知識點,是作者根據自己的觀察,從大家普遍比較關心的技術熱點中選擇出來的。每個例子的分析詳細而各有側重。很多問題必須依靠源程序才能講清楚,但又盡量避免單純地進行源程序的堆積。讀者對象 《平凡的探索:單片機工程師與教師的思考》的讀者對象為有志于鉆研單片機技術的各類人員。
很多讀者在讀完作者所編著的《單片機輕松入門》、《單片機C語言輕松入門》等書后,來信與作者探討這樣一個問題:書上的例題都做了,自我感覺也有一定的編程能力了,但就是不能進行獨立的開發(fā)工作,應該如何進一步深入學習,從而盡快具有獨立工作的能力?
這是很多人學習中都會遇到的問題,這個問題單純依靠“學習”或者“讀書”很難解決。但是一本好書仍可以提供一個較好的途徑,幫助讀者盡快從“學習者”進入“開發(fā)者”的行列,本書是作者為解決這一問題而進行的嘗試。
本書主要是基于單片機項目開發(fā)案例來進行討論,但作者并非僅僅羅列案例的各種資源,更非簡單地列出源程序,而是對所選擇的案例進行深入分析,將作者在這一項目開發(fā)時所經歷的過程(包括曾走過的彎路)有選擇地展示出來。這樣做的目的是希望能啟迪讀者的思維,真正教給讀者“學習與開發(fā)”的方法,而并非僅僅提供給讀者一個可以復制的實例。本書所選擇的案例難易程度適中,并且各個案例都會有針對性地解決一些中等級別難度的問題,比如小數的運算和顯示問題、C語言多模塊編程問題等。
本書包括以下內容:第1章是開發(fā)環(huán)境的介紹,介紹目前較為常見和流行的開發(fā)工具,如仿真機、在線編程、JTAG調試器等,與工程師所用的開發(fā)環(huán)境保持一致。第2~5章通過一個統一的平臺學習幾個典型的具有獨立功能的“小產品”,如電壓測量、速度測量、溫度測量以及使用PID進行溫度控制等。每個小產品都提供電路圖、源程序,并介紹相關的知識,調試過程中需要注意的問題等。這些小產品花費不大,讀者可以自行練習制作。第6~15章的內容是從實際的產品中提取出來的功能模塊,或者針對讀者常見問題而專門設計的學習任務。第6章和第7章通過單片機控制機械手、機加工平臺,學習如何模仿PLC中定時器的用法和狀態(tài)轉移法在編程中的應用。第8章介紹的是一個通用顯示器的開發(fā),重點展示產品不斷演化的過程,讓讀者看到開發(fā)者緊跟當前技術發(fā)展而不斷改進設計的思路。本章結尾提出新的設計方案,讀者可在這個產品的基礎上進一步地研發(fā)。第9章是針對很多讀者遇到的學習瓶頸問題設計的一個趣味任務,展示一個小項目開發(fā)的完整過程,教給讀者如何將零散的程序片斷“裝配”成一個能實現完整功能的程序。本章還給讀者提出了“如何才能開發(fā)出符合客戶要求的產品”這樣一個命題,引領讀者進行這方面的思考,以便達到能夠獨立完成項目的目的。第10章“紅外遙控”給讀者所呈現的是作者在遇到未知知識時,如何探索并解決問題的過程。第11章“‘星際飛船’控制器”是一個綜合性較強的實際項目,通過對這一項目開發(fā)過程的研讀,讀者可以領悟到模塊化設計的思想。
周堅,網絡中被慣稱為“平凡”。以教書為業(yè),開發(fā)些單片機項目,故自封為工程師。好讀書,愛動手,以求甚解;常思考,每有所得,必以行動驗證之;心無城府、不慕名利,所做皆小事,但均為實事。
第1章 單片機的開發(fā)環(huán)境
1.1 仿真機1
1.2 編程器2
1.3 其他開發(fā)工具5
1.3.1 ISP工具6
1.3.2 JTAG工具7
第2章 測速表的制作
2.1 脈沖信號的獲得9
2.1.1 霍爾傳感器9
2.1.2 光電傳感器11
2.1.3 光電編碼器11
2.2 硬件連接12
2.3 軟件編程13
思考與實踐18
第3章 多路輸入電壓表的制作
3.1 模/數轉換簡介19
3.2 TLC1543特性簡介19
3.3 單片機與TLC1543芯片的接口20
3.4 TLC1543驅動程序編寫21
3.5 多路輸入電壓表程序的編寫24
第4章 步進電機驅動
4.1 步進電機常識29
4.2 永磁式步進電機的控制30
4.3 步進電機的驅動實例32
4.3.1 要求分析32
4.3.2 程序實現33
4.4 使用步進電機驅動器40
4.4.1 步進電機驅動器40
4.4.2 用步進電機驅動器驅動步進電機42
思考與實踐43
第5章 溫度的測量與控制
5.1 使用DS18B20制作溫度計44
5.1.1 1Wire總線介紹44
5.1.2 DS18B20器件44
5.1.3 用單片機控制DS18B20制作溫度計49
5.2 使用數字PID控制溫度54
5.2.1 數字PID的原理54
5.2.2 使用數字PID控制加熱器57
思考與實踐66
第6章 使用單片機控制機械手
6.1 外形與結構67
6.2 動作過程描述68
6.3 單片機控制電路69
6.4 程序編寫73
6.4.1 控制板與控制對象的關系73
6.4.2 工作狀態(tài)細分74
6.4.3 控制程序分析76
思考與實踐88
第7章 使用單片機控制加工站
7.1 加工過程描述89
7.2 硬件電路90
7.3 控制對象分析91
7.3.1 控制板與控制對象的關系91
7.3.2 工作狀態(tài)細分92
7.4 控制程序93
第8章 通用顯示器的開發(fā)
8.1 硬件電路100
8.2 軟件部分102
8.3 顯示器的使用108
8.4 設計改進110
8.4.1 硬件設計的改進110
8.4.2 軟件設計的改進112
第9章 電子熒火蟲
9.1 熒火蟲發(fā)光與PWM技術115
9.1.1 PWM技術115
9.1.2 STC12C56S2的PWM發(fā)生器模塊116
9.1.3 用單片機生成PWM波形120
9.2 用按鍵改變占空比121
9.3 將占空比顯示出來124
9.3.1 字符型液晶顯示屏124
9.3.2 字符型液晶顯示器的驅動程序126
9.3.3 液晶顯示程序與現有程序的組合130
9.4 電子熒火蟲的制作132
9.4.1 基本功能的實現132
9.4.2 真實熒火蟲發(fā)光的模擬133
第10章 紅外遙控
10.1 紅外遙控知識136
10.2 紅外遙控信號檢測138
10.2.1 STC12C5A56S2的串行通信138
10.2.2 測試程序143
10.3 遙控器的制作150
第11章 “星際飛船”控制器
11.1 “星際飛船”狀態(tài)與功能154
11.1.1 運行狀態(tài)描述154
11.1.2 功能描述155
11.1.3 設置狀態(tài)描述156
11.2 硬件設計157
11.3 模塊化編程159
11.4 程序分析162
第12章 智能儀器設計
12.1 設計任務分析195
12.2 浮點數195
12.2.1 浮點數的基本知識196
12.2.2 C51中的浮點數196
12.2.3 浮點數轉化為整型數201
12.3 智能儀器設計的實現202
第13章 便攜式無線搶答器
13.1 便攜無線搶答器方案選擇217
13.2 點陣型液晶屏簡介218
13.2.1 FM12864I及其控制芯片HD61202218
13.2.2 HD61202及其兼容控制驅動器的特點220
13.2.3 HD61202及其兼容控制驅動器的指令系統221
13.2.4 字模的產生222
13.2.5 LCM驅動程序227
13.3 無線模塊233
13.4 手持式終端的軟件設計235
思考與實踐252
第14章 開放式PLC的開發(fā)
14.1 PLC簡介255
14.2 梯形圖轉換方法分析256
14.2.1 LD類指令257
14.2.2 AND和ANI類指令258
14.2.3 OR和ORI類指令258
14.2.4 ANB、ORB、MPS、MRD、MPP、INV指令259
14.2.5 MC指令與MCR指令259
14.2.6 OUT類指令259
14.2.7 SET與RST類指令260
14.2.8 LDP和LDF指令261
14.2.9 NOP和END指令261
14.3 使用單片機處理PLC程序262
14.3.1 整體流程262
14.3.2 輸入采樣265
14.3.3 PLC指令的分解266
14.3.4 系統變量設計267
14.3.5 計數器類指令269
14.3.6 定時器類指令270
14.3.7 輸出處理273
14.4 較高代碼效率的程序274
14.4.1 指令代碼分析274
14.4.2 區(qū)分指令類別276
14.4.3 內存單元分配277
14.4.4 對各軟元件進行操作278
14.4.5 鎖存類指令處理279
14.4.6 沿跳變指令處理280
14.4.7 拓展與思考283
14.5 上位機軟件編寫284
14.5.1 Visual Basic 2008 Express簡介284
14.5.2 上位機程序的實現285
第15章 全數字信號發(fā)生器
15.1 儀器性能分析293
15.2 初步設計293
15.2.1 顯示部分293
15.2.2 鍵盤部分294
15.2.3 工作過程總體描述294
15.3 硬件電路的設計294
15.3.1 整體電路設計295
15.3.2 原理圖設計296
15.3.3 面板與印刷線路板設計299
15.3.4 儀器裝配300
15.4 軟件設計301
15.4.1 鍵盤程序301
15.4.2 小數點處理303
15.4.3 AT24C01A的讀/寫304
15.4.4 信號產生304
參考文獻307
(2)DS18820的測溫原理
DS18820的測溫原理如圖5-4所示,圖中低溫度系數晶振的振蕩頻率受溫度的影響很小,用于產生固定頻率的脈沖信號送給減法計數器1。高溫度系數晶振隨溫度變化其振蕩頻率明顯改變,所產生的信號作為減法計數器2的脈沖輸入。圖中還隱含計數門,當計數門打開時,DS18820就對低溫度系數振蕩器產生的時鐘脈沖進行計數,進而完成溫度測量。計數門的開啟時間由高溫度系數振蕩器來決定,每次測量前,首先將-55℃所對應的基數分別置人減法計數器1和溫度寄存器中,減法計數器1和溫度寄存器被預置在-55℃所對應的一個基數值。減法計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,當減法計數器1的預置值減到0時,溫度寄存器的值將加1。減法計數器1的預置將重新被裝入,減法計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環(huán),直到減法計數器2計數到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數值即為所測溫度。圖5-4中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正減法計數器的預置值。只要計數門仍未關閉就重復上述過程,直至溫度寄存器值達到被測溫度值,這就是DSl8820的測溫原理。