[应用方案] 基于纳瓦特MCU+OLED模块演示

[复制链接]
 楼主| chongdongchen 发表于 2018-6-26 22:37 | 显示全部楼层 |阅读模式
本帖最后由 chongdongchen 于 2018-6-26 22:39 编辑

之前申请了一个开发板,中间遇到了磕磕碰碰。
今天用NV32把OLED点亮了。。
滚动条和圆球演示:
球.gif 滚动条.gif


评论

模仿自Windows的屏保和滚动条  发表于 2018-6-27 09:46
Bruing 发表于 2018-6-28 14:52 | 显示全部楼层
牛X呀,自己写函数实现的吗?
 楼主| chongdongchen 发表于 2018-6-28 16:28 | 显示全部楼层
Bruing 发表于 2018-6-28 14:52
牛X呀,自己写函数实现的吗?

当时刚买了OLED,就玩了一下,函数自己写的,你需要的话我们可以探讨探讨。
 楼主| chongdongchen 发表于 2018-6-28 16:43 | 显示全部楼层

  1. #define CIRCLE_NUM 8

  2. typedef struct
  3. {
  4.     u8  r;      //半径
  5.     u8  x0;     //当前位置
  6.     u8  y0;
  7.     s8  x1;     //当前方向
  8.     s8  y1;
  9.     u8  speed;  //速度
  10.     u8  time;
  11. }RUN_CIRCLE_DEF;//运动的圆

  12. RUN_CIRCLE_DEF  circle[CIRCLE_NUM];


  13. void run (RUN_CIRCLE_DEF * ptr) //圆圈运动
  14. {
  15.     if(++ptr->time < ptr->speed)return;
  16.     ptr->time = 0;

  17.     Bresenhamcircle(ptr->x0,ptr->y0,ptr->r,0);  //擦除上一个位置

  18.     ptr->x0 += ptr->x1;
  19.     ptr->y0 += ptr->y1;

  20.     if(((ptr->x0 + ptr->r) >= 128) || (ptr->x0 < ptr->r))
  21.     {
  22.         ptr->x0 -= ptr->x1;
  23.         ptr->x1 = -ptr->x1;
  24.     }
  25.     else if(((ptr->y0 + ptr->r) >= 64) || (ptr->y0 < ptr->r))
  26.     {
  27.         ptr->y0 -= ptr->y1;
  28.         ptr->y1 = -ptr->y1;
  29.     }

  30.     Bresenhamcircle(ptr->x0,ptr->y0,ptr->r,1);  //重画下一个位置
  31. }



评论

小圆圈其实很简单,就是这样而已  发表于 2018-6-28 16:44
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

1238

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部

55

主题

1238

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部