数码管显示函数——Final

#define SMG_W    P2          //将数码管 位端口 P0 转义位 SMG_W, 便于以后移植
#define    SMG_D    P0                  //将数码管 段端口 转义为 SMG_D

void SMG_DISPLAY(long num)        //数码管显示整数函数
{
    /****数码管位*******/
    /*    0,1,2,3,4,5,6,7        */
    unsigned char code SMG_WEI[]={
    0xff,0xfb,0xf7,0xf3,0xef,0xeb,0xe7,0xe3};               //用于数码管 位的选择

//用于数码管 位的选择,这样写不好,相当于对P2的8个管脚都进行了控制,实际上我们只给数码管分配了3个管脚,需要重写数码管显示函数
    
    /****无小数点数字******/
    /*    0,1,2,3,4,5,6,7,
        8,9,A,B,C,D,E,F,
         ,-,.,                */
    unsigned char code SMG[]={
    0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
    0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,
    0x00,0x40,0x80};
    
    /****有小数点数字*******/
    /*    0.,1.,2.,3.,4.,5.,6.,7.,
        8.,9.,                          */
    unsigned char code SMG_POINT[]={
    0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,
    0xff,0xef,};
    
    unsigned char array[8]={0,0,0,0,0,0,0,0},array_len=0,i=0;

    /*将数的各位存在数组里面,得到数组array[]*/
    while(num!=0)
    {
        array[array_len]=num%10;    //将末位存进数组
        num=num/10;                    //将数减一位
        array_len++;
    }  
    /*遍历数组array并显示*/
    while(1)
    {
        for(i=0;i<array_len;i++)
        {
         SMG_W=SMG_WEI[array_len-1-i];           //先位后段
         SMG_D=SMG[array[i]];
         delay(1);                  //延时时间小于24帧/s, ~21ms人眼就分辨不了
         SMG_D=0x00;              //消影
        }
    } 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值