找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3045|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

簡單的OLED顯示時間頭文件及程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:525436 發(fā)表于 2019-8-6 15:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
//#include "intrins.h"
#include "oled.h"

unsigned char miao=0,fen=0,shi=0,yue=7,ri=24,ri_max=31,zhou=2;
unsigned int nian=2019;

void InitTimer0(void)
{
    TMOD = 0x01;
    TH0 = 0x0DC;
    TL0 = 0x00;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}

void jinzhi(unsigned char * shi, unsigned char * fen, unsigned char * miao, unsigned int * nian, unsigned char * yue,unsigned char * ri)                                //進制
{
        if(*miao==60)
        {
                *miao=0;
                *fen=*fen+1;
                if(*fen==60)
                {
                        *fen=0;
                        *shi=*shi+1;
                        if(*shi==24)
                        {
                                *shi=0;
                                *ri=*ri+1;
                                if(*ri==ri_max+1)
                                {
                                        *ri=1;
                                        *yue=*yue+1;
                                        if(*yue==13)
                                        {
                                                *yue=1;
                                                *nian=*nian+1;
                                        }
                                }
                        }                                
                }
        }
}

void zhou_jisuan()
{
        static unsigned int MON=0,YER=0;
        MON = yue;
        YER = nian;
        if(yue==1||yue==2)
        {
                MON=MON+12;
                YER--;
        }
        zhou=((YER/400)+(YER%100)+((YER%100)/4)+(13*(MON+1))/5+ri-1-(YER/50))%7;
}

void display()
{
        switch (yue)
        {
                case 1||3||5||7||8||10||12:
                        ri_max=31;
                        break;
                case 2:
                        if(nian%4==0)
                                ri_max=28;
                        else
                                ri_max=29;
                        break;
                default:
                        ri_max=30;
                        break;
        }
        zhou_jisuan();
        
        OLED_zifu(0,0,6,8," ");
        OLED_zifu(0,1,6,8," ");
        OLED_zifu(0,2,6,8," ");
        OLED_zifu(0,3,6,8," ");
        OLED_zifu(0,4,6,8," ");
        OLED_zifu(0,5,6,8," ");
        OLED_zifu(0,6,6,8," ");
        OLED_zifu(0,7,6,8," ");
        
        OLED_write(9,0,8,16,nian%6000/1000);
        OLED_write(17,0,8,16,nian%1000/100);
        OLED_write(25,0,8,16,nian%100/10);
        OLED_write(33,0,8,16,nian%10);
        OLED_write(41,0,16,16,8);
        OLED_write(57,0,8,16,yue%13/10);
        OLED_write(65,0,8,16,yue%10);
        OLED_write(73,0,16,16,9);
        OLED_write(89,0,8,16,ri%ri_max/10);
        OLED_write(97,0,8,16,ri%10);
        OLED_write(105,0,16,16,0);
        
        OLED_write(48,2,16,16,10);
        OLED_write(64,2,16,16,zhou);
        
        OLED_write(40,4,6,8,shi%24/10);
        OLED_write(46,4,6,8,shi%10);
        OLED_zifu(52,4,6,8,":");
        OLED_write(58,4,6,8,fen%60/10);
        OLED_write(64,4,6,8,fen%10);
        OLED_zifu(70,4,6,8,":");
        OLED_write(76,4,6,8,miao%60/10);
        OLED_write(82,4,6,8,miao%10);
}

void main(void)
{
        InitTimer0();
        OLED_Init(); //OLED初始化
        OLED_Fill(0);
        while(1)
        {
                display();
        }
}

void Timer0Interrupt(void) interrupt 1
{        
                static unsigned char k=0;
    TH0 = 0x0DC;
    TL0 = 0x00;
                k++;
                if(k==100)
                {
                        k=0;
                        miao++;
                        jinzhi(&shi,&fen,&miao,&nian,&yue,&ri);               
                }
}

OLED.rar

75.68 KB, 下載次數(shù): 26, 下載積分: 黑幣 -5

頭文件及程序

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表