程序(6)

2019-08-30 17:48

temp=(yue)/10*16+(yue);//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x88,temp);//向DS1302内写月份寄存器88H写入调整后的月份数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+7);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 6:nian++; if(nian==100) nian=0; Conver_week(nian,yue,ri); write_week(week); write_nyr(3,nian);//令LCD在正确的位置显示\加\设定好的年份数据 temp=(nian)/10*16+(nian);//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x8c,temp);//向DS1302内写年份寄存器8cH写入调整后的年份数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+4);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; } } } //------------------减键dec,各句功能参照'加键'注释--------------- if(dec==0) { delay(10);//调延时,消抖动 if(dec==0) { led1=0; bltime=0; buzzer=0;//蜂鸣器短响一次 delay(20); buzzer=1; while(!dec);

switch(setn) { case 1: miao--; if(miao==-1) miao=59;//秒数据减到-1时自动变成59 write_sfm(0x06,miao);//在LCD的正确位置显示改变后新的秒数 temp=(miao)/10*16+(miao);//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00); //允许写,禁止写保护 write_1302(0x80,temp); //向DS1302内写秒寄存器80H写入调整后的秒数据BCD码 write_1302(0x8e,0x80); //打开写保护 write_1602com(er+7);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置 //write_1602com(0x0b); break; case 2: fen--; if(fen==-1) fen=59; write_sfm(3,fen); temp=(fen)/10*16+(fen);//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x82,temp);//向DS1302内写分寄存器82H写入调整后的分数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(er+4);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置 break; case 3: shi--; if(shi==-1) shi=23; write_sfm(0,shi); temp=(shi)/10*16+(shi);//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x84,temp);//向DS1302内写小时寄存器84H写入调整后的小时数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(er+1);//因为设置液晶的模式是写入数据后,指针

自动加一,所以需要光标回位 break; /* case 4:week--; if(week==0) week=7; write_1602com(yh+0x0C);//指定'加'后的周数据显示位置 write_week(week);//指定周数据显示内容 temp=(week)/10*16+(week);//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x8a,temp);//向DS1302内写周寄存器8aH写入调整后的周数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+0x0e);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; */ case 4: ri--; if(ri==0) ri=31; Conver_week(nian,yue,ri); write_week(week); write_nyr(9,ri); temp=(ri)/10*16+(ri);//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x86,temp);//向DS1302内写日期寄存器86H写入调整后的日期数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+10);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 5: yue--; if(yue==0) yue=12; Conver_week(nian,yue,ri); write_week(week); write_nyr(6,yue); temp=(yue)/10*16+(yue);//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x88,temp);//向DS1302内写月份寄存器88H写入调

整后的月份数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+7);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; case 6: nian--; if(nian==-1) nian=99; Conver_week(nian,yue,ri); write_week(week); write_nyr(3,nian); temp=(nian)/10*16+(nian);//十进制转换成DS1302要求的DCB码 write_1302(0x8e,0x00);//允许写,禁止写保护 write_1302(0x8c,temp);//向DS1302内写年份寄存器8cH写入调整后的年份数据BCD码 write_1302(0x8e,0x80);//打开写保护 write_1602com(yh+4);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; } } } } if((setNZn!=0)&&(setn==0)) { if(add==0) //上调键 { delay(10); if(add==0) { led1=0; bltime=0; buzzer=0;//蜂鸣器短响一次 delay(20); buzzer=1; while(!add); switch(setNZn) { case 1:

nz_miao++; //设置键按动1次,调秒 if(nz_miao==60) nz_miao=0;//秒超过59,再加1,就归零 write_sfm(14,nz_miao);//令LCD在正确位置显示\加\设定好的秒数 write_1602com(er+15);//因为设置液晶的模式是写入数据后,光标自动右移,所以要指定返回 break; case 2: nz_fen++; if(nz_fen==60) nz_fen=0; write_sfm(11,nz_fen);//令LCD在正确位置显示\加\设定好的分数据 write_1602com(er+12);//因为设置液晶的模式是写入数据后,指针自动加一,在这里是写回原来的位置 break; case 3: nz_shi++; if(nz_shi==24) nz_shi=0; write_sfm(8,nz_shi);//令LCD在正确的位置显示\加\设定好的小时数据 write_1602com(er+9);//因为设置液晶的模式是写入数据后,指针自动加一,所以需要光标回位 break; } } } //------------------减键dec,各句功能参照'加键'注释--------------- if(dec==0) { delay(10);//调延时,消抖动 if(dec==0) { led1=0; bltime=0; buzzer=0;//蜂鸣器短响一次 delay(20); buzzer=1; while(!dec); switch(setNZn)


程序(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:AutoCAD三维建模系列教程 - 图文

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

马上注册会员

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