找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2708|回复: 5
收起左侧

STM32模拟时钟,视频演示见附件

[复制链接]
ID:272485 发表于 2019-10-22 13:17 | 显示全部楼层 |阅读模式
  • /*********
  • 函数功能:模拟时钟
  • **********/
  • void LCD_Draw_Point_h(u16 Xpos, u16 Ypos, u16 Color)
  • {
  • int i;
  • LCD_ILI9486_CMD(0x2A);                      //发送0x2A命令,设置X轴坐标
  • LCD_ILI9486_Parameter((Xpos -2& 0xff00) >> 8);  //发送X轴起始坐标的高8位
  • LCD_ILI9486_Parameter((Xpos -2& 0x00ff));       //发送X轴起始坐标的低8位
  • LCD_ILI9486_Parameter((Xpos +2& 0xff00) >> 8);  //发送X轴结束坐标的高8位
  • LCD_ILI9486_Parameter((Xpos +2& 0x00ff));       //发送X轴结束坐标的低8位
  • LCD_ILI9486_CMD(0x2B);                      //发送0x2B命令,设置Y轴坐标
  • LCD_ILI9486_Parameter((Ypos -2& 0xff00) >> 8);  //发送Y轴起始坐标的高8位
  • LCD_ILI9486_Parameter((Ypos -2& 0x00ff));       //发送Y轴起始坐标的低8位
  • LCD_ILI9486_Parameter((Ypos +2& 0xff00) >> 8);  //发送Y轴结束坐标的高8位
  • LCD_ILI9486_Parameter((Ypos +2& 0x00ff));       //发送Y轴结束坐标的低8位
  • LCD_ILI9486_CMD(0x2C);//发送像素点的颜色信息
  • for(i=0;i<25;i++)//颜色渐变
  • LCD_ILI9486_Parameter(Color);
  • }
  • void LCD_Draw_Point_m(u16 Xpos, u16 Ypos, u16 Color)
  • {
  • int i;
  • LCD_ILI9486_CMD(0x2A);                      //发送0x2A命令,设置X轴坐标
  • LCD_ILI9486_Parameter((Xpos -1& 0xff00) >> 8);  //发送X轴起始坐标的高8位
  • LCD_ILI9486_Parameter((Xpos -1& 0x00ff));       //发送X轴起始坐标的低8位
  • LCD_ILI9486_Parameter((Xpos +1& 0xff00) >> 8);  //发送X轴结束坐标的高8位
  • LCD_ILI9486_Parameter((Xpos +1& 0x00ff));       //发送X轴结束坐标的低8位
  • LCD_ILI9486_CMD(0x2B);                      //发送0x2B命令,设置Y轴坐标
  • LCD_ILI9486_Parameter((Ypos -1& 0xff00) >> 8);  //发送Y轴起始坐标的高8位
  • LCD_ILI9486_Parameter((Ypos -1& 0x00ff));       //发送Y轴起始坐标的低8位
  • LCD_ILI9486_Parameter((Ypos +1& 0xff00) >> 8);  //发送Y轴结束坐标的高8位
  • LCD_ILI9486_Parameter((Ypos +1& 0x00ff));       //发送Y轴结束坐标的低8位
  • LCD_ILI9486_CMD(0x2C);//发送像素点的颜色信息
  • for(i=0;i<9;i++)//颜色渐变
  • LCD_ILI9486_Parameter(Color);
  • }
  • void LCD_Draw_Point_s(u16 Xpos, u16 Ypos, u16 Color)
  • {
  • //int i;
  • LCD_ILI9486_CMD(0x2A);                      //发送0x2A命令,设置X轴坐标
  • LCD_ILI9486_Parameter((Xpos & 0xff00) >> 8);  //发送X轴起始坐标的高8位
  • LCD_ILI9486_Parameter((Xpos & 0x00ff));       //发送X轴起始坐标的低8位
  • LCD_ILI9486_Parameter((Xpos & 0xff00) >> 8);  //发送X轴结束坐标的高8位
  • LCD_ILI9486_Parameter((Xpos & 0x00ff));       //发送X轴结束坐标的低8位
  • LCD_ILI9486_CMD(0x2B);                      //发送0x2B命令,设置Y轴坐标
  • LCD_ILI9486_Parameter((Ypos & 0xff00) >> 8);  //发送Y轴起始坐标的高8位
  • LCD_ILI9486_Parameter((Ypos & 0x00ff));       //发送Y轴起始坐标的低8位
  • LCD_ILI9486_Parameter((Ypos & 0xff00) >> 8);  //发送Y轴结束坐标的高8位
  • LCD_ILI9486_Parameter((Ypos & 0x00ff));       //发送Y轴结束坐标的低8位
  • LCD_ILI9486_CMD(0x2C);//发送像素点的颜色信息
  • //for(i=0;i<9;i++)//颜色渐变
  • LCD_ILI9486_Parameter(Color);
  • }
  • void draw_line_h(u16 a,u16 b,double u,u16 r,u16 color)
  • {
  • u16 x,y,i;
  • for(i=0;i<r;i++)
  • {
  •   x=a+i*cos(u);
  •   y=b+i*sin(u);
  •   LCD_Draw_Point_h(x,y,color);
  • }
  • }
  • void draw_line_m(u16 a,u16 b,double u,u16 r,u16 color)
  • {
  • u16 x,y,i;
  • for(i=0;i<r;i++)
  • {
  •   x=a+i*cos(u);
  •   y=b+i*sin(u);
  •   LCD_Draw_Point_m(x,y,color);
  • }
  • }
  • void draw_line_s(u16 a,u16 b,double u,u16 r,u16 color)
  • {
  • u16 x,y,i;
  • for(i=0;i<r;i++)
  • {
  •   x=a+i*cos(u);
  •   y=b+i*sin(u);
  •   LCD_Draw_Point_s(x,y,color);
  • }
  • }
  • //主函数
  •   int t,m,s,h;
  •   LCD_Init();
  • yuan(156,110,90,BLACK);//见上一个帖子
  • while(1)
  • {
  •   for(t=0;t<12;t++)
  •   {
  •    draw_line_h(156,110,3.14*(6.0/180)*t,50,BLACK);
  •    for(m=0;m<60;m++)
  •    {
  •    draw_line_m(156,110,3.14*(6.0/180)*m,70,BLACK);
  •    for(s=0;s<60;s++)
  •     {
  •      draw_line_s(156,110,3.14*(6.0/180)*s,90,BLACK);
  •      delay_ms(500);
  •      draw_line_s(156,110,3.14*(6.0/180)*s,90,WHITE);
  •      if(s==m)
  •      {
  •       //再画一下分钟
  •       draw_line_m(156,110,3.14*(6.0/180)*m,70,BLACK);
  •      }
  •      else if(s==t)
  •      {
  •       //再画一下时钟
  •       draw_line_h(156,110,3.14*(6.0/180)*t,50,BLACK);
  •      }
  •     }
  •     draw_line_m(156,110,3.14*(6.0/180)*m,70,WHITE);
  •     if(m==t*5)
  •     {
  •      //在画一下时钟
  •     draw_line_h(156,110,3.14*(6.0/180)*t,50,BLACK);
  •     }
  •    }
  •     draw_line_h(156,110,3.14*(6.0/180)*t,50,WHITE);
  •   }
  • }
  • }

视频: 新建文件夹 (2).rar (7.56 MB, 下载次数: 27)
回复

使用道具 举报

ID:328014 发表于 2019-10-22 16:53 | 显示全部楼层
好东东 楼主有完整的源码吗?
回复

使用道具 举报

ID:272485 发表于 2019-10-22 20:00 | 显示全部楼层
51hei团团 发表于 2019-10-22 16:53
好东东 楼主有完整的源码吗?

工程给你

project_demo.7z

89.3 KB, 下载次数: 30, 下载积分: 黑币 -5

回复

使用道具 举报

ID:597048 发表于 2019-10-23 09:47 | 显示全部楼层
厉害厉害
回复

使用道具 举报

ID:1029888 发表于 2022-5-26 15:10 | 显示全部楼层

可以用吗?
回复

使用道具 举报

ID:1029888 发表于 2022-6-12 10:49 | 显示全部楼层
为啥我烧录了没有东西显示
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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