做过杜洋MINI1608的请进,点扫描问题讨论。

2020-01-21 21:34发布

1.jpg (65.63 KB, 下载次数: 0) 下载附件 2014-12-22 09:29 上传
另附上LED的直观图。

现在的问题是在上图情况下,以共阳方式进行扫描,也就是先选中第一行,然后数据以阴码输出,再选中第二行,输出第二行的数据。。。。。。

但问题是选中第一行后还没进行数据输出,第一行的灯全亮了?。。。。初始化里5个口有全设定为高电平啊。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
gracialee
2020-01-22 06:33
本帖最后由 gracialee 于 2014-12-22 15:19 编辑
lxa0 发表于 2014-12-22 13:18
他的东西你不可能一次做成功的~~~~~~~~~~~~~~


成功是成功了,只是看上面的程序显得有点累赘,相信肯定有精简的算法来代替。比如:

void displayHH1 (unsigned char d){ //第1列横向显示程序
        unsigned char i;
        i = d & 0x01;
        if(i == 0x01){
                DY_LED1_H1 = 1;DY_LED1_L1 = 0;delay(DY_PWM);dis_off();}
        i = d & 0x02;
        if(i == 0x02){
                DY_LED1_H2 = 1;DY_LED1_L1 = 0;delay(DY_PWM);dis_off();}
        i = d & 0x04;
        if(i == 0x04){
                DY_LED1_H3 = 1;DY_LED1_L1 = 0;delay(DY_PWM);dis_off();}
        i = d & 0x08;
        if(i == 0x08){
                DY_LED1_H4 = 1;DY_LED1_L1 = 0;delay(DY_PWM);dis_off();}
        i = d & 0x10;
        if(i == 0x10){
                DY_LED1_H5 = 1;DY_LED1_L1 = 0;delay(DY_PWM);dis_off();}
        i = d & 0x20;
        if(i == 0x20){
                DY_LED1_H6 = 1;DY_LED1_L1 = 0;delay(DY_PWM);dis_off();}
        i = d & 0x40;
        if(i == 0x40){
                DY_LED1_H7 = 1;DY_LED1_L1 = 0;delay(DY_PWM);dis_off();}
        i = d & 0x80;
        if(i == 0x80){
                DY_LED1_H8 = 1;DY_LED1_L1 = 0;delay(DY_PWM);dis_off();}
}
这类的子程序就达16个之多。

一周热门 更多>