[51]数码管作时钟

来源:互联网 发布:python实验元组与列表 编辑:程序博客网 时间:2024/05/29 13:05
#include<reg52.h>
unsigned int led[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //p0端0到f,0x7f为点
unsigned int ledx[]= {0x00,0x0e,0x0d,0x0b,0x07,0xff} ; //p2端都亮,到都灭
void delay(unsigned int xms)   //延时函数                                                                                                        //延时程序
{
    unsigned int x,y;
    for(x=xms; x>0; x--)
        for(y=110; y>0; y--);
}
sbit add = P3^4;      //加按键
sbit minus = P3^5;      //减按键
int a=0,b=0,c=0,d=0;  //对应位数
int num=0;        //计时变量
unsigned int wait=4; //定义等待时间
unsigned int youdian=0;    //小数点显示判断
void main(void)
{
    TMOD=0x01;            //工作方式
    TH0=(65536-45872)/256; // 赋值
    TL0=(65536-45872)%256; //赋值
    EA=1;                  //开总中断
    ET0=1;                  //开定时器0中断
    TR0=1;                   //自动定时器0
    while(1)
    {
        P2=ledx[1];
        P0=led[a];
        delay(wait);

        P2=ledx[2];
        P0=led[b];
        delay(wait);

        P2=ledx[3];
        P0=led[c];
        delay(wait);

        P2=ledx[4];
        P0=led[d];
        delay(wait);

        if(youdian==1)
        {
            P0=0x7f;
            P2=0x0d;
            delay(wait);
        }
        if(d==-1)
        {
            c--;
            d=9;
        }
        if(c==-1)
        {
            b--;
            c=6;
        }
        if(b==-1)
        {
            a--;
            b=9;
        }
        if(a==-1)
        {
            a=5;
            b=9;
            c=5;
            d=9;
        }
        if(d==10)
        {
            c++;
            d=0;
        }
        if(c==6)
        {
            b++;
            c=0;
        }
        if(b==10)
        {
            a++;
            b=0;
        }
        if(a==6)
        {
            a=0;
        }
    }
}
void T0_timer() interrupt 1
{
    TH0=(65536-45872)/256; // 赋值
    TL0=(65536-45872)%256; //赋值
    num++;
    if(minus==0)
    {
        d--;
        num=0;
        while(!minus)
        {
            num=0;
            P2=ledx[1];
            P0=led[a];
            delay(wait);

            P2=ledx[2];
            P0=led[b];
            delay(wait);

            P2=ledx[3];
            P0=led[c];
            delay(wait);

            P2=ledx[4];
            P0=led[d];
            delay(wait);
        }
    }
    else if(add==0)
    {
        d++;
        num=0;
        while(!add)
        {
            num=0;
            P2=ledx[1];
            P0=led[a];
            delay(wait);

            P2=ledx[2];
            P0=led[b];
            delay(wait);

            P2=ledx[3];
            P0=led[c];
            delay(wait);

            P2=ledx[4];
            P0=led[d];
            delay(wait);
        }
    }
    else if(num==20)
    {
        d++;
        num=0;
        if(youdian==0)youdian=1;
        else if(youdian==1)youdian=0;

    }
}


0 0
原创粉丝点击