《平凡的探索:單片機工程師與教師的思考》通過一系列單片機項目開發(fā)案例的分析,有側(cè)重地展示各個案例,包括作者開發(fā)過程中曾走過的彎路,盡可能地啟迪讀者的思維,教給讀者“學習與開發(fā)”的方法。
《平凡的探索:單片機工程師與教師的思考》共分15章,第1章介紹開發(fā)環(huán)境,其余各章分別針對一個案例進行介紹。這些案例有一些是專門設(shè)計的學習任務(wù),有一些是從實際項目中提取而來。各章的內(nèi)容除了知識點的介紹外,還盡可能引導(dǎo)讀者進行思考,理解諸如“如何開發(fā)出符合客戶要求的產(chǎn)品”,“如何不斷跟蹤新知識、新技術(shù)”等問題,幫助讀者盡快從“學習者”轉(zhuǎn)變?yōu)椤伴_發(fā)者”。
《平凡的探索:單片機工程師與教師的思考》適用于已掌握單片機基本知識的工程師、大學生等人員閱讀,也可以作為單片機開發(fā)人員的參考用書。
《平凡的探索:單片機工程師與教師的思考》特色:作者從事單片機開發(fā)與教學工作多年,經(jīng)常與各類學員打交道,同時作者也經(jīng)常關(guān)注各電子論壇和博客,從中逐漸體會到人們在單片機學習過程中的思維模式,并據(jù)此設(shè)計了一些教學方案,撰寫了一些教材,獲得了學員和讀者的認可!镀椒驳奶剿鳎簡纹瑱C工程師與教師的思考》是作者為那些已初步入門,但在進一步提高過程中遇到困難的學員和讀者而編寫的。 《平凡的探索:單片機工程師與教師的思考》強調(diào)建立真實的教學情景,為講清楚某個知識點,盡可能找一個用到該知識點的工程實例來分析;找不到合適的工程實例時,就專門為此設(shè)計一個應(yīng)用作品。 《平凡的探索:單片機工程師與教師的思考》所舉的例子,并不著眼于“高科技、新技術(shù)”,也并不提供實現(xiàn)這些例子功能的“完美”解決方案,而是希望讀者能夠“動起來”。多數(shù)例子是易實現(xiàn)的,并有一定的“應(yīng)用”效果;部分例子在分析完后,又專門為讀者設(shè)計了略深一層次的應(yīng)用要求,以激發(fā)讀者自行動手練習的欲望。 《平凡的探索:單片機工程師與教師的思考》所分析的知識點,是作者根據(jù)自己的觀察,從大家普遍比較關(guān)心的技術(shù)熱點中選擇出來的。每個例子的分析詳細而各有側(cè)重。很多問題必須依靠源程序才能講清楚,但又盡量避免單純地進行源程序的堆積。讀者對象 《平凡的探索:單片機工程師與教師的思考》的讀者對象為有志于鉆研單片機技術(shù)的各類人員。
很多讀者在讀完作者所編著的《單片機輕松入門》、《單片機C語言輕松入門》等書后,來信與作者探討這樣一個問題:書上的例題都做了,自我感覺也有一定的編程能力了,但就是不能進行獨立的開發(fā)工作,應(yīng)該如何進一步深入學習,從而盡快具有獨立工作的能力?
這是很多人學習中都會遇到的問題,這個問題單純依靠“學習”或者“讀書”很難解決。但是一本好書仍可以提供一個較好的途徑,幫助讀者盡快從“學習者”進入“開發(fā)者”的行列,本書是作者為解決這一問題而進行的嘗試。
本書主要是基于單片機項目開發(fā)案例來進行討論,但作者并非僅僅羅列案例的各種資源,更非簡單地列出源程序,而是對所選擇的案例進行深入分析,將作者在這一項目開發(fā)時所經(jīng)歷的過程(包括曾走過的彎路)有選擇地展示出來。這樣做的目的是希望能啟迪讀者的思維,真正教給讀者“學習與開發(fā)”的方法,而并非僅僅提供給讀者一個可以復(fù)制的實例。本書所選擇的案例難易程度適中,并且各個案例都會有針對性地解決一些中等級別難度的問題,比如小數(shù)的運算和顯示問題、C語言多模塊編程問題等。
本書包括以下內(nèi)容:第1章是開發(fā)環(huán)境的介紹,介紹目前較為常見和流行的開發(fā)工具,如仿真機、在線編程、JTAG調(diào)試器等,與工程師所用的開發(fā)環(huán)境保持一致。第2~5章通過一個統(tǒng)一的平臺學習幾個典型的具有獨立功能的“小產(chǎn)品”,如電壓測量、速度測量、溫度測量以及使用PID進行溫度控制等。每個小產(chǎn)品都提供電路圖、源程序,并介紹相關(guān)的知識,調(diào)試過程中需要注意的問題等。這些小產(chǎn)品花費不大,讀者可以自行練習制作。第6~15章的內(nèi)容是從實際的產(chǎn)品中提取出來的功能模塊,或者針對讀者常見問題而專門設(shè)計的學習任務(wù)。第6章和第7章通過單片機控制機械手、機加工平臺,學習如何模仿PLC中定時器的用法和狀態(tài)轉(zhuǎn)移法在編程中的應(yīng)用。第8章介紹的是一個通用顯示器的開發(fā),重點展示產(chǎn)品不斷演化的過程,讓讀者看到開發(fā)者緊跟當前技術(shù)發(fā)展而不斷改進設(shè)計的思路。本章結(jié)尾提出新的設(shè)計方案,讀者可在這個產(chǎn)品的基礎(chǔ)上進一步地研發(fā)。第9章是針對很多讀者遇到的學習瓶頸問題設(shè)計的一個趣味任務(wù),展示一個小項目開發(fā)的完整過程,教給讀者如何將零散的程序片斷“裝配”成一個能實現(xiàn)完整功能的程序。本章還給讀者提出了“如何才能開發(fā)出符合客戶要求的產(chǎn)品”這樣一個命題,引領(lǐng)讀者進行這方面的思考,以便達到能夠獨立完成項目的目的。第10章“紅外遙控”給讀者所呈現(xiàn)的是作者在遇到未知知識時,如何探索并解決問題的過程。第11章“‘星際飛船’控制器”是一個綜合性較強的實際項目,通過對這一項目開發(fā)過程的研讀,讀者可以領(lǐng)悟到模塊化設(shè)計的思想。
周堅,網(wǎng)絡(luò)中被慣稱為“平凡”。以教書為業(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 模/數(shù)轉(zhuǎn)換簡介19
3.2 TLC1543特性簡介19
3.3 單片機與TLC1543芯片的接口20
3.4 TLC1543驅(qū)動程序編寫21
3.5 多路輸入電壓表程序的編寫24
第4章 步進電機驅(qū)動
4.1 步進電機常識29
4.2 永磁式步進電機的控制30
4.3 步進電機的驅(qū)動實例32
4.3.1 要求分析32
4.3.2 程序?qū)崿F(xiàn)33
4.4 使用步進電機驅(qū)動器40
4.4.1 步進電機驅(qū)動器40
4.4.2 用步進電機驅(qū)動器驅(qū)動步進電機42
思考與實踐43
第5章 溫度的測量與控制
5.1 使用DS18B20制作溫度計44
5.1.1 1Wire總線介紹44
5.1.2 DS18B20器件44
5.1.3 用單片機控制DS18B20制作溫度計49
5.2 使用數(shù)字PID控制溫度54
5.2.1 數(shù)字PID的原理54
5.2.2 使用數(shù)字PID控制加熱器57
思考與實踐66
第6章 使用單片機控制機械手
6.1 外形與結(jié)構(gòu)67
6.2 動作過程描述68
6.3 單片機控制電路69
6.4 程序編寫73
6.4.1 控制板與控制對象的關(guān)系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 控制板與控制對象的關(guān)系91
7.3.2 工作狀態(tài)細分92
7.4 控制程序93
第8章 通用顯示器的開發(fā)
8.1 硬件電路100
8.2 軟件部分102
8.3 顯示器的使用108
8.4 設(shè)計改進110
8.4.1 硬件設(shè)計的改進110
8.4.2 軟件設(shè)計的改進112
第9章 電子熒火蟲
9.1 熒火蟲發(fā)光與PWM技術(shù)115
9.1.1 PWM技術(shù)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 字符型液晶顯示器的驅(qū)動程序126
9.3.3 液晶顯示程序與現(xiàn)有程序的組合130
9.4 電子熒火蟲的制作132
9.4.1 基本功能的實現(xiàn)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 設(shè)置狀態(tài)描述156
11.2 硬件設(shè)計157
11.3 模塊化編程159
11.4 程序分析162
第12章 智能儀器設(shè)計
12.1 設(shè)計任務(wù)分析195
12.2 浮點數(shù)195
12.2.1 浮點數(shù)的基本知識196
12.2.2 C51中的浮點數(shù)196
12.2.3 浮點數(shù)轉(zhuǎn)化為整型數(shù)201
12.3 智能儀器設(shè)計的實現(xiàn)202
第13章 便攜式無線搶答器
13.1 便攜無線搶答器方案選擇217
13.2 點陣型液晶屏簡介218
13.2.1 FM12864I及其控制芯片HD61202218
13.2.2 HD61202及其兼容控制驅(qū)動器的特點220
13.2.3 HD61202及其兼容控制驅(qū)動器的指令系統(tǒng)221
13.2.4 字模的產(chǎn)生222
13.2.5 LCM驅(qū)動程序227
13.3 無線模塊233
13.4 手持式終端的軟件設(shè)計235
思考與實踐252
第14章 開放式PLC的開發(fā)
14.1 PLC簡介255
14.2 梯形圖轉(zhuǎn)換方法分析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 系統(tǒng)變量設(shè)計267
14.3.5 計數(shù)器類指令269
14.3.6 定時器類指令270
14.3.7 輸出處理273
14.4 較高代碼效率的程序274
14.4.1 指令代碼分析274
14.4.2 區(qū)分指令類別276
14.4.3 內(nèi)存單元分配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 上位機程序的實現(xiàn)285
第15章 全數(shù)字信號發(fā)生器
15.1 儀器性能分析293
15.2 初步設(shè)計293
15.2.1 顯示部分293
15.2.2 鍵盤部分294
15.2.3 工作過程總體描述294
15.3 硬件電路的設(shè)計294
15.3.1 整體電路設(shè)計295
15.3.2 原理圖設(shè)計296
15.3.3 面板與印刷線路板設(shè)計299
15.3.4 儀器裝配300
15.4 軟件設(shè)計301
15.4.1 鍵盤程序301
15.4.2 小數(shù)點處理303
15.4.3 AT24C01A的讀/寫304
15.4.4 信號產(chǎn)生304
參考文獻307
(2)DS18820的測溫原理
DS18820的測溫原理如圖5-4所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1。高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入。圖中還隱含計數(shù)門,當計數(shù)門打開時,DS18820就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖進行計數(shù),進而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55℃所對應(yīng)的基數(shù)分別置人減法計數(shù)器1和溫度寄存器中,減法計數(shù)器1和溫度寄存器被預(yù)置在-55℃所對應(yīng)的一個基數(shù)值。減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當減法計數(shù)器1的預(yù)置值減到0時,溫度寄存器的值將加1。減法計數(shù)器1的預(yù)置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán),直到減法計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。圖5-4中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正減法計數(shù)器的預(yù)置值。只要計數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達到被測溫度值,這就是DSl8820的測溫原理。