电子万年历时间可调节.docx

上传人:b****6 文档编号:3000924 上传时间:2022-11-17 格式:DOCX 页数:20 大小:48.43KB
下载 相关 举报
电子万年历时间可调节.docx_第1页
第1页 / 共20页
电子万年历时间可调节.docx_第2页
第2页 / 共20页
电子万年历时间可调节.docx_第3页
第3页 / 共20页
电子万年历时间可调节.docx_第4页
第4页 / 共20页
电子万年历时间可调节.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

电子万年历时间可调节.docx

《电子万年历时间可调节.docx》由会员分享,可在线阅读,更多相关《电子万年历时间可调节.docx(20页珍藏版)》请在冰豆网上搜索。

电子万年历时间可调节.docx

电子万年历时间可调节

电子万年历,时间可调

程序

#include

#include

unsignedchara,miao,shi,shi1,shi2,fen,fen1,fen2,ri,ri1,ri2,yue,yue1,yue2,nian,nian1,nian2,key1n,week,flag,wendu,x,temp,year1=2,year2=0;

#include

#include

sbitP28=P1^0;

sbitE1=P1^5;

sbitE2=P1^6;

sbitE3=P1^7;

sbitkey1=P3^4;

sbitkey2=P3^5;

sbitkey3=P3^6;

sbitkey4=P3^7;

TEMPDATAm_TempData;

ucharm=0,m1=0,m2=0,m3=0,m4=0,m5=0,m6=0,m7=0,m8=0,m9=0,m10=0,m11=0,m12=0,m13=0;

unsignedcharcodedispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

unsignedcharcodepoint[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//带小数点数的代码

voiddisplay(ucharx);

voidxianshiwendu();

voidReadTime()

{

miao=BCD_Decimal(read_1302(0x81));

fen=BCD_Decimal(read_1302(0x83));

shi=BCD_Decimal(read_1302(0x85));

ri=BCD_Decimal(read_1302(0x87));

yue=BCD_Decimal(read_1302(0x89));

nian=BCD_Decimal(read_1302(0x8d));

week=BCD_Decimal(read_1302(0x8b))-1;

}

ucharkey1scan()

{

if(key1==0)//---------------key1为功能键(设置键)--------------------

{

delayms(10);//延时,用于消抖动

if(key1==0)//延时后再次确认按键按下

{

m++;

if(m==14)m=1;

while

(1)

{display(m);xianshiwendu();if(key1==1)break;}

}

}

if(key4==0)

{

delayms(10);//延时,用于消抖动

if(key4==0)//延时后再次确认按键按下

{

m=0;

while

(1)

{display(m);xianshiwendu();if(key1==1)break;}

}

}

returnm;

}

voidkey2scan(ucharn)

{

if(n!

=0)//当key1按下以下。

再按以下键才有效(按键次数不等于零)

{

if(key2==0)//上调键

{

delayms(10);

if(key2==0)

{

while

(1){display(m);xianshiwendu();if(key2==1)break;}

switch(n)

{

case1:

year1++;if(year1==10)year1=0;//设置键按动1次,调nian

break;

case2:

year2++;if(year2==10)year2=0;break;

case3:

nian1=nian/10;

nian1++;if(nian1==10)nian1=0;

temp=nian1*16+(nian)%10;//十进制转换成DS1302要求的DCB码

write_1302(0x8e,0x00);//允许写,禁止写保护

write_1302(0x8c,temp);//向DS1302内写年份寄存器8cH写入调整后的年份数据BCD码

write_1302(0x8e,0x80);//打开写保护

break;

case4:

nian2=nian%10;

nian2++;if(nian2==10)nian2=0;

temp=nian/10*16+nian2;//十进制转换成DS1302要求的DCB码

write_1302(0x8e,0x00);//允许写,禁止写保护

write_1302(0x8c,temp);//向DS1302内写年份寄存器8cH写入调整后的年份数据BCD码

write_1302(0x8e,0x80);//打开写保护

break;

case5:

yue1=yue/10;

yue1++;if(yue1==2)yue1=0;

temp=yue1*16+(yue)%10;//十进制转换成DS1302要求的DCB码

write_1302(0x8e,0x00);//允许写,禁止写保护

write_1302(0x88,temp);//向DS1302内写月份寄存器88H写入调整后的月份数据BCD码

write_1302(0x8e,0x80);//打开写保护

break;

case6:

yue2=yue%10;

yue2++;if(yue/10==1){if(yue2==3)yue2=0;}if(yue/10==0){if(yue2==10)yue2=0;}

temp=yue/10*16+yue2;//十进制转换成DS1302要求的DCB码

write_1302(0x8e,0x00);//允许写,禁止写保护

write_1302(0x88,temp);//向DS1302内写月份寄存器88H写入调整后的月份数据BCD码

write_1302(0x8e,0x80);//打开写保护

break;

case7:

ri1=ri/10;

ri1++;if(yue==2){if(ri1==3)ri1=0;}if(yue!

=2){if(ri1==4)ri1=0;}

temp=ri1*16+(ri)%10;//十进制转换成DS1302要求的DCB码

write_1302(0x8e,0x00);//允许写,禁止写保护

write_1302(0x86,temp);//向DS1302内写日期寄存器86H写入调整后的日期数据BCD码

write_1302(0x8e,0x80);//打开写保护

break;

case8:

ri2=ri%10;

ri2++;if(ri2==10)ri2=0;

temp=(ri/10)/10*16+ri2;//十进制转换成DS1302要求的DCB码

write_1302(0x8e,0x00);//允许写,禁止写保护

write_1302(0x86,temp);//向DS1302内写日期寄存器86H写入调整后的日期数据BCD码

write_1302(0x8e,0x80);//打开写保护

break;

case9:

shi1=shi/10;

shi1++;

if(shi1==3)shi1=0;

temp=shi1*16+(shi)%10;//十进制转换成DS1302要求的DCB码

write_1302(0x8e,0x00);//允许写,禁止写保护

write_1302(0x84,temp);//向DS1302内写小时寄存器84H写入调整后的小时数据BCD码

write_1302(0x8e,0x80);//打开写保护

break;

case10:

shi2=shi%10;

shi2++;

if(shi/10==2)

{

if(shi2==5)shi2=0;

}

elseif(shi2==10)shi2=0;

temp=shi/10*16+shi2;//十进制转换成DS1302要求的DCB码

write_1302(0x8e,0x00);//允许写,禁止写保护

write_1302(0x84,temp);//向DS1302内写小时寄存器84H写入调整后的小时数据BCD码

write_1302(0x8e,0x80);//打开写保护

break;

case11:

fen1=fen/10;

fen1++;if(fen1==6)fen1=0;

temp=fen1*16+(fen)%10;//十进制转换成DS1302要求的DCB码

write_1302(0x8e,0x00);//允许写,禁止写保护

write_1302(0x82,temp);//向DS1302内写分寄存器82H写入调整后的分数据BCD码

write_1302(0x8e,0x80);//打开写保护

break;

case12:

fen2=fen%10;

fen2++;if(fen2==10)fen2=0;

temp=fen/10*16+fen2;//十进制转换成DS1302要求的DCB码

write_1302(0x8e,0x00);//允许写,禁止写保护

write_1302(0x82,temp);//向DS1302内写分寄存器82H写入调整后的分数据BCD码

write_1302(0x8e,0x80);//打开写保护

break;

case13:

week++;

if(week==8)week=1;

temp=(week)/10*16+(week)%10;//十进制转换成DS1302要求的DCB码

write_1302(0x8e,0x00);//允许写,禁止写保护

write_1302(0x8a,temp);//向DS1302内写周寄存器8aH写入调整后的周数据BCD码

write_1302(0x8e,0x80);//打开写保护

break;

}

}

}

}

}

voidkey3scan(ucharn)

{

if(n!

=0)//当key1按下以下。

再按以下键才有效(按键次数不等于零)

{

if(key3==0)//上调键

{

delayms(10);

if(key3==0)

{

while

(1){display(m);xianshiwendu();if(key3==1)break;}

switch(n)

{

case1:

year1--;if(year1==(0-1))year1=9;//设置键按动1次,调nian

break;

case2:

year2--;if(year2==(0-1))year2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1