前言
主控采用k210单片机,屏幕为nt35310,采用image2lcd取模制作
哔哩哔哩视频
表盘处理
获取表盘图片
首先在网上获取一张比较好看的表盘图片
对图片进行处理,去除指针
转换c文件
这里使用image2lcd工具进行转换
点击保存转换为clock.h文件。
显示在屏幕上
在头文件中加入
#include "clock.h"
定义一个show_time函数
void show_time()
{
lcd_draw_picture_by_half(20,20,200,200,gImage_clock);
}
lcd_draw_picture_by_half为使用屏幕所带的显示图片函数,这时便可在屏幕上看到时钟。
旋转的指针
点(x,y)绕中心点(x0,y0)旋转后d°的坐标为
x1= x0+(x - x0)cos(dπ/180) - (y - y0)sin(dπ/180) ;
y1= y0+(x - x0)sin(dπ/180) + (y - y0)cos(dπ/180) ;
有了变换公式,我们便可以有指针变换前位置求出变换后位置,
然后从变换后到旋转中心做一条直线,即为时钟指针
定义一个时钟结构体
typedef struct _clock_time_
{
uint16_t middle_x;//表盘中点x
uint16_t middle_y;//表盘中点y
uint16_t hour_start[6];//时针起点x1,y1,x2,y2,x3,y3一共3个点
uint16_t hour_end[6];//时针终点
uint16_t minute_start[4];
uint16_t minute_end[4];
uint16_t second_start[2];
uint16_t second_end[2];
}clock_info_t;
clock_info_t clock_info={
100,100,{
99,100,100,100,101,100},{
100,60,100,60,100,60},
{
100,100,101,100},{
100,50,100,50},{
100,100},{
100,40}
};
由于k210的写点函数速度比较慢,采用dma将图片传输到内存中,对内存图片进行处理,然后进行刷屏。