• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

LCD液晶屏应用

Baby_a 2017-08-20 浏览量:928
学习STM32时候,想驱动LCD画个指针式时钟,求关于程序方面的思路和方法
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 楼上给的那个百度文库是在讲废话吧,我看了好几次都没有说怎么刷屏画点的?楼主问的应该是指针式时钟的画点思路,就是怎么把时钟的效果做出来。首先楼主你要能确定你的板子跟LCD通信没有问题,即可以在任意一个像素点上面上色LCD_DrawPoint(int x,int y,int color),比如将坐标为(100,100)的点画成蓝色:LCD_DrawPoint(100,100,BLUE)。搞定了像素上色问题之后,就可以描点连线了,时钟首先是个圆形对吧,那就要有一个画圆的函数

    void _draw_circle_8(int xc,int yc,int x,int y,uint16_t color)
    {
    LCD_DrawPoint(xc+x,yc+y,color);
    LCD_DrawPoint(xc-x,yc+y,color);
    LCD_DrawPoint(xc+x,yc-y,color);
    LCD_DrawPoint(xc-x,yc-y,color);
    LCD_DrawPoint(xc+y,yc+x,color);
    LCD_DrawPoint(xc-y,yc+x,color);
    LCD_DrawPoint(xc+y,yc-x,color);
    LCD_DrawPoint(xc-y,yc-x,color);
    }

    void LCD_DrawCircle(int xc,int yc,int r,uint16_t color)
    {
    int x=0,y=r,yi,d;
    d=3-2*r;
    while (x <= y) {
    _draw_circle_8(xc,yc,x,y,color);
    if (d < 0) {
    d = d + 4 * x + 6;
    } else {
    d = d + 4 * (x - y) + 10;
    y--;
    }
    x++;
    }
    }

    确定好圆心(x,y)和半径r。最后那就是画指针了,楼主你要定义指针指的位置,比如指12是哪个位置,指1是哪个位置,这就要画线函数了LCD_Draw_Line(int x1,int y1,int x2,int y2,int color)

    比如要在(50,60)和(100,110)两个点之间画一条红线LCD_Draw_Line(50,60,100,110,RED)。最后的最后,楼主你要在时钟上面画数字,这就要取模了。

    • 发布于 2017-08-20
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:9
  • 多看一些风格好的代码,自己写的时候先想想别人的代码是如何构建。代码写的多,自然就知道代码该如何写,框架该是什么样。关于画时钟的问题,可以先看看别人如何画,多看几份,提取其中的思路,融合之后自己再写一遍
    • 发布于2017-08-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 先开个窗,花出钟表。

    然后秒针和分针的移动利用查表发定点划线。

    因为表盘有客度,响应也有坐标。

    • 发布于2017-08-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 指针的移动,就是两点画线。

    表盘都是有刻度的。把对应的坐标点记下来就ok

    • 发布于2017-08-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 定义时分秒三个指针的长度,R1,R2,R3,先画一个大圆,然后读取RTC时钟,得到时分秒的数值,时分秒的数值转化为角坐标(时/12,分秒/60),利用三角函数:sin(角坐标)x R,cos(角坐标)x R,即可得到指针相对原点的坐标了,把这个坐标和原点连接一条长度为R的直线,就是三个指针了。

    • 发布于2017-08-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 还要注意清屏,要不能就可能每走一秒钟就画了一横。


    • 发布于2017-08-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 其实就是封装个画线的接口,指定坐标以及线的粗细(size),在者就是可以加些特效。
    • 发布于2017-08-21
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

LCD液晶屏应用