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

C语言补习课番外篇——采样sin(x)

需求:让stm32的DAC输出正弦波形

分析:DAC的原理这里不作过多介绍。在[0,2π]的定义域内对sin(x)的值域进行采样,采样次数为256次;采样结果需要等比例缩放到0~4095的无符号数范围内,并且输出到一个SinFile.txt文本文档之中存放。sin(x)在[0,2π]上的值域为[-1,1],所以需要先整体在y轴向上平移一个单位长度把范围调整为[0,2]。0对应DAC模拟值0,1对应模拟值2048,2对应模拟值4095(精度损失暂时忽略)。

编程:

#include <stdio.h>
#include <math.h>#define  SampleNUM       sNUM            //采样点数量
#define  OutputVoltage   outV            //DAC需要的模拟值
#define  Pai             3.141592int main()
{char* path = "E:\\0_C&C++ Projects\\C\\Sin\\SinData\\SinFile.txt";FILE* file = fopen(path,"w");int sNum = 256;unsigned int outV = 0;for (int i = 0; i < sNum; i++){outV = (unsigned int)(0.5 * (sin(2 * Pai * i / sNum) + 1) * 4095);  //无符号数类型强转char str[12];  sprintf_s(str,12,"%u", outV);                                       //把无符号数强转变为字符串fputs(str, file);fputc(' ',file);                                                    //输出1个数要空一格if(!((i+1)%16))                                                     //每16个数换一下行fputs("\n", file);}fclose(file);return 0;
}

输出结果:

74c14178f2974c10b5db49676aa18b45.png

肉眼看不出来,先用excel验证一下。

数据->获取数据->导入数据;

4866f9e88b254bd297be89d8d1d3ca72.png

整行复制到sheet2,选择性粘贴并且转置;

e6d366bbe3a4436db2aa6c37a9599604.png

选中第一个数据插入->折线图;

01816f378e284c72a54af178dca27dd9.png

最后excel帮我画的图;

d3287d3f2df54e7aa95812fcd68cb228.png

到3/2π那边有点失真。。。采样点多能好点。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CustomerbasicController
  • 如何 吧一个 一维数组 切分成相同等分,一维数组作为lstm的输入(三维数据)的数据预处理 collate_fn的应用
  • c语言快递小项目
  • 深度学习速通系列:F1和F2分数
  • 边缘计算网关:连接中心计算与边缘设备的重要桥梁-天拓四方
  • C到C++入门基础知识
  • 数据结构基础讲解(八)——树和二叉树专项练习(上)
  • 【LLM:Gemini】文本摘要、信息提取、验证和纠错、重新排列图表、视频理解、图像理解、模态组合
  • windows检查端口占用并关闭应用
  • springboot 整合 nacos 配置实现多个环境不同配置
  • Mysql 视图存储过程触发器
  • TCP客户端编码和解码处理:发送和接收指定编码消息
  • 速通GPT:《Improving Language Understanding by Generative Pre-Training》全文解读
  • 【字幕】恋上数据结构与算法之012复杂度07leetcode
  • 小程序——生命周期
  • 【css3】浏览器内核及其兼容性
  • 【个人向】《HTTP图解》阅后小结
  • 08.Android之View事件问题
  • canvas 五子棋游戏
  • express.js的介绍及使用
  • Java编程基础24——递归练习
  • Java超时控制的实现
  • linux学习笔记
  • Objective-C 中关联引用的概念
  • Spring核心 Bean的高级装配
  • 技术胖1-4季视频复习— (看视频笔记)
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 小试R空间处理新库sf
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​iOS实时查看App运行日志
  • #AngularJS#$sce.trustAsResourceUrl
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • $$$$GB2312-80区位编码表$$$$
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (轉)JSON.stringify 语法实例讲解
  • .net 7和core版 SignalR
  • .Net Core 微服务之Consul(二)-集群搭建
  • .NET 反射的使用
  • .net 生成二级域名
  • .net 微服务 服务保护 自动重试 Polly
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET4.0并行计算技术基础(1)
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • /usr/bin/env: node: No such file or directory
  • [ C++ ] STL---仿函数与priority_queue
  • [1] 平面(Plane)图形的生成算法
  • [2023年]-hadoop面试真题(一)
  • [Algorithm][综合训练][拜访][买卖股票的最好时机(四)]详细讲解
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
  • [BZOJ1060][ZJOI2007]时态同步 树形dp
  • [C/C++随笔] char与unsigned char区别