|
因公司电脑,不能上图。
: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
打赏
-
查看全部打赏
|