搜索
bottom↓
回复: 9

LED点阵屏的接口的EN怎么接?

[复制链接]

出0入0汤圆

发表于 2011-2-20 22:14:24 | 显示全部楼层 |阅读模式
我有一块16*64的双色LED点阵屏,74HC245+595+138...接口是 CLK  STB  DR  DG  EN  A  B  C  D   测试的时候发现一个很奇怪的问题,当我把EN接单片机的I/O时,点阵显示的内容没错,但是亮度很低,几乎看不见,就像是灯丝在亮一样,如果在晚上关灯还可以看见一点,白天完全看不见,我把EN接到电源时,嘿!亮了,但是一段时间后显示就出问题了,而且这种情况下芯片发热,请教一下各位,这个EN是怎么回事啊,不管我接高电平还是低电平都不亮,这屏我有两块,都一样,应该不是屏的问题。

这是接电源时的情况,几秒后就不正常了。ourdev_617367OKHJC7.zip(文件大小:146K) (原文件名:摄像.zip)

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

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

出0入0汤圆

发表于 2011-2-21 11:10:53 | 显示全部楼层
把EN和STB对换接看看^_^

出0入0汤圆

 楼主| 发表于 2011-2-21 12:33:09 | 显示全部楼层
【1楼】 wuqihuihaoo
积分:29
派别:
等级:------
来自:

把EN和STB对换接看看^_^  

------------------------------------------------------------
我对换了,还是不行。 

出0入33汤圆

发表于 2011-2-21 12:44:54 | 显示全部楼层
一行数据发完之后,EN拉高,一行led就会亮,然后延迟一段时间,拉低,一行led熄灭,发送下一行数据,再拉高EN点亮下一行led,如此循环,适当改变延迟可调整亮度。

出0入0汤圆

 楼主| 发表于 2011-2-21 12:51:06 | 显示全部楼层
【3楼】 vtte
积分:522
派别:
等级:------
来自:
一行数据发完之后,EN拉高,一行led就会亮,然后延迟一段时间,拉低,一行led熄灭,发送下一行数据,再拉高EN点亮下一行led,如此循环,适当改变延迟可调整亮度。  

---------------------------------------------------------------------------------------------------------------------

我改了的,改到类似流水灯,还是一样不亮,这是程序。

#include <reg52.h>
#include <intrins.h>

#include "letter.h"

typedef   unsigned char  uchar;
typedef   unsigned int   uint;

sbit  G_74138  = P2^4;     //显示允许控制信号端口(EN)
sbit  Sdata_R1 = P2^5;     //串行数据输入(R1)
sbit  RCK_595  = P2^6;     //输出锁存器控制脉冲(L)  STB
sbit  SCLK_595 = P2^7;     //移位时钟脉冲(S)   CLK

sbit  Addr_A  = P2^0;
sbit  Addr_B  = P2^1;
sbit  Addr_C  = P2^2;
sbit  Addr_D  = P2^3;

unsigned char temp;

char code reserve[3]  _at_ 0x3b; //保留0x3b开始的3个字节

/**********************************************************

将显示数据送入74HC595内部移位寄存器

**********************************************************/
void WR_595(void)
{
  unsigned char x;
  
  for (x=0; x<8; x++)
  {
    temp = temp << 1; //数据左移一位,最高位送入CY
    Sdata_R1 = CY;

    SCLK_595 = 1;     //上升沿发生移位
    _nop_();
    SCLK_595 = 0;
  }
}

/**********************************************************

点阵显示子函数

**********************************************************/
void display(uchar *data1,uchar *data2,uchar *data3,uchar *data4)
{
   unsigned char i;
   unsigned int n;

   for(i=0;i<16;i++)             //扫描16行
   {
    G_74138 = 1;                //关闭显示

     temp = (data1[2*i]);        //一行写8个字节
     WR_595();
     temp = (data1[2*i+1]);
     WR_595();
     temp = (data2[2*i]);
     WR_595();
     temp = (data2[2*i+1]);
     WR_595();
     temp = (data3[2*i]);
     WR_595();
     temp = (data3[2*i+1]);
     WR_595();
     temp = (data4[2*i]);
     WR_595();
     temp = (data4[2*i+1]);
     WR_595();

     P2&= 0xf0;      //行号清零
     RCK_595 = 1;;     //锁存数据
     P2|= i;          //行输出     
     RCK_595 = 0;
    G_74138 = 0;      //打开显示

     n = 9;                       
     while(n--);       //延时,调节亮度
   }
}

/**********************************************************

主函数

**********************************************************/
void main(void)
{
   unsigned char  num;

   while(1)
   {
     for(num=0; num<200; num++)
     display(Bmp[0],Bmp[1],Bmp[2],Bmp[3]);
     for(num=0; num<200; num++)
     display(Bmp[4],Bmp[5],Bmp[6],Bmp[7]);
   }
}

出0入33汤圆

发表于 2011-2-21 12:56:59 | 显示全部楼层
G_74138 顺序是不是反了?

    G_74138 = 1; 这是开显示吧

出0入0汤圆

 楼主| 发表于 2011-2-21 13:04:57 | 显示全部楼层
【5楼】 vtte
---------------------
是吗,我试试。

出0入0汤圆

 楼主| 发表于 2011-2-22 12:04:32 | 显示全部楼层
终于找到原因了,LED屏的电路在设计时为了防止EN悬空时出现乱码,把EN接了下拉电阻,用的1K的下拉,我用的51驱动,所以驱动不够,将下拉电阻去掉就好了。

出0入0汤圆

发表于 2011-3-4 18:23:16 | 显示全部楼层
谢谢

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-8-26 06:45

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

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