用单片机输出 方波 三角波 及锯齿波

作者&投稿:马池 (若有异议请与网页底部的电邮联系)
基于单片机的信号发生器的设计,输出方波,正弦波,三角波,锯齿波,频率可调。原理是如何哒?怎么取点~

51单片机硬件有PCA模块的,或者是PWM发生器的型号,也有没有的,你采用的芯片有没有这些硬件?
正弦波:
如果有,以PCA模块为例,可以作为DA使用,使用前根据datasheet配置好PCA。在51头文件中有math.h,里面有sin(X)函数,可以在程序中直接使用,使用前在主函数重要包含math.H这个文件。然后每个点采样输出即可,频率可调可以通过不同方法实现,如果是要做信号发生器,推荐使用一个电位器,通过AD采集电压,将采集值作为你输出函数的系数即可,亦可以通过串口发送指令等方式实现,前提要在使用前将AD或者串口配置好。
如果没有硬件模块,也可以用普通IO口模拟,思路如下,经过y=sinx函数求得的结果,经过算法转化成二进制(主要是将小数转化成二进制的算法),推荐转化成8的整数倍位,比如8位二进制或者16位二进制。转化结束后将结果给IO口输出即可,频率也可采取上述方法设定。
三角波:
如果有DA,将DA的输入值按一定时间自增,到达峰值后按一定时间自减。前文中的“一定时间”设定的足够小,可以近似认为是三角波。三角波输出频率就是周期,在具体到操作层面时,可以将输出函数前加上一个时间系数,还是通过调节正弦波的频率的方式调节。
木有DA···还是和正弦波类似,通过算法将输出值转化成二进制,然后送给IO口
方波:
这个最简单,将IO口定时切换高低电平即可,你定的时间就将成为你输出的频率。
如果有PCA模块,可配置成定时翻转模式,比较方便~
锯齿波是不是和方波类似啊?

基本知识点:
1、定时器
2、PWM
方波、三角波的实现方法:
1、PWM固定占空比1:1,实现对称方波输出
2、方波后连接积分电路,可将方波变为同频率的三角波。
实现以上功能较容易,且可实现的频率范围较宽。
锯齿波实现方法:
锯齿波实现方法稍显麻烦,不过硬件电路原理与三角波类似。
区别在于锯齿波在一个周期内输出若干个占空比不同的方波,每个方波的占空比除了最后一个点之外,呈线性递增。这样出来的信号还不是锯齿波,需要经过积分电路才能转变为锯齿波。由于一个周期需要输出多个方波(个数越多,精度越高),因此,锯齿波的频率不能太高。
锯齿波个人建议采用AD或专用的信号发生器电路。


聊城市19674462885: 单片机汇编语言编程 方波源程序如下,锯齿波和三角波的源程序怎么编写? -
鬱容赛茜: 看你的程序,你的电路图应该是这样的吧(用P2.0做片选) 锯齿波源程序如下: ORG 0000H AJMP START ORG 0050H START: MOV DPTR,#0FEFFHLP: MOV A,#00HLP1: MOVX @DPTR,A INC A AJMP LP1 END 三角波源程序如下: ...

聊城市19674462885: 帮忙解决下:使用51单片机,产生方波、锯齿波、三角波等波形,频率可调.并且能实现在protues中的仿真 -
鬱容赛茜: 由于晶振的精度很高,假设没有误差.那么单片机采用定时器用中断的方式产生方波,程序设计合理,其平均误差是可以忽略不计的.但是,就每一个周期而言,误差是不可避免的.1、中断响应需要时间,并且,响应的时间是不一样的.因为51执行不同指令时,所需的时间不同,而响应中断前,必须执行完当前指令.这个误差在1~3个机器周期之内.2、如果程序中有多个中断,当正在执行另外一个中断时,不能及时响应,这种情况可以导致很大的误差,这种情况的程序中不存在.不知道你误差有多大,晶振是多少?如果误差大,应该先检查分频系数是否正确.

聊城市19674462885: 用单片机汇编三角波和方波是以什么思路进行的? -
鬱容赛茜: 这个,用DA,然后用CODE数据输出就行了(用数组也就是把连续信号编程离散的数据信号),去了解一下DA.

聊城市19674462885: 设计一个单片机汇编程序,要求一按开关,就出现锯齿波,三角波,方波,正弦波. -
鬱容赛茜: 编程就是让计算机按你的方法运算罢了,而我们可以用很多方式,即使描述的在详细你也不一定就全理解,设计本身需要有很好的理论框架,根据这个框架去完成更科学性,你没有要求频率只是需要的是波形在示波器上显示,看来是个试验项目.等待高人

聊城市19674462885: 如何用芯片AD8034将方波变成锯齿波 -
鬱容赛茜: 可参考运放构成的积分电路. 通过二极管的导向选择不同的积分电路参数,即可得到锯齿波. 但是如果输入的方波信号占空比是可调的,那么电路就复杂了.

聊城市19674462885: 试用c语言编写一个通过三按钮查键子程序分别输出方波,三角波,锯齿波的单片机程序 -
鬱容赛茜: 如果该程序的频率是错误的, “TH0 = 0XF6 ;/ /初始值的246句话0xf6向上调整,增加值将提高精度. / ************************** MCU:S52 水晶:24M **************************** / #包括<reg52.h> SBIT输出= P1 ^ 0 ;/ / P1.0引脚输出100K 或无效timer...

聊城市19674462885: 哪位高手会做单片机的波形发生器(方波,锯齿波,三角波)帮个 忙吧 谢了^ - ^
鬱容赛茜: 方波:已知周期和占空比,用定时器做,一段时间高电平,一段时间低电平就OK了 锯齿波与三角波用DA转换器.锯齿波就是从00加到FF,每次加一小段延时.到FF后再循环. 三角波和锯齿波类似就是从00加到FF,再从FF减到00,然后循环. DA转换芯片可以产生不同占空比的矩形波,梯形波甚至组合波. 希望我的回答能给你一电提示

聊城市19674462885: 单片机或者 FPGA能不能通过设计程序 输出正弦波 锯齿波以及其他波形? -
鬱容赛茜: 用DDS方法去产生你需要的任意波形,比如AD9850,单片机控制其产生正弦波或者锯齿波,频率可以任意调整. 一个DDS芯片AD9850,一片单片机AT89S52,全搞定,比你用FPGA简单多了吧?

聊城市19674462885: 想用51单片机做一个波形发生器,频率幅度可调,最高频率500khz,用C语言编写. -
鬱容赛茜: 以单片机为基础,设计并开发能输出多种波形(正弦波、三角波、锯齿波、方波、梯形波等)且频率、幅度可变的波形发生器.http://www.eeskill.com/file/id/19068.

聊城市19674462885: 如何利用51单片机产生一个200HZ的三角波 -
鬱容赛茜: 用IO口结合定时器产生100HZ的方波,再用积分电路输出三角波.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网