在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复。

题目:在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复。

  • 延时函数
  • 分析LED
  • 首先实现8个数码管单独依次显示0~9的数字
  • 所有数码管一起同时显示0~F的值,如此往复。
  • 初始化蜂鸣器继电器
  • 固定模板
  • 总代码
  • 延时函数

    void Delay(unisgned int t)
    {
    while(t–);
    while(t–);
    }

    分析LED



     Alt

    码是
    由图可知,LED的段码Y7C,位码来连接Y6C,分别与或非门和138译码器上

    首先实现8个数码管单独依次显示0~9的数字

    先要知道各个数字的16进制编码

    #include <REGX52.H>

    void char code SMG_duanma=
    {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

    //通道的选择
    void InitSystem(unsigned char n)
    {
    switch(n)
    {
    case 4:
    P2=(P2 & 0x1f) | 0x80 ;
    break;
    case 5:
    P2=(P2 & 0x1f) | 0xa0 ;
    break;
    case 6:
    P2=(P2 & 0x1f) | 0xc0 ;
    break;
    case 7:
    P2=(P2 & 0x1f) | 0xe0 ;
    break;
    }
    }

    void showSMG_Bit(unsigned char dat,unsigned char pos) //显示内容,显示位置
    {
    InitSystem(6); //Y6低电平,控制位置,位码 数码管的位置
    P0=0x01<<pos;
    InitSystem(7); //Y7低电平,控制数字,断码 数码管的内容
    P0=dat;
    }

    //数码管显示
    void SMG_Static()
    {
    unsigned char i,j;
    for(i=0;i<8;i++)
    {
    for(j=0;j<10;j++)
    {
    showSMG_Bit(SMG_duanma[j],i);
    Delay(60000);
    Delay(60000);
    }
    }

    所有数码管一起同时显示0~F的值,如此往复。

    for(j=0;j<16;j++)
    {
    InitSystem(6);
    P0=0xff;
    InitSystem(7);
    P0=SMG_duanma[j];
    Delay(60000);
    Delay(60000);
    }
    }

    初始化蜂鸣器继电器

    void Init()
    {
    InitSystem(5);
    P0=0x00;
    }

    固定模板

    void main(1)
    {
    Init();
    while()
    {
    SMG_Static();
    }
    }

    总代码

    作者:杜子不疼.

    物联沃分享整理
    物联沃-IOTWORD物联网 » 在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复。

    发表回复