本帖最后由 wambob 于 2017-9-5 15:26 编辑
点阵屏的显示方向,一般根据需要进行调整,从上到下下,从右到左,这个跟字模取模关系很密切,调整不对会显示不出结果。
首先定义行扫描线,这个是固定的,由ABCD译码。当然不同的屏可能稍有不同。
#define scan0 {IA=0;IB=0;IC=0;ID=0;}
#define scan1 {IA=1;IB=0;IC=0;ID=0;}
#define scan2 {IA=0;IB=1;IC=0;ID=0;}
#define scan3 {IA=1;IB=1;IC=0;ID=0;}
#define scan4 {IA=0;IB=0;IC=1;ID=0;}
#define scan5 {IA=1;IB=0;IC=1;ID=0;}
#define scan6 {IA=0;IB=1;IC=1;ID=0;}
#define scan7 {IA=1;IB=1;IC=1;ID=0;}
#define scan8 {IA=0;IB=0;IC=0;ID=1;}
#define scan9 {IA=1;IB=0;IC=0;ID=1;}
#define scan10 {IA=0;IB=1;IC=0;ID=1;}
#define scan11 {IA=1;IB=1;IC=0;ID=1;}
#define scan12 {IA=0;IB=0;IC=1;ID=1;}
#define scan13 {IA=1;IB=0;IC=1;ID=1;}
#define scan14 {IA=0;IB=1;IC=1;ID=1;}
#define scan15 {IA=1;IB=1;IC=1;ID=1;}
使用switch case语句调试上下方向
void HScan(unsigned char Value)
{switch(Value)
{case 0: scan0;break;
case 15: scan1;break;
case 14: scan2;break;
case 13: scan3;break;
case 12: scan4;break;
case 11: scan5;break;
case 10: scan6;break;
case 9: scan7;break;
case 8: scan8;break;
case 7: scan9;break;
case 6:scan10;break;
case 5:scan11;break;
case 4:scan12;break;
case 3:scan13;break;
case 2:scan14;break;
case 1:scan15;break;
default:break;
}
}
逐行扫描测试:
unsigned char code displayH={0xFF,0xFF,0xFF,0xFE,0x9F,0xFF,0xFF,0xFD};
void main(void)
{
SEG_DLE =1;
P0=0x00;
SEG_DLE =0; //关闭数码管
while(1)
{
unsigned char i,j;
for(i=0;i<16;i++){
for(j=0;j<8;j++)
{
send_R2(&displayH);
// send_R2(&displayH);
}
STR=0;
STR=1;
HScan(i);
delayms(1000) ;
}
}
共阳极模块。595输出低电平时点亮。测试行数组可以全部改为0x00。
本帖最后由 wambob 于 2017-9-5 15:26 编辑
点阵屏的显示方向,一般根据需要进行调整,从上到下下,从右到左,这个跟字模取模关系很密切,调整不对会显示不出结果。
首先定义行扫描线,这个是固定的,由ABCD译码。当然不同的屏可能稍有不同。
#define scan0 {IA=0;IB=0;IC=0;ID=0;}
#define scan1 {IA=1;IB=0;IC=0;ID=0;}
#define scan2 {IA=0;IB=1;IC=0;ID=0;}
#define scan3 {IA=1;IB=1;IC=0;ID=0;}
#define scan4 {IA=0;IB=0;IC=1;ID=0;}
#define scan5 {IA=1;IB=0;IC=1;ID=0;}
#define scan6 {IA=0;IB=1;IC=1;ID=0;}
#define scan7 {IA=1;IB=1;IC=1;ID=0;}
#define scan8 {IA=0;IB=0;IC=0;ID=1;}
#define scan9 {IA=1;IB=0;IC=0;ID=1;}
#define scan10 {IA=0;IB=1;IC=0;ID=1;}
#define scan11 {IA=1;IB=1;IC=0;ID=1;}
#define scan12 {IA=0;IB=0;IC=1;ID=1;}
#define scan13 {IA=1;IB=0;IC=1;ID=1;}
#define scan14 {IA=0;IB=1;IC=1;ID=1;}
#define scan15 {IA=1;IB=1;IC=1;ID=1;}
使用switch case语句调试上下方向
void HScan(unsigned char Value)
{switch(Value)
{case 0: scan0;break;
case 15: scan1;break;
case 14: scan2;break;
case 13: scan3;break;
case 12: scan4;break;
case 11: scan5;break;
case 10: scan6;break;
case 9: scan7;break;
case 8: scan8;break;
case 7: scan9;break;
case 6:scan10;break;
case 5:scan11;break;
case 4:scan12;break;
case 3:scan13;break;
case 2:scan14;break;
case 1:scan15;break;
default:break;
}
}
逐行扫描测试:
unsigned char code displayH={0xFF,0xFF,0xFF,0xFE,0x9F,0xFF,0xFF,0xFD};
void main(void)
{
SEG_DLE =1;
P0=0x00;
SEG_DLE =0; //关闭数码管
while(1)
{
unsigned char i,j;
for(i=0;i<16;i++){
for(j=0;j<8;j++)
{
send_R2(&displayH);
// send_R2(&displayH);
}
STR=0;
STR=1;
HScan(i);
delayms(1000) ;
}
}
共阳极模块。595输出低电平时点亮。测试行数组可以全部改为0x00。