📄 main.h
字号:
#ifndef MAIN_H
#define MAIN_H
#include "REGX52.H "
#include "LCD1602.h"
#include "DS1302.h"
#define th0 0xee; //5ms
#define tl0 0x00;
#define th1 0xdc; //10ms
#define tl1 0x00;
sbit updown = P1^1; //0x0d
sbit choose = P1^2; //0x0b
sbit enter = P1^3; //0x07
sbit buzzer = P1^4;
unsigned char lcdmenu=1,resetflag=1;
unsigned char keyflag=0;
bit lcdflag=0;
bit Alarm_on=0;
bit resbit=0;
unsigned char keycode;
unsigned char oldcode,keyt;
unsigned char station;
static unsigned char jj;
static SYSTEMTIME CurrentTime,Alarm_time;
void key_explain(unsigned char ); //按键解释
void currenttime(); //显示当前时间
void menu_choose(unsigned char lcdmenu); //菜单选择
void lcd_menu(void); //显示菜单
void alarm_set(); //闹钟设置
void alarm_speaker(); //闹钟启动
void time_reset(); //时间重设
void delay(unsigned int count); //延时函数
void delay(unsigned int count) //延时函数
{ unsigned char i,j;
for(i=0;i<=count;i++)
for(j=0;j<=100;j++)
;
}
void time1_isr(void) interrupt 3 //T1中断
{ static unsigned char ii;
TR1=0;
TH1=th1;
TL1=tl1;
ii++;
if(ii==50)
{ ii=0;
if((CurrentTime.Hour==Alarm_time.Hour)&&(CurrentTime.Minute==Alarm_time.Minute))
buzzer=~buzzer;
else buzzer=1;
DS1302_GetTime(&CurrentTime);
DateToStr(&CurrentTime);
TimeToStr(&CurrentTime);
GotoXY(0,0);
Print("Date: ");
Print(CurrentTime.DateString);
GotoXY(0,1);
Print("Time: ");
Print(CurrentTime.TimeString);
}
delay(20);
TR1=1;
}
void time0_isr(void) interrupt 1 //T0中断扫描键盘
{
TR0=0;
TH0=th0;
TL0=tl0;
keycode=P1;
keycode=keycode&0x0f;
oldcode=keycode;
if(keycode!=0x0f)
{while(1)
{ keycode=P1;
keycode=keycode&0x0f;
if( keycode==0x0f)
break;
}
key_explain(oldcode);
}
TR0=1;
}
void key_explain(unsigned char oldcode) //按键解释
{
lcdflag=1;
switch(oldcode)
{
case 0x0d: keyflag=1;
break; //updown
case 0x0b: keyflag=2;
break; //choose
case 0x07: keyflag=3;
break; //enter
default: break;
}
if(keyflag==2)
{ if(station==0)
lcdmenu++;
if(station==2||station==3)
resetflag++;
}
if(lcdmenu==4)
lcdmenu=1;
if(resetflag==6)
resetflag=1;
}
void time_reset() //时间重设
{
SYSTEMTIME ResetTime;
TR1=0;
if(resbit==1)
{
ResetTime=CurrentTime;
GotoXY(0,0);
Print("Rdate:");
Print(ResetTime.DateString);
GotoXY(0,1);
Print("Rtime:");
Print(ResetTime.TimeString);
}
switch(resetflag) //choose健 2
{ case 1:
GotoXY(7,0);
Print(" ");
delay(100);
break;
case 2: GotoXY(10,0);
Print(" ");
delay(100);
break;
case 3: GotoXY(13,0);
Print(" ");
delay(100);
break;
case 4: GotoXY(7,1);
Print(" ");
delay(100);
break;
case 5: GotoXY(10,1);
Print(" ");
delay(100);
break;
default:break;
}
if(keyflag==1) //updown键 1
{
switch(resetflag) //choose健 2
{ case 1:
ResetTime.Year++;
if(ResetTime.Year>=100)
ResetTime.Year=0;
break;
case 2:
ResetTime.Month++;
if(ResetTime.Month>=13)
ResetTime.Month=0;
break;
case 3:
ResetTime.Day++;
if(ResetTime.Day>=31)
ResetTime.Day=0;
break;
case 4:
ResetTime.Hour++;
if(ResetTime.Hour>=24)
ResetTime.Hour=0;
break;
case 5:
ResetTime.Minute++;
if(ResetTime.Minute>=60)
ResetTime.Minute=0;
break;
default:break;
}
keyflag=4;
resbit=0;
DS1302_SetTime(DS1302_YEAR,ResetTime.Year);
DS1302_SetTime(DS1302_MONTH,ResetTime.Month);
DS1302_SetTime(DS1302_DAY,ResetTime.Day );
DS1302_SetTime(DS1302_HOUR,ResetTime.Hour );
DS1302_SetTime(DS1302_MINUTE,ResetTime.Minute );
}
DateToStr(&ResetTime);
TimeToStr(&ResetTime);
GotoXY(0,0);
Print("Date: ");
Print(ResetTime.DateString);
GotoXY(0,1);
Print("Time: ");
Print(ResetTime.TimeString);
delay(4);
}
void alarm_set(void) //闹钟设置
{
TR1=0;
if(resbit==1)
{
Alarm_time=CurrentTime;
GotoXY(0,0);
Print("Adate:");
Print(Alarm_time.DateString);
GotoXY(0,1);
Print("Atime:");
Print(Alarm_time.TimeString);
}
switch(resetflag) //choose健 2
{ case 1:
GotoXY(7,0);
Print(" ");
delay(100);
break;
case 2: GotoXY(10,0);
Print(" ");
delay(100);
break;
case 3: GotoXY(13,0);
Print(" ");
delay(100);
break;
case 4: GotoXY(7,1);
Print(" ");
delay(100);
break;
case 5: GotoXY(10,1);
Print(" ");
delay(100);
break;
default:break;
}
if(keyflag==1) //updown键 1
{
switch(resetflag) //choose健 2
{ case 1:
Alarm_time.Year++;
if(Alarm_time.Year>=100)
Alarm_time.Year=0;
break;
case 2:
Alarm_time.Month++;
if(Alarm_time.Month>=13)
Alarm_time.Month=0;
break;
case 3:
Alarm_time.Day++;
if(Alarm_time.Day>=31)
Alarm_time.Day=0;
break;
case 4:
Alarm_time.Hour++;
if(Alarm_time.Hour>=24)
Alarm_time.Hour=0;
break;
case 5:
Alarm_time.Minute++;
if(Alarm_time.Minute>=60)
Alarm_time.Minute=0;
break;
default:break;
}
keyflag=4;
resbit=0;
DateToStr(&Alarm_time);
TimeToStr(&Alarm_time);
}
GotoXY(0,0);
Print("Date: ");
Print(Alarm_time.DateString);
GotoXY(0,1);
Print("Time: ");
Print(Alarm_time.TimeString);
delay(4);
}
void lcd_menu(void) //显示菜单
{ static unsigned char jj;
jj++;
if(resbit==1)
{TR1=0;
GotoXY(0,0);
Print(" MENU:");
Print(" Alarm");
GotoXY(0,1);
Print(" Time ");
Print(" Reset");
}
resbit=0;
switch(lcdmenu)
{
case 1:
GotoXY(9,1);
Print(" ");
GotoXY(0,1);
Print("=>");
break;
case 2:
GotoXY(0,1);
Print(" ");
GotoXY(9,0);
Print("=>");
break;
case 3:
GotoXY(9,0);
Print(" ");
GotoXY(9,1);
Print("=>");
break;
default:
break;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -