数码管见过很多次了,可却没编过相关的程序,手册里正好有这个实验就做了一下。
    所谓数码管说来就是几个发光二极管按顺序排列(汗,我之前连这都忘了),这几个发光二极管阳极接在一起叫共阳极,反之,就叫共阴极,在另一端给个低/高电平,发光二极管就可以正常工作了。
     在DM2410平台上的数码管连接着74HC595移位寄存器,数据串行输入,并行输出。每出现一个CLK脉冲,数据向右移一位,每出现一个RCK脉冲的上升沿并行输出数据刷新为当前值。实验中首先应配置IO口,rGPGCON=rGPGCON&0xfffd5fff;rGPGCON=rGPGCON|0x15000;将GPG6,GPG7,GPG8设为output,GPG6接DATA OUT,GPG7接CLK,GPG接RCK,这由74HC595移位寄存器连接的管脚决定。
    下面给出两个主要函数:

//=================================
//名称:Led_8_Display
//功能:将8位数据诸位送出
//参数: void
//返回值: void
//=================================
void Led_8_Display(int data)
{
    
int j,i=7;
    U8 num;
    j
=data;
    
for (i=7;i>=0;i--)//共8位
        {
        num
=j%10;
        j
=j/10;
        Led_Output(DAT[num]);
//获得诸位的数据对应的段编码
        }


        
//RCK 脉冲
        rGPGDAT=rGPGDAT|0x100;
        Delay(
1);
        rGPGDAT
=rGPGDAT&0xfeff;
        Delay(
1);                //数据显示
}

//==================================
//名称:Led_Output
//功能:将每位数的8位段数据送出
//参数: void
//返回值: void
//==================================
void Led_Output(U8 data)
{
    
int i,j;
    j
=data;
    
for (i=7;i>=0;i--)//共8段
        {

        
if (j%2)
            rGPGDAT
=rGPGDAT|0x40;//输出1
        else
            rGPGDAT
=rGPGDAT&0xffbf//输出0
        j=j/2;

        
//CLK移位脉冲
        rGPGDAT=rGPGDAT|0x80;
        Delay(
1);
        rGPGDAT
=rGPGDAT&0xff7f;//移位脉冲
}


}