广东海洋大学寸金学院2013年课程考查(论文)
write_1602dat(0x30+sw);//数字+30得到该数字的LCD1602显示码 write_1602dat(0x30+gw);//数字+30得到该数字的LCD1602显示码
}
//------------------------------------ //农历显示子函数
void write_nl(uchar add,uchar dat)//向LCD写时分秒,有显示位置加、现示数据,两个参数 {
uchar gw,sw;
//gw=dat;//取得个位数字 //sw=dat/10;//取得十位数字 gw=dat;//取得个位数字 sw=dat/16;//取得十位数字
write_1602com(er+add);//er是头文件规定的值0x80+0x40
// write_1602dat(0x30+sw);//数字+30得到该数字的LCD1602显示码 // write_1602dat(0x30+gw);//数字+30得到该数字的LCD1602显示码 write_1602dat('0'+sw);//数字+30得到该数字的LCD1602显示码 write_1602dat('0'+gw);//数字+30得到该数字的LCD1602显示码
}
//------------------------------------------- void write_week(uchar week)//写星期函数 { write_1602com(yh+0x0c);//星期字符的显示位置 switch(week) { case 1:write_1602dat('M');//星期数为1时,显示 write_1602dat('O'); write_1602dat('N');
break;
case 2:write_1602dat('T');//星期数据为2时显示 write_1602dat('U'); write_1602dat('E'); break;
case 3:write_1602dat('W');//星期数据为3时显示 write_1602dat('E'); write_1602dat('D'); break;
case 4:write_1602dat('T');//星期数据为4是显示
write_1602dat('H');
35
广东海洋大学寸金学院2013年课程考查(论文)
write_1602dat('U'); break;
case 5:write_1602dat('F');//星期数据为5时显示 write_1602dat('R'); write_1602dat('I'); break;
case 6:write_1602dat('S');//星期数据为6时显示 write_1602dat('T'); write_1602dat('A'); break;
case 0:write_1602dat('S');//星期数据为7时显示 write_1602dat('U'); write_1602dat('N');
break;
}
write_1602dat(' ');
}
//****************键盘扫描有关函数********************** void keyscan() { if(ensure==0) { delay(9); if(ensure==0) {
buzzer=0;//蜂鸣器短响一次
delay(20); buzzer=1; led1=1;
//背光灭 setn=0;
//退出任何当前的设置
setNZn=0; T_NL_NZ=0;
write_1602com(0x0c); //设置光标不闪烁 TR0=1;
//打开定时器
temp=(miao)/10*16+(miao);
write_1302(0x8e,0x00);
write_1302(0x80,0x00|temp); //miao数据写入DS1302 write_1302(0x8e,0x80);
}
}
36
广东海洋大学寸金学院2013年课程考查(论文)
if(menu==0) {
delay(9); if(menu==0) {
led1=0; bltime=0;
if((setn==0)&&(setNZn==0)) {
buzzer=0;//蜂鸣器短响一次 delay(20); buzzer=1; }
while(menu==0);
if(TR1==1) { } else { }
T_NL_NZ++; if(T_NL_NZ==3) { }
setn=0; setNZn=0; T_NL_NZ=0;
TR1=0;
//在没有进入调时模式时
才可按动
}
}
if(set==0)//---------------set为功能键(设置键)-------------------- {
delay(9);//延时,用于消抖动 if(set==0)//延时后再次确认按键按下 {
led1=0; bltime=0;
buzzer=0;//蜂鸣器短响一次
37
广东海洋大学寸金学院2013年课程考查(论文)
delay(20); buzzer=1; while(!set); if(T_NL_NZ==0x02)
//证明是对闹钟进行设置
{ setNZn++; if(setNZn==4)
//闹钟设定成功,退回到正常显示并开启闹钟 { setNZn=0; setn=0; timerOn=1;
}
switch(setNZn) { case 0:
//正常显示日期时间
write_1602com(0x0c); //
?
write_1602com(er); //时间显示固定符号写入位置?
for(a=0;a<16;a++)
write_1602dat(NZd[a]); //写显示时间固定符号,两个冒号
write_sfm(8,nz_shi);
//闹钟 时
write_sfm(11,nz_fen); //闹钟 分 write_sfm(14,nz_miao); //闹钟 秒 break;
case 1:
//闹钟秒光标闪烁
write_1602com(er+15); //设置按键按动一次,秒位置显示光标
write_1602com(0x0f); //设置光标为闪烁
break;
case 2:
//闹钟分光标闪烁
write_1602com(er+12); //设置按键按动一次,秒位置显示光标
write_1602com(0x0f); //设置光标为闪烁 break;
case 3:
//闹钟时光标闪烁
write_1602com(er+9); //设置按键按动一次,秒位置显示光标
write_1602com(0x0f); //设置光标为闪烁 break;
}
} else
//证明是对时间及日期进行设置
{ if(T_NL_NZ==0) { setn++;
if(setn==7)
38
//er+0x09; //er+0x09; //er+0x09; 广东海洋大学寸金学院2013年课程考查(论文)
setn=0; //设置按键共有秒、分、时、星期、日、月、年、返回,8
个功能循环
switch(setn) {
case 1: TR0=0;//关闭定时器 //TR1=0;
write_1602com(er+7);//设置按键按动一次,秒位置显示光标 //er+0x09; write_1602com(0x0f);//设置光标为闪烁
temp=(miao)/10*16+(miao);//秒数据写入DS1302 write_1302(0x8e,0x00);
write_1302(0x80,0x80|temp);//miao write_1302(0x8e,0x80);
break; case 2:
write_1602com(er+4); //按2次fen位置显示光标 //er+0x06
//write_1602com(0x0f); break; case 3:
write_1602com(er+1); //按动3次,shi
//write_1602com(0x0f);
break;
// case 4: write_1602com(yh+0x0e);//按动4次,week //write_1602com(0x0f); // break; case 4: write_1602com(yh+0x0a);//按动4次,ri //write_1602com(0x0f);
break;
case 5: write_1602com(yh+0x07);//按动5次,yue //write_1602com(0x0f);
break;
case 6: write_1602com(yh+0x04);//按动6次,nian //write_1602com(0x0f);
break; case 0:
write_1602com(0x0c);//按动到第7次,设置光标不闪烁
TR0=1;//打开定时器 temp=(miao)/10*16+(miao);
write_1302(0x8e,0x00);
write_1302(0x80,0x00|temp);//miao数据写入DS1302 write_1302(0x8e,0x80);
break;
}
}
}
39