找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 3903|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

十年來(lái)第一個(gè)單片機(jī)成果

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71235 發(fā)表于 2014-12-28 00:47 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這是運(yùn)行照片


這是去掉顯示器后的線路板


終結(jié):
    1:元件選擇;全部選用低功耗低電壓的串行模塊,包括一總線溫度傳感器DS18B20,串行時(shí)鐘DS1302,串行8位筆劃液晶顯示器SMS0801b(長(zhǎng)沙太陽(yáng)人公司產(chǎn)),及89C2051單片機(jī),原本要增加一個(gè)頻率輸出的濕度傳感器,因89C2051代碼空間有限而作罷.

    2:開(kāi)發(fā)工具,51開(kāi)發(fā)板,KEIL C51,自己用試驗(yàn)板焊的板子(開(kāi)發(fā)完成,試驗(yàn)板就成了成品板了),EP51PRO編程器,XL1000主要用來(lái)測(cè)試DS18B20及重新熟悉C51程序,因開(kāi)發(fā)板輸出端子接觸不牢靠,影響DS1302正常讀數(shù),故而DS1302其實(shí)是在試驗(yàn)板上用燒片的方式完成測(cè)試(沒(méi)有仿真器很苦)

    3:程序,全部用C51書(shū)寫(xiě)編譯(搞習(xí)慣了高級(jí)語(yǔ)言.寫(xiě)不來(lái)匯編了),編譯后大約占用了1.84K的代碼空間,56字節(jié)的XDATA空間,一片89C51正好裝下,程序采用模塊化設(shè)計(jì),顯示,數(shù)據(jù)寫(xiě)入讀出,鍵盤(pán)處理全部是集中處理的,使用了一定的編程技巧.

    4:功能,參照本人的卡西歐手表的按鍵操作方式設(shè)計(jì)了功能模塊的顯示,調(diào)整,切換,
      按鍵一:開(kāi)機(jī)復(fù)位后顯示時(shí)間界面,按一下切換到日期顯示,再按是溫度,再按是鬧鐘,再按返回時(shí)間界面,若在調(diào)整界面則用于調(diào)整項(xiàng)目的循環(huán)切換;
      按鍵二:在時(shí)間,日期,鬧鐘顯示界面下按2秒,出現(xiàn)各自的調(diào)整界面,再按2秒退出調(diào)整界面,進(jìn)入調(diào)整界面后,要調(diào)整的項(xiàng)目0.5秒間隔閃爍;
      按鍵三:調(diào)整---數(shù)字加1,或啟停鬧鐘(暫不支持連續(xù)按鍵)
      按鍵四:調(diào)整---數(shù)字減1,或啟停鬧鐘

    5:精度,時(shí)間精確到秒(具體精度由32.768K晶振決定),鬧鐘以分為單位響?hù)[,每次響?hù)[20秒,按任意鍵停止.溫度精確到0.5度,分辨率是0.1度

    6:電源問(wèn)題:起初用DC-DC升壓模塊+兩節(jié)鎳氫電池供電,后測(cè)試電池輸出電流達(dá)20毫安,2400毫安時(shí)的電池5天不到就完了, 而89C2051本身只耗7毫安電流,其他模塊加起來(lái)耗電還不到1毫安,可見(jiàn)DC-DC升壓模塊的效率實(shí)在太低,不具備實(shí)用的價(jià)值,起碼用在電池供電電路要求長(zhǎng)期供電的成品中是不行的,后來(lái)去掉DC-DC模塊,直接用3.7v鋰電池供電,則電流減小到3毫安,比原來(lái)足足少了6倍之多.
    采用3.7v供電后產(chǎn)生了一個(gè)問(wèn)題,到現(xiàn)在還不知道原因,就是板上的模塊理論上都支持2.7v的低壓,DS1302支持2.5V,但是在實(shí)際使用中發(fā)現(xiàn)供電電源小于3.6V時(shí),DS1302讀數(shù)就出現(xiàn)混亂了,離器件手冊(cè)所說(shuō)的2.5v相差很大,以至于用鋰電池供電都有一定的困難了,因?yàn)殇囯姷姆烹娊K止電壓有2.75v,用3節(jié)鎳氫供電存在同樣的問(wèn)題,3節(jié)電池總電壓是1.35*3=4.05v,放電到1.2*3=3.6v就不能正常工作,但是他的終止電壓有1.1v,加起來(lái)才3.3v,除非用堿性電池,這樣問(wèn)題是解決了,成本也上去了.

     7:改進(jìn),未來(lái)想更換12M的晶振為4M的,進(jìn)一步減少耗電,但是要改動(dòng)程序,因?yàn)镈S18B20對(duì)時(shí)序要求很?chē)?yán)格,為了保證DS18B20的正常讀數(shù),甚至要暫時(shí)關(guān)閉中斷.還可以試驗(yàn)用讓系統(tǒng)進(jìn)入空閑方式的方法減少耗電.
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:71235 發(fā)表于 2014-12-28 00:48 | 只看該作者
    從下午開(kāi)始搞起一直到晚上一直在測(cè)試這個(gè)來(lái)自網(wǎng)上的驅(qū)動(dòng)程序,程序很不穩(wěn)定,按復(fù)位鍵后經(jīng)常顯示不出來(lái),最后從網(wǎng)上找了其他的程序,比較后發(fā)現(xiàn)是液晶初始化程序有問(wèn)題,大部分程序都是根據(jù)一個(gè)1602的數(shù)據(jù)手冊(cè)寫(xiě)的,大致如下:
1.LCM_WriteCommand(0x38,0);
delaytime(5);
2.LCM_WriteCommand(0x38,0);
delaytime(5);
3.LCM_WriteCommand(0x38,0);
4.LCM_WriteCommand(0x38,1);
5.LCM_WriteCommand(0x08,1);
6.LCM_WriteCommand(0x01,1);
7.LCM_WriteCommand(0x06,1);
8.LCM_WriteCommand(0x0c,1);
有問(wèn)題的就是第五個(gè)調(diào)用,是關(guān)閉顯示的操作!!!
回復(fù)

使用道具 舉報(bào)

板凳
ID:71235 發(fā)表于 2014-12-28 00:49 | 只看該作者
  下午禁不住手癢癢,做了一條DS18B20的探頭線,是用鼠標(biāo)線、電容鋁殼、3P接插件及熱縮管做成的,質(zhì)量還是不錯(cuò)的,就是線粗了點(diǎn)。程序重新寫(xiě)了一下,加入了讀取探頭溫度的程序,編譯后了以后89C2051只剩下了80字節(jié)的空間,今后想做點(diǎn)其他功能也是沒(méi)辦法了,除非換用89C4051,不過(guò)有沒(méi)有這個(gè)必要要看自己的心情了。整個(gè)模塊完成后,到廚房冰箱那里測(cè)試了一下零下溫度顯示功能程序,基本正常。
回復(fù)

使用道具 舉報(bào)

地板
ID:71235 發(fā)表于 2014-12-28 00:49 | 只看該作者


    當(dāng)初做好那個(gè)溫控器的時(shí)候,就已經(jīng)打算好要增加個(gè)通訊功能的,時(shí)間已經(jīng)過(guò)去一年多,可還是什么都沒(méi)做,因?yàn)樽罱贒IY上動(dòng)作挺多,不如干脆也把這個(gè)功能實(shí)現(xiàn)了吧。

    上周六,開(kāi)始準(zhǔn)備工作,首先要實(shí)現(xiàn)的是單向通訊功能,單片機(jī)只定時(shí)發(fā)送溫度數(shù)據(jù)到串口,PC機(jī)接收后顯示在軟件窗口上,PC控制單片機(jī)就不打算實(shí)現(xiàn)了,沒(méi)這個(gè)必要了。這樣只需要一個(gè)單向的RS232接口就行了,剛好夏天的時(shí)候去買(mǎi)了一個(gè)M8電子負(fù)載的套件,其中就有這個(gè)單向的RS232接口,是用分立元件實(shí)現(xiàn)的,很簡(jiǎn)單(3電阻,1三極管),于是把這個(gè)電路給抄了下來(lái),在焊接線路板前,先用這個(gè)現(xiàn)成的電路測(cè)試一下。

    單片機(jī)軟件部分,比較費(fèi)勁的看了一下有關(guān)文檔,還好只需要簡(jiǎn)單的發(fā)送功能,沒(méi)有復(fù)雜的通訊協(xié)議,這樣就先用CVAVR的代碼向?qū)闪舜趨?shù),然后加入到工程中,發(fā)送函數(shù)直接使用putchar函數(shù)發(fā)送4位溫度值,每隔500ms發(fā)送一次,

    PC程序使用c#編寫(xiě),也很簡(jiǎn)單,用串口事件接收4個(gè)字節(jié),轉(zhuǎn)成字符串后寫(xiě)入LABEL控件就可以了,不過(guò)要注意的是,要先設(shè)置串口控件的ReceivedBytesThreshold屬性為要接收數(shù)據(jù)的字節(jié)數(shù),否則不能正確區(qū)分前后發(fā)過(guò)來(lái)的數(shù)據(jù),還有就是在.net下串口控件工作在輔助線程,不能直接向主線程發(fā)送數(shù)據(jù),比如將數(shù)據(jù)寫(xiě)入label控件,這是只要設(shè)置Label(類(lèi)名,不是具體的控件名稱(chēng)).CheckForIllegalCrossThreadCalls = false就可以了;

    費(fèi)了點(diǎn)勁兒,打通了通訊環(huán)節(jié),然后就是在線路板上搭建RS232轉(zhuǎn)換接口,經(jīng)測(cè)試完全沒(méi)問(wèn)題,接下了就是安裝到服務(wù)器上測(cè)試了,串口線是用普通的電線絞成的,因?yàn)橥ㄓ嵕嚯x不太遠(yuǎn),也沒(méi)什么問(wèn)題。安裝好后,程序全部正常工作,只是界面有一點(diǎn)問(wèn)題,家里用的是WIN7,有微軟雅黑字體,而服務(wù)器上只有黑體,所以溫度數(shù)字顯示的有點(diǎn)別扭,重新修改了一下界面,順便加上了發(fā)送溫度上限的功能。

    至此這次改造獲得成功!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表