一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

搜索
楼主: cosine

[其他综合] shqi2003老师的2字164屏驱动实验

  [复制链接]
 楼主| 发表于 2010-3-10 15:50 | 显示全部楼层
俺觉得这板子连接应该是左进右出......
199003326 发表于 2010-3-10 15:18 https://www.yleee.com.cn/images/common/back.gif



    是的,应该是左进右出.不过这板子作东西感觉不太好,因为亮度和一致性都不太好,沈老师本来就讲是学习用的,不适合作东西.所以玩玩就行了.学会原理买其他合适的来用,最好是点小一点密一点的,双色的最好,这样作个钟什么的还是蛮不错的.
回复

使用道具 举报

发表于 2010-3-11 11:14 | 显示全部楼层
熊有时间弄个C的教程吧,俺们好学习学习
回复

使用道具 举报

 楼主| 发表于 2010-3-11 16:17 | 显示全部楼层
熊有时间弄个C的教程吧,俺们好学习学习
lts8823 发表于 2010-3-11 11:14 https://www.yleee.com.cn/images/common/back.gif



    C的教程看谭浩强的就成了,呵呵.这个板的C例程准备写一下.还从没用C51写过程序,呵呵.
回复

使用道具 举报

 楼主| 发表于 2010-3-11 22:26 | 显示全部楼层
用C51写了段程序驱动了一下,第一次用C51写程序,写得不太好,凑和看吧,相当于汇编程序5.

/************************************
mcu=89S52 f=11.0592mhz
实验内容:FU电路板shqi2003LED板测试
具体实验:在LED屏上显示汉字
实验日期:2010-3-11
*************************************/

/*** 系统头文件包含区 ***/
#include<REGX52.H>

/*** 宏定义区 ***/
#define H_MR P0_0
#define H_AB P0_1
#define L_STR P0_2
#define L_CLK P0_3
#define L_R  P0_4

/*** 自定义数据类型区 ***/
typedef unsigned char uchar;
typedef unsigned int uint;

/*** 函数原型声明区 ***/
void delay_ms(uint x);
void clear_led();

/*** 全局变量声明区 ***/
uchar code data_tbl[]=
{
0x02,0x00,0x10,0x80,0x02,0x10,0x10,0x60,0x3F,0xD8,0x10,0x20,0x02,0x20,0x11,0xFE,
0x02,0x40,0xFC,0x00,0x7F,0xFE,0x10,0x08,0x01,0x00,0x15,0x0C,0x02,0x00,0x18,0x88,
0x07,0xFC,0x30,0x88,0x1A,0x00,0xD0,0x48,0xE7,0xF8,0x10,0x50,0x02,0x08,0x10,0x50,
0x00,0x08,0x10,0x50,0x00,0x08,0x17,0xFE,0x00,0x50,0x50,0x00,0x00,0x20,0x20,0x00
};       //考拉2字

/*** 主程序区 ***/
void main(){
uchar i,j,k,a;
clear_led();   //清LED屏
while(1){
  H_AB=1;
  for(i=0;i<16;i++){
   for(j=0;j<4;j++){
    a=data_tbl[(15-i)*4+3-j];
    for(k=0;k<8;k++){
     if(a&0x01) L_R=1;
     else L_R=0;   
     L_CLK=0;
     L_CLK=1;
     a=a>>1;
    }
   }
   L_STR=1;
   L_STR=0;
   H_AB=0;
   delay_ms(1); //延时1ms
  }
}
}

/*** 子程序区 ***/

/*延时函数,延时x ms*/
void delay_ms(uint x){
uchar i;
while(x--){
  for(i=0;i<115;i++)
  {;}
}
}

/*LED屏清屏函数*/
void clear_led(){
uchar i;
H_AB=0;
L_STR=1;
for(i=0;i<16;i++){
  L_STR=0;
  L_STR=1;
}
H_MR=0;
H_MR=1;
L_STR=0;
}
回复

使用道具 举报

发表于 2010-3-14 10:03 | 显示全部楼层
请教这个屏是哪个?准备学习,忽然发现好像我买的不是这个屏,狂晕
回复

使用道具 举报

 楼主| 发表于 2010-3-14 21:39 | 显示全部楼层
请教这个屏是哪个?准备学习,忽然发现好像我买的不是这个屏,狂晕
fujiachun 发表于 2010-3-14 10:03 https://www.yleee.com.cn/images/common/back.gif



    A屏,就是侧面有接口的屏,用的164.不过两种屏结构差不太多,稍改改就能驱动.
回复

使用道具 举报

 楼主| 发表于 2010-3-16 08:28 | 显示全部楼层
请教这个屏是哪个?准备学习,忽然发现好像我买的不是这个屏,狂晕
fujiachun 发表于 2010-3-14 10:03 https://www.yleee.com.cn/images/common/back.gif


熊用自己的A屏程序测试了一下B屏,不亮只亮几个点.想想沈老师的程序是A/B屏通用的.看了一下电路发现A屏与B屏主的区别就在于B屏H-BR信号是接在14015的复位上的,而A屏是接在595上的.当时熊为了显示一个汉字在每行移位前都清一下595数据,到B屏上就成了清14015数据了,于是行扫描数据丢失,把那两句屏闭掉就行了.附最后的程序,作用是切换显示"考拉","你好".

用C写点阵屏程序每行的延迟时间要短一点,汇编可以1ms不感觉闪烁,C只能0.5ms,毕竟效率低一点.沈老师的程序不延时,因为是移动的,所以无所谓.

/************************************
mcu=89S52 f=11.0592mhz
实验内容:FU电路板shqi2003LED板测试
具体实验:在LED屏A/B上显示汉字
实验日期:2010-3-15
*************************************/

/*** 系统头文件包含区 ***/
#include<REGX52.H>

/*** 宏定义区 ***/
#define H_MR        P0_0
#define H_AB        P0_1
#define L_STR        P0_2
#define L_CLK        P0_3
#define L_R         P0_4

/*** 自定义数据类型区 ***/
typedef unsigned char uchar;
typedef unsigned int uint;

/*** 函数原型声明区 ***/
void clear_led();
void led_disp(uchar *p);
void delay_ms(uint x);

/*** 全局变量声明区 ***/
uchar code data_tbl1[]={
0x02,0x00,0x10,0x80,0x02,0x10,0x10,0x60,0x3F,0xD8,0x10,0x20,0x02,0x20,0x11,0xFE,
0x02,0x40,0xFC,0x00,0x7F,0xFE,0x10,0x08,0x01,0x00,0x15,0x0C,0x02,0x00,0x18,0x88,
0x07,0xFC,0x30,0x88,0x1A,0x00,0xD0,0x48,0xE7,0xF8,0x10,0x50,0x02,0x08,0x10,0x50,
0x00,0x08,0x10,0x50,0x00,0x08,0x17,0xFE,0x00,0x50,0x50,0x00,0x00,0x20,0x20,0x00
};                //考拉2字

uchar code data_tbl2[]={
0x09,0x00,0x10,0x00,0x09,0x80,0x11,0xFC,0x11,0x04,0x10,0x08,0x13,0xFE,0x10,0x10,
0x22,0x04,0xFC,0x20,0x34,0x48,0x24,0x20,0x68,0x40,0x24,0x20,0xA2,0x50,0x27,0xFE,
0x23,0x48,0x44,0x20,0x22,0x48,0x64,0x20,0x24,0x44,0x18,0x20,0x24,0x46,0x08,0x20,
0x28,0x44,0x14,0x20,0x21,0x40,0x26,0x20,0x20,0x80,0x44,0xA0,0x00,0x00,0x80,0x40
};                //你好2字

/*** 主程序区 ***/
void main(){
        uint i;
        clear_led();                        //清LED屏
        while(1){
                for(i=0;i<50;i++)
                        led_disp(data_tbl1);
                for(i=0;i<50;i++)        
                        led_disp(data_tbl2);        
        }
}

/*** 子程序区 ***/

/*LED屏清屏函数*/
void clear_led(){
        uchar i;
        H_AB=0;
        L_STR=1;
        for(i=0;i<16;i++){        //清164数据
                L_STR=0;
                L_STR=1;
        }
        H_MR=0;                //清595数据
        H_MR=1;
        L_STR=0;
}

/*LED屏显示函数*/
void led_disp(uchar *p){
        uchar i,j,k,a;        
        H_AB=1;
        for(i=0;i<16;i++){
//                H_MR=0;                        //清595数据,A屏可以使用,B屏不能使用
//                H_MR=1;                        
                for(j=0;j<4;j++){        //移位字节数控制
                        a=p[(15-i)*4+3-j];
                        for(k=0;k<8;k++){        //595数据移出1字节
                                L_R=a&0x01;                //最低位移出                        
                                L_CLK=0;
                                L_CLK=1;
                                a>>=1;
                        }
                }
                L_STR=1;                //595数据输出
                L_STR=0;                //164移位
                H_AB=0;
                delay_ms(1);        //延时0.5ms
        }
        L_STR=1;                //164多移1位清显示
        L_STR=0;        
}

/*延时函数,延时x*0.5ms */
void delay_ms(uint x){
        uchar i;
        while(x--){
                for(i=0;i<57;i++)
                {;}
        }
}
回复

使用道具 举报

发表于 2010-3-16 08:35 | 显示全部楼层
A】屏:列用4片595+5片1413或者2003驱动,行2片164+1片74HC14+4只STA402A。价格:每块7元。实物如图。
B】屏:列用74HC14+4片595驱动,行4015+3片74HC14+16只SB772。价格:每块7元。实物如图。
是否是这个屏?
我买的好像是
[一]2手16*16双色点阵屏,表面有少许划伤,个别插针有压坏。
管芯5MM,尺寸122*122MM,用4片TPIC6B595分别控制红色列和绿色列,用16只中功率三极管C2500控制16行。这个,本来想作个灯笼的
回复

使用道具 举报

 楼主| 发表于 2010-3-16 08:51 | 显示全部楼层
A】屏:列用4片595+5片1413或者2003驱动,行2片164+1片74HC14+4只STA402A。价格:每块7元。实物如图。
B】屏:列用74HC14+4片595驱动,行4015+3片74HC14+16只SB772。价格:每块7元。实物如图。
是否是这个屏?
我买的好像是
[一]2手16*16双色点阵屏,表面有少许划伤,个别插针有压坏。
管芯5MM,尺寸122*122MM,用4片TPIC6B595分别控制红色列和绿色列,用16只中功率三极管C2500控制16行。这个,本来想作个灯笼的

fujiachun 发表于 2010-3-16 08:35 https://www.yleee.com.cn/images/common/back.gif


其实原理差不多,这类屏都是列移位输出数据,行进行扫描的,呵呵.只要把信号线连接以及数据电平弄清楚就行了.呵呵.

你那屏上的TPIC6B595可以理解成595+2003,列驱动实际是两个,一个是红列一个是绿列,分别移入不同的数据就行了.主要是行驱动.从说明来看是用三极管驱动的,还是中功率,就不知道245能不能直接驱动了,而且比较费I/O,如果没接164/595一类的串入并出,就需要16根I/O分别驱动了.
回复

使用道具 举报

发表于 2010-3-16 12:14 | 显示全部楼层
B】我买的好像是  [一]2手16*16双色点阵屏,表面有少许划伤,个别插针有压坏。
管芯5MM,尺寸122*122MM,用4片TPIC6B595分别控制红色列和绿色列,用16只中功率三极管C2500控制16行。这个,本来想作个灯笼的 ...
fujiachun 发表于 2010-3-16 08:35 https://www.yleee.com.cn/images/common/back.gif


      这个屏效果很好的。
      我使用PNP三极管8550替换了NPN的“16只中功率三极管C2500”,就可以“直接”使用89S51的P0+P2口(串接470欧姆的限流电阻)驱动“控制16行”——亮度很好。
      我下次寄东西时,给您一块这样做的PCB?
回复

使用道具 举报

本版积分规则

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

GMT+8, 2025-8-18 07:32 , Processed in 0.033354 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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