找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

P10廣告牌移動(dòng)單片機(jī)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:218207 發(fā)表于 2017-7-8 23:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
很久以前寫(xiě)P10的程序用51單片機(jī)寫(xiě)的!作為紀(jì)念分享給更多需要的人!

單片機(jī)源程序如下:
  1. /******************************************************************
  2. *                                                                 *
  3. * P10 Moving LED Demo Program                2012/2/2                  *
  4. *                                                                  *       
  5. * 作者: DSL                                                          *                                      
  6. *                                                                 *
  7. ******************************************************************/

  8. #include <reg51.h>
  9. #include <intrins.h>

  10. typedef   unsigned char  uchar;
  11. typedef   unsigned int   uint;


  12. /***********************字點(diǎn)陣碼*************************/

  13. uchar code CharTable[]=
  14. {

  15. //0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/*"黑屏"*/

  16. 0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,/*"0"*/
  17.                                                                                                                                                                           
  18. 0xFF,0xFF,0xFF,0xEF,0x8F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0x83,0xFF,0xFF,/*"1"*/

  19. 0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xFB,0xFB,0xF7,0xEF,0xDF,0xBD,0x81,0xFF,0xFF,/*"2"*/

  20. 0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xFB,0xE7,0xFB,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF,/*"3"*/

  21. 0xFF,0xFF,0xFF,0xFB,0xF3,0xEB,0xDB,0xDB,0xBB,0xBB,0x81,0xFB,0xFB,0xE1,0xFF,0xFF,/*"4"*/

  22. 0xFF,0xFF,0xFF,0x81,0xBF,0xBF,0xBF,0xA7,0x9B,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF,/*"5"*/

  23. 0xFF,0xFF,0xFF,0xE3,0xDB,0xBF,0xBF,0xA7,0x9B,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,/*"6"*/

  24. 0xFF,0xFF,0xFF,0x81,0xBB,0xBB,0xF7,0xF7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF,/*"7"*/

  25. 0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF,/*"8"*/

  26. 0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xD9,0xE5,0xFD,0xFD,0xDB,0xC7,0xFF,0xFF,/*"9"*/

  27. };


  28. sbit  RCK_595                  = P2^0;     //輸出鎖存器控制脈沖(L)
  29. sbit  SCLK_595                 = P2^1;     //移位時(shí)鐘脈沖(S)
  30. sbit  Sdata_Red         = P2^2;     //串行數(shù)據(jù)輸入(RED)
  31. sbit  G_74138                  = P2^4;     //顯示允許控制信號(hào)端口(EN)

  32. uint col;                                  
  33. uchar code CharTable[];       
  34. uchar Word, DispRow;                       
  35. uchar CharBuf[40];                               



  36. /**********************************************************

  37. 將顯示數(shù)據(jù)送入74HC595內(nèi)部移位寄存器

  38. **********************************************************/
  39. void WR_595(uchar buf)
  40. {
  41.   uchar x;
  42.   
  43.   for (x=0; x<8; x++)
  44.   {

  45.           Sdata_Red=buf&0x80;

  46.           buf = buf << 1;   //數(shù)據(jù)左移一位
  47.           
  48.           SCLK_595 = 1;     //上升沿發(fā)生移位
  49.           _nop_();
  50.           SCLK_595 = 0;
  51.   }
  52. }



  53. /** Combine two byte to one byte to form shifting byte **/

  54. uchar two_onebyte(uchar h1,uchar h2)
  55. {
  56.         uchar temp;

  57.         temp=(h1<<col)|(h2>>(8-col));                  //left shift

  58.         return (temp);
  59. }




  60. /***************發(fā)送一線點(diǎn)陣數(shù)據(jù)*******************/

  61. void sendoneline()
  62. {
  63.   uchar s,buf;

  64.   for(s=0; s<16; s++)                                         //need to be 16 for 1/4 scan time
  65.    {
  66.      G_74138 = 1;                                              //打開(kāi)顯示
  67.      buf=two_onebyte(CharBuf[s],CharBuf[s+4]);
  68.      WR_595(buf);                                         //load 8 bit into shift register LS595
  69.    }

  70.   P1 = P1&0xf0;
  71.   RCK_595 = 1;     //鎖存數(shù)據(jù)

  72.   _nop_();

  73.   RCK_595 = 0;

  74.   G_74138 = 0;      //打開(kāi)顯示

  75. }




  76. /**************裝載一線點(diǎn)陣數(shù)據(jù)****************/

  77. void loadoneline()
  78. {
  79.   uchar s;                        //panel max display char plus 1, for 16x32 numeric display, s=4+1

  80.    for(s=0;s<5;s++)
  81.         {
  82.           CharBuf[4*s+0]        = CharTable[Word+(16*s+3*4)+DispRow];
  83.           CharBuf[4*s+1]        = CharTable[Word+(16*s+2*4)+DispRow];
  84.           CharBuf[4*s+2]        = CharTable[Word+(16*s+1*4)+DispRow];
  85.           CharBuf[4*s+3]        = CharTable[Word+(16*s+0*4)+DispRow];
  86.         }
  87. }




  88. /**********************************************************

  89. 主函數(shù)

  90. **********************************************************/
  91. void main()
  92. {
  93.    uchar i,SPEED;

  94.    G_74138 = 0;      

  95.    col=0;
  96.    Word=0;
  97.    SPEED=20;
  98.    P1=0;
  99.        
  100.         while(1)
  101.           {
  102.               while(col<8)        //Already load max display char + 1, this routine is to shift one char
  103.                                 //Total display will be max display char + 1, for 16x32, display char=5
  104.                                 //After display total shifting char, it will point to next char
  105.             {
  106.                 for(i=0;i<SPEED;i++)//漢字在屏幕上的停留時(shí)間(即移動(dòng)速度快慢)
  107.                   {
  108.                     for (DispRow=0;DispRow<4;DispRow++)                        //掃描4行          
  109.                      {
  110.                         loadoneline();                                        //裝載一線點(diǎn)陣數(shù)據(jù)
  111.                         sendoneline();                                        //發(fā)送一線點(diǎn)陣數(shù)據(jù)                     
  112.                         P1=DispRow;                       
  113.                      }
  114. ……………………

  115. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
P10 Moving LED.rar (1.65 KB, 下載次數(shù): 66)


評(píng)分

參與人數(shù) 1黑幣 +2 收起 理由
loost + 2 很給力!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:230427 發(fā)表于 2017-9-1 15:42 | 只看該作者
這類(lèi)資料不好找呢。感謝樓主了
回復(fù)

使用道具 舉報(bào)

板凳
ID:119290 發(fā)表于 2017-9-8 18:52 | 只看該作者
thanks,,,,,,
回復(fù)

使用道具 舉報(bào)

地板
ID:228731 發(fā)表于 2018-9-5 13:19 | 只看該作者
厲害!
回復(fù)

使用道具 舉報(bào)

5#
ID:392670 發(fā)表于 2021-1-5 17:24 來(lái)自手機(jī) | 只看該作者
好資料,能否做成頻譜??
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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