找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3684|回复: 2
打印 上一主题 下一主题
收起左侧

用52单片机编写的电子时钟程序

[复制链接]
跳转到指定楼层
楼主
ID:56127 发表于 2013-10-28 21:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar num;
uchar ss,ff,mm,sh,sl,fh,fl,mh,ml,shzx,slzx,fhzx,flzx,mhzx,mlzx;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void yc(uint);
void main()
{////////初始化程序//////////
        ET0=1;
        EA=1;
        TMOD=0x01;
        TCON=0x00;
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;
        TR0=1;
        EA=1;
        num=0;
        mm=0;
        ff=0;
        ss=0;
        while(1)
        {/////////分解十位和个位//////////
                sh=ss/10;
                sl=ss%10;
                fh=ff/10;
                fl=ff%10;
                mh=mm/10;
                ml=mm%10;
         /////////变字型码//////////
                 shzx=table[sh];
                slzx=table[sl];
                fhzx=table[fh];
                flzx=table[fl];
                mhzx=table[mh];
                mlzx=table[ml];
        /////////显示/////////////
                dula=1;
                P0=table[sh];
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xfe;
                wela=0;
                yc(5);

                dula=1;
                P0=table[sl]|0x80;
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xfd;
                wela=0;
                yc(5);

                dula=1;
                P0=table[fh];
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xfb;
                wela=0;
                yc(5);

                dula=1;
                P0=table[fl]|0x80;
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xf7;
                wela=0;
                yc(5);

                dula=1;
                P0=table[mh];
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xef;
                wela=0;
                yc(5);

               
                dula=1;
                P0=table[ml];
                dula=0;
                P0=0xff;
                wela=1;
                P0=0xdf;
                wela=0;
                yc(5);
        }
}
void yc(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
                for(j=10;j>0;j--);
}
void T0ZD()interrupt 1
{        EA=0;
        TH0=(65536-45872)/256;
        TL0=(65536-45872)%256;
        num++;
        if(num==20)
        {       
            num=0;
                mm++;
                while(mm==60)
                {
                        mm=0;
                        ff++;
                        while(ff==60)
                        {
                                ff=0;
                                ss++;
                                while(ss==24)
                                {
                                        ss=0;
                                }
                        }
                }
        }
        EA=1;       
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:58096 发表于 2013-12-21 12:24 | 只看该作者
小生想做一个数字时钟,可是我只会点亮led灯,不会这难的. 要求时钟显示单元要用4个LED数码管组成,能够分别显示时钟和分钟时间;可以通过按键,正确设置、校正显示的时钟和分钟时间;时钟显示单元的时钟和分钟之间的“:”符号用上下两个发光二极管,实现正确的秒钟闪烁功能;用c51编写,程序可以发到我的邮箱1468878980@qq.com
回复

使用道具 举报

板凳
ID:61326 发表于 2014-5-4 14:16 | 只看该作者
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表