wxws 发表于 2008-6-16 11:41:48

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

一直想搞搞LED屏玩玩,呵,正好捡了块单元板,顺手玩了一把:
http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_312842.JPG
(原文件名:DSCN1034.JPG)

wxws 发表于 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 DATAIN12   //数据入,读FLASH时有用MISO

byte row=0;
byte hz[] =

{//智横排
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,
//和横排
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,
//科横排
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,
//技横排
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));//硬件SPI      
         spi_transfer(~(hz));//硬件SPI   

         //软件SPI发送8字节耗时:770US
         // hc595senddata(hz);
         // hc595senddata(hz);         

      }
         

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

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

}

wxws 发表于 2008-6-16 12:04:47

接线图:

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_312862.jpg
(原文件名:接线图.jpg)

wxws 发表于 2008-6-16 20:51:02

没人理?

失败.....

atommann 发表于 2008-6-19 11:23:39

wxws,你好,不知道你手上还有没有 Arduino 的空白 PCB?

sun4979 发表于 2008-6-19 13:01:47

有原理图吗?另外问下:能左移吗?若能的话左移时字会斜吗?

wxws 发表于 2008-6-19 14:48:02

4楼:有

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

wxws 发表于 2008-6-19 14:49:12

5楼:原理图没有,单元板大致都是一样的.
行是用两片138驱动,就是程序中的ABCD,2*8=16行
列是595,这个屏用了8片. 8*8=64列

atommann 发表于 2008-6-19 15:07:42

wxws,太好了,我想买一块 PCB,你的 E-mail 是多少,我与你联系。

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

sun4979 发表于 2008-6-19 17:02:19

到时候能贴出左移程序(不斜)借我参考一下吗?

yixin 发表于 2008-6-19 22:23:15

你的Arduino pcb,我也想要一块,怎么和你联系购买?!

wxws 发表于 2008-6-20 12:00:00

我的QQ:1103012
注明是OURAVR

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

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

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

sun4979 发表于 2008-6-20 14:15:30

在我的程序里如果左移时,移动一位的间隔速度大于0.5秒(估计值)时,移动的字是不会斜的,在移动时一切正常。
但当移动一位的间隔速度小于0.5秒或更低时,才会产生字斜的现象。稍后附原理图:

sun4979 发表于 2008-6-20 14:48:24

原理图:是SCH文件,下载后删除.JPG



http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_319262.jpg
(原文件名:JAMSUN1.SCH.jpg)

wxws 发表于 2008-6-20 15:48:13

12楼:
   我试过,调得间隔太快,会有虚影,不过也不是斜呀.

sun4979 发表于 2008-6-20 23:26:09

wxws:
呵呵,虚影倒没有,就是移动速度越快字斜的越厉害,用硬件SPI或IO口模拟SPI都试过了,算法也试了2种。。。

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

wxws 发表于 2008-6-21 02:46:51

楼上
你控制多大点阵的屏还没说呢

sun4979 发表于 2008-6-21 08:25:42

16X64的

sun4979 发表于 2008-6-21 08:27:42

快凌晨3点你还上线啊!敬业,佩服!

wxws 发表于 2008-6-21 10:16:09

呵,等儿子睡下才能上网呀

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

wxws 发表于 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:刷新间隔到了就向左移一位,(直接操作显存)

这样能提升速度.

wxws 发表于 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

penguin 发表于 2008-6-24 19:57:28

关注

aduc812 发表于 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
楼主这个帖子不置酷,没道理,不符合本站的精神。
一点建议,见笑:-)

wxws 发表于 2008-7-17 23:29:59

谢谢楼上,哈哈,
不过可能大家觉得这东东太小儿科了,所以没法酷了,呵呵

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

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

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

aduc812 发表于 2008-7-18 08:54:45

qq加不上,请另给个联系方式行吗

wxws 发表于 2008-7-18 23:28:02

不可能吧?加不上???

mail:jyzhkj@163.com

feixue 发表于 2008-7-26 15:20:12

我有这个屏的PCB啊
淘宝地址:http://auction1.taobao.com/auction/item_detail-0db1-9b9f5506550e43e113f513af2691a2bb.jhtml

sdmcu51 发表于 2008-9-12 20:24:44

关注.

zj_llh 发表于 2009-8-31 10:09:25

mark

jia_xuan 发表于 2010-5-29 01:03:12

mark

lv998127 发表于 2010-6-21 19:10:28

mark

ysu533 发表于 2010-8-16 11:22:46

上一次看了既然没马克, 这次马克上省的找了

skywym 发表于 2011-1-8 18:40:49

mark

ldjiang 发表于 2011-2-18 11:42:13

引用图片【13楼】sun4979
-----------------------------------------------------------------------
http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_319262.jpg
(原文件名:JAMSUN1.SCH.jpg)

enun123 发表于 2011-11-24 22:57:05

mark

wxfhw 发表于 2011-11-24 23:16:27

记号

wpami 发表于 2012-8-17 17:20:48

学习了......

ffdzpilot 发表于 2012-11-20 00:31:26

mark                                                                                          .

osesemi 发表于 2013-3-26 16:19:37

路过,看看
页: [1]
查看完整版本: led 08 接口单元板试验成功(含Arduino源码,连线图)