|
14.5項目實戰 開始進入本章的重頭戲,也是本書即將結束的綜合訓練,實實在在的實戰項目--智能溫控系統。當接到一個具體項目開發任務后,要根據項目做出框架規劃,整理出邏輯思路,設計電路圖,寫出規范的代碼,調試代碼最終完成功能。 14.5.1項目需求分析作為一個空調的溫控器,基本功能以及使用Kingst51開發板上的電子元件包含: 1、顯示當前室內溫度,使用18B20溫度傳感器和數碼管完成。 2、記錄當前設定的溫度值,以便下次開機直接使用,使用EEPROM完成。 3、當室內溫度高于設定溫度時,啟動壓縮機開始工作,使用繼電器完成。 4、當空調壓縮機損壞,無法降低室內溫度,溫度高到一定值,系統報警,使用蜂鳴器完成。 5、手動調整制冷溫度值和報警溫度值,使用按鍵和數碼管和LED小燈完成。 6、使用LED點陣顯示一個愛心圖像。 14.5.2硬件電路布局和選型設計一個產品,并不是一個所需功能的簡單雜亂堆積,而是要從功能設計,產品布局讓人用起來更舒服、更愉悅、更符合人性化,這才是一個優秀的設計。比如以Kingst51開發板作為智能溫控器的設計參考產品,硬件設計和開發充分考慮的幾個方面。 1、主控芯片通常放到整個線路板的偏中心位置,方便走線。 2、顯示部分的LED小燈、數碼管和點陣都放到線路板右上方比較醒目的位置。 3、按鍵輸入部分,放到線路板的右下角,方便右手按按鍵。 4、繼電器、蜂鳴器放到左上方;USB供電和通信放到左下方。 對于器件的選擇,考慮的因素有: 1、所選器件是否可靠和穩定,根據產品的定位考量。如果是DIY練習為主,器件選擇可以能方便購買就行;如果是批量產品,要充分考慮器件品質,能否耐用,長期使用,盡量不選一些最近半年出的新的器件。 2、所選器件是否滿足批量生產、長期生產的需求。首先避免所選器件為市場淘汰產品,市場上僅有一些二手拆機件,容易造成整個產品次品率大幅提高,生產供應跟不上。其次要確保所選器件廠家的品質和實力,能否確保長期使用不斷貨。 3、選擇器件時考慮部分器件是否方便替代,是否可以有備選方案。 4、所選器件是否方便生產。原則上能用SMT貼片的,就不選插件的;能選機器完成焊接的,就不能選人工組裝的。 5、滿足穩定可靠的基礎上,選擇價格合理的,控制整體產品的硬件成本。 6、最后還可以有美觀上的加分項,比如Kingst51開發板的器件,整個板子設計成紅色,需要手動操作的部件包括插針都選了藍色。 14.5.3程序結構規劃項目需求和硬件規劃已經確定,那就要開始研究如何實現所需要的軟件功能,程序結構如何組織。一個項目,如果需要參與工作的器件比較多,同時實現的功能也很多,為了方便程序編寫和維護,整個程序必須采用模塊化編程,也就是每個功能模塊對應一個.c文件來實現,這種用法在前邊的章節已經開始使用了。一方面,所有的代碼堆到一起會顯得雜亂無章,更重要的是容易造成意外錯誤,程序一旦有邏輯上的問題或者功能增加或者程序更新的需求,修改程序代碼將是一種災難。另外一方面,如果一個項目程序很大的時候,可能需要多個程序開發人員共同參與編程,多模塊的方式也可以讓每位程序員之間的代碼最終很靈活的融合到一起。 模塊的劃分沒有什么教條可以遵循,而是根據具體需要靈活處理,就以這個智能溫控器項目為例。這個項目在實際開發中算是一個微型產品,所以功能和模塊規劃也比較簡單。 1、LED小燈、數碼管和LED點陣,都是顯示部件,因此合并一個功能模塊led.c。 2、矩陣按鍵驅動部分程序代碼,作為單獨的功能模塊keyboard.c。 3、溫度傳感器作為一個獨立的功能模塊DS18b20.c。 4、雖然EEPROM和I2C在本項目中是一起用的,但是依然做成了兩個模塊,方便做成通用的程序用來移植。 5、系統工作模式分為三種模式:正常工作模式,設置繼電器動作溫度和設置蜂鳴器報警溫度,主程序不斷地掃描目前系統所處的模式,掃描按鍵并執行相應的動作,同時主程序定時掃描進行溫度顯示。 隨著程序量逐步增多,程序功能逐步增強,對于程序的劃分需要逐步有分層的思路。其中按鍵、LED、I2C、EEPROM、18B20這些都屬于底層驅動的范疇,它們要共同為上層應用服務,那么上層是什么呢?就是根據最終需要顯示的效果來調度各種驅動函數,根據按鍵的輸入來實現模式切換和溫度調整,并且控制系統進行繼電器動作和蜂鳴器報警動作,這些都屬于應用層的功能。
|