小道长 发表于 2015-12-29 17:57:48

求助~关于16X16点阵的代码和连线方式。

#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define BLKN 2
sbit SDATA_595=P0^0;
sbit SCLK_595 =P2^7;
sbit RCK_595 =P0^2;
sbit G_74138 =P2^4;
uchar data dispram;
uchar temp;
void delay(uint );
uchar code Bmp[]=
{ { 0x10,0x10,0x08,0x20,0x04,0x48,0x3F,0xFC,
0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,
0x21,0x08,0x3F,0xF8,0x21,0x00,0x01,0x04,
0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00},
{0x00,0x80,0x20,0x80,0x20,0x80,0x20,0x80,
0x20,0x84,0x3F,0xFE,0x20,0x00,0x20,0x00,
0x3F,0xC0,0x20,0x40,0x20,0x40,0x20,0x40,
0x20,0x40,0x20,0x40,0x40,0x40,0x80,0x40},
{0x10,0x00,0x10,0x10,0x11,0xF8,0x11,0x10,
0xFD,0x10,0x11,0x10,0x31,0x10,0x39,0x10,
0x55,0x10,0x51,0x10,0x91,0x10,0x11,0x10,
0x11,0x12,0x12,0x12,0x14,0x0E,0x18,0x00},
{0x01,0x00,0x02,0x00,0x04,0x10,0x1F,0xF8,
0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,

0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,
0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10},
{0x22,0x08,0x11,0x08,0x11,0x10,0x00,0x20,
0x7F,0xFE,0x40,0x02,0x80,0x04,0x1F,0xE0,
0x00,0x40,0x01,0x84,0xFF,0xFE,0x01,0x00,
0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00},
{0x03,0xF8,0x40,0x10,0x30,0xA0,0x10,0x48,
0x03,0xFC,0x02,0x48,0xF2,0x48,0x13,0xF8,
0x12,0x48,0x12,0x48,0x13,0xF8,0x12,0x48,
0x12,0x68,0x2A,0x50,0x44,0x06,0x03,0xFC}
};

void delay(uint dt)
{
uchar bt;
for(;dt;dt--)
for(bt=0;bt<255;bt++);
}

void WR_595(void)
{ uchar x;
for (x=0;x<8;x++)
{
temp=temp<<1;
SDATA_595=CY;
SCLK_595=1; //???????
_nop_();
_nop_();
SCLK_595=0;
}
}

void main(void)
{ uchar i,k;
TMOD = 0x01; //???T0????1
TH0 = 0xFC; //1ms????
TL0 = 0x66;
IE = 0x82; //????0??
TR0=1; //?????
P2=0XF0; //????,????
while(1)
{ for(k=0;k<6;k++) //??"??????"

{
for(i=0;i<32;i++)
{
dispram= Bmp;//????????????????dispram??
}
delay(1500); //????????????????????????????
}
}
}
/*****************??????(??dispram??????)*******************/
void led_dis(void) interrupt 1 using 1
{
uchar i,j=BLKN;
TH0 = 0xFC; //1ms????
TL0 = 0x66;
i=P2; //?????????
i=++i & 0x0f; //???1,???4?,????16???
do{
j--;
temp = ~dispram;//??????????,??????????
WR_595(); //??????
}while(j);
G_74138=1; //????
P2 &= 0xf0; //??????
RCK_595 = 1; //?????????????
P2 |=i; //????
RCK_595 = 0; //??????
G_74138=0; //????
}



这是写的代码,编译通过,烧录也成功了,但是点阵就是不能正常显示。怀疑是连线方式有问题,但是不知道怎么连才对。。。有哪位知道可以告知一下吗谢谢~~

scholarship 发表于 2015-12-31 08:49:17

595控制端接上单片机,输出端对应接行列点阵引脚

yutingf1 发表于 2019-9-6 10:32:08

应该是P0脚的问题,在上面加上拉电阻就可以了,我也这样成功。

Kiwi2021 发表于 2022-5-30 11:13:07

页: [1]
查看完整版本: 求助~关于16X16点阵的代码和连线方式。