- /*********
- 函数功能:模拟时钟
- **********/
- 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)
|