钻石会员
  
主题
帖子
积分11063
阅读权限50
注册时间2009-12-25
最后登录1970-1-1
在线时间 小时
|
本帖最后由 狗狗百里游 于 2010-5-7 06:13 编辑
你代码中
void display() //显示,j是要显示的个数
{
unsigned char i,j,s,m ;
char h_d=0 ;
for(i=0;i<16;i++)
{
for(j=0;j<5;j++)
{
m=2*i;
data_b=(led_code[j][m]) ;
hc595_send(data_b );
s=2*i+1;
data_a=(led_code[j]);
hc595_send(data_a ); //取两次,凑成16位
}
hc595_oe=1;//595的13脚输入高电位,输出端为高阻。
//在595更新数据前,让595都不输出就是黑屏了,就不会有残影。
delay_us(2); //这里决定黑屏时间
PORTB=h_d;
hc595_stb=0;
hc595_stb=1;
hc595_oe=0;//595的13脚输入低电位,输出端为状态。
delay_us(10); //这里决定十六选一显示的时间停留多久,太快人眼会觉得很闪,亮度又不够,太慢,人眼会看出一行一行的扫描。你自己调节,
PORTB=h_d; //列数据
hc595_stb=1;
delay_us(80);
h_d++;
for(j=0;j<5;j++) //发送0x00行清零
{
data_b=(led_code[5][0]) ;
hc595_send(data_b );
data_a=(led_code[5][0]);
hc595_send(data_a ); //取两次,凑成16位
}
hc595_stb=0;
hc595_stb=1;
}
}
红色的是你原来弄得黑屏代码吧?,没有用的,去掉
蓝色的是黑屏代码 |
|