本帖最后由 51黑科技 于 2016-2-3 23:13 編輯
旋轉(zhuǎn)LED時(shí)鐘簡介 主要材料: 電動(dòng)機(jī),發(fā)光二極管,鎖存器(74HC573),單片機(jī)(89s51),紅外發(fā)射管,紅外接收管,電池。 時(shí)鐘顯示原理: 電動(dòng)機(jī)帶動(dòng)焊有一排LED的電路板旋轉(zhuǎn),單片機(jī)通過紅外管測(cè)得電路板轉(zhuǎn)一圈的時(shí)間,然后將時(shí)間分割,在每個(gè)分割點(diǎn)讓不同的發(fā)光二極管顯示,利用人眼視覺暫留,看上去就像一個(gè)時(shí)鐘。 另外有旋轉(zhuǎn)LED顯示數(shù)字的程序:http://www.raoushi.com/bbs/dpj-43385-1.html
效果圖: 
源程序: #include<reg51.h> sbit a1=P2^0; sbit a2=P2^1; sbit a3=P2^2;
int shi,fen,miao,i=0,ii=0; unsigned int a=0,th,tl,q=0,aa=0,aaa=0; void main(void) { int x,y; TMOD=0x11; EA=1; EX0=1; ET0=1; ET1=1; IT0=1; shi=7,fen=20,miao=0; while(1) { for(x=300;x>=0;x--) for(y=150;y>=0;y--) { P1=0xff; P2=0xff; P2=0x00;
P1=0xff; a3=1; P1=0xfc; P1=0xff; a3=0; } miao++; if(miao==61) { miao=1; fen++; } if(fen==60) { fen=0; shi++; } } }
void i0() interrupt 0 { int k; unsigned int b,q; TR0=1;
q=(TH0*0x100+TL0)/62;
a=q/0x100;
b=q-(q/0x100)*0x100; th=0xff-a; tl=0xff-b;
/* a=TH0; b=TL0; th=0x100-((a*256+b)/49)/256; tl=0x100-((a*256+b)/49)%256; */
TH1=th; TL1=tl; TR1=1; TH0=0x00; TL0=0x00; i=0; P1=0xff; P2=0xff; P2=0x00; k=3; P1=0xff; a1=1; P1=0x0f; while(k--); P1=0xff; a1=0; }
void i1(void) interrupt 1 {
TH0=0x00; TL0=0x00; }
void i3(void) interrupt 3 { int k=3,q1,q2,q3; long chen; TH1=th; TL1=tl;
i++;
P1=0xff; P2=0xff; P2=0x00; if(i%15==0) { P1=0xff; a1=1; P1=0x0f; while(k--); P1=0xff; a1=0; } else if(i%5==0) { P1=0xff; a1=1; P1=0x1f; while(k--); P1=0xff; a1=0; } else { P1=0xff; a1=1; P1=0x7f; while(k--); P1=0xff; a1=0; } k=3; if(i==miao) { k=3; P1=0xff; a1=1; P1=0xf8; while(k--); P1=0xff; a1=0; k=3; P1=0xff; a2=1; P1=0x00; while(k--); P1=0xff; a2=0; k=3; P1=0xff; a3=1; P1=0x00; while(k--); P1=0xff; a3=0; } else if(i==fen) { k=3; P1=0xff; a2=1; P1=0xc0; while(k--); P1=0xff; a2=0; k=3; P1=0xff; a3=1; P1=0x00; while(k--); P1=0xff; a3=0; } else if(i==(shi*5)+2 ) { k=3; P1=0xff; a3=1; P1=0x00; while(k--); P1=0xff; a3=0; } else if(i==(shi*5)+1||i==(shi*5)+3) { k=1; P1=0xff; a3=1; P1=0xbf; while(k--); P1=0xff; a3=0; } }
|