找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3565|回复: 4
打印 上一主题 下一主题
收起左侧

P10广告牌移动单片机程序

[复制链接]
跳转到指定楼层
楼主
ID:218207 发表于 2017-7-8 23:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
很久以前写P10的程序用51单片机写的!作为纪念分享给更多需要的人!

单片机源程序如下:
  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. /***********************字点阵码*************************/

  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;     //移位时钟脉冲(S)
  30. sbit  Sdata_Red         = P2^2;     //串行数据输入(RED)
  31. sbit  G_74138                  = P2^4;     //显示允许控制信号端口(EN)

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



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

  37. 将显示数据送入74HC595内部移位寄存器

  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;   //数据左移一位
  47.           
  48.           SCLK_595 = 1;     //上升沿发生移位
  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. /***************发送一线点阵数据*******************/

  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;                                              //打开显示
  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;     //锁存数据

  72.   _nop_();

  73.   RCK_595 = 0;

  74.   G_74138 = 0;      //打开显示

  75. }




  76. /**************装载一线点阵数据****************/

  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. 主函数

  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++)//汉字在屏幕上的停留时间(即移动速度快慢)
  107.                   {
  108.                     for (DispRow=0;DispRow<4;DispRow++)                        //扫描4行          
  109.                      {
  110.                         loadoneline();                                        //装载一线点阵数据
  111.                         sendoneline();                                        //发送一线点阵数据                     
  112.                         P1=DispRow;                       
  113.                      }
  114. ……………………

  115. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
P10 Moving LED.rar (1.65 KB, 下载次数: 66)


评分

参与人数 1黑币 +2 收起 理由
loost + 2 很给力!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:230427 发表于 2017-9-1 15:42 | 只看该作者
这类资料不好找呢。感谢楼主了
回复

使用道具 举报

板凳
ID:119290 发表于 2017-9-8 18:52 | 只看该作者
thanks,,,,,,
回复

使用道具 举报

地板
ID:228731 发表于 2018-9-5 13:19 | 只看该作者
厉害!
回复

使用道具 举报

5#
ID:392670 发表于 2021-1-5 17:24 来自手机 | 只看该作者
好资料,能否做成频谱??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表