📄 set.h
字号:
//set_bit ,功能选择键,用以改变set_bit_flag的值
//set_bit_flag=0,正常状态.set_bit_flag=1,设置状态.
//key_set_move,按键,移动选择
//key_add,按键,加.
//key_subtract,按键,减.
//key_set_ok,按键,设置确定键,设置好年月日,时分秒按此键方能确定送出显示
//time_temp[0]-time_temp[5]分别对应年月日,时分秒,用以暂存
unsigned char time_temp[6];
unsigned char set_bit_move;
//bit display_flag=0;
bit set_bit_flag=0;
#define set_bit PIND.3
#define key_set_move PIND.4
#define key_add PIND.5
#define key_subtract PIND.6
#define key_set_ok PIND.7
#define Buzzer PORTB.6 //嘀一声报警
void tone(unsigned int Buzzer_time) //X定义为报警时间的长短
{
unsigned int i;
for(i=0;i<Buzzer_time;i++)
{
Buzzer=~Buzzer;
delay_us(250);
}
}
unsigned char BCD_Convert(unsigned char x_data)
{
unsigned char x_temp;
x_temp=((x_data/10)<<4)|(x_data%10);
return x_temp;
}
void settime_writteninto1381(void)
{
HT1381_write_byte(HT1381_control_add,0x00); //关闭写保护
HT1381_write_byte(HT1381_sec_add,0x80); //暂停
HT1381_write_byte(HT1381_year_add,BCD_Convert(time_temp[0])); //年
HT1381_write_byte(HT1381_month_add,BCD_Convert(time_temp[1])); //月
HT1381_write_byte(HT1381_date_add,BCD_Convert(time_temp[2])); //日
HT1381_write_byte(HT1381_hr_add,BCD_Convert(time_temp[3])); //时
HT1381_write_byte(HT1381_min_add,BCD_Convert(time_temp[4])); //分
HT1381_write_byte(HT1381_sec_add,BCD_Convert(time_temp[5])); //秒
//HT1381_write_byte(HT1381_day_add,time_temp[6]); //周
HT1381_write_byte(HT1381_sec_add,0x00); //使能振荡
HT1381_write_byte(HT1381_control_add,0x80); //打开写保护
// display_flag=0; //清显示标志位,以返回到正常显示状态
set_bit_flag=0;
tone(400); //嘀一声长报警
}
void key_scan(void)
{
if(set_bit==0)
{
delay_ms(50);
if(set_bit==0)
{
tone(70);
display_clear(); //先清屏,再转换状态,以免LCD上字符显示重复/叠加
set_bit_flag=!set_bit_flag;
}
}
if(set_bit_flag==1)
{
if(key_set_move==0)
{
delay_ms(50);
if(key_set_move==0)
{
tone(70);
set_bit_move+=1;
if(set_bit_move>5) set_bit_move=0;
}
}
switch(set_bit_move)
{
case 0:
{
if(key_add==0)
{
delay_ms(50);
if(key_add==0)
{
tone(70);
time_temp[0]+=1;
if(time_temp[0]>99) time_temp[0]=0;
}
}
if(key_subtract==0)
{
delay_ms(50);
if(key_subtract==0)
{
tone(70);
time_temp[0]-=1;
if(time_temp[0]==0) time_temp[0]=0;
}
}
} break; //年
case 1:
{
if(key_add==0)
{
delay_ms(50);
if(key_add==0)
{
tone(70);
time_temp[1]+=1;
if(time_temp[1]>12) time_temp[1]=0;
}
}
if(key_subtract==0)
{
delay_ms(50);
if(key_subtract==0)
{
tone(70);
time_temp[1]-=1;
if(time_temp[1]==0) time_temp[1]=0;
}
}
} break; //月
case 2:
{
if(key_add==0)
{
delay_ms(50);
if(key_add==0)
{
tone(70);
time_temp[2]+=1;
if(time_temp[2]>31) time_temp[2]=0;
}
}
if(key_subtract==0)
{
delay_ms(50);
if(key_subtract==0)
{
tone(70);
time_temp[2]-=1;
if(time_temp[2]==0) time_temp[2]=0;
}
}
} break; //日
case 3:
{
if(key_add==0)
{
delay_ms(50);
if(key_add==0)
{
tone(70);
time_temp[3]+=1;
if(time_temp[3]>23) time_temp[3]=0;
}
}
if(key_subtract==0)
{
delay_ms(50);
if(key_subtract==0)
{
tone(70);
time_temp[3]-=1;
if(time_temp[3]==0) time_temp[3]=0;
}
}
} break; //时
case 4:
{
if(key_add==0)
{
delay_ms(50);
if(key_add==0)
{
tone(70);
time_temp[4]+=1;
if(time_temp[4]>60) time_temp[4]=0;
}
}
if(key_subtract==0)
{
delay_ms(50);
if(key_subtract==0)
{
tone(70);
time_temp[0]-=1;
if(time_temp[4]==0) time_temp[4]=0;
}
}
} break; //分
case 5:
{
if(key_add==0)
{
delay_ms(50);
if(key_add==0)
{
tone(70);
time_temp[5]+=1;
if(time_temp[5]>59) time_temp[5]=0;
}
}
if(key_subtract==0)
{
delay_ms(50);
if(key_subtract==0)
{
tone(70);
time_temp[5]-=1;
if(time_temp[5]==0) time_temp[5]=0;
} //秒
}
} break;
}
//key_set_ok,设置确定键,设置好年月日,时分秒按此键方能确定送出显示
if(key_set_ok==0)
{
delay_ms(50);
if(key_set_ok==0)
{
tone(70);
display_clear();
settime_writteninto1381();
}
}
}
}
void time_display(void)
{
//display_clear();
// switch(display_flag)
switch(set_bit_flag)
{
case 0:{
Written_char(0,2,(time_buf[0]>>4));
Written_char(0,3,(time_buf[0]&0x0f));
Written_char(0,4,Char_mark);
Written_char(0,5,(time_buf[1]>>4));
Written_char(0,6,(time_buf[1]&0x0f));
Written_char(0,7,Char_mark);
Written_char(0,8,(time_buf[2]>>4));
Written_char(0,9,(time_buf[2]&0x0f));
Written_char(1,2,(time_buf[3]>>4));
Written_char(1,3,(time_buf[3]&0x0f));
Written_char(1,4,Char_mark);
Written_char(1,5,(time_buf[4]>>4));
Written_char(1,6,(time_buf[4]&0x0f));
Written_char(1,7,Char_mark);
Written_char(1,8,(time_buf[5]>>4));
Written_char(1,9,(time_buf[5]&0x0f));
} break;
case 1:{
Written_char(0,0,Char_S);
Written_char(0,1,Char_e);
Written_char(0,2,Char_t);
Written_char(1,1,set_bit_move);
Written_char(0,3,(time_temp[0]/10));
Written_char(0,4,(time_temp[0]%10));
Written_char(0,5,Char_mark);
Written_char(0,6,(time_temp[1]/10));
Written_char(0,7,(time_temp[1]%10));
Written_char(0,8,Char_mark);
Written_char(0,9,(time_temp[2]/10));
Written_char(0,10,(time_temp[2]%10));
Written_char(1,3,(time_temp[3]/10));
Written_char(1,4,(time_temp[3]%10));
Written_char(1,5,Char_mark);
Written_char(1,6,(time_temp[4]/10));
Written_char(1,7,(time_temp[4]%10));
Written_char(1,8,Char_mark);
Written_char(1,9,(time_temp[5]/10));
Written_char(1,10,(time_temp[5]%10));
} break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -