標題: 單片機pov彩燈旋轉(zhuǎn)LED顯示原理介紹與程序電路原理圖設計 [打印本頁]
作者: easoncyx 時間: 2025-12-4 23:09
標題: 單片機pov彩燈旋轉(zhuǎn)LED顯示原理介紹與程序電路原理圖設計
分享一個基于STC12C5A60S3單片機的pov彩燈設計,含代碼
旋轉(zhuǎn)LED顯示原理介紹
如何讓一列燈旋轉(zhuǎn)起來感覺像穩(wěn)定的字顯示在空中呢?首先我們來分析下人的眼睛,其實人的眼睛非常好騙的,只要讓電機掃描的快一點就行了,實際上肉眼在24幀/秒以上就不會看到閃爍的,所以要保證電機的速度能在一秒轉(zhuǎn)24圈以上,這樣的話人眼就覺得旋轉(zhuǎn)的字很穩(wěn)定很清晰的顯示在空中了。
旋轉(zhuǎn)LED旋轉(zhuǎn)起來是一個圓,那么就需要有一個傳感器來判斷起點位置,有人用霍爾傳感器,有人用紅外對管,筆者覺得用紅外對管來的便宜些,而且實現(xiàn)起來也容易。這個起點檢測非常重要,單片機就是根據(jù)這個起點來判斷是否要開始顯示 數(shù)據(jù)的。如果起點檢測不到 單片機就不開始顯示。
如何讓一列燈不斷的送數(shù)據(jù)實現(xiàn)一個文字的顯示呢?這個我們就要了解文字取模的原理了,這里以PC2002字幕軟件為例,取一個16*16的中文字,見字幕選項設置:
從第一列開始向下每取8個點作為一個字節(jié),如果最后不足8個點就補滿8位。
取模順序是從低到高,即第一個點作為最低位。如*-------取為00000001
取模后如下表:0xFF,0x7F,0xFF,0xBF,0x3F,0xC8,0xBF,0xFB,0xBF,0xFB,0xBF,0xEB,0x80,0x9B,0xB7,0xFB,0xB7,0xEB,0xB7,0x9B,0xB7,0xFB,0x37,0xF8,0xF7,0xEF,0xF7,0x1F,0xFF,0xFF,0xFF,0xFF,/*"點",0*/
現(xiàn)在我們知道16*16取模是一列一列取的了,一列有2個字節(jié),一共16列,所以一個16*16的漢字就有32個字節(jié),需要占用單片機的Code空間 32個字節(jié)。然后再結合硬件來分析,如下圖:
一列燈16個 剛好對應16*16一個漢字的一列:2個字節(jié),所以把取模到的數(shù)據(jù)依次送到P2口 和P4 P5口,這里硬件中P4 P5組成一個字節(jié),所以顯示程序如下:
for(i=0;i<16;i++) //送16列 顯示 這里只顯示一個字。
{
P2=zimo[i*2]; //送數(shù)據(jù)低位顯示
P4=(zimo[i*2+1]);//送數(shù)據(jù)高位顯示 這里用了單片機P4 和P5口 是LQFP48腳才有的IO口
P5=(zimo[i*2+1])>>4;//這里行和列 都是IO口獨立驅(qū)動的LED
DelayUs(200); //延時讓LED亮起來 每列延時的時間
P2=0XFF;
P4=P5=0XFF;
}
在什么時候送顯示呢?單片機IO一判斷到 紅外接收管接收到起點信號,就開始顯示,顯示完16列后等待下一次的起點信號。這樣只要電機的速度夠快就會穩(wěn)定的把字顯示字空中了。平面的文字顯示同理。
如何讓一組文字不斷的移動?這就需要一個字幕計數(shù)器,旋轉(zhuǎn)LED每旋轉(zhuǎn)一圈,這個字幕計數(shù)器就加一,指向下一列,這樣不斷的刷新,感覺文字就在移動了,程序如下:
j就是字幕計數(shù)器,每轉(zhuǎn)一圈j就會加1;
if(KEY==0) //紅外接收管 判斷起始位
{
j++;
if(j>672) //根據(jù)顯示的字數(shù)定義改數(shù)值672/16=42個字 顯示完42個字后 重新開始
{
j=0 ;
}
for(i=j;i<128+j;i++) //每轉(zhuǎn)一圈 前進一列 這里定義一圈中同時顯示128/16=8個字,
{ P2=zimo[i*2]; //送數(shù)據(jù)低位顯示
P4=(zimo[i*2+1]);//送數(shù)據(jù)高位顯示 這里用了單片機P4 和P5口 是LQFP48腳才有的
P5=(zimo[i*2+1])>>4;//這里行和列 都是IO口獨立驅(qū)動的LED
DelayUs(200); //延時讓LED亮起來 每列延時的時間
P2=0XFF;
P4=P5=0XFF;
}
最后一點是供電的問題,旋轉(zhuǎn)LED供電問題是比較麻煩的,這里我采用了無線供電方式,經(jīng)過實踐論證,功率很有限,需要改進的地方還很多,電路原理是把直流轉(zhuǎn)成交流,然后經(jīng)過初級線圈 ,最后次級線圈感應得電,經(jīng)過整流濾波后給旋轉(zhuǎn)部分供電,直流轉(zhuǎn)交流部分電路是一個自激震蕩電路。動手能力強的朋友經(jīng)過改造電機電刷方法實現(xiàn),如果有條件制作的歡迎用此種方式。





單片機源程序如下:
- /*************************************************************
- 旋轉(zhuǎn)LED綜合功能程序 平面立體一起顯示
- 單片機 STC12C5A32S2
- 運用無線供電方法 旋轉(zhuǎn)起來平靜 (特別說明;旋轉(zhuǎn)LED轉(zhuǎn)接塑料需放點紙巾壓進電機軸,這樣旋轉(zhuǎn)起來摩擦力才夠大,夠穩(wěn)定。這個對旋轉(zhuǎn)是否安靜影響很大
- 一個就是配重的問題,利用兩個銅柱可以配平衡,長銅柱固定在旋轉(zhuǎn)方向那頭,即后備電池正極旁邊,短銅柱在另一邊) 結構做的好旋轉(zhuǎn)是非常靜的,幾乎是一臺風扇!
- 字模軟件用的PC2002
- 實現(xiàn)效果:1.立體顯示旋轉(zhuǎn)字 (通過 “暫停按鍵” 進行靜態(tài)與移動顯示8-29更新
- 2.平面顯示數(shù)字時鐘 年月日 星期+\立體顯示字(時鐘可調(diào) 時鐘芯片用DS1302 帶后備電池 掉電時鐘繼續(xù)走)
- 3.平面顯示模擬表盤時鐘 (如果表盤不全或者過多顯示 請按配套的遙控器"快進"或者"快退"來調(diào)整單列顯示時間 設置后參數(shù)保存到DS1302RAM 中 下次啟用無需調(diào)整 2012-8-28)
- 4.平面\立體顯示字體模式 通過 “暫停按鍵” 進行靜態(tài)與移動顯示8-29更 新
- 5.立體下拉顯示字+停頓
- 6.兩顆心閃動
- 7.一顆心填滿效果
- 8.笑臉動畫
- 9.打印字效果 (打印一封寫給親愛的信)
- 10.立體顯示時間+顯示文字
- 上述10種效果對應遙控器按鍵1、 2、 3、 4、 5、 6、 7、 8、 9 、0 原時鐘復位按鍵 改到按鍵“Meun”
- 通過上位機改 立體顯示字 平面顯示字
- ***************************************************************/
- #include "NEW_8051.H"
- #include "task.h"
- #include <stddef.h>
- #define ucNumRows 224//224 //定義一周顯示字個數(shù) 一個字16列 224/16=13個字
- #define uclineNumRows 104//定義立體顯示時間中的立體顯示文字
-
- sbit Led1=P3^0;//最里面LED
- sbit Led2=P3^1;
- sbit Led3=P3^4;
- uchar Delay=1 ;
- bit BIT_timeout=0;
- uint uitime=0;
- data uint uiicount=0;
- uint uiCountFontNumber=0;
- uint uiPrintFontNumber=0;
- uchar ucMode=1;
- data uint uiicountTwo=0;
- uchar BuffCount=0;
- uchar ucPCA0_TimeCount;
- data uint uiBaseAddress=0;
- data uint uiFontNumber=0;
- data uint uiFontNumber_P=0;
- data uchar ucNumRows_p=160;
- uchar DelayTimeCount=0;
- bit Stop_move=0;
- uchar Mod=0;
- uchar Buff[448]=0xFF;
- uchar ucLine_count=0;
- uchar Row;
- uchar k;
- bit Error=0;
- uchar Stop_time=0;
- uchar ucline=0;
- bit bDot=0;
- uchar code sw[8]={0XFE,0XFC,0XF8,0XF0,0XE0,0XC0,0X80,0X00};
- void delay_200ms(void);
- uchar code liushui[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//流水掃描數(shù)據(jù)
- /***************模擬表盤變量**************/
- uint DISP_LINE=0;
- uchar DISP_LINE_ADJ=0;
- uchar DISP_TIME_ADJ=0;
- uchar Time0_count=0;
- //====參數(shù)初始化
- uchar DISP_TIME_SET = 100 ; //單列顯示時間設置值
- /********************************************/
- /*********延時子程序**********/
- void delay(unsigned char n) //每列顯示的時間
- {
- unsigned char a,b,c;
- c=2;//+DelayTimeCount;
- for(;n>0;n--)
- {
- for(b=45;b>0;b--)
- for(a=c;a>0;a--);
- }
- }
- /*********延時子程序**********/
- void delay_PIC(unsigned char n) //每列顯示的時間
- {
- unsigned char a,b,c;
- c=2;//+DelayTimeCount;
- for(;n>0;n--)
- {
- for(b=38;b>0;b--)
- for(a=c;a>0;a--);
- }
- }
- /*********PCA中斷子程序**********/
- void PCA() interrupt 7 //PCA定時器
- {
- if( CCF0 )
- {
- CCF0 = 0;
- CL = 0;
- CH = 0;
- ucPCA0_TimeCount++;
- if(ucPCA0_TimeCount>12)
- {
- ucPCA0_TimeCount=0; //調(diào)時閃爍
- if(ucMode==2)
- {
- flag=~flag;
- }
- }
- }
- }
- /************************************/
- void Timer0Interrupt(void) interrupt 1
- {
- TF0=0;
- TR0=0;
- TH0 =(65536- DISP_TIME_SET)/256;
- TL0 =(65536- DISP_TIME_SET)%256;
- TR0=1;
- //if ( ++Time0_count > 250 ) Time0_count = 250 ; //溢出計數(shù)器+1,>最大值,=最大值
- if ( ++DISP_LINE > 180 ) DISP_LINE = 0 ; //顯示列計數(shù)器+1,>最大值,=0
- /***********清空顯示************/
- P1=0XFF ;
- P0=0XFF ;
- Led1=0;
- Led2=1;
- Led3=1;
- /*************形成表盤*******************/
- switch (DISP_LINE)
- {
- case 180*1/12 : //1點
- case 180*2/12 : //2點
- case 180*4/12 : //4點
- case 180*5/12 : //5點
- case 180*7/12 : //6點
- case 180*8/12 : //7點
- case 180*10/12 : //10點
- case 180*11/12 : //11點
- P1=0x3F;
- break;
- case 180*3/12 : //3點
- case 180*6/12 : //6點
- case 180*9/12 : //9點
- case 0: //12點
- P1=0x1F;
- break;
- }
- /****************************************/
- //顯示指針"時"
- // i = Hour ;
- // j = Hour ;
- // if ( ++i > 179 ) i=0 ; //i+1,結果>179,則清零
- // if ( --j > 179 ) i=179 ; //j-1,結果為負,則重新賦值179
- if(( (Hour-3)<=DISP_LINE)&&((Hour+3)>=DISP_LINE) )
- {
- if(((Hour-2)==DISP_LINE)||((Hour+2)==DISP_LINE))
- P0=0XFB;
- else if(((Hour-3)==DISP_LINE)||((Hour+3)==DISP_LINE))
- P0=0XFD;
-
- }
- if(Hour==DISP_LINE)//||(DISP_LINE==i)||(DISP_LINE==j
- {
- P1=P1|0X1F ;
- P0=0XF0 ;
- Led1=0;
- Led2=0;
- Led3=0;
- }
- //顯示指針"分"
- if(( (Cent-2)<=DISP_LINE)&&((Cent+2)>=DISP_LINE) )
- {
- if(((Cent-1)==DISP_LINE)||((Cent+1)==DISP_LINE))
- P0=0XBF;
- else if(((Cent-2)==DISP_LINE)||((Cent+2)==DISP_LINE))
- P0=0XDF;
-
- }
- if(Cent==DISP_LINE)
- {
- P1=P1|0X1F ;
- P0=0X00 ;
- Led1=0;
- Led2=0;
- Led3=0;
-
- }
- //顯示指針"秒"
- if(( (Sec-2)<=DISP_LINE)&&((Sec+2)>=DISP_LINE) )
- {
- if(((Sec-1)==DISP_LINE)||((Sec+1)==DISP_LINE))
- P1=P1&0XF7 ;
- else if(((Sec-2)==DISP_LINE)||((Sec+2)==DISP_LINE))
- P1=P1&0XFB ;
-
- }
- if(Sec==DISP_LINE)
- {
- P1=P1&0XE0 ;
- P0=0X00 ;
- Led1=0;
- Led2=0;
- Led3=0;
-
- }
- //}
- }
- /*********中斷子程序**********/
- void int0() interrupt 0 //使用外部中斷0
- {
- EX0=0;
- BIT_timeout=1;
- if(ucMode==0x03)
- {
- //調(diào)整單列顯示時間設置值(模糊控制)
- // if ( Time0_count > 183 )
- // {
- // if ( Time0_count > 220 ) DISP_TIME_SET = DISP_TIME_SET + 4 ;
- // else if ( Time0_count > 200 ) DISP_TIME_SET = DISP_TIME_SET + 3 ;
- // else if ( Time0_count > 185 ) DISP_TIME_SET = DISP_TIME_SET + 2 ;
- // else DISP_TIME_SET = DISP_TIME_SET + 1 ;
- //
- // if ( DISP_TIME_SET > 2000 ) DISP_TIME_SET = 2000 ; //鉗位
- //
- // }
- // else if ( Time0_count < 180 )
- // {
- // if ( Time0_count < 140 ) DISP_TIME_SET = DISP_TIME_SET - 4 ;
- // else if ( Time0_count < 160 ) DISP_TIME_SET = DISP_TIME_SET - 3 ;
- // else if ( Time0_count < 175 ) DISP_TIME_SET = DISP_TIME_SET - 2 ;
- // else DISP_TIME_SET = DISP_TIME_SET - 1 ;
- // if ( DISP_TIME_SET < 100 ) DISP_TIME_SET = 100 ; //鉗位
- //
- // }
- //
- // DISP_TIME_SET=DISP_TIME_SET+DISP_TIME_ADJ;
- // Time0_count=0; //溢出計數(shù)器 = 0
- TR0=0;
- TH0 =(65536- DISP_TIME_SET)/256;
- TL0 =(65536- DISP_TIME_SET)%256;
- TR0=1;
- DISP_LINE =0;// DISP_LINE_ADJ ; //顯示列計數(shù)器(0~179)=校正值
- du1302();//獲取時間
- Sec=59-(Sec/16*10+Sec%16) ; //由于電機反轉(zhuǎn) 所以需要用最大值減去當前值
- Cent=59-(Cent/16*10+Cent%16) ;
- Hour=Hour/16*10+Hour%16 ;
- if(Hour>11)
- {
- Hour=Hour-12;
- }
- Hour=12-Hour;
- Sec=Sec*3;//秒針定位="秒"*3
- Hour=(Hour*15)+(Cent/4);//時針定位="時"*15+"分"/4
- Cent=Cent*3;//分針定位="分"*3
-
- }
- EX0=1;
- }
- /********************************/
- void start(void)
- {
- P1=0XFF;
- P2=0XFF;
- P0=0XFF;
- P3=0XFF;
- P4=0XFF;
- P5=0XFF;
- // uiFontNumber=(byte_read(0x0100)<<8)+byte_read(0x0101);
- uiFontNumber=((byte_read(0)<<8)+byte_read(1))*16; //讀取EEP立體數(shù)據(jù)總數(shù)
- uiPrintFontNumber=uiFontNumber*2;
- uiFontNumber_P=((byte_read(0x3600)<<8)+byte_read(0x3601))*16; //讀取EEP平面數(shù)據(jù)總數(shù)
- //ucNumRows=R1302(ucNumRows_adder+1)*16; //讀立體一圈中顯示字總數(shù)
- // if(ucNumRows<16)
- // {
- // ucNumRows=224;
- // }
- // ucNumRows_p=R1302(ucNumRows_p_adder+1)*16;
- // if(ucNumRows_p<16)
- // {
- // ucNumRows_p=96;
- // }
- //Send_data(uiFontNumber>>8);
- //Send_data(uiFontNumber);
- //Send_data(BCD2DEC(R1302(LINE_ADJ_adder+1)));
- // DISP_LINE_ADJ=BCD2DEC(R1302(LINE_ADJ_adder+1));//讀取列計數(shù)器校正值
- // if(DISP_LINE_ADJ>20)//防止值過大
- // {
- // DISP_LINE_ADJ=0;
- // }
- //write_1302Data(DISP_TIME_adder,160);
- // DISP_LINE = DISP_LINE_ADJ ; //顯示列計數(shù)器(0~179)=校正值
- // DISP_TIME_SET=DISP_TIME_SET+ DISP_TIME_ADJ;
- //DISP_LINE = DISP_LINE_ADJ ; //顯示列計數(shù)器(0~179)=校正值
- //uiAllRows=uiAllRows-128;;
- }
- /***************************************/
- void OS_ALLRun(void)
- {
-
- //BIT_timeout=1;
- if(BIT_timeout)//起始點
- {
- BIT_timeout=0;
- Error=1;
- if( new_code ) //有紅外按鍵
- {
- new_code=0;
-
- //Send_data(key_code);
- switch( key_code ) //根據(jù)不同的按鍵值執(zhí)行不同的動作
- {
- case 0x07:
- if(ucMode==3)
- {
- if(DISP_TIME_SET<250)
- {
- DISP_TIME_SET++;
- write_1302Data(DISP_TIME_adder,DISP_TIME_SET);//寫入DS1302 RAM中保存
- }
- }
- else
- {
- DelayTimeCount++;//單列延時時間+
- }
- break;
-
- case 0x09://
- if(ucMode==3)
- {
- if(DISP_TIME_SET>20)
- {
- DISP_TIME_SET--;
- write_1302Data(DISP_TIME_adder,DISP_TIME_SET);//寫入DS1302 RAM中保存
- }
- }
- else
- {
- if(DelayTimeCount>0)//單列延時時間-
- DelayTimeCount--;
- }
- break;
- /*********************************/
- case 0x0C:
- ucMode=0x01;//立體顯示字 移動效果+靜態(tài)顯示
- CR=0;
- TR0=0;
- uiCountFontNumber=0;
- Led1=1;
- Led2=1;
- Led3=1;
- break;
- case 0x1C:
- ucMode=0x05;//立體顯示字 下拉效果+靜態(tài)顯示
- CR=0;
- TR0=0;
- Led1=1;
- Led2=1;
- Led3=1;
- uiCountFontNumber=0;
- break;
- case 0x5A:
- ucMode=0x06;//立體顯示簡單動畫
- CR=0;
- TR0=0;
- uiCountFontNumber=0;
- Led1=1;
- Led2=1;
- Led3=1;
- break;
- case 0x42:
- ucMode=0x07;//立體顯示心型變化
- CR=0;
- TR0=0;
- uiCountFontNumber=0;
- Led1=1;
- Led2=1;
- Led3=1;
- break;
- case 0x52:
- ucMode=0x08;//笑臉變化
- CR=0;
- TR0=0;
- uiCountFontNumber=0;
- Led1=1;
- Led2=1;
- Led3=1;
- break;
- case 0x4A:
- CR=0;
- TR0=0;
- uiCountFontNumber=0;
- ucMode=0x09;//打印字效果
- ucLine_count=0;
- Led1=1;
- Led2=1;
- Led3=1;
- break;
- case 0x16:
- CR=0;
- TR0=0;
- uiCountFontNumber=0;
- ucMode=0x0A;//立體顯示時間 與文字
- Led1=1;
- Led2=1;
- Led3=1;
- break;
- case 0x18:
- TR0=0;
- CR=0;
- Auto_Set1302(starts_time);
- ucMode=0x02;//數(shù)字鐘模式
- Led1=1;
- Led2=1;
- Led3=1;
- break;
- case 0x5E:
-
- DISP_TIME_SET=R1302(DISP_TIME_adder+1);//讀取單列顯示時間
- //Send_data(DISP_TIME_SET);
- if((DISP_TIME_SET>250)||(DISP_TIME_SET<20)) //防止值過大 過小
- {
- DISP_TIME_SET=115;
- }
- ucMode=0x03;//指針時鐘模式
- TR0=1;
- CR=0;
- Led1=0;
- break;
- case 0x08:
- ucMode=0x04;//平面顯示字模式
- CR=0;
- TR0=0;
- uiCountFontNumber=0;
- Led1=1;
- Led2=1;
- Led3=1;
- break;
- /*********************************/
- case 0x40: //調(diào)時加
- if(ucMode==0x02)
- {
- Set(id,1);
-
- }
- else if(ucMode==0x03)
- {
- if(++DISP_LINE_ADJ>179) //盤面校正值
- {
- DISP_LINE_ADJ=0;
-
- }
- write_1302Data(LINE_ADJ_adder,DISP_LINE_ADJ);//寫入DS1302 RAM中保存
- }
- break;
- case 0x19: //調(diào)時減
- if(ucMode==0x02)
- {
- Set(id,0);
- }
- else if(ucMode==0x03)
- {
- if(--DISP_LINE_ADJ==0) //盤面校正值
- {
- DISP_LINE_ADJ=179;
-
- }
- write_1302Data(LINE_ADJ_adder,DISP_LINE_ADJ);//寫入DS1302 RAM中保存
- }
- break;
-
- case 0x15://調(diào)時切換
- if(ucMode==2)
- {
- id++;
- //CCAPM1 = 0x49; //開PCA0中斷
- //CCAPM0 = 0x00; //關PCA1中斷
- CR=1;//啟動PCA計數(shù)
- if(id>4)
- {
- id=0;
- CR=0;//關閉PCA計數(shù)
- // CCAPM0 = 0x00;//關PCA0中斷
- }
- }
- else if((ucMode==4)||(ucMode==5)||(ucMode==1))
- {
- Stop_move=~Stop_move;
- }
- break;
- case 0x47://時鐘初始化
- Set1302(starts_time); //初始化
- W1302(0x8e,0x00); //控制命令,WP=0,寫操作
- W1302(0x90,0xa5); //打淶二級? 一個二級管串聯(lián)一個2K玷
- //write_1302Data(DISP_TIME_adder,160);
- break;
- default: break;
- }
- key_code=0;
- }
- //DelayTime=TimeCount/(ucNumRows+60);
- //TimeCount=0; //延時周期計數(shù)清零
- switch (ucMode)
- {
- case 0x01://立體顯示字移動模式
- //uiCountFontNumber++;
- Led3=1;
- P1=0XFF;
- P0=0XFF;
- if(Stop_move==0) //是否暫停移動
- {
- uiCountFontNumber++;
- }
- if(uiCountFontNumber >uiFontNumber ) //uiFontNumber
- {
-
- uiCountFontNumber = 0;
-
- }
- for( uiicount = uiCountFontNumber;uiicount<ucNumRows+uiCountFontNumber+32;uiicount++)
- {
-
- P2=byte_read(2+uiicount*2);//讀取內(nèi)部EEPROM字幕數(shù)據(jù) 數(shù)據(jù)在2地址后 所以要加上2
- P4=byte_read(2+uiicount*2+1);
- P5=byte_read(2+uiicount*2+1)>>4;
- delay(1);
- P2=P4=P5=0XFF;
- if(BIT_timeout)
- {
-
- break;
- }
- }
- break;
- case 0X0A://立體顯示時間 與文字
- du1302();
- Show_line_time();//立體顯示時間
- delay(48);
- uiCountFontNumber++;
- if(uiCountFontNumber >uiFontNumber ) //uiFontNumber
- {
-
- uiCountFontNumber = 0;
-
- }
- for( uiicount = uiCountFontNumber;uiicount<uclineNumRows+uiCountFontNumber;uiicount++)
- {
-
- P2=byte_read(2+uiicount*2);//讀取內(nèi)部EEPROM字幕數(shù)據(jù) 數(shù)據(jù)在2地址后 所以要加上2
- P4=byte_read(2+uiicount*2+1);
- P5=byte_read(2+uiicount*2+1)>>4;
- delay(1);
- P2=P4=P5=0XFF;
- if(BIT_timeout)
- {
-
- break;
- }
- }
- break;
- case 0x05://立體顯示字下拉模式
- //uiCountFontNumber++;
- {
- if(uiCountFontNumber >uiFontNumber ) //uiFontNumber
- {
-
- uiCountFontNumber = 0;
-
- }
- for( uiicount = 0;uiicount<ucNumRows;uiicount++)
- {
-
- P2=Buff[uiicount*2];//讀取內(nèi)部EEPROM字幕數(shù)據(jù) 數(shù)據(jù)在2地址后 所以要加上2
- P4=Buff[uiicount*2+1];
- P5=Buff[uiicount*2+1]>>4;
- delay(1);
- P2=P4=P5=0XFF;
- if(BIT_timeout)
- {
-
- break;
- }
- }
-
- /****************************************/
- switch (Mod) //根據(jù)當前狀態(tài)顯示
- {
- case 0://下拉顯示
- for(k=0;k<=ucNumRows;k++)
- {
- if(Row<8)
- {
- Buff[k*2]=(byte_read(2+uiCountFontNumber+k*2))|(sw[Row]);
- Buff[k*2+1]=0xFF;
- }
- else
- {
- Buff[k*2]=(byte_read(2+uiCountFontNumber+k*2));
- Buff[k*2+1]=(byte_read(2+uiCountFontNumber+k*2+1))|(sw[Row-8]);
- }
- }
- break;
- case 1: //靜態(tài)顯示
- case 2:
- break;
- case 3: //擦除
- for(k=0;k<=ucNumRows;k++)
- {
- if(Row<8)
- {
- Buff[k*2]=(byte_read(2+uiCountFontNumber+k*2))|(~sw[Row]);
- }
- else
- {
- Buff[k*2+1]=(byte_read(2+uiCountFontNumber+k*2+1))|(~sw[Row-8]);
- }
- }
- break;
- default:
- break;
- }
- if(++Row>=16)
- {
- Row=0;
- Mod++;
- if(Mod>3)
- {
- Mod=0;
- if(Stop_move==0) //是否暫停移動
- {
- uiCountFontNumber+=64;
- }
- }
-
- }
- }
- break;
- case 0x06://立體顯示兩顆心動畫
- for(k=0;k<4;k++)
- {
- for( uiicount = 0;uiicount<32;uiicount++)
- {
-
- P2=Buff[uiicount*2];
- P4=Buff[uiicount*2+1];
- P5=Buff[uiicount*2+1]>>4;
- delay(2);
- P2=P4=P5=0XFF;
- if(BIT_timeout)
- {
-
- break;
- }
- }
- }
- for(k=0;k<32;k++)
- {
-
- Buff[k*2]=flash[uiCountFontNumber+k*2];
- Buff[k*2+1]=flash[uiCountFontNumber+k*2+1];
-
- }
- if(++Row>=8)
- {
- Row=0;
- uiCountFontNumber+=64;
- if(uiCountFontNumber>=192)
- {uiCountFontNumber=0;}
-
- }
- break;
- case 0x07://立體顯示心形動畫
- for(k=0;k<4;k++)
- {
- for( uiicount = 0;uiicount<32;uiicount++)
- {
-
- P2=Buff[uiicount*2];
- P4=Buff[uiicount*2+1];
- P5=Buff[uiicount*2+1]>>4;
- delay(2);
- P2=P4=P5=0XFF;
- if(BIT_timeout)
- {
-
- break;
- }
- }
- }
- for(k=0;k<32;k++)
- {
-
- Buff[k*2]=xinxing[uiCountFontNumber+k*2];
- Buff[k*2+1]=xinxing[uiCountFontNumber+k*2+1];
-
- }
- if(++Row>=8)
- {
- Row=0;
- uiCountFontNumber+=64;
- if(uiCountFontNumber>=576)
- {uiCountFontNumber=0;}
-
- }
- break;
- case 0x08://立體顯示笑臉動畫
- for(k=0;k<4;k++)
- {
- for( uiicount = 0;uiicount<32;uiicount++)
- {
-
- P2=Buff[uiicount*2];
- P4=Buff[uiicount*2+1];
- P5=Buff[uiicount*2+1]>>4;
- delay(2);
- P2=P4=P5=0XFF;
- if(BIT_timeout)
- {
-
- break;
- }
- }
- }
- for(k=0;k<32;k++)
- {
-
- Buff[k*2]=xiaolian[uiCountFontNumber+k*2];
- Buff[k*2+1]=xiaolian[uiCountFontNumber+k*2+1];
-
- }
- if(++Row>=15)
- {
- Row=0;
- uiCountFontNumber+=64;
- if(uiCountFontNumber>=256)
- {uiCountFontNumber=0;}
-
- }
- break;
- case 0x09://打印字效果
-
- for( uiicount = 0;uiicount<176;uiicount++)
- {
-
- P2=Buff[uiicount*2];
- P4=Buff[uiicount*2+1];
- P5=Buff[uiicount*2+1]>>4;
- delay(1);
- P2=P4=P5=0XFF;
- if(BIT_timeout)
- {
-
- break;
- }
- }
-
- ucline=0;
- for(k=0;k<176;k++)
- {
-
- if(k<ucLine_count)
- {
- Buff[k*2]=byte_read(2+uiCountFontNumber+k*2);
- Buff[k*2+1]=byte_read(2+uiCountFontNumber+k*2+1);
- }
- else if(k<(ucLine_count+16))
- {
-
- if((bDot==1)&&(ucLine_count==160))
- {
- Buff[k*2]=0XFF;
- Buff[k*2+1]=0XFF;
- }
- else
- {
- Buff[k*2]=line[ucline++];
- Buff[k*2+1]=line[ucline++];
- }
- }
- else
- {
-
- Buff[k*2]=0XFF;
- Buff[k*2+1]=0XFF;
- }
-
- }
- if(++Row>=10)
- {
- Row=0;
- bDot=~bDot;
- if(ucLine_count<160)
- {
- ucLine_count=ucLine_count+16;
- }
- if(ucLine_count>=160)
- {
- if(++Stop_time>4)
- {
- Stop_time=0;
- ucLine_count=0;
- uiCountFontNumber+=320;
- if(uiCountFontNumber>=uiPrintFontNumber)
- {
- uiCountFontNumber=0;
- }
- }
- }
-
- }
- break;
- case 0x02: //數(shù)字時鐘模式
- du1302();
- Led1=1;
- Led3=1;
- if( ++uiCountFontNumber >uiFontNumber ) //uiFontNumber
- {
-
- uiCountFontNumber = 0;
-
- }
- uiicount = uiCountFontNumber;
- display();
- break;
- /*********************/
-
- case 0x04: //平面顯示字體模式
- Led3=1;
- if(Stop_move==0)
- {
- uiCountFontNumber++;
- }
- if( uiCountFontNumber>uiFontNumber_P )
- {
- uiCountFontNumber=0 ;
- }
- for(uiicountTwo=uiCountFontNumber;uiicountTwo<ucNumRows_p+uiCountFontNumber;uiicountTwo++)
- {
- P1=byte_read(0x3602+uiicountTwo*2);
- P0=byte_read(0x3603+uiicountTwo*2);
- P2=byte_read(2+uiicountTwo*4);//讀取內(nèi)部EEPROM字幕數(shù)據(jù) 數(shù)據(jù)在2地址后 所以要加上2
- P4=byte_read(3+uiicountTwo*4);
- P5=byte_read(3+uiicountTwo*4)>>4;
- delay(1);
- P2=P4=P5=0XFF;
- P2=byte_read(4+uiicountTwo*4);//讀取內(nèi)部EEPROM字幕數(shù)據(jù) 數(shù)據(jù)在2地址后 所以要加上2
- P4=byte_read(5+uiicountTwo*4);
- P5=byte_read(5+uiicountTwo*4)>>4;
- delay(1);
- P1=0xFF;
- P0=0XFF;
- P2=P4=P5=0XFF;
- if(BIT_timeout)
- {
- break;
- }
- }
- break;
- default:
- break;
- }
-
- }
- if(Error==0) //上電后如果紅外對管 不正常 (無起點檢測)會以流水燈形式跑起來,流水燈也可檢測LED焊接是否正常
- {
- for(k=0;k<8;k++)
- {
- P0=~liushui[k];
- P1=~liushui[k];
- P2=~liushui[k];
- P3=~liushui[k]|0x0F;
- P4=~liushui[k];
- P5=~liushui[k];
- delay_200ms();
- }
- }
- }
復制代碼
代碼下載:
基于STC12的pov彩燈程序設計.7z
(1.19 MB, 下載次數(shù): 0)
2025-12-5 05:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
| 歡迎光臨 (http://www.izizhuan.cn/bbs/) |
Powered by Discuz! X3.1 |
亚洲一区成人|
亚洲精品国产精品乱码不卡|
亚洲综合天堂网|
黄页网址在线观看|
国产精品视频一区二区三区综合|
国产日韩一区二区三区在线播放|
综合自拍亚洲综合图不卡区|
在线精品国产欧美|
蜜桃传媒视频麻豆一区
|
中文字幕在线永久|
亚洲精品人妻无码|
裸体xxxx视频在线|
偷拍亚洲精品|
国产性做久久久久久|
亚洲美女福利视频网站|
鲁鲁狠狠狠7777一区二区|
秘密基地免费观看完整版中文|
国产成人三级在线播放|
尤物视频网站在线观看|
久久99国产精品久久99大师|
91女神在线视频|
亚洲欧洲日韩国产|
亚洲精品国产系列|
午夜剧场免费在线观看|
最新天堂网www|
日韩免费电影|
亚洲综合网站|
成人精品一区二区三区四区|
日韩精品视频免费专区在线播放|
麻豆传媒一区二区|
国产激情av在线|
第四色播日韩|
日本精品裸体写真集在线观看|
青椒成人免费视频|
欧美大胆一级视频|
欧美日韩国产一二|
亚洲天堂网av在线|
www黄com|
极品尤物一区|
国产精品青草久久|
欧美激情中文网|
成年人视频在线免费|
一级片免费观看视频|
国产剧情在线观看|
亚洲小说欧美另类婷婷|
欧美影院午夜播放|
99视频在线播放|
香蕉视频久久久|
免费看片黄色|
国产suv精品一区二区四区视频|
1313精品午夜理伦电影|
91色婷婷久久久久合中文|
日韩中文字幕视频在线观看|
日韩中字在线观看|
国产男男gay体育生网站|
午夜在线免费观看视频|
国产亚洲毛片|
精品国产三级a在线观看|
亚洲国产激情一区二区三区|
800av免费在线观看|
日韩欧美在线番号|
亚洲美女黄色|
精品成a人在线观看|
四虎影院一区二区|
中文文字幕一区二区三三|
岛国在线大片|
日韩成人伦理电影在线观看|
日韩成人激情在线|
黄色大片中文字幕|
精品人妻午夜一区二区三区四区
|
99久久久精品|
欧美极品在线视频|
四川一级毛毛片|
久久精品国产亚洲777|
欧洲精品久久久久毛片完整版|
91免费视频网|
奇米4444一区二区三区|
极品白嫩的小少妇|
奇米影视888狠狠狠|
欧美日韩看看2015永久免费
|
农村妇女精品一二区|
人妻一区二区三区四区|
欧美羞羞视频|
国产欧美精品一区aⅴ影院|
欧美综合第一页|
日韩一级视频在线观看|
www.999av|
在线精品国产|
亚洲精品在线观|
日韩欧美不卡在线|
97一区二区三区|
99久久这里有精品|
亚洲男人的天堂网|
91久久国产自产拍夜夜嗨|
麻豆视频在线观看|
国产一二三四|
国产精品网址|
欧美性xxxxx极品娇小|
日本一区免费观看|
国产精品久久欧美久久一区|
av最新在线|
久久久精品蜜桃|
国产在线观看精品一区二区三区|
成人免费毛片东京热|
国产二区视频在线观看|
国产毛片精品一区|
久久青草福利网站|
欧美熟妇激情一区二区三区|
在线免费中文字幕|
麻豆成人久久精品二区三区小说|
欧美激情第一页xxx|
欧美熟妇一区二区|
一区二区三区不卡在线视频|
日本欧美加勒比视频|
久久婷婷国产麻豆91天堂|
精品人妻在线视频|
无限国产资源|
美女一区二区久久|
国产69久久精品成人|
欧美视频www|
日韩三级影院|
香蕉久久精品|
欧美日韩国产一级片|
青青草视频在线免费播放|
欧美18一14sex性处hd|
欧洲激情视频|
精品亚洲va在线va天堂资源站|
www.国产福利|
91国内精品在线视频|
久久激情久久|
668精品在线视频|
国产成人自拍网站|
青草在线视频|
日韩毛片一二三区|
视频一区二区三区在线观看|
亚洲剧场午夜在线观看|
欧美激情久久久久久久久久久|
欧美一区二区三区日韩|
性刺激的欧美三级视频|
四虎黄色影院|
美女精品一区二区|
国产精品成av人在线视午夜片|
日韩欧美一区二区一幕|
色香欲www7777综合网|
欧美日韩在线视频观看|
免费无遮挡无码永久视频|
你懂的网站在线观看网址|
亚洲成人直播|
91高清视频在线免费观看|
久久黄色小视频|
写真福利精品福利在线观看|
一本一道波多野结衣一区二区|
国产在线精品91|
午夜av噜噜噜噜噜噜|
老汉av免费一区二区三区|
91精品久久久久久久久青青|
97视频免费在线|
蜜桃成人av|
日韩在线视频免费观看高清中文|
国产成人无码精品久久二区三|
国产福利在线播放麻豆|
亚洲黄色性网站|
黄色a级片免费看|
九九热视频在线|
秋霞成人午夜伦在线观看|
国产精品丝袜一区二区三区|
一级黄色大片免费观看|
另类尿喷潮videofree|
亚洲国产又黄又爽女人高潮的|
国产毛片毛片毛片毛片毛片毛片|
91露出在线|
玉米视频成人免费看|
欧美国产视频一区|
性直播在线观看|
成人激情动漫在线观看|
欧美成人午夜影院|
久久精品国产av一区二区三区|
深夜视频一区二区|
欧美一区二区三区播放老司机|
师生出轨h灌满了1v1|
日韩成人影视|
亚洲成人高清在线|
超碰在线97免费|
日韩av成人|
亚洲三级免费观看|
日韩中文字幕在线视频观看|
又黄又爽无遮挡|
亚洲国产精品激情在线观看|
亚洲理论电影在线观看|
美女视频黄a视频全免费观看|
91丨九色丨蝌蚪富婆spa|
亚洲国产精品一区二区第四页av|
美女免费视频网站|
懂色av一区二区三区免费看|
日韩国产精品一区二区三区|
可以免费看黄色的网站|
懂色av中文字幕一区二区三区|
亚洲美女搞黄|
九七伦理97伦理|
国产午夜亚洲精品理论片色戒
|
另类小说第一页|
国内精品偷拍视频|
久操精品在线|
欧美精品videossex88|
亚洲精品国产精品国自产网站按摩|
久久aimee|
欧美成人国产va精品日本一级|
99超碰在线观看|
欧美色网址大全|
欧美一区二区色|
亚洲精品一区二区三区不卡|
欧美三级网页|
亚洲在线观看视频|
国产剧情av片巨作醉酒女邻居
|
91香蕉视频污|
国产玉足脚交久久欧美|
中出在线观看|
亚洲午夜精品久久久久久久久|
超碰在线97免费|
高清免费电影在线观看|
欧美日韩高清不卡|
大吊一区二区三区|
欧美xxxx性|
日韩最新中文字幕电影免费看|
国产男人搡女人免费视频|
青青草成人影院|
国产欧美va欧美va香蕉在线|
久久精品亚洲7777影院|
国产高清在线观看免费不卡|
av中文字幕av|
久久国产精品高清一区二区三区|
亚洲国产日韩a在线播放|
黑人性生活视频|
卡通欧美亚洲|
一本久久综合亚洲鲁鲁|
亚洲天堂中文在线|
国产欧美二区|
日韩精品久久久毛片一区二区|
成人h动漫在线|
亚洲综合在线免费观看|
性猛交╳xxx乱大交|
国模一区二区|
久久人人爽人人爽爽久久|
99精品免费观看|
老司机免费视频久久|
亚洲开发第一视频在线播放|
动漫黄在线观看|
黑人巨大精品欧美一区免费视频|
国产熟妇久久777777|
日本精品视频|
日av在线播放中文不卡|
欧美性另类69xxxx|
99精品国产99久久久久久白柏|
北条麻妃视频在线|
sm久久捆绑调教精品一区|
亚洲性夜色噜噜噜7777|
日韩精品视频播放|
欧美99在线视频观看|
久久96国产精品久久99软件|
成人频在线观看|
欧美亚洲自拍偷拍|
日日骚一区二区三区|
国产hs免费高清在线观看|
99er热精品视频|
三级小视频在线观看|
亚洲欧美区自拍先锋|
一色屋精品亚洲香蕉网站|
五月六月丁香婷婷|
最新日韩一区|
97精品久久久|
成人午夜国产福到在线|
中文av字幕一区|
精品中文字幕在线播放|
波多野结衣在线一区二区|
国产成人亚洲综合青青|
毛片基地网站|
午夜久久久久久|
麻豆视频在线免费看|
综合久久一区|
亚洲一区二区三区免费看|
日本免费在线视频|
国产小视频91|
五月婷中文字幕|
久久综合视频网|
影音先锋人妻啪啪av资源网站|
国产精品极品国产中出|
96pao国产成视频永久免费|
二区中文字幕|
91精品国产福利|
96日本xxxxxⅹxxx17|
高清av一区二区|
亚洲av无一区二区三区久久|
韩国精品福利一区二区三区|
高清av免费一区中文字幕|
传媒视频在线|
日韩av在线资源|
国产成人手机在线|
久久亚洲一级片|
亚洲av无码一区二区二三区|
日韩欧美一区免费|
天堂社区 天堂综合网 天堂资源最新版|
高清av电影在线观看|
国产一区二区三区免费视频|
最近中文字幕mv免费高清电影|
国产精品全国免费观看高清|
a资源在线观看|
欧美精品一线|
免费一级特黄毛片|
精品久久99|
亚洲v日韩v综合v精品v|
免费在线观看一级毛片|
中文日韩电影网站|
国产不卡一卡2卡三卡4卡5卡在线|
亚洲主播在线播放|
欧美福利视频一区二区|
麻豆精品一二三|
中文写幕一区二区三区免费观成熟|
奇米777国产一区国产二区|
欧美一级爱爱|
caoporn视频在线观看|
国产成人综合精品|
一级片在线观看|
中文字幕欧美国内|
天堂视频在线|
91精品综合久久久久久|
日本精品一区二区在线观看|
亚洲欧洲av色图|
免费看日韩毛片|
国产91精品入口|
亚洲色成人网站www永久四虎|
亚洲东热激情|
日本人69视频|
国产区精品区|
国产玉足脚交久久欧美|
亚洲国产aⅴ精品一区二区|
麻豆传媒一区二区|
小草在线视频免费播放|
91久久夜色精品国产网站|
麻豆app在线观看|
久久久久久网址|
亚洲美女在线免费观看|
尤物九九久久国产精品的分类|
人人干人人草|
亚洲成人黄色在线|
国产精品入口麻豆免费观看|
欧美日韩一区高清|
视频区小说区图片区|
福利微拍一区二区|
好吊视频一区二区三区|
亚洲综合免费观看高清完整版在线|
中文字幕在线日本|
国产欧美日韩视频在线观看|
日本网站在线播放|
91免费视频大全|
懂色av.com|
aa级大片欧美|
久久久久久久久久99|
盗摄精品av一区二区三区|
卡一卡二卡三在线观看|
美女网站色91|
亚洲色图14p|
日本午夜一区二区|
日韩精品无码一区二区三区久久久|
首页亚洲欧美制服丝腿|
30一40一50老女人毛片|
奇米888四色在线精品|
在线 丝袜 欧美 日韩 制服|
日韩精品欧美精品|
中文字幕人妻一区二区|
蜜臀精品一区二区三区在线观看
|
亚洲日本伊人|
色综合天天综合网国产成人综合天
|
亚洲老妇色熟女老太|
亚洲成人精品一区二区|
成人午夜福利视频|
色欧美日韩亚洲|
羞羞漫画网18久久app|
欧美日韩亚洲综合在线|
男人精品网站一区二区三区|
日韩一区二区三|
美女喷水网站|
最近免费中文字幕视频2019
|
亚洲成在人线在线播放|
成人毛片在线免费观看|
在线观看免费视频综合|
热re66久久精品国产99re|
日韩免费在线观看|
操操操日日日|
www.日韩.com|
欧洲成人av|
国产日韩专区在线|
黄在线观看免费网站ktv|
免费精品视频一区|
911亚洲精品|
久久久久久久久久久久久久国产|
一区二区三区网站|
精品一区二区三区四区五区六区|
秋霞电影一区二区|
欧美极品aaaaabbbbb|
国产精品久久久久久一区二区三区|