数码之家

 找回密码
 立即注册
搜索
查看: 2756|回复: 2

[C51] TM1637驱动数码管之DS1302时钟。带按键设置,已实物验证。

[复制链接]
发表于 2019-9-26 14:01:46 | 显示全部楼层 |阅读模式
因公司电脑,不能上图。
:titter:
/*------------------------------------------------
                包含头文件
------------------------------------------------*/
#include"delay.h"
#include "init.h"
#include "ds1302.h"
#include "timer.h"
#include "TM1637.h"
#include "key.h"
/*------------------------------------------------*/
extern volatile uint32  timer_tick_count ;       //定时器节拍
#define TIME_100MS 10
extern uchar hour,minute,second;//时,分,秒
extern uchar shi,ge,bai,qian; //数码管显示位数
extern uchar code table[];//数码管0~9的数组

extern bit disp_flag;//切换两点闪烁的标志位
extern bit keyflag;//正常运行与按键设置的标志位

/*****************读出分的十进制数***************************/
uchar readminute()
{
uchar dat;
dat=read_1302add(0x83);
minute=((dat&0x70)>>4)*10+(dat&0x0f);
return minute;
}
/*****************读出小时的十进制数***************************/
uchar readhour()
{
uchar dat;
dat=read_1302add(0x85);
hour=((dat&0x70)>>4)*10+(dat&0x0f);
return hour;
}

/************************读出所有时间**********************/
void readtime()
{
//        readsecond();
        readminute();
        readhour();
//        readday();
//        readmonth();
//        readweek();
//        readyear();
}
/*------------------------------------------------
                   函数
------------------------------------------------*/
void UpdateUI()
{       
        readtime();//读取DS1302时间
        jisuan();//处理数据
         xsled();  //把数据写入TM1637   
//////////////////以下是达到钟点闪烁/////////////////       
        if(disp_flag)//500MS显示
        {
                write_LEDSROM(0xC1,table[bai]|1<<7);  //第二个数码管,1<<7是闪烁点
        }
        else if(!disp_flag)//500MS不显示
        {
                write_LEDSROM(0xC1,0x00); //清除
                write_LEDSROM(0xC1,table[bai]);  //第二个数码管,不显点
               
        }
}
/*------------------------------------------------
                   主函数
------------------------------------------------*/
int main()
{

        uint32 timer_tick_last_update = 0;

// InitUART ();     //初始化串口
        DelayMs(30);     //稳定
        init_1302(); //DS1302初始化
        TimerInit();    //定时器初始化                               //上电数码管显示0~5
         delay_ms(100);     //稳定
        while(1)
        {

//                 if(timer_tick_count-timer_tick_last_update>=TIME_100MS)
//        {        
//           timer_tick_count =timer_tick_last_update;   
//           UpdateUI();       
//        }
                keyscan();//按键扫描
                if(keyflag==0)//正常运行
                {
                        UpdateUI();
        }               
        }
}


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 1家元 +60 收起 理由
家睦 + 60

查看全部打赏

发表于 2019-9-29 18:42:16 来自手机浏览器 | 显示全部楼层
消灭零回复…实物,电路图有空也上传一下吧…
回复 支持 反对

使用道具 举报

发表于 2020-1-23 04:48:13 | 显示全部楼层
上个连接线路图啥的吧,这些东西都有,程序看不懂,想照着拼个都无从下手
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-7 12:08 , Processed in 0.280800 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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