标题: 简易小时钟(分享设计) [打印本页]

作者: forrest    时间: 2014-11-8 08:26
标题: 简易小时钟(分享设计)
经典小制作,希望喜欢

QQ图片20141108082553.jpg (534.2 KB, 下载次数: 174)

QQ图片20141108082553.jpg

小时钟.zip

43.24 KB, 下载次数: 103, 下载积分: 黑币 -5


作者: bypain    时间: 2014-11-8 10:01
电路图呢?

作者: admin    时间: 2014-11-8 12:49





#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit k0=P3^6;
sbit k1=P3^1;
sbit clk=P2^1;
uchar aa,m,f,h,k=0,nk=0;nf,nh;
uchar code p0[]={0Xa0,0Xbb,0X62,0X2a,0X39,0X2c,0X24,0Xba,0X20,0X28};
void init();
void time();
void display(uchar a,uchar b,uchar c,uchar d);
void delay(uint z)
{
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}

void main()
{    
    init();
    while(1)
    {     
        display(h/10,h%10,f/10,f%10);
        time();
        if(nk==1)
        {
            if(nh==h)
            {
                if(nf==f)
                {
                     clk=0;
                    delay(1);
                    clk=1;
                    delay(1);
                }
            }
        }
    }
}
void time()
{
    if(k1==0)
    {
        delay(1);
        if(k1==0)
        {
            while(!k1)
            {
                display(h/10,h%10,f/10,f%10);
                if(k==1)
                {
                    if(k0==0)
                    {
                        delay(1);
                        if(k0==0)
                        {
                            while(!k0)
                            display(h/10,h%10,f/10,f%10);
                            f++;
                            if(f==60)
                            {
                                 f=0;
                            }
                            display(h/10,h%10,f/10,f%10);
                        }
                    }
                }
                if(k==2)
                {
                    if(k0==0)
                    {
                        delay(2);
                        if(k0==0)
                        {
                            while(!k0)
                            display(h/10,h%10,f/10,f%10);
                            h++;
                            if(h==24)
                            {
                                 h=0;
                            }
                            display(h/10,h%10,f/10,f%10);
                        }
                    }
                }
            }
            k++;
            if(k==1)
            {
                TR0=0;
            }
            if(k==3)
            {
                 TR0=1;
                k=0;
            }    
        }
    }

    if(k0==0)
    {
        delay(1);
        if(k0==0)
        {
            while(!k0)
            {
                display(nh/10,nh%10,nf/10,nf%10);
                if(k==0)
                {
                    if(k1==0)
                    {
                        delay(1);
                        if(k0==0)
                        {
                            while(!k1)
                            display(nh/10,nh%10,nf/10,nf%10);
                            nf++;
                            if(nf==60)
                            {
                                 nf=0;
                            }
                            display(nh/10,nh%10,nf/10,nf%10);
                        }
                    }
                }
                if(k==1)
                {
                    if(k1==0)
                    {
                        delay(2);
                        if(k1==0)
                        {
                            while(!k1)
                            display(nh/10,nh%10,nf/10,nf%10);
                            nh++;
                            if(nh==24)
                            {
                                 nh=0;
                            }
                            display(nh/10,nh%10,nf/10,nf%10);
                        }
                    }
                }
                if(k==2)
                {
                     if(k1==0)
                    {
                        delay(1);
                        if(k1==0)
                        {
                            while(!k1)
                            display(nh/10,nh%10,nf/10,nf%10);
                            nk=!nk;
                            display(nh/10,nh%10,nf/10,nf%10);
                        }
                    }
                }
            }
            k++;
            if(k==3)
            {
                k=0;
            }    
        }
    }
}
void display(uchar a,uchar b,uchar c,uchar d)
{
    P1=0x10;
    P0=p0[a];    
    delay(1);    
    P0=0xff;

    P1=0x20;
    P0=p0[b];
    delay(1);
    P0=0xff;

    P1=0x40;
    P0=p0[c];    
    delay(1);    
    P0=0xff;

    P1=0x80;
    P0=p0[d];    
    delay(1);    
    P0=0xff;

    if(nk==1)
    {
        P1=0x80;
        P0=0xdf;    
        delay(1);    
        P0=0xff;
    }

}
void init()
{    
    m=0;
    h=0;
    TMOD=0x01;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    EA=1;
    ET0=1;
    TR0=1;    
}
void timer0() interrupt 1
{
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    aa++;
    if(aa==20)
    {
        aa=0;
        m++;
        clk=0;
        delay(0.9);
        clk=1;
        delay(0.9);
        P1=0x20;
        P0=0xdf;
        delay(2);
        P0=0xff;
        if(m==60)
        {
            m=0;
            f++;
            if(f==60)
            {
                f=0;
                h++;
                if(h==24)
                {
                     h=0;
                }
    
            }
        }
    }    
}







作者: forrest    时间: 2014-11-14 13:21
bypain 发表于 2014-11-8 10:01
电路图呢?

这个没有电路图,随便做的
作者: forrest    时间: 2014-11-14 13:22
bypain 发表于 2014-11-8 10:01
电路图呢?

这个没有电路图,随便做的
作者: forrest    时间: 2014-11-14 13:22
bypain 发表于 2014-11-8 10:01
电路图呢?

这个没有电路图,随便做的
作者: forrest    时间: 2014-11-14 13:25
bypain 发表于 2014-11-8 10:01
电路图呢?

因为电路太简单了,所以就没画电路图
作者: 唐晓秋    时间: 2014-11-16 19:23
额。没有图啊

作者: xiaoxiewudi    时间: 2014-11-24 20:49
学习学习
作者: 15678290927    时间: 2014-11-30 11:50
楼主程序中的clk是什么?
作者: 790316884    时间: 2014-12-2 09:18
真的好简易啊!
作者: forrest    时间: 2014-12-2 13:50
15678290927 发表于 2014-11-30 11:50
楼主程序中的clk是什么?

是NK吧??
作者: forrest    时间: 2014-12-2 13:52
15678290927 发表于 2014-11-30 11:50
楼主程序中的clk是什么?

nk是闹钟开/关
作者: 竹影荷衣    时间: 2014-12-20 20:45
可惜没有电路图!
作者: 51hei电控2112312    时间: 2014-12-21 04:14
很好,正需要
作者: 星星一眨眼    时间: 2014-12-22 12:48
老师上个原理图
作者: forrest    时间: 2014-12-25 16:44
竹影荷衣 发表于 2014-12-20 20:45
可惜没有电路图!

没有原理图,即兴之作,不好意思
作者: 星星一眨眼    时间: 2014-12-25 16:50
我们不懂程序请老师画个电路图吧谢谢
作者: forrest    时间: 2014-12-28 16:43
星星一眨眼 发表于 2014-12-25 16:50
我们不懂程序请老师画个电路图吧谢谢

额。。。我还是学生,最近要考试,备考中,有空画了在上传
作者: 星星一眨眼    时间: 2014-12-28 20:07
天天等天天关注
作者: zq11111111    时间: 2014-12-31 16:10
哥哥哥哥哥哥哥哥哥哥哥
作者: sunxiucai2015    时间: 2015-1-2 19:40
初学想做个电子钟
作者: 越快乐越堕落    时间: 2016-4-15 19:17
新手,楼主可以画一个图看看吗
作者: supao    时间: 2016-4-15 20:30
麻烦上个图 好不好,学习一下
作者: supao    时间: 2016-4-15 20:31

新手,楼主可以画一个图看看吗
作者: balalaba    时间: 2016-4-15 23:00
不错 不错
作者: yangglong    时间: 2016-11-25 22:06
感谢分亨1
作者: payload    时间: 2017-5-8 23:42
谢谢分享




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