找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机数字时钟设计,希望大家帮帮忙,谢谢

[复制链接]
跳转到指定楼层
楼主
ID:189307 发表于 2017-4-13 18:57 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是马上毕业的学生,需要做毕业设计单片机数字时钟可调节时间,时分秒,6个数码管,现在急需这个设计程序,希望大家可以给我说下程序,谢谢大家
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:189311 发表于 2017-4-13 19:14 | 只看该作者
#include<reg52.h>
#define u8 unsigned char
#define u16 unsigned int
sbit s=P3^0;
sbit f=P3^1;
sbit m=P3^2;
sbit t=P3^3;
sbit dula=P2^6;
sbit wela=P2^7;
u16 num,a,b,c;
u8 m1,m2,f1,f2,s1,s2;
u8 code duanxuan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f};
void delay(u16 x)                                        //1ms延时程序
{
        u8 i,j;
        for(i=x;i>0;i--)
                for(j=113;j>0;j--);
}
void shumaguan()                                         //数码管显示
{
        wela=0;                                                //10ms位
        dula=1;
        P0=duanxuan[m1];
        dula=0;
        wela=1;
        P0=0xfe;
        wela=0;
        delay(1);
       
        dula=1;
        P0=duanxuan[m2];
        dula=0;
        wela=1;
        P0=0xfd;
        wela=0;
        delay(1);

        wela=0;                                                //10ms位
        dula=1;
        P0=0x40;
        dula=0;
        wela=1;
        P0=0xfb;
        wela=0;
        delay(1);

        dula=1;
        P0=duanxuan[f1];
        dula=0;
        wela=1;
        P0=0xf7;
        wela=0;
        delay(1);

        dula=1;
        P0=duanxuan[f2];
        dula=0;
        wela=1;
        P0=0xef;
        wela=0;
        delay(1);

        wela=0;                                                //10ms位
        dula=1;
        P0=0x40;
        dula=0;
        wela=1;
        P0=0xdf;
        wela=0;
        delay(1);

        dula=1;
        P0=duanxuan[s1];
        dula=0;
        wela=1;
        P0=0xbf;
        wela=0;
        delay(1);

        dula=1;
        P0=duanxuan[s2];
        dula=0;
        wela=1;
        P0=0x7f;
        wela=0;
        delay(1);

}
void tiao()
{
         
                 if(t==0)
                {
                        while(~t);
                        TR0=~TR0;
                }
                        if(s==0)
                        {
                                while(~s);
                                c++;
                                if(c==24)
                                c=0;
                               
                        }
                        if(f==0)
                        {
                                while(~f);
                                b++;
                                if(b==60)
                                b=0;
                        }
                        if(m==0)
                        {
                                while(~m);
                                a++;
                                if(a==60)
                                a=0;
                        }
        m1=a%10;
        m2=a/10;
        f1=b%10;
        f2=b/10;
        s1=c%10;
        s2=c/10;
               
         
}
void duan()
{
        TMOD=0x01;
    TH0=(65536-46030)/256;
    TL0=(65536-46030)%256;
    EA= 1;
    ET0 = 1;
    TR0 = 1;
}
void main()
{
        duan();        //初始化函数
        while(1)
        {
        shumaguan();
        tiao();       
        }
}
void time() interrupt 1
{
        TH0 =(65536-46080)/256;
    TL0 = (65536-46080)%256;
        num++;
        if(num==20)
        {
                num=0;
                a++;
                if(a==60)
                {
                        a=0;
                        b++;
                        if(b==60)
                        {
                                b=0;
                                c++;
                                if(c==24)
                                c=0;
                        }
                }
        }
        m1=a%10;
        m2=a/10;
        f1=b%10;
        f2=b/10;
        s1=c%10;
        s2=c/10;
}
回复

使用道具 举报

板凳
ID:111634 发表于 2017-4-13 20:22 | 只看该作者
本帖最后由 zl2168 于 2017-4-13 20:29 编辑

实例93  具有校正功能的时钟1302(LED数码管显示)
Proteus仿真一下,确认有效。
实例93 带校正时分秒的时钟1302(6位LED数码管显示).rar (732.75 KB, 下载次数: 20)

以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行


回复

使用道具 举报

地板
ID:111634 发表于 2017-4-13 20:30 | 只看该作者
本帖最后由 zl2168 于 2017-4-13 20:31 编辑

实例94  模拟电子钟(由80C51定时器产生秒时基)
Proteus仿真一下,确认有效。
实例94 模拟电子钟(由80C51定时器产生秒时基).rar (43.05 KB, 下载次数: 11)

以上摘自张志良编著80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行书中电路和程序设计有详细说明,程序语句条条有注解。
回复

使用道具 举报

5#
ID:189307 发表于 2017-4-13 21:12 来自手机 | 只看该作者
AmbitionXN 发表于 2017-4-13 19:14
#include
#define u8 unsigned char
#define u16 unsigned int

谢谢,好人一生平安
回复

使用道具 举报

6#
ID:189565 发表于 2017-4-14 15:59 | 只看该作者
我用的是数码管加显示屏其实差不多,只是有显示屏功能可以多一点。我的报告里原理图,结构图,还有代码都有。

信息工程课程设计报告书(图和程序可打印,其它手写) (1).doc

387.5 KB, 下载次数: 17

回复

使用道具 举报

7#
ID:189580 发表于 2017-4-14 16:36 | 只看该作者
mark  
回复

使用道具 举报

8#
ID:189739 发表于 2017-4-15 10:10 | 只看该作者
刘明,后看
回复

使用道具 举报

9#
ID:151348 发表于 2017-4-15 16:42 | 只看该作者
这个毕设也太简单了。。。。。。。。。。。。。
回复

使用道具 举报

10#
ID:168632 发表于 2017-4-15 17:21 | 只看该作者
我做的一个1602显示的,多功能的万年历,希望可以对你有帮助 多功能电子万年历.zip (5.94 KB, 下载次数: 10)

回复

使用道具 举报

11#
ID:189984 发表于 2017-4-15 21:55 | 只看该作者

#include<reg52.h>
#define u8 unsigned char
#define u16 unsigned int
sbit s=P3^0;
sbit f=P3^1;
sbit m=P3^2;
sbit t=P3^3;
sbit dula=P2^6;
sbit wela=P2^7;
u16 num,a,b,c;
u8 m1,m2,f1,f2,s1,s2;
u8 code duanxuan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f};
void delay(u16 x)                                        //1ms延时程序
{
        u8 i,j;
        for(i=x;i>0;i--)
                for(j=113;j>0;j--);
}
void shumaguan()                                         //数码管显示
{
        wela=0;                                                //10ms位
        dula=1;
        P0=duanxuan[m1];
        dula=0;
        wela=1;
        P0=0xfe;
        wela=0;
        delay(1);
        
        dula=1;
        P0=duanxuan[m2];
        dula=0;
        wela=1;
        P0=0xfd;
        wela=0;
        delay(1);

        wela=0;                                                //10ms位
        dula=1;
        P0=0x40;
        dula=0;
        wela=1;
        P0=0xfb;
        wela=0;
        delay(1);

        dula=1;
        P0=duanxuan[f1];
        dula=0;
        wela=1;
        P0=0xf7;
        wela=0;
        delay(1);

        dula=1;
        P0=duanxuan[f2];
        dula=0;
        wela=1;
        P0=0xef;
        wela=0;
        delay(1);

        wela=0;                                                //10ms位
        dula=1;
        P0=0x40;
        dula=0;
        wela=1;
        P0=0xdf;
        wela=0;
        delay(1);

        dula=1;
        P0=duanxuan[s1];
        dula=0;
        wela=1;
        P0=0xbf;
        wela=0;
        delay(1);

        dula=1;
        P0=duanxuan[s2];
        dula=0;
        wela=1;
        P0=0x7f;
        wela=0;
        delay(1);

}
void tiao()
{
         
                 if(t==0)
                {
                        while(~t);
                        TR0=~TR0;
                }
                        if(s==0)
                        {
                                while(~s);
                                c++;
                                if(c==24)
                                c=0;
                                
                        }
                        if(f==0)
                        {
                                while(~f);
                                b++;
                                if(b==60)
                                b=0;
                        }
                        if(m==0)
                        {
                                while(~m);
                                a++;
                                if(a==60)
                                a=0;
                        }
        m1=a%10;
        m2=a/10;
        f1=b%10;
        f2=b/10;
        s1=c%10;
        s2=c/10;
               
         
}
void duan()
{
        TMOD=0x01;
    TH0=(65536-46030)/256;
    TL0=(65536-46030)%256;
    EA= 1;
    ET0 = 1;
    TR0 = 1;
}
void main()
{
        duan();        //初始化函数
        while(1)
        {
        shumaguan();
        tiao();        
        }
}
void time() interrupt 1
{
        TH0 =(65536-46080)/256;
    TL0 = (65536-46080)%256;
        num++;
        if(num==20)
        {
                num=0;
                a++;
                if(a==60)
                {
                        a=0;
                        b++;
                        if(b==60)
                        {
                                b=0;
                                c++;
                                if(c==24)
                                c=0;
                        }
                }
        }
        m1=a%10;
        m2=a/10;
        f1=b%10;
        f2=b/10;
        s1=c%10;
        s2=c/10;
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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