[DemoCode下载] 实现LED点阵左右移动的程序

[复制链接]
1793|6
 楼主| 仙女山 发表于 2016-1-10 16:34 | 显示全部楼层 |阅读模式
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//定义扫描列
  4. unsigned char code digittab[]={

  5. 0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00, //0

  6. 0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00, //1

  7. 0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00, //2

  8. 0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00, //3

  9. 0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00, //4

  10. 0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00, //5

  11. 0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00, //6

  12. 0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00, //7

  13. 0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00, //8

  14. 0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00, //9

  15. 0x00,0x00,0x7F,0x48,0x48,0x30,0x00,0x00, //P

  16. 0x00,0x00,0x7F,0x48,0x4C,0x73,0x00,0x00, //R

  17. 0x00,0x00,0x7F,0x49,0x49,0x49,0x00,0x00, //E

  18. 0x00,0x00,0x3E,0x41,0x41,0x62,0x00,0x00, //C

  19. 0x00,0x00,0x7F,0x08,0x08,0x7F,0x00,0x00, //H

  20. 0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00, //I

  21. 0x00,0x7F,0x10,0x08,0x04,0x7F,0x00,0x00, //N

  22. 0x7C,0x48,0x48,0xFF,0x48,0x48,0x7C,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 //中

  23. };//要显示的字符

  24. void delay(int t)
  25. {
  26. int i;
  27. for(i=1;i<=t;i++);
  28. }//延时函数
  29. void main(void)
  30. {
  31. int a,b,c;
  32. while(1)
  33. {
  34.   for(a=0;a<144;a++)  //所有要显示的列数
  35.   {
  36.    
  37.     for(b=0;b<50;b++)//控制移动速度
  38.     {
  39.     P2=0xfe;      ///最右边的列先显示,程序定义向左移动
  40.     for(c=0;c<8;c++)//稍加修改可以变成向右移动
  41.     {                //例中P2接LED点阵阳极,P0接阴极
  42.      P0=digittab[a+c];//同时显示8列
  43.      delay(100);
  44.      P0=0x00;   //禁止扫描列变换时,其它列亮!
  45.      P2=P2<<1|P2>>7;
  46.    
  47.      }
  48.      }
  49.    
  50.   }


734774645 发表于 2016-1-10 17:41 来自手机 | 显示全部楼层
没有说明原理,就是乱贴代码,真是服了
yiyigirl2014 发表于 2016-1-11 09:19 | 显示全部楼层
每屏显示时,列控制码左(右)移,就可实现点阵屏左(右)移动。
以显示“ | ” 从右向左移为例,第1 屏,右边第1 列亮1ms后灭,第2 屏,第2 列亮。。。。8 屏显示后,完成“| ”左移。
yiyigirl2014 发表于 2016-1-11 09:20 | 显示全部楼层
楼主那个程序稍加修改可以变成LED8段数码管左右移动程序。
huangcunxiake 发表于 2016-1-11 16:05 | 显示全部楼层
通过指针每一轮的移位来达到了视觉上移动的目的。
deviceplugs 发表于 2016-1-12 20:29 | 显示全部楼层
这个是不是就是类似地铁上面播报到站的那种右移的led啊
mintspring 发表于 2017-3-8 23:37 | 显示全部楼层
说法一:其实单色点阵LED本无所谓共阳还是共阴,如此命名多半是因为行业习惯造成的。市面上对8*8点阵LED所谓的共阳还是共阴的说法一般是根据点阵第一个引脚的极性所定义的,第一个引脚为阳极则为共阳,反之则为共阴。
       说法二:卖家所说的共阴或者共阳确切的说应该是行共阴或者行共阳
从这两张图片上我们看到第一脚是在第一行的,所以这两种说法其实是一样的
下面说说点阵的一些基本知识
      管脚的定义
       有的点阵后面标有第一脚,但是有的没有标,现在大家默认跟IC的管脚顺序一样,读法是第1脚一般在侧面有字的那一面,字是正向时左边第一脚为1,然后按逆时针排序至16脚,如图示:

行列定义
8*8点阵内部结构
行共阴
行共阳
上图中也标出了ark sz410788k点阵每行每列对应的管脚号,我目前不敢确定的是是否所有的8*8点阵管脚对应的行列都和ark 点阵是一样的,但是我目前使用过的两三种点阵的对应顺序都和上面两个图示一样的!
如果确实搞不定管脚顺序,可以拿一个指针式万用表检测

具体测定引脚步骤如下(可使用万用表或其他电压源测试,我使用的是机械式的万用表)
1.【定正负极】把万用表拨到电阻档×10,先用黑色探针(输出高电平)随意选择一个引脚,红色探针碰余下的引脚,看点阵有没发光,没发光就用黑色探针再选择一个引脚,红色探针碰余下的引脚,当点阵发光,则这时黑色探针接触的那个引脚为正极,红色探针碰到就发光的7个引脚为负极,剩下的6个引脚为正极。
2.【引脚编号】先把器件的引脚正负分布情况记下来,正极(行)用数字表示,负极(列)用字母表示,先定负极引脚编号,黑色探针选定一个正极引脚,红色点负极引脚,看是第几列的二极管发光,第一列就在引脚写A,第二列就在引脚写B,第三列......以此类推。 这样就点阵的一半引脚都编号了。剩下的正极引脚用同样的方法,第一行的亮就在引脚标1,第二行就在引脚标2,第三行......以此类推。

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

本版积分规则

36

主题

340

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部