📄 lm4229_ds1302.c
字号:
//=====================================
// proteus仿真论坛:http://proteus.5d6d.com
// 祝福北京,祝福奥运
// 北京欢迎你
// 时钟暂未加设置时间功能
//=====================================
#include<reg52.h>
#include<math.h>
#include<absacc.h>
#include<ds1302.h>
#include<lm4229.h>
// 0123 67 1011 1516 1819 2122
uchar tab_time[]="2008年08月08日 00:00:00 星期";
/*年 月 日 时 分 秒 星期 */
sbit k1=P3^3;
sbit k2=P3^4;
//--------------------------
//------- 函数声明 --------
void trans();
void key_scan();
void week();
void delay(uint);
//============================================
// 主函数
//============================================
void main()
{
lcd_init();
write_lcd(10,0,"------------------------------");
write_lcd(102,0,"------------------------------");
// write_lcd(0,0,"2008年08月08日 00:00:00 星期五");
write_lcd(22,1,"同");
write_lcd(38,1,"一");
write_lcd(54,1,"个");
write_lcd(72,1,"世");
write_lcd(90,1,"界");
write_lcd(22,27,"同");
write_lcd(38,27,"一");
write_lcd(54,27,"个");
write_lcd(72,27,"梦");
write_lcd(90,27,"想");
write_lcd(112,0," 四川师大 电子工程学院 聂金波");
//write_pic(30,5); //北京欢迎你 大字
//write_lcd(70,8,"2008 北京奥运"); //黑体
write_image(30,6,80,72,tab_image_h); //显示涛哥 80*72
write_image(26,17,56,75,tab_image_w); //显示宝宝 56*75
while(1)
{
ds1302();
trans();
write_lcd(0,0,tab_time);
week();
}
}
//----------------------------------
// 按键函数
//----------------------------------
void key_scan()
{
if(k1==0)
{
delay(5);
if(k1==0)
{
tab_time[2]++;
}
}
}
void delay(uint k)
{
uint i,j;
for(i=k;i>0;i--)
for(j=110;j>0;j--);
}
//------------------------------------------
// 数据转换
//------------------------------------------
void trans()
{
tab_time[2]=tab_1302[6]/10+'0'; //年十位
tab_time[3]=tab_1302[6]%10+'0'; //年个位
tab_time[6]=tab_1302[4]/10+'0'; //月十位
tab_time[7]=tab_1302[4]%10+'0'; //月个位
tab_time[10]=tab_1302[3]/10+'0'; //日十位
tab_time[11]=tab_1302[3]%10+'0'; //日个位
tab_time[15]=tab_1302[2]/10+'0'; //小时十位
tab_time[16]=tab_1302[2]%10+'0'; //小时个位
tab_time[18]=tab_1302[1]/10+'0'; //分十位
tab_time[19]=tab_1302[1]%10+'0'; //分个位
tab_time[21]=tab_1302[0]/10+'0'; //秒十位
tab_time[22]=tab_1302[0]%10+'0'; //秒个位
}
//------------------------------------------
// 星期显示
//------------------------------------------
void week()
{
uchar i;
if(tab_1302[5]==1)
{i=7;}
else
{i=tab_1302[5]-1;} /*实时时钟里的值是6,但是2008/08/08是星期五,所以减1,
Proteus的问题?? */
switch(i)
{
case 1: write_lcd(0,28,"一"); break;
case 2: write_lcd(0,28,"二"); break;
case 3: write_lcd(0,28,"三"); break;
case 4: write_lcd(0,28,"四"); break;
case 5: write_lcd(0,28,"五"); break;
case 6: write_lcd(0,28,"六"); break;
case 7: write_lcd(0,28,"日"); break;
default: ; break; //其它情况
}
}
//==============================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -