搜索
bottom↓
回复: 38

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

[复制链接]

出0入0汤圆

发表于 2009-12-11 11:10:43 | 显示全部楼层 |阅读模式
【过年了出点垃圾】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
//但是 第二行数据在这里是与第一行同步的,送的数据相同
这两种屏的接口如下图所示:

(原文件名:CIMG0001.JPG)

5字的显示效果如下:

(原文件名:CIMG0005[20091208-1428530].JPG)

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

10字的显示效果如下:

(原文件名:10字红色.JPG)


(原文件名:10字绿色.JPG)

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入22汤圆

发表于 2009-12-11 11:11:21 | 显示全部楼层
顶,买了2片

出0入0汤圆

 楼主| 发表于 2009-12-11 11:13:00 | 显示全部楼层
你速度真快啊,昨天买的吧?呵呵,我问了顺风快递,1.3公斤以内算1KG,以后2块屏的兄弟可以走顺丰快递了,呵呵。

出0入0汤圆

 楼主| 发表于 2009-12-11 17:48:11 | 显示全部楼层
买了的朋友可以参考一下。

出0入59汤圆

发表于 2009-12-11 18:52:58 | 显示全部楼层
你的左移算发太慢了;

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

出0入0汤圆

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

出0入0汤圆

发表于 2009-12-16 23:31:52 | 显示全部楼层
买的还没驱动呢

出0入0汤圆

发表于 2009-12-17 08:35:38 | 显示全部楼层
恩,灌水,顶!

出0入0汤圆

发表于 2009-12-17 08:44:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-17 20:53:44 | 显示全部楼层

出0入0汤圆

发表于 2009-12-25 12:45:21 | 显示全部楼层
.......................................

出0入0汤圆

发表于 2009-12-25 12:54:30 | 显示全部楼层

(原文件名:复件 振南电子.PNG)

出0入0汤圆

发表于 2009-12-27 23:43:20 | 显示全部楼层
回复【4楼】polarbear 枫叶
----------------------------------------------------------------------
那最快的左移算法是什么样的?小弟不吝求教,忘成全!谢谢~

出0入0汤圆

发表于 2009-12-28 19:15:09 | 显示全部楼层
还有卖不

出0入0汤圆

 楼主| 发表于 2009-12-29 15:28:24 | 显示全部楼层
还有啊,我昨天清理了一下,剩下最后4块了。都是有1-3个红色坏点的。

出0入0汤圆

发表于 2010-1-5 15:18:43 | 显示全部楼层
买了一片,刚刚按照jmpxwh 提供的电路和程序搭建了个驱动板
连接定义都没有问题
会显示
双斜 (原文件名:11.jpg)
双斜线和单斜线替换显示
拔掉ABC或者替换ACB斜线都会缺少或者混杂,应该能说明线是那样接是没错的
拔掉任何一根线都不能显示这样均匀的斜线
究竟是什么问题呢?高人解答下

出0入0汤圆

发表于 2010-1-7 09:24:34 | 显示全部楼层
原来是clk跟lock调换了。

出0入0汤圆

发表于 2010-1-7 10:09:33 | 显示全部楼层
足迹

出0入0汤圆

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

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

        unsigned char  i;
       
        if(ScanCount==16)ScanCount=0;

        if(ScanCount < 8)
        {
                for(i=SCREEN_XSIZE;i>0;)
                {
                        if(Display_Buffer[0][--i] & Bit_Mask[ScanCount])
                        {        HC595_R_L;
                        }else{
                                HC595_R_H;
                        }  
                        if(Display_Buffer[2] & Bit_Mask[ScanCount])
                        {        HC595_G_L;       
                        }else {
                                HC595_G_H;
                        }
                HC595_CLK_L;
                HC595_CLK_H;
                }
        }else{
                for(i=SCREEN_XSIZE;i>0;)
                {
                        if(Display_Buffer[1][--i] & Bit_Mask[ScanCount-8])
                        {        HC595_R_L;
                        }else{
                                HC595_R_H;
                        }  
                        if(Display_Buffer[3] & Bit_Mask[ScanCount-8])
                        {        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++;
               
}

出0入0汤圆

发表于 2010-1-9 01:00:29 | 显示全部楼层
发出去之后提示找不到网页,正郁闷着呢,没有先复制,刷新了一下,居然发出去了。

网络还没完全好啊。

出0入0汤圆

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

出0入0汤圆

发表于 2010-3-10 15:23:24 | 显示全部楼层
我也买了块。
现在才有空来驱动。
请问怎么样用51来驱动?

出0入0汤圆

发表于 2010-3-10 15:26:10 | 显示全部楼层
由于本人实在是菜鸟。
中间那3个插口,是电源插口吧,那个是电源,那个是地。

出0入0汤圆

发表于 2010-3-10 23:09:07 | 显示全部楼层
学习了

出0入0汤圆

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

出0入0汤圆

发表于 2010-4-2 15:18:05 | 显示全部楼层
make

出0入0汤圆

发表于 2010-4-8 23:37:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-20 10:21:48 | 显示全部楼层
我看了楼主的程序,怎么上移和左覆盖的内容一样的啊

出0入0汤圆

发表于 2010-4-20 11:51:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-28 22:18:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-5-24 12:37:56 | 显示全部楼层
看来本坛另一个贴子,只是比较早的,左移算法,感觉写的真是麻烦,却置顶了,
本贴只热门,为LZ不F下

出0入0汤圆

发表于 2010-6-25 11:14:41 | 显示全部楼层
mark!~

出0入0汤圆

发表于 2010-6-25 12:46:17 | 显示全部楼层
mark

出0入0汤圆

发表于 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
谢了!

出0入0汤圆

发表于 2011-10-13 16:12:07 | 显示全部楼层
mark!~

出0入0汤圆

发表于 2012-8-10 16:47:34 | 显示全部楼层
mark
!

出0入0汤圆

发表于 2012-11-26 16:38:50 | 显示全部楼层
各位大侠谁能解释一下左移算法,一直没有想明白

出0入0汤圆

发表于 2012-12-17 11:18:24 | 显示全部楼层
标记一下!LED

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-24 05:26

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

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