标题: 数码管怎么实现点亮显示数值的? [打印本页]

作者: yyjjwan1627    时间: 2014-9-10 13:09
标题: 数码管怎么实现点亮显示数值的?
看到TI的例子,想了半天想不出来这个
typedef unsigned char uchar;
#define wei_h P5OUT|= BIT5                               p5out 是定义的是5。5输出高电平
#define wei_l P5OUT&= ~BIT5                            这怎么又成了P5OUT输出低电平了,
#define duan_l   P6OUT &= ~BIT6                      这怎么又成了P6OUT输出低电平了,
#define duan_h  P6OUT |= BIT6                        p6out 是定义的是6。6输出高电平
//数码管7位段码:0--f
uchar scandata[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                      0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

*****************************************进入中断程序后
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
    //P4OUT = 0xff;
    P4OUT = scandata[cnt];        //输出段选信号
    duan_h;                                    p6out 是定义的是6。6输出高电平
    duan_l;                                    这怎么又成了P6OUT输出低电平了,
    P4OUT = ~(1 << cnt);           //输出位选信号
    wei_h;                                   p5out 是定义的是5。5输出高电平
    wei_l;                                     这怎么又成了P5OUT输出低电平了,

    cnt++;                        //位计数变量在0~7之间循环
    if(cnt == 8) cnt = 0;
}

************************************************
以下是数显管部分电路图




其实最不明白它为什么一会置高一会儿置低的,到底是怎么实现这个过程的,有知道吗 ?求解?



作者: daliu    时间: 2014-9-11 20:28
先要了解动态扫描和静态扫描这个过程
作者: ahshmj    时间: 2014-9-11 20:35
“有知道吗 ?”

已经入了门的都应该知道。

作者: mqwu    时间: 2014-9-12 14:34
改成带形参的函数, 因为你那个只能显示01234567. 不能显示你自己要的数, 动态扫描的好处是降低运行的功耗, 而不是一直上电, 而是交替上电, 在人的视角看分辨不出来10 ms以下的开关。
void Numerical_display(uchar m,uchar n)
{
    //P4OUT = 0xff;
    P4OUT = scandata[m];        //输出段选信号
    duan_h;                                    p6out 是定义的是6。6输出高电平
    __delay_cycles(2);
    duan_l;                                    这怎么又成了P6OUT输出低电平了,
    P4OUT = ~BITn;           //输出位选信号
    wei_h;                                   p5out 是定义的是5。5输出高电平
      __delay_cycles(2);
    wei_l;                                     这怎么又成了P5OUT输出低电平了,
}




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