» 用单片机生成正弦波Windingway

Posted by windingway on 六月 6, 2010

浮躁的时候就要找点确切的事情干干.

这个xx决定造个正弦波出来- -(老是读不对,弦(xian))

嗯哪,用pwm好麻烦(⊙o⊙)…,找到之前买的FPGA扩展板上的一片DAC,TLC5620.

TLC5620,德州仪器出品8bit,4通道DAC,可为每通道单独设置参考电压,这里用通道A,参考电压=Vcc=5V.

先写个程序让DAC从0线性跑向5V,然后再跑回来,这样就是三角波了.这个好办,看好时序,然后让DAC的D值从0++到255,然后再从255–到0.

正弦该怎么搞呢,sin(0°)=0,sin(90°)=1.把之间的值折算到0~255的范围,也就是D=255*sinα咯.对头,得先整个正弦表,正弦表好搞,直接在Google里搜索sin table从NASA那里得到一份.不过是图片,难道还得手动输入?貌似WPS表格有公式的吧,不过表格的操作只在大学一年级的时候还记得,现在早忘干净啦.试着弄了一下,里面的=sin()是弧度制的..好吧,让A列=1,2,3…90(角度);B列=An*pi()/180(弧度);C列=sin(Bn)(正弦值).OK了,不过还得四舍五入到整数,这里面有int函数,直接抛弃小数取整,恩,四舍五不入.上网搜索下,有round函数round(number,期待小数位数),这里显然期待小数位数=0.那么D列=round(Cn,0).好了,把D列做成数组sin_table[91]就成啦.

不过输出的正弦只有0-180°的一二象限的非负值,想要完整的正弦值,还得有反相电路帮忙才行.


Technorati : , , ,
Flickr : , , ,

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

郑重声明:资讯 【» 用单片机生成正弦波Windingway】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——