万年历(DS1302+LCD1602【程序、仿真、完整】)(2)

2019-03-11 15:11

/*************读取时间、并实现BCD和十进制间的转化***************/ /**************************************************************** 十进制转8421编码:

32/10 = 3*16= 48(十进制)= 30(16进制) 32 = 2

30+2 = 32 * 16 + 32 % 10 = 32(8421编码)(即:a/10*10+a) 8421编码转十进制:

51 / 16 = 5 * 10(16进制) = 50(十进制) 51 % 16 = 1

50 + 1 = 51 / 16 + 51 % 16 = 51(十进制)(即:a/16*10+a)

*****************************************************************/ void get_time(date_time *Time) {

uchar value; value=read_data(DS1302_SECOND); Time->second=(value/16)*10+(value); value=read_data(DS1302_MINUTE); Time->minute=(value/16)*10+(value); value=read_data(DS1302_HOUR); Time->hour=(value/16)*10+(value); value=read_data(DS1302_WEEK); Time->week=(value/16)*10+(value-1); //星期的显示数值比正确值多一 value=read_data(DS1302_DAY); Time->day=(value/16)*10+(value); value=read_data(DS1302_MONTH); Time->month=(value/16)*10+(value); value=read_data(DS1302_YEAR); Time->year=(value/16)*10+(value); }

/**************年-月-日-星期“字符”显示***************/ void date_to_str(date_time *Time) {

Time->date_str[0]=Time->year/10+'0'; //加'0'转化成字符 Time->date_str[1]=Time->year+'0'; Time->date_str[2]='-'; Time->date_str[3]=Time->month/10+'0'; Time->date_str[4]=Time->month+'0'; Time->date_str[5]='-'; Time->date_str[6]=Time->day/10+'0'; Time->date_str[7]=Time->day+'0'; Time->date_str[8]='-'; Time->date_str[9]=Time->week+'0'; Time->date_str[10]='\\0';

}

/**************时-分-秒“字符”显示***************/ void time_to_str(date_time *Time) {

Time->time_str[0]=Time->hour/10+'0'; Time->time_str[1]=Time->hour+'0'; Time->time_str[2]='-'; Time->time_str[3]=Time->minute/10+'0'; Time->time_str[4]=Time->minute+'0'; Time->time_str[5]='-'; Time->time_str[6]=Time->second/10+'0'; Time->time_str[7]=Time->second+'0'; Time->time_str[8]='\\0'; }

#endif

万年历C文件:

/********************************************************* TITLE: 实时时钟

FUNCTION: DS1302+LCD1602显示实时时钟 WRITER: LINLIANHUO TIME: 2014-07-30

REMARK: matters need attention

**********************************************************/ #include #include #include \#include \

#define uint unsigned int #define uchar unsigned char

date_time current_time;

void main( ) {

init_LCD1602(); init_DS1302(); display(\ write_com(0x80+0x40); display(\

}

while(1) {

get_time(¤t_time); date_to_str(¤t_time); time_to_str(¤t_time); write_com(0x80+0x06); display(current_time.date_str); write_com(0x80+0x40+0x06); display(current_time.time_str); }


万年历(DS1302+LCD1602【程序、仿真、完整】)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:创新方案课堂高中化学 4.1油脂 课下30分钟演练 新人教版选修5

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: