基于战舰STM32开发板的模拟时钟开发

基于战舰STM32开发板的模拟时钟开发

最近闲得无聊,在公司属于实习期,老板也不给活干,手上刚好有个STM32的开发板子,就想随便写点小东西,经人提醒,写个钟吧,

LCD的驱动以及相关函数战舰都给我们了 直接用就好,有空可以看看具体驱动怎么写的,感觉写驱动也好好玩的样子。

伪代码如下

lcd_init();

各种初始化;

LCD_Clear(WHITE);

清屏为白色(背景色);

dorw_rang(120,160,100,1000);

画圆圈,画矩形,画刻度等;

显示时钟的框架;

while(1)

{

POINT_COCLOR=WHITE;

画笔和背景一样颜色,清除上一秒时分秒针的痕迹;

s_angle=(2*Pi/60)*(s-1)-Pi/2;//极坐标角度

sx=(int)80*cos(s_angle)+120;//极坐标换为x

sy=(int)80*sin(s_angle)+160;//极坐标换为y

dorw_line(120,160,hx,hy);//画和背景色一样的秒针,目的在于消除上一秒的显示,

同理画出时分针

POINT_COLOR=BLACK;

画笔换黑色,画下当前时分秒针;

s_angle=(2*Pi/60)*s-Pi/2;

sx=(int)80*cos(s_angle)+120;

sy=(int)80*sin(s_angle)+160;

dorw_line(120,160,sx,sy);

delay_ms(1000);//延时一秒 秒++

s++;

}

总结,因为是自己写着玩,就没有做具体中断时钟,用系统tk时钟延时一秒得了,

然后画斜线dorw_line()和画圆dorw_rang()是我自己编的算法,后来也找到网上别人的算法,LCD_DrawLine()和Draw_Circle(),大家可以对比看一看;

然后界面不好看,需要优化,然后lcd分辨率太低,斜线不好看,或者是我斜线的算法不对。



附上画线和画圆函数

//画线

//x1,y1:起点坐标

//x2,y2:终点坐标

void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2)

{

u16 t;

int xerr=0,yerr=0,delta_x,delta_y,distance;

int incx,incy,uRow,uCol;

delta_x=x2-x1; //计算坐标增量

delta_y=y2-y1;

uRow=x1;

uCol=y1;

if(delta_x>0)incx=1; //设置单步方向

else if(delta_x==0)incx=0;//垂直线

else {incx=-1;delta_x=-delta_x;}

if(delta_y>0)incy=1;

else if(delta_y==0)incy=0;//水平线

else{incy=-1;delta_y=-delta_y;}

if( delta_x>delta_y)distance=delta_x; //选取基本增量坐标轴

else distance=delta_y;

for(t=0;t<=distance+1;t++ )//画线输出

{

LCD_DrawPoint(uRow,uCol);//画点

xerr+=delta_x ;

yerr+=delta_y ;

if(xerr>distance)

{

xerr-=distance;

uRow+=incx;

}

if(yerr>distance)

{

yerr-=distance;

uCol+=incy;

}

}

}

//在指定位置画一个指定大小的圆

//(x,y):中心点

//r :半径

void Draw_Circle(u16 x0,u16 y0,u8 r)

{

int a,b;

int di;

a=0;b=r;

di=3-(r<<1); //判断下个点位置的标志

while(a<=b)

{

LCD_DrawPoint(x0+a,y0-b); //5

LCD_DrawPoint(x0+b,y0-a); //0

LCD_DrawPoint(x0+b,y0+a); //4

LCD_DrawPoint(x0+a,y0+b); //6

LCD_DrawPoint(x0-a,y0+b); //1

LCD_DrawPoint(x0-b,y0+a);

LCD_DrawPoint(x0-a,y0-b); //2

LCD_DrawPoint(x0-b,y0-a); //7

a++;

//使用Bresenham算法画圆

if(di<0)di +=4*a+6;

else

{

di+=10+4*(a-b);

b--;

}

}

}

/*********画圆圈函数******

**x,y1为圆心坐标,r为半径**

**参数t为圆圈的点速,因为**

**是用极坐标方法画的,t代**

**表将圆周长分为多少个点画**

**出来**********************/

void dorw_rang(u16 x,u16 y,u16 r,u16 t)

{

int xx,yy;

for(i=0;i

fabs(x2-x1))

c=fabs(y2-y1);//c为比较长边,这样才能保证另一边点数够

else

c=fabs(x2-x1);

if(fabs(y2-y1)>fabs(x2-x1))

{

if(y2>y1) q=y1;//q为较小坐标,

else q=y2;

}

else

{

if(x2>x1) q=x1;

else q=x2;

}

for(i=0;ifabs(x2-x1))

{

x=(int)((q-z)/k);//构建二元一次方程,y=kx+z,已知一个值,求出另一个值,

y=(int)q;

q++;

}

else

{

x=(int)q;

y=(int)((k*q)+z);

q++;

}

LCD_DrawPoint(x,y);

}

}

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容