?? set.h~
字號:
//set_bit ,功能選擇鍵,用以改變set_bit_flag的值
//set_bit_flag=0,正常狀態(tài).set_bit_flag=1,設置狀態(tài).
//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 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,time_temp[0]); //年
HT1381_write_byte(HT1381_month_add,time_temp[1]); //月
HT1381_write_byte(HT1381_date_add,time_temp[2]); //日
HT1381_write_byte(HT1381_hr_add,time_temp[3]); //時
HT1381_write_byte(HT1381_min_add,time_temp[4]); //分
HT1381_write_byte(HT1381_sec_add,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; //清顯示標志位,以返回到正常顯示狀態(tài)
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(); //先清屏,再轉換狀態(tài),以免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]>>4));
Written_char(0,4,(time_temp[0]&0x0f));
Written_char(0,5,Char_mark);
Written_char(0,6,(time_temp[1]>>4));
Written_char(0,7,(time_temp[1]&0x0f));
Written_char(0,8,Char_mark);
Written_char(0,9,(time_temp[2]>>4));
Written_char(0,10,(time_temp[2]&0x0f));
Written_char(1,3,(time_temp[3]>>4));
Written_char(1,4,(time_temp[3]&0x0f));
Written_char(1,5,Char_mark);
Written_char(1,6,(time_temp[4]>>4));
Written_char(1,7,(time_temp[4]&0x0f));
Written_char(1,8,Char_mark);
Written_char(1,9,(time_temp[5]>>4));
Written_char(1,10,(time_temp[5]&0x0f));
//Written_char_back(x,x,x);//反顯
//delay_ms(200);
//display_clear();
//delay_ms(200);
} break;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -