本帖最后由 javastory 于 2021-5-7 11:05 编辑
设计一个8*16的led共阳点阵,行用74ls164,列用74hc154,设计思想是行一次输出8位数据,列导通,然后这一列就亮,但是现在显示的效果是全亮,然后一列一列从左向右灭,不到16列的时候灭得就没有规律了,不知道错误原因,请高手帮忙指出错误,谢谢,单片机代码如下:
P2^0--3接74hc154数据端
sbit COW_1641 = P2^4; //74ls164数据输入
sbit CLK_1641 = P2^5;
unsigned char colcount[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
unsigned char code image[16] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x81,0xB7,0xB7,0xB7,0xFF}; //字母F,纵向,正序
void delay(unsigned int delay){
unsigned char i;
for(;delay>0;delay--)
for(i=0;i<110;i++);
}
void main(){
unsigned int col,coldata;
unsigned char temp;
P2=0xff;
while ( 1 ) {
for (col=0;col<16;col++){
P2=colcount[col]; //P2^0--3输入,各列轮流输出低电平
temp=image[col];
CLK_1641 = 0;
for(coldata=0;coldata<8;coldata++){
CLK_1641 = 0;
COW_1641=temp&0x80;
CLK_1641 = 1;
temp<<=1;
delay(200);
}
CLK_1641 = 1;
//delay(500);
}
}
}
新手,帮忙指出错误原因,谢谢!
|