|
大家帮忙看看,我编写的LED显示程序显示不出来
[复制链接]
我用的是STC89C54RD+单片机作控制部件,外加一片62256,LED为32x16的模块,16分扫,两片DM13C作驱动,串行数据输入,16位并行输出,地址译码采用74HC373和74HC138。数据先存62256中,再读到单片机中输出。最大的问题是我不是很清楚数据是怎么传输的?请问各位大虾,帮帮我吧,我都快急死了。下面是我写的程序,肯定有很多地方不对,请指正。
#include
#include
sbit h0=P1^0;
sbit h1=P1^1;
sbit h2=P1^2;
sbit h3=P1^3;
sbit p17=P1^7;
sbit p33=P3^3;
sbit p35=P3^5;
sbit le=P1^4;
sbit oe=P1^6;
sbit wr=P3^6;
sbit rd=P3^7;
unsigned char xdata tabledate[]={0x7f};
unsigned char redate[32];
void rdbyte (void) /*从62256中读数据存到redate数组中*/
{
unsigned int i=0;
P0 = 0;
P2 = 0;
rd = 0;
while(i<32) redate[i++] = tabledate[0];
}
void main()
{
unsigned int i,j;
unsigned char a,b; /*p33,p35都接74HC373的le口*/
p17 = 1;
p33 = 1;
p33 = 0;
P1 = 0x00;
p35 = 1;
p35 = 0;
for(i=0;i<8;i++) /*先扫描上面八行并输出*/
{
rdbyte();
le = 1;
p35 = 1;
le = 0;
p35 = 0;
a = 0x00;
P1 = a;
p35 = 1;
p35 = 0;
a++;
}
for(j=0;j<8;j++) /*再扫描下面八行并输出*/
{
rdbyte();
le = 1;
p35 = 1;
le = 0;
p35 = 0;
b = 0x08;
P1 = b;
p35 = 1;
p35 = 0;
b++;
}
}
请各位高手帮帮我这个新手,万分感谢!
|
|