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

QQ登錄

只需一步,快速開始

搜索
查看: 3104|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

[DIY]測溫小夜鐘

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:73477 發(fā)表于 2015-2-10 17:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
        這個(gè)板子是去年突發(fā)奇想想要做的,當(dāng)時(shí)讓朋友(東東)幫忙布的線,另一個(gè)朋友(老王)給打的樣,感激。!PCB做好出來激情卻沒有,結(jié)果一直放到今年底,因?yàn)闁|東手上也有這個(gè)板,在他的慫恿下,挑了點(diǎn)時(shí)間就把這個(gè)板子完成了。
        設(shè)計(jì)這個(gè)板子的最初意圖是想做個(gè)可以晚上看時(shí)間的時(shí)鐘,所以用了數(shù)碼管顯示,并且體積要小巧,所以用了貼片元件,而且用電池供電可以方便放在床頭,所以平時(shí)又不用顯示以免浪費(fèi)電池電量,因此MCU平時(shí)是不工作的,不能采用中斷計(jì)時(shí)的方法,所以在走時(shí)上就用了DS1302的專用計(jì)時(shí)芯片,主要是它比較容易買到并且便宜,而且待機(jī)時(shí)耗電很小。而僅有溫度顯示可能就比較浪費(fèi)了,所以把18B20也加了進(jìn)來,這是個(gè)專業(yè)測溫元件,最小分辨率可以達(dá)到0.0625度。MCU就用了STC的12C54XX系列了,本來想用12C205X系列,結(jié)果IO怎么排也不夠用,只好花點(diǎn)本錢換成多幾根IO的。目前成品用4.2V的可充電鋰電池供電,待機(jī)時(shí)電流約在0.5ma,工作時(shí)20ma,按每天查看10次、每次20秒計(jì)算,800mah電池約可以工作一個(gè)月,基本上滿足設(shè)計(jì)要求,下一步就是要為它找個(gè)好外殼了。
        電路圖和成品效果圖附后。
        硬件結(jié)構(gòu):STC12C5410+DS1302+18B20+4共陽數(shù)碼管
        實(shí)現(xiàn)功能:時(shí)間+測溫+自動(dòng)關(guān)機(jī)。長按開關(guān)鍵開機(jī)顯示當(dāng)前時(shí)分,小數(shù)點(diǎn)閃動(dòng)代表秒信號(hào),可以短按功能鍵切換到溫度顯示,查詢年、月日、星期、分秒。長按功能鍵進(jìn)入年、月日、時(shí)分設(shè)置,星期采用程序自動(dòng)運(yùn)算來計(jì)算出當(dāng)前時(shí)間是星期幾。設(shè)置或查詢狀態(tài)時(shí),當(dāng)無按鍵達(dá)15秒時(shí)退出到正常的時(shí)間顯示狀態(tài),在時(shí)間顯示狀態(tài),15秒無按鍵則自動(dòng)關(guān)機(jī)。
        編程思路:5ms中斷一次,切換數(shù)碼管顯示,進(jìn)行動(dòng)態(tài)掃描數(shù)碼管,并且做一些時(shí)間變量的累加,讀取DS1302內(nèi)部時(shí)間,轉(zhuǎn)換后在數(shù)碼管上顯示,讀取18B20溫度值,并進(jìn)行轉(zhuǎn)換和顯示,每0.5秒刷新一次溫度值。單按鍵用長按、短按兩種狀態(tài)進(jìn)行設(shè)置時(shí)間,另一按鍵只做電源開關(guān)。
        編程難點(diǎn):處理好掃描顯示、按鍵讀取、18B20讀取的關(guān)系,18B20的采用單總線方式讀取,其時(shí)序要求較高,所以既要兼顧溫度讀取又要兼顧動(dòng)態(tài)掃描等,這里會(huì)有點(diǎn)難度。
        心得體會(huì):這次編程采用了全新的思路,和以往有較大的差別,基本上脫離了軟件延時(shí)的方式,除了18B20的單總線采用軟件延時(shí)外,其它延時(shí)均采用中斷方式、狀態(tài)機(jī)來完成。所以這次的程序個(gè)人感覺質(zhì)量相當(dāng)高,大部分時(shí)間主循環(huán)都在空轉(zhuǎn),運(yùn)行效率非常高,既照顧了動(dòng)態(tài)掃描,又兼顧了按鍵去抖延時(shí),并實(shí)現(xiàn)長短按功能,18B20的讀取上也絲毫沒有影響,真正做到了動(dòng)態(tài)掃描的結(jié)果跟靜態(tài)顯示一樣,任何操作均沒有產(chǎn)生閃動(dòng),和以往傾向于軟件延時(shí)方式所寫出來的程序有質(zhì)的差異。通過這次程序,也使自己編程水平有一個(gè)質(zhì)的飛躍,眼界更開闊,對(duì)C51編程的駕馭能力又再提高到一個(gè)層次,這也是自己近年來編程水平的一個(gè)最大的突破。
        下一步功能擴(kuò)展構(gòu)思:這個(gè)MCU有10K的ROM,目前程序只用了1.6K,還有很多空間,另外還有內(nèi)部EEPROM也沒有利用起來,原意是想做成一個(gè)可測體溫的溫度計(jì),并且能保存溫度數(shù)據(jù)在EEPROM里以備翻查,現(xiàn)在又想做個(gè)類似“最高溫度保持”和“最低溫度保持”的功能出來,但是四個(gè)數(shù)碼管能顯示的信息量太少了,如何區(qū)別這些信息還是個(gè)頭痛的問題,留待以后慢慢研究。


電路原理圖:


焊好的電路板正面圖:(右下方4個(gè)焊點(diǎn)為ISP編程接口)


板的背面:


顯示時(shí)分狀態(tài):(其中小數(shù)點(diǎn)會(huì)按秒閃動(dòng))


顯示溫度:(范圍是-55°C~+125°C,精度改為0.1度,生活應(yīng)用足夠)






分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:86621 發(fā)表于 2015-8-7 18:50 | 只看該作者
不錯(cuò)值得學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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