jmpxwh 发表于 2009-12-11 11:10:43

【5字单色、10字双色LED点阵屏控制程序】(左移、上移、分屏、左移+停止、左覆盖、右

【过年了出点垃圾】5字、10字LED点阵屏(送ICCAVR程序),12864带背光液晶(附带程序)
一帖中的5字LED、10字LED屏,程序环境为ICCAVR6.3,最初的程序修改自 qingwei_cui 阿伟的那个显示AVR的程序
里面用到的函数分别如下,用到哪个即调用哪个:
void fen(const unsigned char *p,unsigned int f);        //静态显示
void fen_1(const unsigned char *p,unsigned int f,unsigned int num1); //静态显示调用的静止显示函数
void Left(const unsigned char *p,unsigned int f);   //左移显示
void Left_S(const unsigned char *p,unsigned int f); //左移+Stop显示
void Up(const unsigned char *p,unsigned int f);   //左移显示
void Left_C(const unsigned char *p,unsigned int f); //左覆盖显示
void Right_C(const unsigned char *p,unsigned int f); //右覆盖显示

其中main.c里面的595发送数据部分,是区别5字LED跟10字LED的地方,
5字LED驱动可以直接用程序里面的。
10字的需要修改
for (i=0x01;i>0;i=i<<1)   
这一句为
for (i=0x80;i>0;i=i>>1)
即他们的区别是先发送最低字节还是最高字节,其他程序通用。
595发送子程序如下:
/*****************************************************************************
*             595发送一个字节数据(2字节输入的分别是红、绿数据的)             *
*****************************************************************************/
void send_2byte(unsigned char byte1,unsigned char byte2)
{
unsigned char i;
lock_L();
for (i=0x01;i>0;i=i<<1)
{
   if((byte1&i)==0)
      R1_L();
   else
      R1_H();
   if((byte2&i)==0)
          G1_L();
   else
          G1_H();
   clk_L();
   clk_H();
   }
}

5字的LED程序点击此处下载 ourdev_513095.rar(文件大小:112K) (原文件名:5LEDiccavr6.3.rar)

// M16+11.0592M+ICCAVR6.30
// 5字LED点阵屏控制板与LED 点阵屏接口定义
//PA口的01234顺序接138的A、B、C、OE1、OE2
//PB口的012345顺序接595的第一行红色、第一行绿色数据数据、Clk、Lock

10字的LED程序点击此处下载 ourdev_513096.rar(文件大小:102K) (原文件名:10字LED的ICCAVR程序.rar)

// M16+11.0592M+ICCAVR6.30
// 10字LED点阵屏控制板与LED 点阵屏接口定义
//PA口的01234顺序接138的A、B、C、OE1、OE2
//PB口的012345顺序接595的第一行红色、第一行绿色数据数据、
//第二行红色、第二行绿色数据数据、Clk、Lock
//但是 第二行数据在这里是与第一行同步的,送的数据相同
这两种屏的接口如下图所示:
http://cache.amobbs.com/bbs_upload782111/files_23/ourdev_512068.JPG
(原文件名:CIMG0001.JPG)

5字的显示效果如下:
http://cache.amobbs.com/bbs_upload782111/files_23/ourdev_513099.JPG
(原文件名:CIMG0005.JPG)

5字左移视频地址:http://www.tudou.com/v/SKkk_p9EydI

10字的显示效果如下:
http://cache.amobbs.com/bbs_upload782111/files_23/ourdev_512069.JPG
(原文件名:10字红色.JPG)

http://cache.amobbs.com/bbs_upload782111/files_23/ourdev_512070.JPG
(原文件名:10字绿色.JPG)

zxq6 发表于 2009-12-11 11:11:21

顶,买了2片

jmpxwh 发表于 2009-12-11 11:13:00

你速度真快啊,昨天买的吧?呵呵,我问了顺风快递,1.3公斤以内算1KG,以后2块屏的兄弟可以走顺丰快递了,呵呵。

jmpxwh 发表于 2009-12-11 17:48:11

买了的朋友可以参考一下。

polarbear 发表于 2009-12-11 18:52:58

你的左移算发太慢了;

其实驱动板的595就是一个很好的移位器, 用它做512长的屏也可以很快地移出来

jmpxwh 发表于 2009-12-11 23:00:51

呵呵,这个是笨办法做出来的,也是因为这个屏不适合顺序移动,因为它的595接法有点怪异,用过就知道了,我曾经头疼了很久,后来花350块买了一块控制卡,自己做了一个08接口转10脚的板子,在设置里面整了很多种组合,最后才搞定。
当然需要自己做转接板将ABCD+OE的信号先转换为ABC+OE1+OE2才可以使用市面上的控制卡控制。

soulcoffee 发表于 2009-12-16 23:31:52

买的还没驱动呢

bowei181 发表于 2009-12-17 08:35:38

恩,灌水,顶!

tankebing 发表于 2009-12-17 08:44:15

mark

xingcai 发表于 2009-12-17 20:53:44

zhuyi2576 发表于 2009-12-25 12:45:21

.......................................

yzn07 发表于 2009-12-25 12:54:30

http://www.znmcu.cn/attachment/41_1_a59a431260fdee3.gif
(原文件名:复件 振南电子.PNG)

xiaoxie3a 发表于 2009-12-27 23:43:20

回复【4楼】polarbear 枫叶
----------------------------------------------------------------------
那最快的左移算法是什么样的?小弟不吝求教,忘成全!谢谢~

zhuyi2576 发表于 2009-12-28 19:15:09

还有卖不

jmpxwh 发表于 2009-12-29 15:28:24

还有啊,我昨天清理了一下,剩下最后4块了。都是有1-3个红色坏点的。

asp88 发表于 2010-1-5 15:18:43

买了一片,刚刚按照jmpxwh 提供的电路和程序搭建了个驱动板
连接定义都没有问题
会显示http://cache.amobbs.com/bbs_upload782111/files_24/ourdev_523049.jpg
双斜 (原文件名:11.jpg)
双斜线和单斜线替换显示
拔掉ABC或者替换ACB斜线都会缺少或者混杂,应该能说明线是那样接是没错的
拔掉任何一根线都不能显示这样均匀的斜线
究竟是什么问题呢?高人解答下

asp88 发表于 2010-1-7 09:24:34

原来是clk跟lock调换了。

lv998127 发表于 2010-1-7 10:09:33

足迹

soulcoffee 发表于 2010-1-9 00:57:10

今天有空,拿STM32F103VBT6 的小板点亮了,显示效果非常好,
等整理后上传。
另外买这块屏的朋友,使用3.3V的电源供电就不会烧行mos管了,也挺亮的,和5V比虽然差了些,但是避免了烧管子。
想亮的话适当调高电压。
先上部分代码

//屏幕大小    10字双色的只调试了上半屏
#define SCREEN_XSIZE80   LED屏幕宽度
#define SCREEN_YSIZE2    LED屏幕高度/8
INT8UDisplay_Buffer;//显示缓冲区,前一半数据为红色数据,后一半为绿色数据
//=============================================================================
//函 数 名: GUI_Refresh()
//功    能:显示刷新程序,每次刷新一行
//入口参数: 无
//出口参数: 无
//返 回 值: 无
//注    意:使用中断间隔1ms调用此函数一次,程序使用了数组缓存数据,
//         数据纵向倒序取模
//=============================================================================
void GUI_Refresh(void)
{

        unsigned chari;
       
        if(ScanCount==16)ScanCount=0;

        if(ScanCount < 8)
        {
                for(i=SCREEN_XSIZE;i>0;)
                {
                        if(Display_Buffer[--i] & Bit_Mask)
                        {        HC595_R_L;
                        }else{
                                HC595_R_H;
                        }
                        if(Display_Buffer & Bit_Mask)
                        {        HC595_G_L;       
                        }else {
                                HC595_G_H;
                        }
                HC595_CLK_L;
                HC595_CLK_H;
                }
        }else{
                for(i=SCREEN_XSIZE;i>0;)
                {
                        if(Display_Buffer[--i] & Bit_Mask)
                        {        HC595_R_L;
                        }else{
                                HC595_R_H;
                        }
                        if(Display_Buffer & Bit_Mask)
                        {        HC595_G_H;       
                        }else {
                                HC595_G_H;
                        }
                        HC595_CLK_L;
                        HC595_CLK_H;
                }
        }       

        LS138_OE1_H;
        LS138_OE2_H;
       
    HC595_LOCK_L;
    HC595_LOCK_H;
        switch(ScanCount)                                                                                                    
        {
                case 0:LS138_C_L;LS138_B_L;LS138_A_L;LS138_OE1_L;break;       
                case 1:LS138_C_L;LS138_B_L;LS138_A_H;LS138_OE1_L;break;        //如果端口是连续的
                case 2:LS138_C_L;LS138_B_H;LS138_A_L;LS138_OE1_L;break;        //此处分支可以优化为一条指令完成
                case 3:LS138_C_L;LS138_B_H;LS138_A_H;LS138_OE1_L;break;        //也可以用不用分支结构采取查表完成
                case 4:LS138_C_H;LS138_B_L;LS138_A_L;LS138_OE1_L;break;        //但是会影响到程序的移植性
                case 5:LS138_C_H;LS138_B_L;LS138_A_H;LS138_OE1_L;break;
                case 6:LS138_C_H;LS138_B_H;LS138_A_L;LS138_OE1_L;break;
                case 7:LS138_C_H;LS138_B_H;LS138_A_H;LS138_OE1_L;break;
                case 8:LS138_C_L;LS138_B_L;LS138_A_L;LS138_OE2_L;break;                
                case 9:LS138_C_L;LS138_B_L;LS138_A_H;LS138_OE2_L;break;
                case 10: LS138_C_L;LS138_B_H;LS138_A_L;LS138_OE2_L;break;
                case 11: LS138_C_L;LS138_B_H;LS138_A_H;LS138_OE2_L;break;
                case 12: LS138_C_H;LS138_B_L;LS138_A_L;LS138_OE2_L;break;
                case 13: LS138_C_H;LS138_B_L;LS138_A_H;LS138_OE2_L;break;
                case 14: LS138_C_H;LS138_B_H;LS138_A_L;LS138_OE2_L;break;
                case 15: LS138_C_H;LS138_B_H;LS138_A_H;LS138_OE2_L;break;

                default: ScanCount=0;break;
        }

        ScanCount++;
               
}

soulcoffee 发表于 2010-1-9 01:00:29

发出去之后提示找不到网页,正郁闷着呢,没有先复制,刷新了一下,居然发出去了。

网络还没完全好啊。

soulcoffee 发表于 2010-1-23 15:59:34

使用STM32驱动成功,开的新帖
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3839001&bbs_page_no=1&search_mode=4&search_text=soulcoffee&bbs_id=9999

wolfdong7 发表于 2010-3-10 15:23:24

我也买了块。
现在才有空来驱动。
请问怎么样用51来驱动?

wolfdong7 发表于 2010-3-10 15:26:10

由于本人实在是菜鸟。
中间那3个插口,是电源插口吧,那个是电源,那个是地。

hamipeter 发表于 2010-3-10 23:09:07

学习了

wolfdong7 发表于 2010-3-18 19:36:46

我的也驱动成功的。是用51来做的。
菜鸟编程,望高人能够有所指教!
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3923546&bbs_page_no=1&bbs_id=1006

whlx622 发表于 2010-4-2 15:18:05

make

sophy.lin 发表于 2010-4-8 23:37:20

mark

greggreg88 发表于 2010-4-20 10:21:48

我看了楼主的程序,怎么上移和左覆盖的内容一样的啊

zlj2008 发表于 2010-4-20 11:51:44

mark

Fire_cow 发表于 2010-4-28 22:18:37

mark

sophy.lin 发表于 2010-5-24 12:37:56

看来本坛另一个贴子,只是比较早的,左移算法,感觉写的真是麻烦,却置顶了,
本贴只热门,为LZ不F下

ljt8015 发表于 2010-6-25 11:14:41

mark!~

yinglively 发表于 2010-6-25 12:46:17

mark

wgm8023ln 发表于 2011-10-13 16:06:42

回复【18楼】soulcoffee CC
-----------------------------------------------------------------
大哥,你也是用ST的芯片啊,帮我看看好吗?
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5108219&bbs_page_no=1&search_mode=1&search_text=led点阵&bbs_id=9999
谢了!

ljt80158015 发表于 2011-10-13 16:12:07

mark!~

lichengqun85 发表于 2012-8-10 16:47:34

mark
!{:smile:}

jinniuxing88 发表于 2012-11-26 16:38:50

各位大侠谁能解释一下左移算法,一直没有想明白

YAOZHE 发表于 2012-12-17 11:18:24

标记一下!LED

jz701209李 发表于 2012-12-18 19:27:51

强帖留名......
页: [1]
查看完整版本: 【5字单色、10字双色LED点阵屏控制程序】(左移、上移、分屏、左移+停止、左覆盖、右