320x240 彩色LCD營幕 - 時鐘程式
影片連結
https://g.udn.com.tw/upfiles/B_PY/PYANG/PSN_PHOTO/447/f_25921447_1.jpg
本程式是在320x240 彩色LCD營幕,顯示類比式時鐘
本程式仍有許多可以美化畫面的細節,可以讓同好進一步的修改,
例如:1)秒針,分針與時針可以加粗線條
2)在3/6/9/12點鐘的位置之白線條有別於其他時間的長短或粗細或顏色
3)在類比點鐘的上方空白區,可以同時顯示數位式時間,日期與週的數字,最好是較大字體
本人起了主架構的程式,就看各位如何去發揮了。
程式碼:
for(i=0;i<=360;i+=30)
{ x0=120+(cos(i*PI/180)*90);
y0=180+(sin(i*PI/180)*90);
x1=120+(cos(i*PI/180)*110);
y1=180+(sin(i*PI/180)*110);
Line(x0,y0,x1,y1, YCOLOR[8]);
x0=120+(cos((i+1)*PI/180)*90);
y0=180+(sin((i+1)*PI/180)*90);
x1=120+(cos((i+1)*PI/180)*110);
y1=180+(sin((i+1)*PI/180)*110);
Line(x0,y0,x1,y1, YCOLOR[8]);
x0=120+(cos((i+2)*PI/180)*90);
y0=180+(sin((i+2)*PI/180)*90);
x1=120+(cos((i+2)*PI/180)*110);
y1=180+(sin((i+2)*PI/180)*110);
Line(x0,y0,x1,y1, YCOLOR[8]);
}
for(i=0;i<=360;i++)
{ x0=120+(cos(i*PI/180));
y0=180+(sin(i*PI/180));
x1=120+(cos(i*PI/180)*5);
y1=180+(sin(i*PI/180)*5);
Line(x0,y0,x1,y1, YCOLOR[8]);
}
{ i=(AC_sec*6+270)%360; // 秒針
if(i==0) v=354;
else if(i==6) v=360;
else v=(i-6)%360;
w1=i;
x0=120+(cos(v*PI/180));
y0=180+(sin(v*PI/180));
x1=120+(cos(v*PI/180)*75);
y1=180+(sin(v*PI/180)*75);
Line(x0,y0,x1,y1, YCOLOR[0]);
x0=120+(cos(i*PI/180));
y0=180+(sin(i*PI/180));
x1=120+(cos(i*PI/180)*75);
y1=180+(sin(i*PI/180)*75);
Line(x0,y0,x1,y1, YCOLOR[6]);
if(i==h || i==n) KCLK_flag=1;
}
if(ACLK_flag==1 || KCLK_flag==1) //分針
{ i=(AC_min*6+270)%360;
if(i==0) v=354;
else if(i==6) v=360;
else v=(i-6)%360;
i++;v++;
x0=120+(cos(v*PI/180));
y0=180+(sin(v*PI/180));
x1=120+(cos(v*PI/180)*65);
y1=180+(sin(v*PI/180)*65);
Line(x0,y0,x1,y1, YCOLOR[0]);
x0=120+(cos(i*PI/180));
y0=180+(sin(i*PI/180));
x1=120+(cos(i*PI/180)*65);
y1=180+(sin(i*PI/180)*65);
Line(x0,y0,x1,y1, YCOLOR[2]);
n=i;
ACLK_flag=0;
}
//時針
{ i=((AC_hrs%12)*30)+270;
x0=120+(cos(i*PI/180));
y0=180+(sin(i*PI/180));
x1=120+(cos(i*PI/180)*50);
y1=180+(sin(i*PI/180)*50);
Line(x0,y0,x1,y1, YCOLOR[0]);
x0=120+(cos(i*PI/180));
y0=180+(sin(i*PI/180));
x1=120+(cos(i*PI/180)*50);
y1=180+(sin(i*PI/180)*50);
Line(x0,y0,x1,y1, YCOLOR[3]);
h=i;
}
KCLK_flag=0;