Contents ...
udn網路城邦
320x240 彩色LCD營幕 - 時鐘程式
2020/09/10 17:10
瀏覽500
迴響0
推薦2
引用0

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;

有誰推薦more

限會員,要發表迴響,請先登入