雖說喜歡電子DIY,也會(huì)那么點(diǎn),但總覺這個(gè)世界上有用的東西都讓人給發(fā)明完了,我等小輩只管掏錢買來用就是了,犯不著親自動(dòng)手做一個(gè),再說自己做的那個(gè)成本、功能、外觀都跟人家產(chǎn)品沒法比,于是每天光看著各種各樣的資料,只是為了不讓自己把僅會(huì)的那點(diǎn)東西忘卻掉,卻一個(gè)東西都不曾做出來。
去年在家的時(shí)候,做出了一個(gè)電子鐘和GPS時(shí)鐘,在那以后再也沒做什么東西了,話雖如此,腦子里卻總還是在想做個(gè)什么東西,其中一個(gè)就是做一個(gè)機(jī)房里用的溫度報(bào)警器,單位的機(jī)房空調(diào)不太好,偶爾停機(jī)了也沒人知道,致使機(jī)房溫度一路飆升,嚴(yán)重的時(shí)候甚至使服務(wù)器停機(jī),自動(dòng)控制空調(diào)是沒那個(gè)本事了,做個(gè)溫度報(bào)警指示倒是可以的,于是就把這個(gè)當(dāng)做計(jì)劃在心里記下了,留待有心情的時(shí)候把它變?yōu)楝F(xiàn)實(shí)。 掐指一算,上班已經(jīng)一年有余了,不知什么原因,要去淘寶上買一批元器件,順便把ATMEGA8以及幾個(gè)數(shù)碼管買了回來,這就準(zhǔn)備實(shí)現(xiàn)一年前的計(jì)劃了。說是說一個(gè)機(jī)會(huì),其實(shí)還是閑著沒事干,找點(diǎn)事情做做,做出來的東西也許就放在家里了。這個(gè)計(jì)劃是這樣的:顯示部件采用數(shù)碼管顯示,最后是那種大點(diǎn)顯眼點(diǎn)的,控制核心還是51單片機(jī)或者AVR,要完成的功能就可以設(shè)定控制溫度,到了指定的溫度時(shí),發(fā)出刺耳的報(bào)警聲,很簡(jiǎn)單,做這個(gè)東西人的也許有成千上萬了,但是完全實(shí)現(xiàn)俺目標(biāo)的不一定有,所以還是自己實(shí)現(xiàn)的好。選控制核心的時(shí)候稍微猶豫了一下,最后還是選擇了M8,因?yàn)镸8有很多51不具備的特點(diǎn):1.有內(nèi)置的RC振蕩源,可以不用外接晶振電路;2.端口驅(qū)動(dòng)能力強(qiáng),最大灌電流達(dá)40ma,驅(qū)動(dòng)一般的數(shù)碼管甚至不用加三極管;3.端口有內(nèi)置上拉電阻,做按鍵輸入口的時(shí)候不用外接上拉電阻;4.有一個(gè)完整的PB端口,可以作為數(shù)碼管的段顯示,剩余端口足夠完成所需功能;5.M8是窄列28腳封裝,體積夠。ㄎ蚁矚g在最小號(hào)的洞洞板上完成所有電路)。 既然要用M8,就要具備M8的相關(guān)知識(shí),先是研究了一下熔絲位的設(shè)置方法,發(fā)現(xiàn)沒網(wǎng)上說的那么恐怖,第一次按手冊(cè)設(shè)置好了,以后不要去動(dòng)就行了,然后選擇CVAVR作為編譯器,因?yàn)镃VAVR支持位操作(對(duì)剛從51過來的人,1<<7這樣的位操作方法確實(shí)有點(diǎn)古怪),重新找出去年網(wǎng)上買的USPASP下載器,然后就是按照M8的手冊(cè)焊了個(gè)小板,整個(gè)電路包含一個(gè)4位數(shù)碼管,一個(gè)復(fù)位電路,DS18B20溫度檢測(cè)電路,ISP下載插座,3個(gè)按鍵(一個(gè)作為設(shè)置按鈕,兩個(gè)作為數(shù)字調(diào)整按鈕),一個(gè)報(bào)警器驅(qū)動(dòng)電路,報(bào)警器用的是那種5塊一個(gè)的防盜報(bào)警器,聲音非常響。經(jīng)過10多天的測(cè)試,編程,再測(cè)試,于今日基本完成。如下圖:  整個(gè)制作過程經(jīng)歷了不少困難,首先是DS18B20的讀取控制問題,剛開始時(shí)是按照51的程序?qū)懙尿?qū)動(dòng)程序,不行,上網(wǎng)找了幾個(gè)AVR的驅(qū)動(dòng)程序,還是不行,最后發(fā)現(xiàn)是端口讀取方法錯(cuò)了,本來讀端口應(yīng)該是用PIND.7這樣的形式,但是用51時(shí)間多了,不自覺的也按51的方法寫成PORTB.7了,這個(gè)錯(cuò)誤讓我耗費(fèi)了2天時(shí)間。然后按鍵控制問題,一般來說,調(diào)整參數(shù)時(shí)按一下跳一個(gè)數(shù)字這種方法就足夠了,但是我想仿造電子表的操作方式,實(shí)現(xiàn)按鍵的連擊(按鈕按住不放,數(shù)字自動(dòng)調(diào)整),單擊(按一下調(diào)一次),長(zhǎng)擊(按住一定時(shí)間,則進(jìn)入某一個(gè)功能),經(jīng)過幾天的折騰,終于完整實(shí)現(xiàn)了,效果如下:按設(shè)置鍵2秒,系統(tǒng)進(jìn)入設(shè)置參數(shù)調(diào)整界面,參數(shù)開始閃動(dòng),按一下加減鍵,數(shù)字加1或者減1,按住不放超過1秒鐘,數(shù)字自動(dòng)連續(xù)加減,同時(shí)參數(shù)不再閃動(dòng),知道加減鍵松開,再次長(zhǎng)按設(shè)置鍵2秒,退出設(shè)置界面。再就是參數(shù)如何保存到EEPROM中的問題,能保存在EEPROM中這個(gè)在CVAVR中很簡(jiǎn)單,難得是如何指定保存地址,經(jīng)查資料,這個(gè)問題也解決了;最后一個(gè)問題是報(bào)警器驅(qū)動(dòng)問題,程序存在問題,還是那個(gè)端口如何操作的問題,這個(gè)也解決了,然后發(fā)現(xiàn)用8050只能讓報(bào)警器發(fā)出斷斷續(xù)續(xù)的嗡嗡聲,經(jīng)過另搭電路測(cè)試,發(fā)現(xiàn)是基級(jí)驅(qū)動(dòng)能力不行,換了一個(gè)小點(diǎn)的電阻就行了。在整個(gè)制作功能基本實(shí)現(xiàn)后,又增加了點(diǎn)小小的功能,就是開始報(bào)警后,可以按任意鍵終止報(bào)警聲,功能雖小,卻相當(dāng)實(shí)用。 最后總結(jié)一下:本次制作實(shí)現(xiàn)多個(gè)第一次, 1.第一次使用AVR單片機(jī) 2.第一次使用動(dòng)態(tài)數(shù)碼管驅(qū)動(dòng)電路,以前要么使用專用的數(shù)碼管驅(qū)動(dòng)芯片,要么使用液晶顯示器,使用動(dòng)態(tài)掃描還是第一次 3.第一次使用高級(jí)按鍵功能 4.第一次使用ISP下載方式調(diào)試程序 5.第一次使用EEPROM存儲(chǔ)參數(shù) 。。。。
接下來想在電路板的剩余角落搭個(gè)RS232的電平轉(zhuǎn)換電路,實(shí)現(xiàn)和服務(wù)器的通訊功能。
|