stm32oled画满圆
时间: 2024-01-05 10:04:00 浏览: 85
以下是两种在STM32 OLED上画满圆的方法:
1. 使用空心圆函数
```c
void draw_circle(u8 x0, u8 y0, u8 r) // 圆心(x0, y0),半径r
{
u8 x, y;
for (x = 0; x <= 63; x++) {
y = sqrt(pow(r, 2) - pow(x - x0, 2)) + y0; // 圆方程 x, y反置
// 上半圆
OLED_DrawPoint(y, x, 1);
// 下半圆
OLED_DrawPoint(63 - y, x, 1);
}
}
```
2. 使用实心圆函数
```c
void draw_fill_circle(u8 x0, u8 y0, u8 r, u8 dot) // 圆心(x0, y0),半径r
{
u8 x = 0, y = 0, R = 0;
for (x = x0 - r; x <= x0 + r; x++) {
for (y = y0 - r; y <= y0 + r; y++) {
R = sqrt(pow(r, 2) - pow(x - x0, 2)) + y0; // 圆方程 x, y反置
if ((y >= y0 && y <= R) || (y < y0 && y >= 2 * y0 - R) || dot == 0) {
// 点限制在圆方程内
OLED_DrawPoint(y, x, dot);
}
}
}
}
```
阅读全文