当前位置: 首页 > news >正文

做网站爱网站设计营销

做网站爱,网站设计营销,大健康品牌策划公司,网站建设合同或方案书一、项目准备 主要利用LCD驱动中的画点和画连线函数,驱动是正点原子给我写好了的画点和画线的函数等些相关函数 void LCD_Draw_Circle(u16 x0,u16 y0,u8 r); //画圆 void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2); //画线 二、画波形图函数实…

一、项目准备

主要利用LCD驱动中的画点和画连线函数,驱动是正点原子给我写好了的画点和画线的函数等些相关函数

void LCD_Draw_Circle(u16 x0,u16 y0,u8 r);						 			//画圆
void LCD_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2);							//画线

二、画波形图函数实现

a. matlab测试数据生成

i. 这里我们使用matlab生成的是一个正弦波+三角波的叠波,右边是对应的波形和频谱

ii. 这是叠波的数据(就是下面的测试数据)

float waveform[1000] = {-1.000000, -0.817209, -0.634667, -0.452619, -0.271310, -0.090983, 0.088125, 0.265779, 0.441754, 0.615827, 0.787785, 0.957424, 1.124547, 1.288969, 1.450513, 1.609017, 1.764328, 1.836307, 1.744827, 1.649776, 1.551057, 1.448583, 1.342287, 1.232115, 1.118027, 1.000000, 0.878027, 0.752115, 0.622287, 0.488583, 0.351057, 0.209776, 0.064827, -0.083693, -0.075672, 0.009017, 0.090513, 0.168969, 0.244547, 0.317424, 0.387785, 0.455827, 0.521754, 0.585779, 0.648125, 0.709017, 0.768690, 0.827381, 0.885333, 0.942791, 1.000000, -0.817209, -0.634667, ...
};

b. 波形绘制

i. 使用stm32生成一个正弦波进行点画波形测试,参数介绍如下:

x_start: 绘制正弦波形的起始横坐标(屏幕上的左边界)。即正弦波起始位置。

y_center: 正弦波形的垂直中心位置。波形会围绕该值上下波动。

width: 绘制正弦波形的总横向宽度(像素数)。

amplitude: 正弦波的振幅,即波形的最大垂直偏移量。

cycles: 正弦波的周期数,决定波形的波动次数。

//使用点方式画波形(stm32生成正弦波)
void LCD_Draw_SineWave(u16 x_start, u16 y_center, u16 width, u16 amplitude, float cycles)
{u16 i;float angle;float y;u16 y_draw ;float angle_step = 2 * 3.1415926f * cycles / width;for ( i = 0; i < width; i++){angle = i * angle_step;y = sinf(angle);  // 正弦值范围 -1 到 1y_draw = y_center - (s16)(y * amplitude);  // 映射到屏幕坐标(注意方向)LCD_DrawPoint(x_start + i, y_draw);}
}

演示调用代码

效果展示:

ii. 点画波形代码实现(使用matlab数据)参数介绍如下:

x_start: 波形绘制的起始横坐标(即图像左边界)。

y_center: 波形在 LCD 上的垂直中心线位置。

width: 整个波形在 LCD 上的横向宽度(像素数)。

amplitude: 显示波形的垂直振幅(即最大显示高度)。

data: 指向波形数据的数组,数据范围为 [-1, 1]。

len: 波形数据的总长度。

void LCD_Draw_SineFromData(u16 x_start, u16 y_center, u16 width, u16 amplitude, const float *data, u16 len)
{u16 i,y_draw,x_draw;for ( i = 0; i < len; i++){float y = data[i];  // [-1, 1] 范围y_draw = y_center - (int16_t)(y * amplitude/5.0f);  //5.0f用来控制波形的缩放(可以自行调节)x_draw = x_start + (i * width) / len;POINT_COLOR=YELLOW;	LCD_DrawPoint(x_draw, y_draw);printf("x=%d y=%d",x_draw,y_draw);}
}

效果展示:

iii. 线画波形代码实现(使用matlab数据)参数介绍如下:

x_start: 波形绘制的起始横坐标。

y_center: 波形在 LCD 上的垂直中心线位置。

width: 整个波形在 LCD 上的横向宽度(像素数)。

amplitude: 显示波形的垂直振幅(即最大显示高度)。

data: 指向波形数据的数组,数据范围为。

len: 波形数据的总长度(即数组中的元素个数)。


void LCD_Draw_SineFromData_WithLine(u16 x_start, u16 y_center, u16 width, u16 amplitude, const float *data, u16 len)
{int16_t y1,y2;u16 i,x1,x2;for ( i = 0; i < len - 1; i++){y1 = y_center - (int16_t)(data[i] * amplitude * 2.0f);y2 = y_center - (int16_t)(data[i + 1] * amplitude *2.0f);x1 = x_start + (i * width) / len;x2 = x_start + ((i + 1) * width) / len;LCD_DrawLine(x1, y1, x2, y2);}
}

演示调用代码

效果展示:

c. 频谱绘制

i. 这里也是使用了matlab的数据,通过stm32 傅里叶变换后拿到对应的频谱数据

data:指向频谱数据数组的指针,数组中的每个元素代表一个频率点对应的幅值。

len:频谱数据的长度,即 data 数组中的元素个数。

x_start:绘图的起始横坐标,决定频谱图在屏幕上从哪里开始画。

y_base:绘图的基准纵坐标,通常为零幅值对应的参考线(基线)位置,纵坐标从此处开始向上绘制。

width:整个频谱图在水平方向上占据的像素宽度。

max_height:在幅值最大时,频谱图可以绘制的最大像素高度,用于控制纵向缩放。

max_value:频谱数据中的最大预期幅值,用于归一化数据,将实际幅值映射到 max_height 范围内。

void LCD_Draw_FreqSpectrum(float *data, u16 len, u16 x_start, u16 y_base, u16 width, u16 max_height, float max_value)
{u16 x1,i,x2;int16_t y1,y2;for ( i = 0; i < len - 1; i++){x1 = x_start + (i * width) / len;x2 = x_start + ((i + 1) * width) / len;y1 = y_base - (int16_t)((data[i] / max_value) * max_height*2.0f);y2 = y_base - (int16_t)((data[i + 1] / max_value) * max_height*2.0f);LCD_DrawLine(x1, y1, x2, y2);}
}

效果展示:

http://www.dtcms.com/a/497333.html

相关文章:

  • 网站建设找什么公司好为什么要懂seo
  • 重庆做企业网站设计的公司网站备案时长
  • 南京 企业网站建设在哪里找工厂采购信息
  • 制作网站账号系统电子商务网站建设与维护代码
  • 洞口网站开发公司推荐wordpress 获取当前域名
  • python学习之生成器三者关系
  • 推广引流网站网站底部空白
  • 温州网站建设方案开发线上购物网站建设的可行性
  • 网站设计指南WORDPRESS网站如何改版
  • 网站 用户体验的重要性专门做网站的软件是
  • 企业网站建设方案投标书二学一做网站
  • 博客网站开发毕设怎样在阿里云做网站
  • 做网站挣钱不电脑安装什么版本wordpress
  • 网站设计的标准网站建设的频道是什么
  • 网站栏目页描述怎么写爱做网址
  • jsp网站开发视频教程彩票网站注册
  • 推荐大气的网站手上有一个好网站怎么做赚钱
  • 外贸网站怎么做才好搜外网友情链接
  • 网站页面设计培训连云港网站关键词
  • 湖南专业做网站公司排名汕头网站上排名
  • 郑州专业网站建设公司wordpress 前台登录美化
  • 2022年新闻热点摘抄无锡网站排名优化公司哪家好
  • 芜湖高端网站建设公司网站是否上线
  • 网站建设和网站设计一样吗网站备案许可证
  • 深圳公司网站制作企业建新网站开发流程图
  • 网站建设哪家不错深圳网站建设 网络推广
  • 网站打开加速网站备案要邮寄资料吗
  • 潍坊网站建设 马地方农产品网站建设
  • 大型网站制作公司飞数微信小程序网站制作
  • 上海城乡建设中级职称报名网站企业开发