标题: unsigned char code tab[]数组如何理解?单片机数码管显示功能代码求答 [打印本页]

作者: 闷闷的新人    时间: 2019-4-4 14:13
标题: unsigned char code tab[]数组如何理解?单片机数码管显示功能代码求答
问题:unsigned char code tab[],这个数组我该怎么理解?里面16进制转换成什么进制的?
DUAN=tab[min/10];这里面min在上面定义了,但我又该怎么理解呢?

unsigned char code tab[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28,0xff}; //数字0-9的编码
unsigned char code tab_dian[]={0x80,0x9b,0x42,0x0a,0x19,0x0c,0x04,0x9a,0x00,0x08,0xdf}; //带点的数字0-9的编码
char min,sec;                                //定义计时分秒
uchar flag_set=0;                        //设置变量:0 正常  1 调分  2 调秒

单片机型号:STC89C51/52
部分代码如下:
void display()
{
        if(flag_set==0)                         //正常模式下
        {
                DUAN=tab[min/10];          //送入段码      
                W0=0;                                  //打开位地址
                delay(1);                          //小延时
                W0=1;                                  //关闭位地址
                DUAN=tab_dian[min%10]; //下同
                W1=0;
                delay(1);
                W1=1;
                DUAN=tab[sec/10];
                W2=0;
                delay(1);
                W2=1;
                DUAN=tab[sec%10];
                W3=0;
                delay(1);
                W3=1;
        }
作者: univers    时间: 2019-4-5 23:03
unsigned char code tab[],里面的0-9位代码,在c中会自动排成0/1/23***9。等于说等 第一位指向0xao第二位指向0xbn
作者: jerry_fuyi    时间: 2019-4-6 11:42
16进制转成单片机一个8位端口上的高低电平,能显示出什么就要看接线方式了
顺便说一句,带点的数组就是不带点的数组每个元素加上0x20,这么写我感觉浪费空间
作者: 闷闷的新人    时间: 2019-4-16 16:02
char min,sec;
DUAN=tab[min/10];
为什么这样能用?没有赋初值也可以吗?
能给我讲解下这句的意思吗?




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