|
前段時(shí)間做了個(gè)自行車(chē)風(fēng)火輪,這個(gè)東西現(xiàn)在市面上很多。我做的這個(gè)用32個(gè)LED,加上了無(wú)線遙控功能,算是一點(diǎn)點(diǎn)創(chuàng)新吧。我會(huì)把資料都放出來(lái),說(shuō)實(shí)話并不算很完美。
先看成品圖:
143630oq8zd2nq8z8qzvfu.jpg.thumb.jpg (36.34 KB, 下載次數(shù): 2132)
下載附件
2013-6-26 03:02 上傳
再看下效果視頻,用數(shù)碼相機(jī)錄的,實(shí)際效果要比視頻效果好很多
用的是STC89C54,74HC595鎖存器,霍爾傳感器A3144,PT2262/2272無(wú)線遙控模塊。
用STC89C54的原因是它有16K的ROM,能存的畫(huà)面數(shù)據(jù)比較多,這個(gè)設(shè)計(jì)我存了10個(gè)畫(huà)面。再有STC的比AT更人性化,比如說(shuō)EA腳不用給高電平也行。
595是串口輸入并口輸出的鎖存器,其實(shí)用74HC573也可以,可能會(huì)更好。因?yàn)?73的輸出電流比595要低一些,595的輸出電流是35mA,這個(gè)電流驅(qū)動(dòng)一個(gè)LED燈是有點(diǎn)大了,用573會(huì)比較合適。另外控制上573比595簡(jiǎn)單一些,573是并口輸入并口輸出。或者用595的話就每個(gè)輸出口加200歐電阻限流,我設(shè)計(jì)的時(shí)候沒(méi)有加。這些留給大家驗(yàn)證吧。
A3144沒(méi)什么可說(shuō)的,再簡(jiǎn)單不過(guò)了,正常高電平,有磁場(chǎng)就輸出低電平,用來(lái)觸發(fā)單片機(jī)的外部中斷,很好用。
PT2262/PT2272其實(shí)也挺簡(jiǎn)單的,因?yàn)槭亲龀赡K了,只需要編程控制它,這個(gè)芯片有兩種,一種是點(diǎn)動(dòng)輸出,一種是持續(xù)輸出,就是按下遙控的時(shí)候,接收端的輸出方式不同,一種按著就一直輸出,放手就停止輸出,另一種是按下后放手了也繼續(xù)輸出。它的接收端芯片有一個(gè)信號(hào)腳和4個(gè)數(shù)據(jù)腳,數(shù)據(jù)腳用來(lái)判斷按鍵的,信號(hào)腳可以用來(lái)觸發(fā)中斷,我就是用它的VT腳的負(fù)跳變來(lái)觸發(fā)單片機(jī)外部中斷,實(shí)現(xiàn)遙控功能。
電源方面,我用的是6個(gè)1.5V的干電池串成的9V電源供電,進(jìn)過(guò)7805,前面說(shuō)到595的輸出電流是35mA,在這個(gè)情況下,如果32個(gè)燈同時(shí)亮起來(lái)的電流其實(shí)也是蠻大的,所以如果是普通的電池,折騰不了多久的,如果真的要使用的話,建議還是換9V的鋰電池。我就遇到一個(gè)情況就是電池電壓降得太厲害,雖然單片機(jī)不受影響,但是遙控的接收模塊卻不行,遙控會(huì)失靈的,或者另外一個(gè)解釋是電流太大,會(huì)干擾影響接收端的解碼,從而使遙控?zé)o問(wèn)題。
硬件設(shè)計(jì)方面,我用99se設(shè)計(jì)的,
155551l80tcadu98gzag6l.jpg.thumb.jpg (74.74 KB, 下載次數(shù): 1533)
下載附件
2013-6-26 03:02 上傳
PCB長(zhǎng)24cm,寬4cm。
155603sccjjurbb96cyonr.jpg.thumb.jpg (24.54 KB, 下載次數(shù): 1426)
下載附件
2013-6-26 03:02 上傳
軟件方面
這個(gè)設(shè)計(jì)非常重要的一個(gè)環(huán)節(jié)就是畫(huà)面的取模,我用的取模軟件來(lái)自互聯(lián)網(wǎng)。
150116btzxlegenhedgsls.jpg.thumb.jpg (24.4 KB, 下載次數(shù): 1405)
下載附件
2013-6-26 03:02 上傳
軟件可以將位圖取模,就是按一排32個(gè)LED燈的模式,從圓心向外把一個(gè)圖分成256個(gè)扇形,每個(gè)扇形4份,每份8位二進(jìn)制數(shù),這樣一個(gè)圖像取模成1024個(gè)16進(jìn)制數(shù)據(jù)存于單片機(jī)的ROM里。
接下來(lái)說(shuō)說(shuō)編程思路。
當(dāng)風(fēng)火輪固定在自行車(chē)輻條上,隨著車(chē)輪轉(zhuǎn)動(dòng),怎么樣才能讓畫(huà)面顯示成完整的一個(gè)圓呢。我用的方法是延時(shí),在256份里,每份延時(shí)一定的時(shí)間,顯示完256份以后剛好是一個(gè)完整的圓。具體是這樣的,用霍爾傳感器提供給單片機(jī)的外部中斷1,配合T0定時(shí)器,就可以計(jì)算出上一圈車(chē)輪轉(zhuǎn)一圈用的時(shí)間,因?yàn)樽孕熊?chē)的加速度不大,可以認(rèn)為上一圈的時(shí)間和將要轉(zhuǎn)動(dòng)的這一圈的時(shí)間是一樣的。另外用軟件仿真的方式計(jì)算出單片機(jī)把一個(gè)圖像的數(shù)據(jù)送給鎖存器顯示需要的時(shí)間是多少,用之前算出的車(chē)輪轉(zhuǎn)動(dòng)的時(shí)間減去一個(gè)圖像的時(shí)間,得出的時(shí)間差再256等份,然后沒(méi)顯示1份就延時(shí)一次,這樣下來(lái),畫(huà)面就形成一個(gè)圓了。
主函數(shù)的流程圖:
154749fjxx50z20x5nnb5j.jpg.thumb.jpg (30 KB, 下載次數(shù): 1396)
下載附件
2013-6-26 03:02 上傳
我設(shè)計(jì)了一個(gè)功能是轉(zhuǎn)一圈排燈增加一個(gè)亮,滿了之后再一個(gè)個(gè)減少。
再一個(gè)是根據(jù)車(chē)輪轉(zhuǎn)動(dòng)的速度,速度越快亮的燈數(shù)越多,不過(guò)這里有個(gè)問(wèn)題是,程序運(yùn)行需要時(shí)間,所以這個(gè)功能只是速度在一定范圍內(nèi)的顯示,太快或太慢都不行。
還有一個(gè)功能就是自動(dòng)換畫(huà)面,每轉(zhuǎn)20圈換下一個(gè)。
遙控這一塊,當(dāng)遙控器按下,接收端解碼成功,數(shù)據(jù)管腳輸出相應(yīng)的數(shù)據(jù),信號(hào)管腳由低變高。這個(gè)不管,我要用的是放手之后,信號(hào)管腳產(chǎn)生下降沿,觸發(fā)外部中斷0,數(shù)據(jù)口連著單片機(jī)的P1口,中斷程序開(kāi)始就讀取P1口的值,然后判斷鍵值,再執(zhí)行相應(yīng)的控制。
外部中斷0的流程圖:
154840e4eq7ddo4qq8x44x.jpg.thumb.jpg (34.11 KB, 下載次數(shù): 1337)
下載附件
2013-6-26 03:02 上傳
介紹得差不多了,最后要說(shuō)的一點(diǎn)是,單片機(jī)的中斷優(yōu)先級(jí)要改一下,最高的是外部0,次外部1,再定時(shí)器T0中斷。默認(rèn)是外部1比T0低,因?yàn)槲乙b控是最高級(jí),然后霍爾是次級(jí),但是這兩個(gè)都是外部中斷,所以要改一下。
這個(gè)東西說(shuō)實(shí)話也挺簡(jiǎn)單的,就用到幾個(gè)鎖存器,和一個(gè)遙控,這個(gè)遙控編程也超簡(jiǎn)單,然后就是把數(shù)據(jù)送給鎖存器了。
做板子的話,條件有限,只能做到這樣子了。
看看大家喜歡的話,過(guò)兩天我就把程序,原理圖都放上來(lái)。效果不好的話,沒(méi)激情,我只好自己擼了。
軟件、硬件設(shè)計(jì).rar
(349.78 KB, 下載次數(shù): 719)
2013-8-11 14:28 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
取模.rar
(223.61 KB, 下載次數(shù): 519)
2013-8-11 14:28 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|