c语言方波生成程序,关于C#:在软件上生成方波以进行模拟输入/输出
我有一台设备,并且有数字量I / O,模拟量I / O。 我将以下命令发送到设备进行通信。该设备具有gpio模块。 我的设备处于休眠状态
写入数字输入:gpio set/clear x
从数字输出读取:gpio read x
从数字输出读取:adc read x
(x:针号)
如何创建正弦/方波并计算振幅? 要创建方波:
打开设备
睡觉
写入设备低模式(t0)
睡觉
写入设备高模式
睡觉
写入设备低模式(t1)
周期=(t1-t0)
这是方波吗?
嗯,看来您正在为USB到GPIO的减少编写SW,所以这不是直接针对MCU而是针对PC的代码吗? 而是通过一些驱动程序将数据发送到该USB板上。 您应该添加一些相关信息,甚至重新标记也是个好主意(如果可能,将设备名称添加到标记中)。 因此,现在我不确定我的答案是否适合此操作(可能存在计时问题),是设备同步IO端口还是异步设备(是否设置了IO应该切换或读取或发送命令的时间,那么是 执行+粗略延迟?)
看来你的例子确实是方波
如果write to device low mode(t0)将输出引脚设置为低电平,将write to device low mode(t1)设置为高电平或反向,则周期为睡眠时间加一定时间以设置GPIO状态。不知道为什么您有时间在GPIO设置线内而不是在睡眠中...(可能与平台有关?)
走向罪恶浪
使用带有一些预先计算的幅度表的DAC或PWM + RC滤波器,其中索引会定期增加。
BYTE sintab[32]={ 128,...,255,...,128,...,0,....,127 };
编码:128为零,255为+1和0为-1;现在只需添加一些索引:
int ix=0'
并偶尔(可能在某个计时器上)递增它并将输出设置为新值:
ix=(ix+1)&31;
如果到达终点,则31和31只会使索引从起点重新开始循环(sintab的大小必须为2的幂)。周期是计时器频率/ sintab大小
[笔记]
您可以根据自己的目的进行修改,例如使sintab[][]成为2D数组,其中第一个索引表示幅度,第二个索引表示ix。在较旧的平台(MCU)上,您可以将PWM序列直接编码到sintab端,依此类推...
您可以像这样预先计算sintab值:
sintab[ix]=128.0+127.0*sin(float(2.0*M_PI*ix)/32.0);
或者如果您的平台支持足够快的sin,则可以直接使用上面的行而无需实际的数组...
[edit1]
对于sinwave,您可以仅使用0/1状态。如果您需要模拟输出并且:
您有DAC(数模转换器)
然后将实际振幅发送给它,例如dac write sintab[ix];,它将为您在输出引脚上产生模拟电压。
您没有任何备用DAC,而是使用PWM脉冲宽度调制
避免使用DAC仍然是数字引脚的模拟输出,这是一个古老的技巧。它是这样的:
输出值是每个时间块的累积能量/电压,因此您生成方波信号
比率1:1表示一半周期为H,其余时间为L
比率2:1表示周期的2/3是H,其余L
输出为H的时间越长,输出值就越大。这仍然是数字输出,但是如果在其上连接任何非线性设备(如电容器或线圈),则energy inertia会导致H电压下降到一定水平,具体取决于方波比。最常见的是RC滤波器(R是串行的,C是接地的)。如果要驱动一些线圈(电动机),则不需要过滤器。这种用法通常会在机器附近发出通常会听到的高音调(PWM频率)...
PWM频率必须足够高(比正弦波频率高很多倍)
一些具有幅度和频率设置的PWM代码:
const int timer_T=1; // used timer interval [ms]
const int PWM_max=10; // PWM max amplitude+1
int PWM_s=0; // PWM actual step
int PWM_t=0; // PWM actual time
int PWM_a=3; // PWM amplitude <0,PWM_ratio_max)
int PWM_T=200; // PWM period [ms]
void OnTimer()
{
int PWM_T0=PWM_T/PWM_max; // PWM step period must be >=1 !!!
PWM_t+=timer_T;
if (PWM_t>=PWM_T0)
{
if (PWM_s<=pwm_a) gpio set x; else gpio clear x;
PWM_s++; if (PWM_s>=PWM_max) PWM_s=0;
PWM_t-=PWM_T0;
}
}
我不明白我如何使用sin表。 我只能将输出设置为0或1。但是表中的数字不同。 例如,数字为128,我应该设置为" 0"吗?
@sdn该设备没有仅DAC的ADC,因此您必须使用PWM。 首先创建具有可变比率和固定频率(睡眠(t0),睡眠(t1),t0 + t1 =恒定,t0 / t1为比率)的功能方波(通过示波器或LED检查)。 如果完成,则实现sintab ...如果没有示波器,那么如果PWM f高> 1KHz而sinwave频率低0.1Hz,您仍然可以使用LED,那么您应该会看到亮度变化...
@Sdn在C ++中添加了一些用于PWM的代码(直接在Opera内编写,因此可能会有错别字)计时器越快,获得的幅度步数越高或PWM频率越高
c语言方波生成程序,关于C#:在软件上生成方波以进行模拟输入/输出相关推荐
- matlab离散方波信号,MATLAB - 在ODE15s函数中生成方波信号?(MATLAB - Generate square signal in ODE15s function?)...
MATLAB - 在ODE15s函数中生成方波信号?(MATLAB - Generate square signal in ODE15s function?) 我试图从函数内部生成一个方形信号,通过O ...
- c语言课设宿舍管理程序,C语言程序课程设计宿舍管理软件.doc
C语言程序课程设计宿舍管理软件.doc 课程设计(论文) 题 目 名 称 宿舍管理软件 课 程 名 称 C语言程序课程设计 学 生 姓 名 学 号 系 .专 业 信息工程系.信息大类 指 导 教 师 ...
- 完成杂志续订c语言程序,C语言程序设计报告杂志订阅管理软件.doc
C语言程序设计报告杂志订阅管理软件 C 语 言 程 序 设 计 学院: 工程学院 班级序号: 学号: 20071003303 姓名: 华进 指导老师: 刘文中 前言 我们学习C语言课程设计的主要目的是 ...
- 杂志订阅管理系统c语言实训报告,C语言程序设计报告—杂志订阅管理软件、、.doc...
C语言程序设计报告-杂志订阅管理软件.. 中国地质大学(武汉)C语言课程设计报告 学 院: 专 业: 题 目: 杂志订阅管理系统 班 级: 姓 名: 学 号: 指导教师: 2011年1月9日 程序在最 ...
- 单片机用c语言编写测量波形频率和占空比,单片机测量方波的频率、占空比及相位差的方法...
1.频率及占空比的测量 如上图所示,当脉冲的上升沿来临时,将定时器打开:紧接着的下降沿来临时,读取定时器的值,假设定时时间为t1:下一个上升沿来临时关闭定时器,读取定时器的值,假设定时时间为t2.t1 ...
- c语言编写词库_C语言课程设计--电子生词库软件
C语言课程设计--电子生词库软件 程序设计基础实训任务书程序设计基础实训任务书 题目电子生词库软件 学生姓名 学号 班级 题目类型软件工程(R) 指导教师 一.设计目的一.设计目的 1.进一步掌握和利 ...
- C语言基于单链表的词典软件
C语言基于单链表的词典软件 实验1: 日期:2022-10-4 类型:设计型 题目:基于单链表的词典软件 内容: 利用单链表存储词典,可以实现从文件中加载数据.查询单词.添加词条.删除词条.将词典保存 ...
- govcl html5,GoVCL —— Go 语言开发的 UI 组件库 | 软件推介
原标题:GoVCL -- Go 语言开发的 UI 组件库 | 软件推介 由于现有第三方的Go UI库不是太大就是用的不习惯,或者组件太少.就萌生了自己写一个UI库的想法 项目介绍 由于现有第三方的Go ...
- 自动化专业怎么自学c语言,自动化专业可以自学哪些软件来提高自己
程序设计基本功.C/C++,Python或者JavaScript,无论程序语言多么千变万化,C/C++都是万变不离其宗的基础,深入学习可以有效地理解计算机程序设计的基础知识,同时由于C语言和硬件之间的 ...
- 单片机STC89C52_C语言代码_来回流水_软件延时
单片机STC89C52_C语言代码_来回流水_软件延时 //11.0592MHz: //50=3.3ms;80=5.2ms;100=6.5ms;1000=65ms; //5000=325ms;7800 ...
最新文章
- zookeeper快速入门——简介
- Using Graphviz dot for ERDs, network diagrams and more
- 如何把单精度二进制数转换成十进制数?
- matlab中画花瓣,matlab画心,画玫瑰花,表白合集
- 时间序列分析模型:ARIMA模型和SARIMAX算法
- 【千字过程分析】剑指 Offer 04. 二维数组中的查找
- 算法学习之循环结构程序设计
- Apache FOP与Eclipse和OSGi的集成
- DSPBuilder笔记
- 判断应用程序是否是当前激活程序(获得焦点的程序)
- 码农提高工作效率(转载)
- web和python前景_我想了解一下pythonweb和javaweb比较详细的学习成本和应用前景,谢谢!?...
- sybase 事务 超时返回_事务背景介绍(2):MongoDB中的逻辑会话
- java 通过经纬度计算巨鹿,中国主要城市经纬度查询
- webstorm2020.2.3下载安装教程
- TikTok怎么运营带货
- 万能险生存金什么意思,一文告诉你!
- GCSE英语语言考试-语言和结构
- 无所不能的Python竟然没有一个像样的定时器?试试这个!
- NLP中的attention机制总结