单片机产生正弦波信号

目的:
实现一秒一次的正弦波频率变化,第一秒1K,第二秒2K,第三秒3K,第四秒4K,循环

问题:
正弦波输出有较大问题,第一个是正弦波输出的时候有较大失真,第二个是周期和我预想的不太一样,预计是一秒一次,但是实际上接近10s才变化一次。
晶振12MHz
谢谢帮忙啦!

ORG 0000H
SJMP MAIN
ORG 000BH
SJMP INTERRUPT

MAIN:
MOV DPTR,#TABLE //单片机初始化,定时器0工作方式1,定时为50ms
MOV TH0,#3CH
MOV TL0,#0B0H
MOV TMOD,#01H
MOV IE,#82H
MOV R0,#14H
MOV R1,#00H
MOV R2,#01H
MOV R3,#00H
SETB TR0

LOOP:
MOV A,R0
MOVC A,@A+DPTR //获取信号并输出
MOV P3,A
ACALL DELAY //点与点之间的延时,由R4(=R2)控制不同时间间隔
DJNZ R0,LOOP //整个正弦波的输出
MOV R0,#14H
SJMP LOOP //正弦波下个周期开始

INTERRUPT:
MOV TH0,#3CH //进入中断后复原TH0和TL0
MOV TL0,#0B0H
INC R3
CJNE R3,#14H,BACK //50ms输出20次,实现一秒一次的循环变化
INC R2
CJNE R2,#04H,BACK //判断是否到达第四秒,到达第四秒后复原
MOV R2,#01H
BACK:
RETI

DELAY:
MOV A,R2
MOV R4,A
DJNZ R4,$
RET
TABLE:
DB 07FH ,0A6H, 0CAH, 0E6H ,0F8H, 0FEH, 0F8H, 0E6H, 0CAH ,0A6H, 07FH, 058H, 034H, 018H, 006H ,000H
DB 006H ,018H ,034H, 058H
END

第1个回答  2015-07-05
单片机 外接AD转换芯片 再加运放 通过一定的控制程序就可产生正弦波。实现方法: 1、通过单片机DA来实现,需要通过查表法; 2、通过PWM方式实现; 不过都需要加硬件滤波电路来实现正弦波的平滑。
第2个回答  2015-07-05
一秒一次的正弦波频率变化,
第一秒1K,
--是 1KHz 吗?
--就是1秒钟输出1千个周期?
--即在 1ms 中,输出一个周期,共 20 个字节?
--50us,输出一次?

第二秒2K,--25us,输出一次?
第四秒4K,--12.5us,输出一次?

能做到这么快吗?
你用的晶振是多少?追问

12M的晶振,1、2、3、4KHZ的方波,没说清楚不好意思。

本回答被提问者采纳

利用单片机怎么产生正弦波信号
1、通过单片机DA来实现,需要通过查表法;2、通过PWM方式实现;不过都需要加硬件滤波电路来实现正弦波的平滑。

单片机如何输出正弦波
令单片机输出高、低电平,可以形成不同脉宽的脉冲波,再经过 RC 电路平滑滤波,就会出现不同高低电压的信号。这就可以近似实现正弦波或其它波形。

用51单片机产生正弦波,那个数据表怎么得到的?谢谢!
这个表是预先算好的,就是将标准正弦波上移1\/2幅值后模256。三角波和锯齿波也可以按相同方法计算得到对应的数值表。对一个周期取样256次,也就是说第0个取样点的弧度是0,第一个取样点的弧度值就是pi\/128,第二个取样点的弧度为(pi\/128)*2,依次类推。测峰峰值为256,所以f(x) = sin(x)*1...

如何用8051单片机输出正弦波形
1,用SPWM技术,在单片机中用正弦波表控制PWM脉宽,输出部分直接简单RC滤波即可得到正弦波。2,用方波直接RC得到近似的正弦波。

c51单片机产生正弦波原理
SPWM,就是在PWM的基础上改变了调制脉冲方式,脉冲宽度时间占空比按正弦规率排列,这样输出波形经过适当的滤波可以做到正弦波输出。

STC12C5410单片机中的pwm模块怎样产生三相正弦波信号
PWM即脉宽调制,调矩形波占空比的,因此它直接输出的是矩形波,要想得到正弦波,需要让这个占空比按正弦波规律输出,然后再对PWM滤波,此时PWM相当于DA 所以你用三路PWM,如上操作,就可以产生三路正弦波 至于相位和让占空比按正弦波规律变化,这写都得在程序中做文章。

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

正弦波,方波,三角波产生方案有几种
1、较低频率的正弦波可采用单片机产生正弦调制的PWM波,其后连接积分电路实现。2、采用运算放大器和RC阻容电路实现 3、采用RLC谐振选频网络实现 方波产生方案:1、采用555时基电路实现 2、采用门电路(反相器)及RC(也可附加晶振)实现 3、采用单片机定时器实现 4、采用运算放大器和RC阻容电路实现 三角...

怎样提高 用51单片机做的正弦波的 频率?
一般说来,用单片机产生较低频率正弦信号,可以用的DA很多,DA的速度也很快,比如DA0832虽然是几块钱的芯片,但速度是ns级的,反应很快速。但由于单片机速度限制了,所以不好达到。我这里罗列出一些提高速度的方案。第一,可以使用1T单片机使得速度更快 第二,程序上可以减少输出的采样值精度,比如8位da...

51单片机输出100Hz正弦波
用一个正弦数组(组数里装的是sin x的值,x的值正比于数组下标),然后把数组的值送给DAC,那么DAC输出的就是正弦波了

相似回答