📄 jianpan.c
字号:
/******这里设置程序初始化时显示的时间****************/
extern unsigned char time[3],alart[2],time_clock[3];//存放时、分、秒
extern unsigned int data[3]; //年、月、日
unsigned char clockn[2];
extern unsigned char clockstr[8]; /*时间显示的LCD显示*/
extern unsigned char alartstr[5]; /*闹钟显示的LCD显示*/
extern unsigned char datestr[10]; /*日期显示LCD显示*/
unsigned char naozhong,KB_valve;
/****************以下是所有子函数的声明*********************/
extern void LcdInit(void); //显示的初始化
extern void lcdshow1(unsigned char x,unsigned char y,unsigned char data);
extern void lcdshow2(unsigned char str[]);
extern void sys_init(unsigned char time[],unsigned int data[],unsigned char alart[] ); /*系统的初始化程序*/
unsigned char getmonthdays(unsigned int,unsigned char);/*计算某月的天数子程序*/
extern void guangbiao(unsigned char x,unsigned char y);
/**************************函数部分*************************/
void sys_init(unsigned char time[],unsigned int data[],unsigned char alart[] )
{
datestr[7]=data[0]%10+0x30; //日期
datestr[6]=(data[0]/10)+0x30;
datestr[5]=data[1]%10+0x30;
datestr[4]=(data[1]/10)+0x30;
datestr[3]=data[2]%10+0x30;
datestr[2]=((data[2]/10))%10+0x30;
datestr[1]=((data[2]/100))%10+0x30;
datestr[0]=(data[2]/1000)+0x30;
/*给元素0赋相应数码管显示编码,编码序号是秒数的个位*/
clockstr[5]=time[0]%10+0x30;
clockstr[4]=(time[0]/10)+0x30; /*给元素1赋相应数码管显示编码,编码序号是秒数的十位*/
clockstr[3]=time[1]%10+0x30; /*以下类推*/
clockstr[2]=(time[1]/10)+0x30;
clockstr[1]=time[2]%10+0x30;
clockstr[0]=(time[2]/10)+0x30;
alartstr[3]=alart[0]%10+0x30; //设置闹钟
alartstr[2]=(int)alart[0]/10+0x30;
alartstr[1]=alart[1]%10+0x30;
alartstr[0]=(int)alart[1]/10+0x30;
}
unsigned char getmonthdays(unsigned int year,unsigned char month)/*得到某月的天数*/
{
unsigned char days;
switch (month)
{
case 4:
case 6:
case 9:
case 11:days=30;
break;
case 2: if((year%4==0&&year%100!=0)||(year%400==0))
days=29;
else days=28;
break;
default:days=31;
break;
}
return days;
}
/*void Data_Change(unsigned char data,unsigned char change_data[2])
{
change_data[1]=data/10;
change_data[0]=data%10;
}
*/
void Delay(void)
{
unsigned char i,j;
for(i=0;i<230;i++)
for(j=0;j<230;j++);
}
void Lcd_Show(unsigned char n)
{
// unsigned char hyear,lyear,array[2]={0};
LcdInit();
if(n==1)
{
lcdshow1(1,4, clockstr[0]); //show h low1
lcdshow1(1,5, clockstr[1]); //show h low2
lcdshow1(1,6,':'); //show '.'
lcdshow1(1,7, clockstr[2]); //show m high
lcdshow1(1,8, clockstr[3]); //show m low
lcdshow1(1,9,':'); //show '.'
lcdshow1(1,10, clockstr[4]); //show s high
lcdshow1(1,11, clockstr[5]); //show s low
}
else
{
lcdshow1(0,2,datestr[0]); //show year high1
lcdshow1(0,3,datestr[1]); //show year high2
lcdshow1(0,4,datestr[2]); //show year low1
lcdshow1(0,5,datestr[3]); //show year low2
lcdshow1(0,6,'-'); //show '.'
lcdshow1(0,7,datestr[4]); //show month high
lcdshow1(0,8,datestr[5]); //show month low
lcdshow1(0,9,'-'); //show '.'
lcdshow1(0,10,datestr[6]); //show day high
lcdshow1(0,11,datestr[7]); //show day low
lcdshow1(1,4,alartstr[0]); //show h low1
lcdshow1(1,5,alartstr[1]); //show h low2
lcdshow1(1,6,':'); //show '.'
lcdshow1(1,7,alartstr[2]); //show m high
lcdshow1(1,8,alartstr[3]); //show m low
}
}
void Lcd_Show_init(void)
{
LcdInit();
lcdshow1(1,4,'0'); //show h low1
lcdshow1(1,5,'0'); //show h low2
lcdshow1(1,6,':'); //show '.'
lcdshow1(1,7,'0'); //show m high
lcdshow1(1,8,'0'); //show m low
lcdshow1(1,9,':'); //show '.'
lcdshow1(1,10,'0'); //show s high
lcdshow1(1,11,'0'); //show s low
}
void str_change(unsigned char time_array[],unsigned char n)
{
data[2]=time_array[0]*1000+time_array[1]*100+time_array[2]*10+time_array[3];
data[1]=time_array[4]*10+time_array[5];
data[0]=time_array[6]*10+time_array[7];
time[2]=time_array[8]*10+time_array[9];
time[1]=time_array[10]*10+time_array[11];
time[0]=time_array[12]*10+time_array[13];
}
void change_str(unsigned char time_array[],unsigned char n)
{
time_array[0]=data[2]/1000;
time_array[1]=data[2]%1000/100;
time_array[2]=data[2]%100/10;
time_array[3]=data[2]%10;
time_array[4]=data[1]/10;
time_array[5]=data[1]%10;
time_array[6]=data[0]/10;
time_array[7]=data[0]%10;
time_array[8]=time[2]/10;
time_array[9]=time[2]%10;
time_array[10]=time[1]/10;
time_array[11]=time[1]%10;
time_array[12]=time[0]/10;
time_array[13]=time[0]%10;
}
void str_clock(unsigned char time_array[],unsigned char n)
{
time_clock[0]=time_array[8]*10+time_array[9];
time_clock[1]=time_array[10]*10+time_array[11];
time_clock[2]=time_array[12]*10+time_array[13];
}
void Akey()
{
unsigned char qidong[32]="1.set time 2.set clock ";
lcdshow2(qidong);
KB_valve=0;
while(1)
{
if(KB_valve=='1')//选项1:调整时间
{
unsigned char gb_mask2=2,gb_mask1=0,sign=2,time_array[14];
Lcd_Show(0);
change_str(time_array,14);
KB_valve=0;
while(1)
{
guangbiao(gb_mask1,gb_mask2);
if(KB_valve=='6')//光标右移
{
gb_mask2++;
sign++;
if(sign==10&&gb_mask1==0) sign=2;
if(sign==8&&gb_mask1==1) sign=2;
if(gb_mask2==6) gb_mask2=7;
if(gb_mask2==9) gb_mask2=10;
if(gb_mask2==12&&gb_mask1==0) gb_mask2=2;
if(gb_mask2==12&&gb_mask1==1) gb_mask2=4;
KB_valve=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -