标题: 单片机C语言数码管的查表运算digitron=table[j];结果怎么理解? [打印本页]

作者: 1661383527    时间: 2023-8-2 08:31
标题: 单片机C语言数码管的查表运算digitron=table[j];结果怎么理解?
  unsigned char table[10]={0x40,0x73,0x89,0x21,0x32,0x24,0x04,0x71,0x00,0x20};
void display (unsigned char display_data)
{   //两位数码管显示驱动
    unsigned char y,j,digitron;
    decimal_point_off;                   //小数点关
    for(y=0;y<10;y++)
        {   j=display_data/10;          //取整,十位数
            digitron=table[j];
            PA0=1;

            if(digitron&0x01)   PC0=1;  //数码管第1笔
            else                      PC0=0;  
            if(digitron&0x02)   PC1=1;  //数码管第2笔
            else                      PC1=0;
            if(digitron&0x04)   PC2=1;  //数码管第3笔
            else                      PC2=0;
            if(digitron&0x08)   PA5=1;  //数码管第4笔
            else                      PA5=0;
            if(digitron&0x10)   PC4=1; //数码管第5笔
            else                      PC4=0;
            if(digitron&0x20)   PC5=1; //数码管第6笔
            else                      PC5=0;
            if (digitron&0x40)  PA4=1; //数码管第7笔
            else                      PA4=0;
            PA6=0;      
            DelayMs(5);


新手小白,搞不懂上面的那句digitron=table[j];的结果是怎么运算出来的?


作者: BG6BXN    时间: 2023-8-2 10:13
j=display_data/10;         
digitron=table[j];
作者: liyonghua111    时间: 2023-8-2 14:37
在上述代码中,digitron=table[j];是将数组table中的元素赋值给变量digitron。  首先,j是通过将display_data除以10来获取十位数。例如,如果display_data为47,则j将被赋值为4。  然后,table[j]将访问数组table中索引为j的元素。这意味着如果j为4,则table[4]将返回数组中索引为4的元素值,即0x32。  最后,将这个值赋给变量digitron,使得digitron等于0x32。接下来的代码会根据digitron的不同位状态来控制数码管的显示。  注意:在你提供的代码中,并没有给出table数组的定义和decimal_point_off、PA0、PC0等标识符的定义。请确保这些定义在代码的其他部分存在,并正确设置相应的值和功能。
作者: 1661383527    时间: 2023-8-2 14:53
liyonghua111 发表于 2023-8-2 14:37
在上述代码中,digitron=table[j];是将数组table中的元素赋值给变量digitron。  首先,j是通过将display_da ...

谢谢大佬,讲的特别详细,终于明白了!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1