?? set_time.c
字號:
#include "Cry12864.h"
#include "gata.h"
#include "DS1302.h"
typedef unsigned char uchar;
typedef unsigned int uint;
void ShowTime(void);
extern unsigned char keyval;
//游標位置變量
unsigned char pp = 0;
//是否處于修改狀態標志,1--是,0--否
extern unsigned char cflag;
/*******************************************
函數名稱:Set_Time
功 能:通過按鍵設置DS1302的時間并在12864上顯示
參 數:無
返回值 :無
********************************************/
void Set_Time(void)
{
switch(keyval)
{
case 0x01:
switch(++pp)
{
case 1: Write_Cmd(0x90) ;break;
case 2: Write_Cmd(0x92) ;break;
case 3: Write_Cmd(0x94) ;break;
case 4: Write_Cmd(0x97) ;break;
case 5: Write_Cmd(0x89) ;break;
case 6: Write_Cmd(0x8b) ;break;
case 7: Write_Cmd(0x8d) ;break;
default:break;
}
Write_Cmd(0x0f);
if(pp==8) pp=0;
cflag = 1;
keyval=0;
break;
case 0x02:
keyval=0;
if(cflag ==1)
{
switch(pp)
{
case 1:
rdata[6]++;
if((rdata[6]&0x0f)==0x0a)
{
rdata[6] +=0x06;
}
if(rdata[6]>0x99)
{
rdata[6]=0x00;
}
ShowTime();
Write_Cmd(0x90);
//Set_DS1302(rdata);
break;
case 2:
rdata[4]++;
if((rdata[4]&0x0f)==0x0a)
{
rdata[4] +=0x06;
}
if(rdata[4]>0x12)
{
rdata[4]=0x01;
}
ShowTime();
Write_Cmd(0x92);
break;
case 3:
rdata[3]++;
if((rdata[3]&0x0f)==0x0a)
{
rdata[3] +=0x06;
}
if(rdata[3]>0x31)
{
rdata[3]=0x01;
}
ShowTime();
Write_Cmd(0x94);
break;
case 4:
rdata[5]++;
if((rdata[5]&0x0f)==0x08)
{
rdata[5] =0x00;
}
ShowTime();
Write_Cmd(0x97);
break;
case 5:
rdata[2]++;
if((rdata[2]&0x0f)==0x0a)
{
rdata[2] +=0x06;
}
if(rdata[2]>0x23)
{
rdata[2]=0x00;
}
ShowTime();
Write_Cmd(0x89);
break;
case 6:
rdata[1]++;
if((rdata[1]&0x0f)==0x0a)
{
rdata[1] +=0x06;
}
if(rdata[1]>0x59)
{
rdata[1]=0x00;
}
ShowTime();
Write_Cmd(0x8b);
break;
case 7:
rdata[0]++;
if((rdata[0]&0x0f)==0x0a)
{
rdata[0] +=0x06;
}
if(rdata[0]>0x59)
{
rdata[0]=0x00;
}
ShowTime();
Write_Cmd(0x8d);
break;
default: break;
}
}
break;
case 0x03:
keyval=0;
if(cflag ==1)
{
switch(pp)
{
case 1:
rdata[6]--;
if((rdata[6]&0x0f)==0x0f)
{
rdata[6] -=0x06;
}
if(rdata[6]<0x01)
{
rdata[6]=0x99;
}
ShowTime();
Write_Cmd(0x90);
break;
case 2:
rdata[4]--;
if((rdata[4]&0x0f)==0x0f)
{
rdata[4] -=0x06;
}
if(rdata[4]<0x01)
{
rdata[4]=0x12;
}
ShowTime();
Write_Cmd(0x92);
break;
case 3:
rdata[3]--;
if((rdata[3]&0x0f)==0x0f)
{
rdata[3] -=0x06;
}
if(rdata[4]<0x01)
{
rdata[4]=0x31;
}
ShowTime();
Write_Cmd(0x94);
break;
case 4:
rdata[5]--;
if((rdata[5]&0x0f)==0x01)
{
rdata[5] =0x07;
}
ShowTime();
Write_Cmd(0x97);
break;
case 5:
rdata[3]--;
if((rdata[2]&0x0f)==0x0f)
{
rdata[2] -=0x06;
}
if(rdata[2]<0x01)
{
rdata[4]=0x23;
}
ShowTime();
Write_Cmd(0x89);
break;
case 6:
rdata[1]--;
if((rdata[1]&0x0f)==0x0f)
{
rdata[1]-=0x06;
}
if(rdata[1]<0x01)
{
rdata[1]=0x59;
}
ShowTime();
Write_Cmd(0x8b);
break;
case 7:
rdata[0]--;
if((rdata[0]&0x0f)==0x0f)
{
rdata[0] -=0x06;
}
if(rdata[0]<0x01)
{
rdata[0]=0x59;
}
ShowTime();
Write_Cmd(0x8d);
break;
}
}
break;
case 0x04:
keyval = 0;
if(cflag==1)
{
Set_DS1302(rdata);
Write_Cmd(0x0c);
cflag=0;
pp=0;
}
default: break;
}
}
/*******************************************
函數名稱:ShowTime
功 能:將DS1302的時間轉換成10進制顯示
參 數:無
返回值 :無
********************************************/
void ShowTime(void)
{
uchar h1[16]; //第1行顯示數據
uchar h2[12]; //第2行顯示數據
uchar *p ;
// uchar *w;//[14];
uchar i;
h1[0] = shuzi[rdata[6]>>4]; //年
h1[1] = shuzi[rdata[6]&0x0f];
p="年";
h1[2]=*p;
p++;
h1[3]=*p;
h1[4] = shuzi[rdata[4]>>4]; //月
h1[5] = shuzi[rdata[4]&0x0f];
p="月";
h1[6]=*p;
p++;
h1[7]=*p;; //"-"
h1[8] = shuzi[rdata[3]>>4]; //日
h1[9] = shuzi[rdata[3]&0x0f];
p="日";
h1[10]=*p;
p++;
h1[11]=*p;
p="周";
h1[12]=*p;
p++;
h1[13]=*p;
for(i=0;i<2;i++)
{ //一個漢字寫兩次
if(rdata[5]==0)
{
p="日";
h1[14]=*p;
p++;
h1[15]=*p;
}
if(rdata[5]==1)
{
p="一";
h1[14]=*p;
p++;
h1[15]=*p;
}
if(rdata[5]==2)
{
p="二";
h1[14]=*p;
p++;
h1[15]=*p;
}
if(rdata[5]==3)
{
p="三";
h1[14]=*p;
p++;
h1[15]=*p;
}
if(rdata[5]==4)
{
p="四";
h1[14]=*p;
p++;
h1[15]=*p;
}
if(rdata[5]==5)
{
p="五";
h1[14]=*p;
p++;
h1[15]=*p;
}
if(rdata[5]==6)
{
p="六";
h1[14]=*p;
p++;
h1[15]=*p;
}
}
//h1[14] = shuzi[rdata[5]]; //周
//h1[15]=0x20;
Disp_HZ(0x90,h1,8); //在第二行顯示年月日
h2[0] = shuzi[rdata[2]>>4]; //時
h2[1] = shuzi[rdata[2]&0x0f];
p="時";
h2[2]=*p;
p++;
h2[3]=*p;
h2[4] = shuzi[rdata[1]>>4]; //分
h2[5] = shuzi[rdata[1]&0x0f];
p="分";
h2[6]=*p;
p++;
h2[7]=*p; //":"
h2[8] = shuzi[rdata[0]>>4]; //秒
h2[9] = shuzi[rdata[0]&0x0f];
p="秒";
h2[10]=*p;
p++;
h2[11]=*p;
Disp_HZ(0x89,h2,6); //在第三行顯示
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -