6259|5

603

帖子

1

TA的资源

纯净的硅(中级)

楼主
 

晒设计方案+做自己的时钟 [复制链接]

其实楼主一直想做个自己的时钟,挂在墙上。

既然有上辑雷达扫描的基础,那么做个时钟指针旋转也就不在话下啦。

所以本辑没有什么技术难点,就是利用STM32库中的画图方法,来描画一个时钟的界面。

用到的函数是这个:void     LCD_WriteBMP(uint32_t BmpAddress);

把BMP图片转为数组,然后作为参数传到该函数中,就能够把时钟的表盘画在屏幕上了,
接下来,利用另一个层,根据时间,绘制三个指针,偷个懒吧,指针暂且用画线来代替。

  1. void DrawPointer(u32 t_s)
  2. {
  3.   u32 h, m, s;
  4.   s32 x, y;
  5.   
  6.   h = (t_s / (3600/5)) % (12 * 5);
  7.   m = (t_s / 60) % 60;
  8.   s = t_s % 60;
  9.   
  10.   h = ((360 + 90) - h * 6) % 360;
  11.   m = ((360 + 90) - m * 6) % 360;
  12.   s = ((360 + 90) - s * 6) % 360;
  13.   
  14.   memset(&frameBuffer[0xA0000], 0, 0x50000);
  15.   
  16.   x = 40 * fcos[h];
  17.   y = 40 * fsin[h];
  18.   
  19.   LCD_SetTextColor(LCD_COLOR_BLUE);
  20.   LCD_DrawUniLine(120,120,120+x,120-y);
  21.   
  22.   x = 60 * fcos[m];
  23.   y = 60 * fsin[m];
  24.   
  25.   LCD_SetTextColor(LCD_COLOR_BLUE);
  26.   LCD_DrawUniLine(120,120,120+x,120-y);
  27.   
  28.   x = 80 * fcos[s];
  29.   y = 80 * fsin[s];
  30.   
  31.   LCD_SetTextColor(LCD_COLOR_RED);
  32.   LCD_DrawUniLine(120-x/4,120+y/4,120+x,120-y);

  33.   memcpy(&frameBuffer[0x50000], &frameBuffer[0xA0000], 0x50000);
  34. }
复制代码

其实这样也就大功告成了,接下来就是研究从硬件RTC获取实时时间,不过这部分内容就不在本辑研究啦。

毕竟F4还有点小,挂载墙上就看不清楚时间啦。

上照片,怎么照都不好看,尤其是指针,太细了,正对着屏幕拍照会看不清指针。



真是太挫了。其实我用的表盘是这样的……



总感觉和楼主想象中的东西不一样啊……

好吧,勉为其难的献出源码吧,
RTClock.zip (513.38 KB, 下载次数: 128)


很悲催的是,那画图函数,只能把图片画在原点起始的位置上,而不能指定其他位置。

当然啦,从楼主的愿望来说,本辑内容只是个实验性质的描画。楼主想要更大的屏幕,并且更省电的屏幕,才能做更实用的时钟,然后挂在墙上。

到那时候,三个指针也应该是图片贴上去的,而不是三条线啦。
此帖出自stm32/stm8论坛

最新回复

程序给的都不完整   详情 回复 发表于 2020-4-2 14:49
点赞 关注(1)
 

回复
举报

3238

帖子

5

TA的资源

五彩晶圆(中级)

沙发
 
不错,支持一个,希望能出更多好玩的东西
此帖出自stm32/stm8论坛
 
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 

回复

10

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
高手
51还没学会呢,观摩一下吧
此帖出自stm32/stm8论坛
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
问下楼主是如何将bmp转换成数组的啊?用的什么软件吗?能说下吗?谢谢
此帖出自stm32/stm8论坛

点评

就是是自己用vc写的一个简单的main程序,就是把文件fopen,然后每读一个字节,就加一个逗号printf出来 我很懒的不整理这个工具,所以每次也都是找不到以前的了,就现写一个……所以没办法给你提供了,抱歉啊。  详情 回复 发表于 2015-9-22 09:26
 
 
 

回复

603

帖子

1

TA的资源

纯净的硅(中级)

5
 
winme 发表于 2015-9-21 22:11
问下楼主是如何将bmp转换成数组的啊?用的什么软件吗?能说下吗?谢谢

就是是自己用vc写的一个简单的main程序,就是把文件fopen,然后每读一个字节,就加一个逗号printf出来

我很懒的不整理这个工具,所以每次也都是找不到以前的了,就现写一个……所以没办法给你提供了,抱歉啊。

不过你可以到网上搜索,把二进制文件转为数组,还是能搜到很多的。

其实还有好多馊主意,都可以把文件转为数组搞出来,我相信各位大神也都是各显神通的。
此帖出自stm32/stm8论坛
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(高级)

6
 

程序给的都不完整

此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表