找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3616|回復: 10
收起左側

單片機數(shù)字時鐘設計,希望大家?guī)蛶兔,謝謝

[復制鏈接]
ID:189307 發(fā)表于 2017-4-13 18:57 來自手機 | 顯示全部樓層 |閱讀模式
我是馬上畢業(yè)的學生,需要做畢業(yè)設計單片機數(shù)字時鐘可調節(jié)時間,時分秒,6個數(shù)碼管,現(xiàn)在急需這個設計程序,希望大家可以給我說下程序,謝謝大家
回復

使用道具 舉報

ID:189311 發(fā)表于 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()                                         //數(shù)碼管顯示
{
        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();        //初始化函數(shù)
        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 發(fā)表于 2017-4-13 20:22 | 顯示全部樓層
本帖最后由 zl2168 于 2017-4-13 20:29 編輯

實例93  具有校正功能的時鐘1302(LED數(shù)碼管顯示)
Proteus仿真一下,確認有效。
實例93 帶校正時分秒的時鐘1302(6位LED數(shù)碼管顯示).rar (732.75 KB, 下載次數(shù): 20)
開機顯示PC機時分秒的時鐘(6位LED數(shù)碼管顯示).jpg
以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行


回復

使用道具 舉報

ID:111634 發(fā)表于 2017-4-13 20:30 | 顯示全部樓層
本帖最后由 zl2168 于 2017-4-13 20:31 編輯

實例94  模擬電子鐘(由80C51定時器產(chǎn)生秒時基)
Proteus仿真一下,確認有效。
實例94 模擬電子鐘(由80C51定時器產(chǎn)生秒時基).rar (43.05 KB, 下載次數(shù): 11)
模擬電子鐘.jpg
以上摘自張志良編著80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1,內(nèi)有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行。書中電路和程序設計有詳細說明,程序語句條條有注解。
回復

使用道具 舉報

ID:189307 發(fā)表于 2017-4-13 21:12 來自手機 | 顯示全部樓層
AmbitionXN 發(fā)表于 2017-4-13 19:14
#include
#define u8 unsigned char
#define u16 unsigned int

謝謝,好人一生平安
回復

使用道具 舉報

ID:189565 發(fā)表于 2017-4-14 15:59 | 顯示全部樓層
我用的是數(shù)碼管加顯示屏其實差不多,只是有顯示屏功能可以多一點。我的報告里原理圖,結構圖,還有代碼都有。

信息工程課程設計報告書(圖和程序可打印,其它手寫) (1).doc

387.5 KB, 下載次數(shù): 17

回復

使用道具 舉報

ID:189580 發(fā)表于 2017-4-14 16:36 | 顯示全部樓層
mark  
回復

使用道具 舉報

ID:189739 發(fā)表于 2017-4-15 10:10 | 顯示全部樓層
劉明,后看
回復

使用道具 舉報

ID:151348 發(fā)表于 2017-4-15 16:42 | 顯示全部樓層
這個畢設也太簡單了。。。。。。。。。。。。。
回復

使用道具 舉報

ID:168632 發(fā)表于 2017-4-15 17:21 | 顯示全部樓層
我做的一個1602顯示的,多功能的萬年歷,希望可以對你有幫助 多功能電子萬年歷.zip (5.94 KB, 下載次數(shù): 10)

回復

使用道具 舉報

ID:189984 發(fā)表于 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()                                         //數(shù)碼管顯示
{
        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();        //初始化函數(shù)
        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;
}
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表