搜索
bottom↓
回复: 39

led 08 接口单元板试验成功(含Arduino源码,连线图)

[复制链接]

出0入228汤圆

发表于 2008-6-16 11:41:48 | 显示全部楼层 |阅读模式
一直想搞搞LED屏玩玩,呵,正好捡了块单元板,顺手玩了一把:

(原文件名:DSCN1034.JPG)

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入228汤圆

 楼主| 发表于 2008-6-16 11:44:06 | 显示全部楼层
用arduino驱动的,程序如下:

/*
  

  显示流程:
  1:传送595数据   
  2:关闭EN 1,关闭显示  
  3:切换行信息
  4:刷新595,STB
  5:开EN 0
  6:延时 (刷新率调整)

*/


#define RowA 2    //行信号,驱动138
#define RowB 3
#define RowC 4
#define RowD 5

int hc138en=6; //138 使能

//使用了硬件SPI,以下脚不能更改
#define R1 11          //数据出    MOSI
#define CLK 13         //时钟    SCK
#define STB 10         //595 刷新显示  SS
#define DATAIN  12     //数据入,读FLASH时有用  MISO

byte row=0;
byte hz[] =

{//智[16*16]横排
0x20,0x00,0x22,0x04,0x3F,0x7E,0x48,0x44,
0x08,0x44,0xFF,0xC4,0x10,0x44,0x14,0x7C,
0x22,0x44,0x42,0x10,0x9F,0xF8,0x10,0x10,
0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,
//和[16*16]横排
0x02,0x00,0x07,0x00,0x78,0x00,0x08,0x04,
0x0A,0xFE,0xFF,0x84,0x08,0x84,0x18,0x84,
0x1C,0x84,0x2A,0x84,0x2A,0x84,0x48,0x84,
0x88,0xFC,0x08,0x84,0x08,0x00,0x08,0x00,
//科[16*16]横排
0x04,0x10,0x0E,0x10,0xF8,0x90,0x08,0x50,
0x08,0x10,0xFE,0x90,0x08,0x50,0x1C,0x14,
0x1A,0x1E,0x29,0xF0,0x28,0x10,0x48,0x10,
0x88,0x10,0x08,0x10,0x08,0x10,0x08,0x10,
//技[16*16]横排
0x10,0x40,0x10,0x40,0x10,0x48,0x13,0xFC,
0xFC,0x40,0x10,0x40,0x10,0x40,0x13,0xF8,
0x1A,0x08,0x31,0x10,0xD1,0x10,0x10,0xA0,
0x10,0x40,0x10,0xB0,0x51,0x0E,0x26,0x04};



void spi_transfer(volatile char data)
{
  SPDR = data;                    // Start the transmission
  while (!(SPSR & (1<<SPIF)))     // Wait the end of the transmission
  {
  };
  //return SPDR;                    // return the received byte
}


void hc138sacn(byte r){  //输出行线状态ABCD (A低,D高)
    digitalWrite(RowA,(r & 0x01));
    digitalWrite(RowB,(r & 0x02));
    digitalWrite(RowC,(r & 0x04));
    digitalWrite(RowD,(r & 0x08));
}
  
void hc595senddata(byte data){// 高位在前  反相(1亮0灭)
for (byte i=0; i<8;i++) {
     digitalWrite(CLK,0);
     if (data & 0x80) {
         digitalWrite(R1, 0);     
     } else {
         digitalWrite(R1, 1);
     }
     data=data<<1;
     digitalWrite(CLK,1);
}

}
  
  
void setup () {

    pinMode(RowA, OUTPUT);
    pinMode(RowB, OUTPUT);
    pinMode(RowC, OUTPUT);
    pinMode(RowD, OUTPUT); //138片选
    pinMode(hc138en, OUTPUT); //138 使能
  
    pinMode(R1, OUTPUT);//595 数据
    pinMode(CLK, OUTPUT); //595 时钟
    pinMode(STB, OUTPUT); //595 使能
    pinMode(DATAIN, INPUT); //595 使能

  
     //digitalWrite(hc138d, HIGH);
    Serial.begin(19200);

    //SPI硬件设置
    // SPCR = 01010000
    //interrupt disabled,spi enabled,msb 1st,master,clk low when idle,
    //sample on leading edge of clk,system clock/4 rate (fastest)
    SPCR = (1<<SPE)|(1<<MSTR);
    delay(10);
}
  
void loop () {
if (Serial.available() > 0) {
                // read the incoming byte:
                row = Serial.read();

                // say what you got:
                Serial.print("I received: ");
                Serial.println(row, DEC);
        }

  for(row=0;row<16;row++){

      for (int i=0;i<4;i++){//8片595
         //硬件SPI  发送8字节耗时:22US         
         spi_transfer(~(hz[i*32+row*2]));  //硬件SPI      
         spi_transfer(~(hz[i*32+row*2+1]));  //硬件SPI   

         //软件SPI  发送8字节耗时:770US
         // hc595senddata(hz[i*32+row*2]);
         // hc595senddata(hz[i*32+row*2+1]);         

      }
         

      digitalWrite(hc138en, 1);  //关闭显示
      hc138sacn(row);            //换行
      digitalWrite(STB, 0);      //595刷新      
      digitalWrite(STB, 1);
      delayMicroseconds(500) ;   //节电用,
      digitalWrite(hc138en, 0);  //开启显示

      delayMicroseconds(500) ;  //刷新频率调,差不多60HZ,1/16间隔
   
  }  

}

出0入228汤圆

 楼主| 发表于 2008-6-16 12:04:47 | 显示全部楼层
接线图:


(原文件名:接线图.jpg)

出0入228汤圆

 楼主| 发表于 2008-6-16 20:51:02 | 显示全部楼层
没人理?

失败.....

出0入4汤圆

发表于 2008-6-19 11:23:39 | 显示全部楼层
wxws,你好,不知道你手上还有没有 Arduino 的空白 PCB?

出0入0汤圆

发表于 2008-6-19 13:01:47 | 显示全部楼层
有原理图吗?另外问下:能左移吗?若能的话左移时字会斜吗?

出0入228汤圆

 楼主| 发表于 2008-6-19 14:48:02 | 显示全部楼层
4楼:有

5楼:左移右移正在写呢,上面程序中是固定的.
移动时不会斜,斜是因为速度问题而产生的.编程时可以尽量避免.

出0入228汤圆

 楼主| 发表于 2008-6-19 14:49:12 | 显示全部楼层
5楼:原理图没有,单元板大致都是一样的.
  行是用两片138驱动,就是程序中的ABCD,2*8=16行
  列是595,这个屏用了8片. 8*8=64列

出0入4汤圆

发表于 2008-6-19 15:07:42 | 显示全部楼层
wxws,太好了,我想买一块 PCB,你的 E-mail 是多少,我与你联系。

我的 E-mail 在我[资料]里可以看到。

出0入0汤圆

发表于 2008-6-19 17:02:19 | 显示全部楼层
到时候能贴出左移程序(不斜)借我参考一下吗?

出0入0汤圆

发表于 2008-6-19 22:23:15 | 显示全部楼层
你的Arduino pcb,我也想要一块,怎么和你联系购买?!

出0入228汤圆

 楼主| 发表于 2008-6-20 12:00:00 | 显示全部楼层
我的QQ:1103012
注明是OURAVR

9楼:斜是因为驱动速度问题而产生的.编程时可以尽量避免.
你看我程序中,为什么用硬件SPI? 就是这个道理
还没实测过,能驱动最大多少单元板,不过大致能算一下的.

程序写好了我再贴出来吧,这两天有点懒 ,
已经写了一个DEMO,不过感觉不好,用了一个大一倍的显存,刷新一次过若干秒再左移那个显存,然后再显示,,,,
再左移,,,,,

不斜,不过我只驱动了一块板.

出0入0汤圆

发表于 2008-6-20 14:15:30 | 显示全部楼层
在我的程序里如果左移时,移动一位的间隔速度大于0.5秒(估计值)时,移动的字是不会斜的,在移动时一切正常。
但当移动一位的间隔速度小于0.5秒或更低时,才会产生字斜的现象。稍后附原理图:

出0入0汤圆

发表于 2008-6-20 14:48:24 | 显示全部楼层
原理图:是SCH文件,下载后删除.JPG




(原文件名:JAMSUN1.SCH.jpg)

出0入228汤圆

 楼主| 发表于 2008-6-20 15:48:13 | 显示全部楼层
12楼:
   我试过,调得间隔太快,会有虚影,不过也不是斜呀.

出0入0汤圆

发表于 2008-6-20 23:26:09 | 显示全部楼层
wxws:
呵呵,虚影倒没有,就是移动速度越快字斜的越厉害,用硬件SPI或IO口模拟SPI都试过了,算法也试了2种。。。

原理图见下:
点击此处下载 ourdev_319942.rar(文件大小:5K) (原文件名:595_138_.rar)

出0入228汤圆

 楼主| 发表于 2008-6-21 02:46:51 | 显示全部楼层
楼上
你控制多大点阵的屏还没说呢

出0入0汤圆

发表于 2008-6-21 08:25:42 | 显示全部楼层
16X64的

出0入0汤圆

发表于 2008-6-21 08:27:42 | 显示全部楼层
快凌晨3点你还上线啊!敬业,佩服!

出0入228汤圆

 楼主| 发表于 2008-6-21 10:16:09 | 显示全部楼层
呵,等儿子睡下才能上网呀

16*64,更不可能会斜了,肯定是你程序问题.

出0入228汤圆

 楼主| 发表于 2008-6-21 10:38:12 | 显示全部楼层
你的原理图看过了,啥问题地.你看注意一下程序的显示流程:
显存:HZ[]存放格式:字0-0,字0-1,字1-0,字1-1,..............
              字0-2,字0-3,字1-2,字1-3...........
     这样放,能有效提升显示速度

显示流程:
  1:传送595数据      hz[行,列]
  2:关闭EN 1,关闭显示   
  3:切换行信息
  4:刷新595,STB  
  5:开EN 0
  6:延时 (刷新率调整)
  7:刷新间隔到了就向左移一位,(直接操作显存)

这样能提升速度.

出0入228汤圆

 楼主| 发表于 2008-6-21 11:19:22 | 显示全部楼层
前人的思路
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=851407&bbs_page_no=1&search_mode=1&search_text=led&bbs_id=9999

出0入0汤圆

发表于 2008-6-24 19:57:28 | 显示全部楼层
关注

出0入0汤圆

发表于 2008-7-17 17:17:02 | 显示全部楼层
楼主能不能给讲一下Arduino\arduino-0011\hardware文件夹下的目录结构,以及各个文件都实现什么功能?
另请amork给本贴置酷!
理由:1、代码齐全;
      2、原创设计;
      3、原理图也有
相比之下这个帖子都置酷了:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1000496&bbs_id=9999
楼主这个帖子不置酷,没道理,不符合本站的精神。
一点建议,见笑:-)

出0入228汤圆

 楼主| 发表于 2008-7-17 23:29:59 | 显示全部楼层
谢谢楼上,哈哈,
不过可能大家觉得这东东太小儿科了,所以没法酷了,呵呵

动手前我搜遍都没有找到直接驱动现成单元板的程序.只能自己瞎摸.
能找到的就是说一些原理,而且千篇一律,估计都认为是行业秘密,所以不开公开.

这两天正在驱动一个户外的单元板,1/4扫的,比这要复杂些.
不过原理差不多.

另:关于ARDUINO,你可以直接找我,QQ:1103012,
淘宝上也有的,不过我用了我老婆的号在拍.
http://auction1.taobao.com/auction/item_detail-0db1-58e3114f3b83ac45bc004215b18046eb.jhtml

出0入0汤圆

发表于 2008-7-18 08:54:45 | 显示全部楼层
qq加不上,请另给个联系方式行吗

出0入228汤圆

 楼主| 发表于 2008-7-18 23:28:02 | 显示全部楼层
不可能吧?加不上???

mail:jyzhkj@163.com

出0入0汤圆

发表于 2008-7-26 15:20:12 | 显示全部楼层
我有这个屏的PCB啊
淘宝地址:http://auction1.taobao.com/auction/item_detail-0db1-9b9f5506550e43e113f513af2691a2bb.jhtml

出0入0汤圆

发表于 2008-9-12 20:24:44 | 显示全部楼层
关注.

出0入0汤圆

发表于 2009-8-31 10:09:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-29 01:03:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-21 19:10:28 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-8-16 11:22:46 | 显示全部楼层
上一次看了既然没马克, 这次马克上省的找了

出0入0汤圆

发表于 2011-1-8 18:40:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-18 11:42:13 | 显示全部楼层
引用图片【13楼】sun4979
-----------------------------------------------------------------------

(原文件名:JAMSUN1.SCH.jpg)

出0入0汤圆

发表于 2011-11-24 22:57:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-24 23:16:27 | 显示全部楼层
记号

出0入0汤圆

发表于 2012-8-17 17:20:48 | 显示全部楼层
学习了......

出0入0汤圆

发表于 2012-11-20 00:31:26 | 显示全部楼层
mark                                                                                            .

出0入0汤圆

发表于 2013-3-26 16:19:37 | 显示全部楼层
路过,看看
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 01:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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