OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7651|回复: 13

表盘指针时钟-----M3

[复制链接]

17

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2012-7-4
在线时间
21 小时
发表于 2014-8-17 12:06:00 | 显示全部楼层 |阅读模式
5金钱

各位好!
      小弟请教一个问题,裸机可否有办法实现表盘指针时钟?
      效果图:
     


      有知道的吗?希望指导指导,不慎感激!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

43

主题

278

帖子

1

精华

高级会员

Rank: 4

积分
621
金钱
621
注册时间
2013-12-27
在线时间
0 小时
发表于 2014-8-17 22:06:29 | 显示全部楼层
这是用OLED屏幕显示的模拟时钟,希望对楼主有帮助。
 温馨提示:以后有问题现在论坛中搜索试试,不要上来就直接提问。
本论坛的链接:
http://www.openedv.com/posts/list/27834.htm
水的比较多。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-17 22:07:09 | 显示全部楼层
你这种,只能考虑图片叠加了.
简单点吧.好实现.
如下图:


这种表盘效果,完全就是程序生成的.
优点就是:速度快,占用资源少.

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

43

主题

278

帖子

1

精华

高级会员

Rank: 4

积分
621
金钱
621
注册时间
2013-12-27
在线时间
0 小时
发表于 2014-8-17 22:07:45 | 显示全部楼层
LCD显示屏显示表盘时钟的程序一直没时间写,工作太忙了。所以只能提供OLED的。如果你手里有这个屏幕可以试试,效果不错。
水的比较多。
回复

使用道具 举报

43

主题

278

帖子

1

精华

高级会员

Rank: 4

积分
621
金钱
621
注册时间
2013-12-27
在线时间
0 小时
发表于 2014-8-17 22:08:40 | 显示全部楼层
原子哥,板子的资料上没有这个程序吧!
水的比较多。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-17 22:27:53 | 显示全部楼层
回复【5楼】青苹果PAD:
---------------------------------
没有,但是这代码很简单了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-17 22:29:01 | 显示全部楼层
两个函数搞定:
[mw_shl_code=c,true]//画圆形指针表盘 //x,y:坐标中心点 //size:表盘大小(直径) //d:表盘分割,秒钟的高度 void calendar_circle_clock_drawpanel(u16 x,u16 y,u16 size,u16 d) { u16 r=size/2;//得到半径 u16 sx=x-r; u16 sy=y-r; u16 px0,px1; u16 py0,py1; u16 i; gui_fill_circle(x,y,r,WHITE); //画外圈 gui_fill_circle(x,y,r-4,BLACK); //画内圈 for(i=0;i<60;i++)//画秒钟格 { px0=sx+r+(r-4)*sin((app_pi/30)*i); py0=sy+r-(r-4)*cos((app_pi/30)*i); px1=sx+r+(r-d)*sin((app_pi/30)*i); py1=sy+r-(r-d)*cos((app_pi/30)*i); gui_draw_bline1(px0,py0,px1,py1,0,WHITE); } for(i=0;i<12;i++)//画小时格 { px0=sx+r+(r-5)*sin((app_pi/6)*i); py0=sy+r-(r-5)*cos((app_pi/6)*i); px1=sx+r+(r-d)*sin((app_pi/6)*i); py1=sy+r-(r-d)*cos((app_pi/6)*i); gui_draw_bline1(px0,py0,px1,py1,2,YELLOW); } for(i=0;i<4;i++)//画3小时格 { px0=sx+r+(r-5)*sin((app_pi/2)*i); py0=sy+r-(r-5)*cos((app_pi/2)*i); px1=sx+r+(r-d-3)*sin((app_pi/2)*i); py1=sy+r-(r-d-3)*cos((app_pi/2)*i); gui_draw_bline1(px0,py0,px1,py1,2,YELLOW); } gui_fill_circle(x,y,d/2,WHITE); //画中心圈 } //显示时间 //x,y:坐标中心点 //size:表盘大小(直径) //d:表盘分割,秒钟的高度 //hour:时钟 //min:分钟 //sec:秒钟 void calendar_circle_clock_showtime(u16 x,u16 y,u16 size,u16 d,u8 hour,u8 min,u8 sec) { static u8 oldhour=0; //最近一次进入该函数的时分秒信息 static u8 oldmin=0; static u8 oldsec=0; u16 r=size/2;//得到半径 u16 sx=x-r; u16 sy=y-r; u16 px0,px1; u16 py0,py1; u8 r1; if(hour>11)hour-=12; /////////////////////////////////////////////// //清除小时 r1=d/2+4; //清除上一次的数据 px0=sx+r+(r-3*d-7)*sin((app_pi/6)*oldhour); py0=sy+r-(r-3*d-7)*cos((app_pi/6)*oldhour); px1=sx+r+r1*sin((app_pi/6)*oldhour); py1=sy+r-r1*cos((app_pi/6)*oldhour); gui_draw_bline1(px0,py0,px1,py1,2,BLACK); //清除分钟 r1=d/2+3; //清除上一次的数据 px0=sx+r+(r-2*d-7)*sin((app_pi/30)*oldmin); py0=sy+r-(r-2*d-7)*cos((app_pi/30)*oldmin); px1=sx+r+r1*sin((app_pi/30)*oldmin); py1=sy+r-r1*cos((app_pi/30)*oldmin); gui_draw_bline1(px0,py0,px1,py1,1,BLACK); //清除秒钟 r1=d/2+3; //清除上一次的数据 px0=sx+r+(r-d-7)*sin((app_pi/30)*oldsec); py0=sy+r-(r-d-7)*cos((app_pi/30)*oldsec); px1=sx+r+r1*sin((app_pi/30)*oldsec); py1=sy+r-r1*cos((app_pi/30)*oldsec); gui_draw_bline1(px0,py0,px1,py1,0,BLACK); /////////////////////////////////////////////// //显示小时 r1=d/2+4; //显示新的时钟 px0=sx+r+(r-3*d-7)*sin((app_pi/6)*hour); py0=sy+r-(r-3*d-7)*cos((app_pi/6)*hour); px1=sx+r+r1*sin((app_pi/6)*hour); py1=sy+r-r1*cos((app_pi/6)*hour); gui_draw_bline1(px0,py0,px1,py1,2,YELLOW); //显示分钟 r1=d/2+3; //显示新的分钟 px0=sx+r+(r-2*d-7)*sin((app_pi/30)*min); py0=sy+r-(r-2*d-7)*cos((app_pi/30)*min); px1=sx+r+r1*sin((app_pi/30)*min); py1=sy+r-r1*cos((app_pi/30)*min); gui_draw_bline1(px0,py0,px1,py1,1,GREEN); //显示秒钟 r1=d/2+3; //显示新的秒钟 px0=sx+r+(r-d-7)*sin((app_pi/30)*sec); py0=sy+r-(r-d-7)*cos((app_pi/30)*sec); px1=sx+r+r1*sin((app_pi/30)*sec); py1=sy+r-r1*cos((app_pi/30)*sec); gui_draw_bline1(px0,py0,px1,py1,0,RED); oldhour=hour; //保存时 oldmin=min; //保存分 oldsec=sec; //保存秒 } [/mw_shl_code]

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

17

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2012-7-4
在线时间
21 小时
 楼主| 发表于 2014-8-18 09:06:17 | 显示全部楼层
原子大侠:
     1、 直接程序生成,不清晰,毛刺很多,效果不好
 

     2、图片叠加,那要很多图片哇  时 分 秒 不通的组合,那要多少图片哦
回复

使用道具 举报

17

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2012-7-4
在线时间
21 小时
 楼主| 发表于 2014-8-18 09:13:40 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
原子大侠: 
     1、 直接程序生成,不清晰,毛刺很多,效果不好 
  

     2、图片叠加,那要很多图片哇  时 分 秒 不通的组合,那要多少图片哦
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-19 00:53:19 | 显示全部楼层
回复【9楼】hxl19880319:
---------------------------------
所以,这些就是你要去研究的问题了。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

12

帖子

0

精华

高级会员

Rank: 4

积分
671
金钱
671
注册时间
2014-4-12
在线时间
83 小时
发表于 2016-6-15 23:13:03 | 显示全部楼层
原子哥,这个转盘的程序工程可以分享下吗
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-6-18 21:03:44 | 显示全部楼层
553563352 发表于 2016-6-15 23:13
原子哥,这个转盘的程序工程可以分享下吗

我们综合实验就有
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

26

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2017-5-11
在线时间
4 小时
发表于 2017-5-11 15:05:37 | 显示全部楼层
正点原子 发表于 2014-8-17 22:07
你这种,只能考虑图片叠加了.
简单点吧.好实现.

mini STM32的指针时钟,源代码有吗,跪求
回复

使用道具 举报

1

主题

26

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2017-5-11
在线时间
4 小时
发表于 2017-5-11 15:06:29 | 显示全部楼层
正点原子 发表于 2014-8-17 22:07
你这种,只能考虑图片叠加了.
简单点吧.好实现.

这个图是在哪里的? 如何能在mini STM32实现呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-21 10:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表