|
 這是運行照片
這是去掉顯示器后的線路板
終結:
1:元件選擇;全部選用低功耗低電壓的串行模塊,包括一總線溫度傳感器DS18B20,串行時鐘DS1302,串行8位筆劃液晶顯示器SMS0801b(長沙太陽人公司產),及89C2051單片機,原本要增加一個頻率輸出的濕度傳感器,因89C2051代碼空間有限而作罷.
2:開發工具,51開發板,KEIL C51,自己用試驗板焊的板子(開發完成,試驗板就成了成品板了),EP51PRO編程器,XL1000主要用來測試DS18B20及重新熟悉C51程序,因開發板輸出端子接觸不牢靠,影響DS1302正常讀數,故而DS1302其實是在試驗板上用燒片的方式完成測試(沒有仿真器很苦)
3:程序,全部用C51書寫編譯(搞習慣了高級語言.寫不來匯編了),編譯后大約占用了1.84K的代碼空間,56字節的XDATA空間,一片89C51正好裝下,程序采用模塊化設計,顯示,數據寫入讀出,鍵盤處理全部是集中處理的,使用了一定的編程技巧.
4:功能,參照本人的卡西歐手表的按鍵操作方式設計了功能模塊的顯示,調整,切換,
按鍵一:開機復位后顯示時間界面,按一下切換到日期顯示,再按是溫度,再按是鬧鐘,再按返回時間界面,若在調整界面則用于調整項目的循環切換;
按鍵二:在時間,日期,鬧鐘顯示界面下按2秒,出現各自的調整界面,再按2秒退出調整界面,進入調整界面后,要調整的項目0.5秒間隔閃爍;
按鍵三:調整---數字加1,或啟停鬧鐘(暫不支持連續按鍵)
按鍵四:調整---數字減1,或啟停鬧鐘
5:精度,時間精確到秒(具體精度由32.768K晶振決定),鬧鐘以分為單位響鬧,每次響鬧20秒,按任意鍵停止.溫度精確到0.5度,分辨率是0.1度
6:電源問題:起初用DC-DC升壓模塊+兩節鎳氫電池供電,后測試電池輸出電流達20毫安,2400毫安時的電池5天不到就完了, 而89C2051本身只耗7毫安電流,其他模塊加起來耗電還不到1毫安,可見DC-DC升壓模塊的效率實在太低,不具備實用的價值,起碼用在電池供電電路要求長期供電的成品中是不行的,后來去掉DC-DC模塊,直接用3.7v鋰電池供電,則電流減小到3毫安,比原來足足少了6倍之多.
采用3.7v供電后產生了一個問題,到現在還不知道原因,就是板上的模塊理論上都支持2.7v的低壓,DS1302支持2.5V,但是在實際使用中發現供電電源小于3.6V時,DS1302讀數就出現混亂了,離器件手冊所說的2.5v相差很大,以至于用鋰電池供電都有一定的困難了,因為鋰電的放電終止電壓有2.75v,用3節鎳氫供電存在同樣的問題,3節電池總電壓是1.35*3=4.05v,放電到1.2*3=3.6v就不能正常工作,但是他的終止電壓有1.1v,加起來才3.3v,除非用堿性電池,這樣問題是解決了,成本也上去了.
7:改進,未來想更換12M的晶振為4M的,進一步減少耗電,但是要改動程序,因為DS18B20對時序要求很嚴格,為了保證DS18B20的正常讀數,甚至要暫時關閉中斷.還可以試驗用讓系統進入空閑方式的方法減少耗電.
|
|