stm32 lcd 画爱心
时间: 2023-07-20 17:31:16 浏览: 248
好的,下面是 STM32 控制 LCD 画爱心的代码,您可以参考一下:
```c
#include "lcd.h" // LCD 头文件
// 画圆函数
void LCD_Draw_Circle(uint16_t x0,uint16_t y0,uint8_t r)
{
int a,b;
int di;
a=0;b=r;di=3-(r<<1);
while(a<=b)
{
LCD_DrawPoint(x0-b,y0-a);//3
LCD_DrawPoint(x0+b,y0-a);//0
LCD_DrawPoint(x0-a,y0+b);//1
LCD_DrawPoint(x0-b,y0-a);//7
LCD_DrawPoint(x0-a,y0-b);//2
LCD_DrawPoint(x0+b,y0+a);//4
LCD_DrawPoint(x0+a,y0-b);//5
LCD_DrawPoint(x0+a,y0+b);//6
a++;
//使用Bresenham算法画圆
if(di<0)di +=4*a+6;
else {di+=10+4*(a-b);b--;}
}
}
// 画爱心函数
void LCD_Draw_Heart(uint16_t x,uint16_t y,uint8_t r)
{
uint8_t i;
uint16_t j,k;
for(i=0;i<2;i++)
{
if(i==0)
{
j=x-k;
k=x;
}
else
{
j=x;
k=x+k;
}
LCD_Draw_Circle(j,y,r);
for(;j<=x+k/2;j++)
{
LCD_DrawPoint(j,y+sqrt(r*r-(j-x)*(j-x)));
LCD_DrawPoint(k-j,y+sqrt(r*r-(j-x)*(j-x)));
}
}
}
int main()
{
LCD_Init(); // 初始化 LCD
LCD_Clear(WHITE); // 清屏
LCD_Draw_Heart(120,160,30); // 画爱心,圆心坐标为(120,160),半径为 30
while(1);
}
```
在以上代码中,我们使用了 `LCD_Draw_Circle` 函数画圆,`LCD_Draw_Heart` 函数画爱心。在 `main` 函数中,我们先初始化 LCD 并清屏,然后调用 `LCD_Draw_Heart` 函数画爱心。您可以根据自己的需求修改圆心坐标和半径。