|
單片機(jī)源程序如下:
- /*************************************************************
- 旋轉(zhuǎn)LED立體顯示字體測試程序 中斷標(biāo)志位方式 去除盲點(diǎn)
- 程序編寫:Fucp
- 單片機(jī) STC89C52 或者其他51
- 字模軟件用 PC2002
- 逐列取模方式
- 電機(jī)旋轉(zhuǎn)方向 逆時(shí)針
- /***********************************************************
- 說明:
- 硬件介紹:用單片機(jī)的16個(gè)IO口獨(dú)立驅(qū)動LED燈
- 無線供電方式給旋轉(zhuǎn)主板供電以及性能較好的RF370電機(jī)帶動旋轉(zhuǎn),在5V供電下 顯示的效果非常好.電機(jī)速度也夠快
- 夠安靜.
- 看程序前請看下原理圖,根據(jù)原理圖來理解比較容易!
- 程序用中斷判斷紅外起點(diǎn)的方法開始顯示 每轉(zhuǎn)一圈,列數(shù)往后移動一列
- 顯示完指定的字?jǐn)?shù)后循環(huán) 此種方式在中斷中放起點(diǎn)標(biāo)志位。在顯示一圈的過程中
- 如果沒有顯示完一圈數(shù)據(jù)中斷又來了,會立即跳出,可實(shí)現(xiàn)盲點(diǎn)很小的顯示
- 感覺一個(gè)圓都能顯示字
- 字幕配置方法 見初級程序中的說明
- *************************************************************/
- #include "NEW_8051.H"
- #include "task.h"
- #include <stddef.h>
-
- bit BIT_timeout=0;
- uint i=0,j=0;
- #define ucNumRows 176 //定義一周顯示字個(gè)數(shù) 一個(gè)字16列 160/16=10個(gè)字
- /*********延時(shí)子程序**********/
- /*****n(us)延時(shí)子程序*****/
- void DelayUs(uint N)
- {
- uint x ;
- for(x=0;x<=N;x++);
- }
- /*********中斷子程序**********/
- void int0() interrupt 0 //使用外部中斷0
- {
- BIT_timeout=1; //起點(diǎn)標(biāo)志位
- }
- /********************************/
- void start(void)
- {
- P1=0XFF;
- P2=0XFF;
-
-
- }
- /***************************************/
- void OS_ALLRun(void)
- {
- if(BIT_timeout) //起點(diǎn)判斷
- {
- BIT_timeout=0; //清零
-
- j++;
- if( j>1920 )//顯示完文字后 循環(huán); j=16*需要顯示的字?jǐn)?shù) 這里大概有120個(gè)字符 所以120*16=1920
- {
- j=0 ;
- }
- for(i=j;i<ucNumRows+j;i++) //立體顯示176列 數(shù)據(jù) 176/16=11個(gè)字
- {
-
- P1=zimo[i*2]; //送數(shù)據(jù)低位顯示
- P2=zimo[i*2+1];//送數(shù)據(jù)高位顯示
-
- DelayUs(15);
- P1=P2=0XFF;
- if(BIT_timeout)//這里如果沒有顯示完一圈的數(shù)據(jù) 回到起點(diǎn)了
- //直接跳出 就不會出現(xiàn)頭吃尾的現(xiàn)象 而且盲點(diǎn)很小
- {
- return;
- }
- }
-
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
十字旋轉(zhuǎn)LED.7z
(2.76 MB, 下載次數(shù): 27)
2019-10-5 15:56 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|