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