一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 1820|回复: 9
收起左侧

32x64点阵屏亮度问题求助

[复制链接]
发表于 2013-4-8 14:41 | 显示全部楼层 |阅读模式
在网上找了一版3.75的双色32x64点阵屏PCB,开了10块板子。目前焊接了一块出来,但在测试的时候遇到些问题,想请论坛里的大神们帮忙看看。单板是32x64的,08接口的,有两个输入接口,两个输出接口。输入接口定义为JIN和JIN1,输出接口定义为JOUT和JOUT1。JIN接口我定义为MASTER,因为JIN接口按正常顺序接入9--P1R1、10--P1G1、11--P1R2、12--P1G2(管脚号--信号名称);JIN1接口我定义为SLAVE,因为JIN1接口颠倒接入信号,即9--P1R2、10--P1G2、11--P1R1、12--P1G1,并且11--P1R1、12--P1G1通过74HC244后的输出悬空。现在的问题是:我通过排线的中间插头(排线是一拖二的,中间的插头正常压,尾端的插头9、10和11、12交叉压)连接JIN和控制卡,显示正常,就是屏有点暗;加大延时后,亮度上来了,屏就开始闪;中间插头不拔,把尾端的插头插入JIN1,情况不变。但是当我只连接尾端的插头时(我想单独显示半屏),情况就和我想的不一样了。我本想控制一种颜色的LED发光,但是无论怎么改程序,结果都是红绿同时发光,测定JIN1的74HC244的输出都是低电平,及时我在单片机的输出是高电平。这个244已经换过几块了,问题依然。请大家帮我分析一下吧,谢谢了@附件是原理图,从网上下载的,照着PCB修改了,应该没有问题。

 楼主| 发表于 2013-4-8 14:42 | 显示全部楼层
本帖最后由 csliu911 于 2013-4-8 14:45 编辑

我怎么添加不上附件呢?

JIN

JIN

JIN1

JIN1
 楼主| 发表于 2013-4-8 14:46 | 显示全部楼层
好了,烦请大家帮我分析一下,谢谢了
发表于 2013-4-8 16:43 | 显示全部楼层
你是用的是什么程序?我看了网上几个开源的点阵屏程序都有一个死脑筋的缺点,就是在向595发送数据时都把屏关闭了造成点屏时间的大大浪费,然后再用延时的方法去点屏,为了增加亮度加长延时最后就会屏闪。其实你只要在595数据输出变更时这一步关屏就可以了其它时间尽管开屏,再加一点延时屏已经是很亮了。你看看你的程序是不是也有这毛病。
 楼主| 发表于 2013-4-8 20:51 | 显示全部楼层
myf333 发表于 2013-4-8 16:43 static/image/common/back.gif
你是用的是什么程序?我看了网上几个开源的点阵屏程序都有一个死脑筋的缺点,就是在向595发送数据时都把屏关 ...

多谢仁兄的关注!我看了一下写的程序,真是如你所说,在向595传数据的过程中屏也是关闭的,但是我改过来后问题还是没见好,我用的PIC16F877A,晶振20MHz,点阵屏显示的程序是这样的:
        P1G2 = 1;  //共阳极LED,单片机输出高电平时LED熄灭
        P1G1 = 1;
        for(k=0;k<16;k++)
        {
                for(i=7;i>=0;i--)
                        for(j=0;j<8;j++)
                        {
                                P1R2 = ((Demo[k]>>j)&0x01);
                                P1R1 = ((Demo[i+8][k]>>j)&0x01);
                       
                                SHcp = 1;
                                SHcp = 0;
                        }
                LED(OFF);
                STcp = 1;
                STcp = 0;
                PORTB = (15-k)&0x0f;               
                LED(ON);
                __delay_us(200);
        }
显示了8个字出来,延时调的再小屏幕就特别暗,用200us延时屏幕就有明显闪烁。



       

发表于 2013-4-8 22:00 | 显示全部楼层
本帖最后由 myf333 于 2013-4-8 22:05 编辑

你 把这两句换一下位置试试看:
         P1G2 = 1;  //共阳极LED,单片机输出高电平时LED熄灭
      P1G1 = 1;
更换后程序:
        for(k=0;k<16;k++)
        {
                for(i=7;i>=0;i--)
                        for(j=0;j<8;j++)
                        {
                                P1R2 = ((Demo[k]>>j)&0x01);
                                P1R1 = ((Demo[i+8][k]>>j)&0x01);
                                P1G2 = 1;  //共阳极LED,单片机输出高电平时LED熄灭
                                P1G1 = 1;
                                                    }
                LED(OFF);
                STcp = 1;
                STcp = 0;
                PORTB = (15-k)&0x0f;               
                LED(ON);
                __delay_us(200);
        }
 楼主| 发表于 2013-4-9 13:44 | 显示全部楼层
myf333 发表于 2013-4-8 22:00 static/image/common/back.gif
你 把这两句换一下位置试试看:
         P1G2 = 1;  //共阳极LED,单片机输出高电平时LED熄灭
      P1 ...

那两句话我本来就是放在for循环里面的,后来为了节省时间才给移到for循环外面了。移到外面后也看不出来变化。
 楼主| 发表于 2013-4-9 13:47 | 显示全部楼层
谢谢myf333的关注,其实我主要想不明白的就是:为什么我只接SLAVE口的时候,红绿二极管是同时发光的呢,根本不受软件控制。
发表于 2013-4-10 19:34 | 显示全部楼层
csliu911 发表于 2013-4-9 13:47 static/image/common/back.gif
谢谢myf333的关注,其实我主要想不明白的就是:为什么我只接SLAVE口的时候,红绿二极管是同时发光的呢,根本 ...

不知道你用的什么接口的屏,不好意思我也不明白“SLAVE”。
 楼主| 发表于 2013-4-10 21:17 | 显示全部楼层
myf333 发表于 2013-4-10 19:34 static/image/common/back.gif
不知道你用的什么接口的屏,不好意思我也不明白“SLAVE”。

myf333你好,其实SLAVE只是我自己这么叫的。我的单元板是32x64,上16x64点阵的输入端口是JIN;下16x64点阵的输入端口是JIN1;其实整个32x64的屏只要接JIN就可以全部显示了。

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-1 15:27 , Processed in 0.072943 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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