一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 3287|回复: 9

刚入门单片机,求个16x64led的测试程序

[复制链接]
发表于 2012-4-14 11:34 | 显示全部楼层 |阅读模式
本帖最后由 auxccc 于 2012-4-14 11:43 编辑

刚买了个64x64的双色led屏,分4组12接口的。我有单片机stc89s52rc,有18b20,有1302。刚入门单片机,程序还不大会弄,求个16x64led的测试程序,先谢啦!

1215476j6gzs9qj6kk9fmk.jpg
发表于 2012-4-14 14:26 | 显示全部楼层
各种屏接口不一样,单片机要硬件软件配合起来玩
回复

使用道具 举报

 楼主| 发表于 2012-4-14 15:10 | 显示全部楼层
坛上找了半天都没找到合适的。有的对flash要求高,有的需要12887,有的程序不完整,有简单一点的又编译不了。特发帖求助。
回复

使用道具 举报

 楼主| 发表于 2012-4-15 12:42 | 显示全部楼层
开心锅锅的那个程序比较简单,改了下也不能成功。电路板上有595,245,138,367。不知道是否有反向的问题,那位大侠帮帮忙,改下!源程序如下:
/*   VC-3.0 32x64 LED 双色显示板     */   
/*  MCU: STC12C2052AD, */     
//#include <STC12C2052AD.h>
#include <AT89x52.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define _Nop() _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_()
sbit HC138_A=P1^0;  
sbit HC138_B=P1^1;   
sbit HC138_C=P1^2;   
sbit HC138_D=P1^3;    //138, 4, 5
sbit HC138_OE=P1^4;  //138 6
sbit HC595_LAT=P1^7;    //595 12
sbit HC595_CLK=P3^1;    //595 11
sbit HC595_GD=P3^0;    //595 14
sbit HC595_RD=P3^0;    //595 14

/*
sbit HC138_A=P3^7;  
sbit HC138_B=P3^2;   
sbit HC138_C=P1^0;   
sbit HC138_D=P3^3;    //138, 4, 5
sbit HC138_OE=P1^5;  //138 6
sbit HC595_LAT=P1^1;    //595 12
sbit HC595_CLK=P3^4;    //595 11
sbit HC595_GD=P1^2;     //595 14
sbit HC595_RD=P3^5;     //595 14
*/
unsigned char r_data[8], g_data[8];
unsigned char k, t, m, n, p, state;
unsigned char code hanzi[17][32]={   //二维数据
/*--  文字0:  零  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x1F,0xF8,0x01,0x00,0x7F,0xFE,0x41,0x04,0x1D,0x70,0x01,0x00,0x1D,0x70,0x02,0x80,
0x04,0x60,0x1A,0x1E,0xE1,0x08,0x1F,0xE0,0x00,0x40,0x02,0x80,0x01,0x00,0x01,0x00,
/*--  文字1:  一  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x04, 0x7F,0xFE,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*--  文字2:  二  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0x10,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,
/*--  文字3:  三  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x00,0x00,0x00,0x00,
/*--  文字4:  四  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x7F,0xFC,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,
0x48,0x84,0x48,0x7C,0x50,0x04,0x60,0x04,0x40,0x04,0x7F,0xFC,0x40,0x04,0x00,0x00,
/*--  文字5:  五  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x7F,0xF8,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x20,0x3F,0xF0,
0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x24,0xFF,0xFE,0x00,0x00,0x00,0x00,
/*--  文字6:  六  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x04,0x00,0x03,0x00,0x01,0x80,0x01,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x04,0x80,
0x06,0x40,0x04,0x20,0x08,0x10,0x08,0x18,0x10,0x0C,0x20,0x0C,0x40,0x08,0x00,0x00,
/*--  文字7:  七  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0xFE,0x7F,0x00,0x01,0x00,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0xF8,0x00,0x00,
/*--  文字8:  八  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0x40,0x04,0x60,0x06,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x08,0x20,
0x08,0x20,0x10,0x10,0x10,0x10,0x20,0x08,0x40,0x0E,0x80,0x04,0x00,0x00,0x00,0x00,
/*--  文字9:  九  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x20,0x7F,0xF0,0x02,0x20,0x02,0x20,0x04,0x20,
0x04,0x20,0x04,0x20,0x08,0x20,0x08,0x24,0x10,0x24,0x20,0x26,0x40,0x3C,0x00,0x00,
/*--  文字10:  十  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,
/*--  文字11:  测  --*/
/*--  幼圆12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x44,0xC4,0x8C,0x98,0xF8,0xFC,0xE4,0xF4,0xFC,0xFC,0xF8,0xFC,0xFC,0xFC,0xFC,0x00,
0x80,0xE0,0x79,0xBD,0xCF,0xFF,0x7F,0x1F,0x3F,0xFF,0xCF,0x9F,0x9F,0xFF,0xFF,0x00,
/*--  文字12:  试  --*/
/*--  幼圆12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x80,0x84,0x9C,0x9C,0x10,0x10,0x10,0x10,0x10,0x10,0xFC,0xFC,0x1C,0x1C,0x38,0x00,
0x00,0x00,0x7F,0x7F,0x60,0x71,0x51,0x7F,0x3F,0x21,0x23,0x3F,0xFF,0xE0,0xF8,0x00,
/*--  文字13:  开  --*/
/*--  幼圆12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x04,0x04,0xFC,0xFC,0xFC,0x04,0x04,0x04,0x04,0xFC,0xFC,0xFC,0x04,0x04,0x00,
0x01,0x81,0xC1,0xFD,0x7F,0x0F,0x01,0x01,0x01,0x01,0xFF,0xFF,0xFF,0x01,0x01,0x00,
/*--  文字14:  始  --*/
/*--  幼圆12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x10,0xD0,0xFE,0x7E,0x10,0xF0,0xF0,0xE0,0xF8,0xBC,0x8C,0x80,0x98,0xF8,0xE0,0x00,
0x80,0xC7,0xFF,0x78,0x7E,0xEF,0xC3,0xFC,0xFC,0x84,0x84,0x84,0x84,0xFC,0xFD,0x00,
/*--  文字15:  结  --*/
/*--  幼圆12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xC0,0xF0,0xFC,0x9C,0xF4,0x70,0x90,0x90,0x90,0xFC,0xFC,0xFC,0x90,0x90,0x90,0x00,
0xC0,0xCC,0x4F,0x4F,0x6D,0x24,0xFC,0xFC,0x84,0x84,0x84,0x84,0x84,0xFC,0xFC,0x00,
/*--  文字16:  束  --*/
/*--  幼圆12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x08,0xC8,0xC8,0xE8,0x28,0x28,0x28,0xFE,0xFE,0x28,0x28,0x28,0xE8,0xC8,0xC8,0x08,
0x80,0x83,0xC3,0x67,0x62,0x3A,0x1E,0xFF,0xFF,0x1E,0x32,0x72,0x67,0xC7,0x83,0x80,
};

//delay us
void Delay(uchar us)  //5,7,9
{
while(--us);  
}

//delay ms
void DelayMS(uint iMs)
{
uint i,j;
   for(i=0;i<iMs;i++)
    for(j=0;j<65;j++) Delay(1);
      
}
void write595(unsigned char rdd, gdd)
{
unsigned char i;
for (i=0;i<8;i++)
{
  HC595_RD=rdd&0x80;
  rdd=rdd<<1;
  HC595_GD=gdd&0x80;
  gdd=gdd<<1;
  HC595_CLK=1;
  HC595_CLK=0;
}
}

void main (void)
{
n=0;
state=0;
while(1)
{
     for (p=0;p<64;p++)
  {
  for (t=0;t<16;t++)
  {
   HC595_LAT=0;
   HC595_CLK=0;
   //HC138_OE=1;
                         HC138_OE=0;
  if (state==0)
  {
  for (k=0;k<4;k++)
   {
   g_data[2*k]=0xff-hanzi[0+k][t*2];
   g_data[2*k+1]=0xff-hanzi[0+k][t*2+1];
   r_data[2*k]=0xff-hanzi[0+k][t*2];
   r_data[2*k+1]=0xff-hanzi[0+k][t*2+1];
   }
  }
  else if (state==1)
  {
  for (k=0;k<8;k++)
   {
   g_data[k]=0x00;
   r_data[k]=0xff;
   }
  }
  else if (state==2)
  {
  for (k=0;k<8;k++)
   {
   g_data[k]=0xff;
   r_data[k]=0x00;
   }
  }
  else if (state==3)
  {
  for (k=0;k<2;k++)
  {
   g_data[2*k]=0xff-hanzi[4+k][t*2];
   g_data[2*k+1]=0xff-hanzi[4+k][t*2+1];
   r_data[2*k]=0xff-hanzi[4+k][t*2];
   r_data[2*k+1]=0xff-hanzi[4+k][t*2+1];
  }
  for (k=2;k<4;k++)
  {
   g_data[2*k]=0xff-hanzi[6+k][t*2];
   g_data[2*k+1]=0xff-hanzi[6+k][t*2+1];
   r_data[2*k]=0xff-hanzi[6+k][t*2];
   r_data[2*k+1]=0xff-hanzi[6+k][t*2+1];
  }
  }
  for (k=0;k<8;k++)
  {
   write595(r_data[k], g_data[k]);  
  }
   HC138_OE=1;
                       // HC138_OE=0;
   HC595_LAT=1;
   HC595_LAT=0;
   HC595_CLK=0;
   HC138_A=t&0x01;
   HC138_B=t&0x02;
   HC138_C=t&0x04;
   HC138_D=t&0x08;
   Delay(200);
   //HC138_OE=1;
} //end for t
}  //end for p
state=state+1;
if (state>3) state=0;
} //end while
}


回复

使用道具 举报

 楼主| 发表于 2012-4-15 12:44 | 显示全部楼层

RE: 刚入门单片机,求个16x64led的测试程序

源程序: 开心锅锅.rar (73.81 KB, 下载次数: 353)
回复

使用道具 举报

发表于 2012-4-16 00:25 | 显示全部楼层
本帖最后由 changqm 于 2012-4-16 09:36 编辑

回复 5# auxccc

用沈老师的测试程序试试,板子上的接头定义1G、3CLK、5STR、7R、9A、11B、13C、15D、16OE 流动三色.rar (876 Bytes, 下载次数: 349)
回复

使用道具 举报

发表于 2012-4-16 14:35 | 显示全部楼层
谢谢分享。顶起来
回复

使用道具 举报

 楼主| 发表于 2012-4-16 14:57 | 显示全部楼层
回复 6# changqm


    要上上源程序,这样的程序我能学什么呢!
回复

使用道具 举报

 楼主| 发表于 2012-4-16 19:32 | 显示全部楼层
还是不行,没有显示。用锅锅的程序还有乱码显示。有可能是接口不对。接口:N为接地,X为未知作用

2 N N N N N N N X 16
1 X X X X X X X X 15

板上1处有标记,其他没任何标记。和12的接口相近是反的,红绿双色的板上有芯片245,595,138,367
回复

使用道具 举报

发表于 2012-4-16 19:44 | 显示全部楼层
貌似应先确认你的单片机的I/O哟,因为涉及片选信号的问题,否则就不显示或乱码的。
回复

使用道具 举报

本版积分规则

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

GMT+8, 2026-3-13 22:40 , Processed in 0.034947 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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