找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1815|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)旋轉(zhuǎn)LED源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:367428 發(fā)表于 2019-10-4 15:40 | 只看該作者 回帖獎勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)源程序如下:
  1. /*************************************************************
  2.                    旋轉(zhuǎn)LED立體顯示字體測試程序 中斷標(biāo)志位方式 去除盲點(diǎn)
  3. 程序編寫:Fucp

  4. 單片機(jī) STC89C52 或者其他51
  5. 字模軟件用  PC2002
  6. 逐列取模方式

  7. 電機(jī)旋轉(zhuǎn)方向 逆時(shí)針
  8. /***********************************************************
  9. 說明:
  10.          硬件介紹:用單片機(jī)的16個(gè)IO口獨(dú)立驅(qū)動LED燈
  11. 無線供電方式給旋轉(zhuǎn)主板供電以及性能較好的RF370電機(jī)帶動旋轉(zhuǎn),在5V供電下 顯示的效果非常好.電機(jī)速度也夠快
  12. 夠安靜.

  13.         看程序前請看下原理圖,根據(jù)原理圖來理解比較容易!
  14.     程序用中斷判斷紅外起點(diǎn)的方法開始顯示 每轉(zhuǎn)一圈,列數(shù)往后移動一列
  15. 顯示完指定的字?jǐn)?shù)后循環(huán)        此種方式在中斷中放起點(diǎn)標(biāo)志位。在顯示一圈的過程中
  16. 如果沒有顯示完一圈數(shù)據(jù)中斷又來了,會立即跳出,可實(shí)現(xiàn)盲點(diǎn)很小的顯示
  17. 感覺一個(gè)圓都能顯示字

  18. 字幕配置方法 見初級程序中的說明
  19. *************************************************************/
  20. #include "NEW_8051.H"
  21. #include "task.h"
  22. #include <stddef.h>

  23. bit BIT_timeout=0;
  24. uint i=0,j=0;
  25. #define ucNumRows 176 //定義一周顯示字個(gè)數(shù) 一個(gè)字16列 160/16=10個(gè)字
  26. /*********延時(shí)子程序**********/
  27. /*****n(us)延時(shí)子程序*****/
  28. void DelayUs(uint N)
  29. {
  30.     uint x ;
  31.     for(x=0;x<=N;x++);
  32. }

  33. /*********中斷子程序**********/
  34. void int0() interrupt 0        //使用外部中斷0
  35. {
  36.         BIT_timeout=1; //起點(diǎn)標(biāo)志位        
  37. }

  38. /********************************/
  39. void start(void)
  40. {
  41.         P1=0XFF;
  42.         P2=0XFF;
  43.         
  44.         
  45. }
  46. /***************************************/
  47. void OS_ALLRun(void)
  48. {

  49.         if(BIT_timeout)        //起點(diǎn)判斷
  50.          {                        
  51.                 BIT_timeout=0; //清零
  52.                
  53.                 j++;                                            
  54.         if( j>1920 )//顯示完文字后 循環(huán); j=16*需要顯示的字?jǐn)?shù)         這里大概有120個(gè)字符 所以120*16=1920
  55.         {
  56.             j=0 ;
  57.         }            
  58.         for(i=j;i<ucNumRows+j;i++)  //立體顯示176列 數(shù)據(jù)   176/16=11個(gè)字
  59.         {                              
  60.            
  61.                         P1=zimo[i*2];        //送數(shù)據(jù)低位顯示
  62.                         P2=zimo[i*2+1];//送數(shù)據(jù)高位顯示        
  63.                                                 
  64.                         DelayUs(15);
  65.                         P1=P2=0XFF;                                                        
  66.            if(BIT_timeout)//這里如果沒有顯示完一圈的數(shù)據(jù) 回到起點(diǎn)了
  67.                                   //直接跳出 就不會出現(xiàn)頭吃尾的現(xiàn)象 而且盲點(diǎn)很小
  68.                    {
  69.                                    return;
  70.                    }
  71.                 }
  72.                   
  73.         }
  74. }
復(fù)制代碼

所有資料51hei提供下載:
十字旋轉(zhuǎn)LED.7z (2.76 MB, 下載次數(shù): 27)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表