找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3257|回复: 3
收起左侧

unsigned char code tab[]数组如何理解?单片机数码管显示功能代码求答

[复制链接]
ID:481400 发表于 2019-4-4 14:13 | 显示全部楼层 |阅读模式
问题: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;
        }
回复

使用道具 举报

ID:382454 发表于 2019-4-5 23:03 来自手机 | 显示全部楼层
unsigned char code tab[],里面的0-9位代码,在c中会自动排成0/1/23***9。等于说等 第一位指向0xao第二位指向0xbn
回复

使用道具 举报

ID:366559 发表于 2019-4-6 11:42 | 显示全部楼层
16进制转成单片机一个8位端口上的高低电平,能显示出什么就要看接线方式了
顺便说一句,带点的数组就是不带点的数组每个元素加上0x20,这么写我感觉浪费空间
回复

使用道具 举报

ID:481400 发表于 2019-4-16 16:02 | 显示全部楼层
char min,sec;
DUAN=tab[min/10];
为什么这样能用?没有赋初值也可以吗?
能给我讲解下这句的意思吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表