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

2020-01-21 21:34发布

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

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

但问题是选中第一行后还没进行数据输出,第一行的灯全亮了?。。。。初始化里5个口有全设定为高电平啊。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
kebaojun305
1楼-- · 2020-01-21 23:54
选中行之前 先初始化列输出 都关闭即可。 是必须这样做的。
lxa0
2楼-- · 2020-01-22 05:49
他的东西你不可能一次做成功的~~~~~~~~~~~~~~
gracialee
3楼-- · 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个之多。
lxa0
4楼-- · 2020-01-22 07:19
gracialee 发表于 2014-12-22 15:18
成功是成功了,只是看上面的程序显得有点累赘,相信肯定有精简的算法来代替。比如:

void displayHH1 (u ...

我的意思是说
他的东西必须是做2次以上才会成功
很少  几乎没有一次会做成功的
懂我的意思了吧?
wajlh
5楼-- · 2020-01-22 12:47
 精彩回答 2  元偷偷看……
gracialee
6楼-- · 2020-01-22 13:34
wajlh 发表于 2014-12-22 16:34
他的东西里面有意或者无意的加BUG,原因你懂得。这个论坛里好多人领教过的 ...

哦,明白了,请问做过了的人,或者刷过他的程序的人,他那里的汉字用的何种字体?有点像正楷的那种?但在我这里显示的楷体有点单薄,没他那个好看。

一周热门 更多>