找回密码
 立即注册

QQ登录

只需一步,快速开始

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

简单的OLED显示时间头文件及程序

[复制链接]
跳转到指定楼层
楼主
ID:525436 发表于 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, 下载次数: 26, 下载积分: 黑币 -5

头文件及程序

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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