单片机波形发生器,用汇编语言编程~!!!!!!!!!!急急急求程序~~~~汇编语言哦,小弟纠结好多天 15
1. 具有产生正弦波、三角波和方波三种周期性波形的功能
2. 通过键盘选择输出信号类型、幅值、周期等相关指标
3. 输出波形的频率为100Hz-20KHz
4. 具有显示输出波形的类型、频率和幅度的功能
扩展功能:
1. 输出频率扩展至100Hz-200KHz
2. 键盘控制产生任意波形 展开
我用纯硬件做过DDS信号发生器,也就是你现在要做的这个东西-直接数字信号发生器,因为这玩意过于复杂,另外你一定懂编程,所以我只给你个方案。
方案1:纯粹用单片机产生,我建议采用查表法,使用MATLAB对正弦波采样,获得离散化的也就是数字化的正弦波,即正弦波表,这里要注意,正弦波峰值不要超过一个字节(当然如果你用的是8位单片机的话),否则,你要通过汇编语言处理的,当然一个字的话波形的幅值调节范围就很大了,另外,采样的点数要适当,以便产生漂亮的平滑漂亮的波波形; 编程查询该表,使用DPTR输出(使用P0、P2口)就可以了,这只能输出一种频率的并行数字正弦波,你可以控制相邻两次访问表的时间间隔,这样就改变了正弦波的周期或者说是频率; 幅度更容易,在每次访问到表的数值上减去你所想要的幅值步进值就可以改变幅值了。 我们要能够用示波器观察的波形,也就是模拟正弦波,现在我们有了数字的正弦波,自然得使用数模转换器,位数越高越好,那得看你的正弦波表是几位的,如果是一个字节(8位),就用8位的就够了,一个字的用16位的,当然位数越高越贵,建议你用8位的(推荐DAC0832,好像是13位的),便宜(10块左右),这样你就得到了模拟的正弦波,但是是阶梯状的,原因你自己想,加个低通滤波器,这样大功告成,你就得到了真正的正弦波(在正弦波的输出口上加个比较器就得到同频率同幅值的方波,在方波的输出口上加一个积分器就得到了三角波,这个不符合你的要求了,你要采用键控实现,我这里是硬件实现)当然,输出的信号可能比较微弱,建议你加个放大器。三角波跟正弦波的方法一样,但是方波不用这么麻烦,直接延时或者定时就可以了。其他的就是编程问题,我不在累述。
方案2:使用专门的DDS芯片,如AD9850等,用单片机控制DDS芯片,这个很简单,你查一下AD9850的使用手册就可以了,输出你要加滤波等等,手册上都有。其他的就是编程问题,我不在累述。
这个东西工作量很大,建议找几个合适的搭档,希望能帮到你,!
最后,我在百度文库了上传了题为《DDS信号发生器说明书》和《DDS信号发生器电路图》的文档,感兴趣看看,可能对你理解我提供的方案有帮助。
数值波形可以是不同的。
间隔是不同的波形周期可以是不同的。