創(chuàng)意設(shè)計之DIY搖擺LED時鐘_第1頁
創(chuàng)意設(shè)計之DIY搖擺LED時鐘_第2頁
創(chuàng)意設(shè)計之DIY搖擺LED時鐘_第3頁
創(chuàng)意設(shè)計之DIY搖擺LED時鐘_第4頁
創(chuàng)意設(shè)計之DIY搖擺LED時鐘_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、創(chuàng)意設(shè)計之DIY搖擺LED時鐘 郵件群發(fā) 看到市場上正在流行的時尚商品搖擺LED時鐘,感覺非常新穎獨特,正在玩單片機(jī)的我,激起了自己也想DIY一個搖擺LED時鐘的沖動。經(jīng)過十多天的制作、修改與調(diào)試,作品才告完成,基本達(dá)到預(yù)先要求。一. 設(shè)計思路本制作是根據(jù)視覺暫留原理, 讓一排8只LED運(yùn)動, 在空中呈現(xiàn)數(shù)字來表示時鐘。由于其實質(zhì)就是一個擺動的流水燈,特別適合初入門的單片機(jī)愛好者動手制作。整個屏可顯示七個字符,平時作時鐘只用其中的五個字符。顯示分 “正常運(yùn)行”、“調(diào)分”和“調(diào)時” 三種狀態(tài)。正常運(yùn)行時中間的“:”符每一秒閃現(xiàn)一次,調(diào)分和調(diào)時時,則為調(diào)整的項閃現(xiàn)。設(shè)置三個調(diào)整按鍵,一個為“狀態(tài)鍵

2、”,一個為“加法鍵”,一個為“減法鍵”。完成圖(見圖1、圖2) 圖1 圖2效果圖(見圖3) 圖3二. 硬件結(jié)構(gòu)主板的結(jié)構(gòu)布局見圖4。 圖4機(jī)械部分:驅(qū)動搖棒擺動的機(jī)構(gòu)采用從硬盤上拆下的音圈電機(jī)(見圖5)組件構(gòu)成,為制作方便,這個組件是直接安裝在電路板上的。 圖5為使搖棒保持平衡,需在線圈端加配重,由于配重是在磁鐵的上端,最好選銅質(zhì)物件。為了讓搖棒擺動穩(wěn)定,在搖棒擺動的擺幅兩端加了限位器。并在兩個限位器上分別套上一個膠圈,以減輕噪音和振動。電子部分: 1.LED的焊接,(見圖6)將LED兩腳跨接在電路板兩端的方式進(jìn)行焊接。使LED緊密排列在一起。

3、 圖62.搖棒上的LED與主板上的信號用排線連接,音圈電機(jī)供電占2位,LED信號傳輸占9位,所以至少要11位的排線。(見圖7) 圖73.設(shè)置三個按鍵用于調(diào)整時間。(見圖8) 圖84.采用驅(qū)動直流電機(jī)正反轉(zhuǎn)的方式,驅(qū)動音圈電機(jī)來回擺動。讓電機(jī)正、反轉(zhuǎn)的方法很多,最典型的是H橋電路驅(qū)動。為了簡化電路,最好采用H橋功能的集成電路。這種IC很多,比如象TA7257,TA8429H,L6203等,這里用的是三菱公司的M54544AL。(見圖9) 圖9IC各腳定義見圖10。 圖105.電原理圖見圖11(點擊放大)。 圖11三. 軟件設(shè)計 1. 搖

4、棒的啟動通過P3.6和P3.7輸出驅(qū)動音圈電機(jī)的信號, 由于沒有設(shè)置檢測搖棒的傳感器,時間間隔只能跟據(jù)實驗確定。在調(diào)試中發(fā)現(xiàn),當(dāng)驅(qū)動搖棒的信號轉(zhuǎn)換加速到一定的時候,從靜止?fàn)顟B(tài)轉(zhuǎn)到正常擺動狀態(tài)發(fā)生困難,因此需要由慢到快的驅(qū)動過程。由下面的程序段實現(xiàn)。do mm-;DelayMs(120+mm*5); /逐漸縮短延時間put1=put1; put2=put2; /轉(zhuǎn)換輸出口電平狀態(tài)while(mm>0);2. 秒閃現(xiàn)的實現(xiàn)數(shù)字和字符的閃現(xiàn)是通過變量Ms和數(shù)組w實現(xiàn)的,如需要七位字符中的間的第4位閃現(xiàn),則w3=1。這是通過全局變量Ms在void timer0(void)函數(shù)中每隔一秒改變一次狀

5、態(tài)(0或1),在void timer1(void)函數(shù)中的下列語句中實現(xiàn)。if(put1=1)&&(ii3. 校正顯示不均勻調(diào)試中發(fā)現(xiàn),顯示屏上的字符并不是一樣寬的,仔細(xì)分析是由于搖棒在運(yùn)動中一直受力,使搖棒產(chǎn)生加速運(yùn)動,這樣就需要在程序中加一校正因子,逐漸縮短顯示的時間段。具體是通過變量tt在函數(shù)void timer1(void)中實現(xiàn)的。4. 按鍵去抖程序按鍵的去抖采用軟件編程實現(xiàn),其方法是當(dāng)檢測到按鍵的接口出現(xiàn)低電平后,隔一段時間再檢測,如還是低電平,則確認(rèn)為有效,否則無效。具體的程序是通過函數(shù)unsigned char ChKey(bit Key)實現(xiàn)。5. 顯示同步調(diào)

6、試時要根據(jù)實際情況確定Ti的值,保證顯示正常。6.預(yù)留的部分功能提供的程序除提供了一個完整的時鐘程序外,還預(yù)留了顯示七個字符功能(見圖12),只是主程序要作一些修改。 圖127.完整C51程序代碼 /*POV搖擺顯示LED鐘C51程序*/#include/*硬件端口定義*/sbit set0=P01;sbit set1=P00;sbit set2=P02;sbit put1=P36;sbit put2=P37;/*時鐘用數(shù)組*/unsigned char BUFFER=0,0,0,0;unsigned char maxnum=59,23;/*顯示用數(shù)組*/unsigned int v

7、20;unsigned int w7;/*字符字模*/unsigned char code ASCIIDOC = / ASCII0x7C,0x8A,0x92,0xA2,0x7C,0x00, / -0-000x00,0x42,0xFE,0x02,0x00,0x00, / -1-010x46,0x8A,0x92,0x92,0x62,0x00, / -2-020x84,0x82,0x92,0xB2,0xCC,0x00, / -3-030x18,0x28,0x48,0xFE,0x08,0x00, / -4-040xE4,0xA2,0xA2,0xA2,0x9C,0x00, / -5-050x3C,0x5

8、2,0x92,0x92,0x8C,0x00, / -6-060x80,0x8E,0x90,0xA0,0xC0,0x00, / -7-070x6C,0x92,0x92,0x92,0x6C,0x00, / -8-080x62,0x92,0x92,0x94,0x78,0x00, / -9-090x00,0x00,0x00,0x00,0x00,0x00, / - -100x00,0x00,0xFA,0x00,0x00,0x00, / -!-110x04,0x08,0x10,0x20,0x40,0x00, / -/-120x00,0x6C,0x6C,0x00,0x00,0x00, / -:-130x3E

9、,0x48,0x88,0x48,0x3E,0x00, / -A-140xFE,0x92,0x92,0x92,0x6C,0x00, / -B-150x7C,0x82,0x82,0x82,0x44,0x00, / -C-160xFE,0x82,0x82,0x82,0x7C,0x00, / -D-170xFE,0x92,0x92,0x92,0x82,0x00, / -E-180xFE,0x90,0x90,0x90,0x80,0x00, / -F-190x7C,0x82,0x8A,0x8A,0x4E,0x00, / -G-200xFE,0x10,0x10,0x10,0xFE,0x00, / -H-21

10、0x00,0x82,0xFE,0x82,0x00,0x00, / -I-220x04,0x02,0x82,0xFC,0x80,0x00, / -J-230xFE,0x10,0x28,0x44,0x82,0x00, / -K-240xFE,0x02,0x02,0x02,0x02,0x00, / -L-250xFE,0x40,0x30,0x40,0xFE,0x00, / -M-260xFE,0x20,0x10,0x08,0xFE,0x00, / -N-270x7C,0x82,0x82,0x82,0x7C,0x00, / -O-280xFE,0x90,0x90,0x90,0x60,0x00, / -

11、P-290x7C,0x82,0x8A,0x84,0x7A,0x00, / -Q-300xFE,0x90,0x98,0x94,0x62,0x00, / -R-310x64,0x92,0x92,0x92,0x4C,0x00, / -S-320x80,0x80,0xFE,0x80,0x80,0x00, / -T-330xFC,0x02,0x02,0x02,0xFC,0x00, / -U-340xF8,0x04,0x02,0x04,0xF8,0x00, / -V-350xFE,0x04,0x18,0x04,0xFE,0x00, / -W-360xC6,0x28,0x10,0x28,0xC6,0x00,

12、 / -X-370xC0,0x20,0x1E,0x20,0xC0,0x00, / -Y-380x86,0x8A,0x92,0xA2,0xC2,0x00, / -Z-390x24,0x2A,0x2A,0x1C,0x02,0x00, / -a-400xFE,0x14,0x22,0x22,0x1C,0x00, / -b-410x1C,0x22,0x22,0x22,0x10,0x00, / -c-420x1C,0x22,0x22,0x14,0xFE,0x00, / -d-430x1C,0x2A,0x2A,0x2A,0x10,0x00, / -e-440x10,0x7E,0x90,0x90,0x40,0

13、x00, / -f-450x19,0x25,0x25,0x25,0x1E,0x00, / -g-460xFE,0x10,0x20,0x20,0x1E,0x00, / -h-470x00,0x00,0x9E,0x00,0x00,0x00, / -i-480x00,0x01,0x11,0x9E,0x00,0x00, / -j-490xFE,0x08,0x14,0x22,0x02,0x00, / -k-500x00,0x82,0xFE,0x02,0x00,0x00, / -l-510x1E,0x20,0x1E,0x20,0x1E,0x00, / -m-520x20,0x1E,0x20,0x20,0x

14、1E,0x00, / -n-530x1C,0x22,0x22,0x22,0x1C,0x00, / -o-540x3F,0x24,0x24,0x24,0x18,0x00, / -p-550x18,0x24,0x24,0x24,0x3F,0x00, / -q-560x20,0x1E,0x20,0x20,0x10,0x00, / -r-570x12,0x2A,0x2A,0x2A,0x24,0x00, / -s-580x20,0xFC,0x22,0x22,0x24,0x00, / -t-590x3C,0x02,0x02,0x3C,0x02,0x00, / -u-600x38,0x04,0x02,0x0

15、4,0x38,0x00, / -v-610x3C,0x02,0x3C,0x02,0x3C,0x00, / -w-620x22,0x14,0x08,0x14,0x22,0x00, / -x-630x39,0x05,0x05,0x09,0x3E,0x00, / -y-640x22,0x26,0x2A,0x32,0x22,0x00, / -z-65;unsigned int TZ,Ti;unsigned char ii,jj,nn,mm,tt, Ms;/*延時函數(shù)*/void DelayMs(unsigned int msec)unsigned int x,y;for(x=0; xfor(y=0;y

16、/*鍵盤去抖處理函數(shù)*/unsigned char ChKey(bit Key)if(Key=0)DelayMs(30);if(Key=0) return(1);/*定時器中斷0處理(時鐘)函數(shù)*/void timer0(void) interrupt 1 using 1TH0=-(5000/256);TL0=-(5000%256);TR0=1;BUFFER0=BUFFER0+1;if (BUFFER0>201)BUFFER0=0; BUFFER1=BUFFER1+1;Ms=!Ms;if (BUFFER1=60)BUFFER1=0;BUFFER2=BUFFER2+1;if (BUFFER

17、2=60)BUFFER2=0;BUFFER3=BUFFER3+1;if (BUFFER3=24) BUFFER3=0;/*定時器中斷1處理(LED驅(qū)動)函數(shù)*/void timer1(void) interrupt 3 using 1TH1=(Ti+tt*15)/256; TL1=(Ti+tt*15)%256;if(put1=1)&&(iijj+; tt+;if(jj>5) ii+; jj=0;if(ii>10) ii=0;put1=put1; put2=put2;tt=0;/*主程序*/void main(void)Ms=1;Ti=-2100; /根據(jù)實際調(diào)整mm

18、=14;put1=0;put2=1;/*初始化定時中斷0*/TMOD=0x11;TH0=-5000/256; TL0=-5000%256;TR0=1;ET0=1;/*初始化定時中斷1*/TH1=Ti/256; TL1=Ti%256;TR1=1;ET1=1;/* 七個顯示位置,中間為":" 符 */v0=10;v1=10;v2=10;v3=13;v4=10;v5=10;v6=10;/*正常運(yùn)行狀態(tài),讓中間":"符閃現(xiàn)*/w1=0;w2=0;w3=1;w4=0;w5=0;/*搖擺棒初始啟動*/do mm-;DelayMs(120+mm*5);put1=put1; put2=put2;while(mm>0);/*啟動顯示*/ii=0;jj=0;EA=1;/*正式運(yùn)行*/for(;)while(1)/*顯示時和分*/v1=BUFFER3/10;v2=BUFFER3-v1*10;v4=BUFFER2/10;v5=BUFFER2-v4*10;/*按鍵處理*/if(ChKey(set0)=1) /調(diào)整項鍵if(TZ/*閃現(xiàn)調(diào)整項*/switch(TZ)case 0:w1=0;w2=0;w3=1;w4=0;w5=0;break;/正常時秒閃case 1:w1=0;w2=0;w3=0;w4=1;w

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論