使用595+154实现16X16点阵的设计,595给高电平,154给低电平实现点阵控制,目前点阵的设计显示均能够按照程序运行,出现当前行为高电平的下一行会有一点模糊的亮度,感觉是程序的问题,程序源码如下:
for(k=0;k<7;k++) //显示汉字
{
for(nums=0;nums<32;nums++) {
table1[nums]=table[k][nums];
}
for(j=0;j<100;j++) //每个汉字显示20次,达到控制显示时间
{
for(i=0;i<16;i++)
{
P1=i; //P1从154输出扫描信号
sendbyte(table1[2*i+1]); //根据电路图,先送一行的高字节
sendbyte(table1[2*i]); //再送低字节
out595(); //行与列输出完毕后,再放开锁存使数据分别送到595引脚,实现显示
delay100us(50); //延时0.5ms
}
}
}
void sendbyte(unsigned char temp) //向595发送一字节数据,顺序从高位到低位
{
unsigned char i;
for(i=0;i<8;i++)
{
CLK_LOW();
DAT=temp&0x80;
temp<<=1;
CLK_SET();
}
}
void out595(void)//将移位寄存器数据锁存至输出显示寄存器
{
LCK_SET();
__nop();
__nop();
__nop();
LCK_LOW();
}
一般数码管和点阵屏出现这种问题十有八九是消隐没做好,在你程序的
- sendbyte(table1[2*i+1]); //根据电路图,先送一行的高字节
- sendbyte(table1[2*i]); //再送低字节
- out595(); //行与列输出完毕后,再放开锁存使数据分别送到595引脚,实现显示
- delay100us(50); //延时0.5ms
应用你的程序 在这里之前加一个关闭595的函数就行了。