这个是用STC89C52RC单片机和两个74HC573,P1控制点阵的八列共阴管脚,P2控制八行共阳管脚,通过逐列扫描显示心形,没有问题。但是,我用P0口替换P1口就出问题了,如下图:
我已经加了一排10K欧姆的电阻了,P0和P1的输出是完全一样的,但是显示变成了一大片亮的。
程序代码如下:
#include
/*延时函数,用来延时**ms的时间*/
void delayms (unsigned int xms)
{
unsigned int i;
unsigned int j;
for (i = xms;i > 0 ; i--)
{
for (j = 110 ; j > 0 ; j--);
}
}
/*main函数,控制8*8点阵显示*/
void main (void)
{
/*显示心形,靠左边,第234567行*/
unsigned char code love_x[] = {
0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,};
unsigned char code love_y[] = {
0x30,0x48,0x44,0x22,0x44,0x48,0x30,0x00,};
int i;
P0 = 0XFF;
while (1)
{
for (i = 0;;)
{
P2 = 0X00;
P0 = love_x[i];
P1 = love_x[i];
P2 = love_y[i];
delayms(1);
i += 1;
if (i == 8)
{
i = 0;
}
} /*'for' over*/
}
}
代码贴上来缩进全没了