怎么用单片机做一个信号发生器?

如题所述

如果要求频率不是很高,可以采用PWM方式,优点是无需另外加DA,且输出分辨率可灵活调整。考虑到单片机的运算能力不强,你可以用EXCEL编制一个正弦信号在一个周期内的等间隔幅值表,比如说,将一个周期的正弦信号分为64个点,信号的峰值为1000,初始相位为0°,那么,这个表格的第一个点是0,第n点为1000*sin(2πn/64),用EXCEL将64个点的幅值计算完毕,按照需要的格式编制为编程语言能够接受的表格。利用单片机的一个定时器,定时器的溢出值设置为1000,溢出时,某个IO口输出低电平,再用一个寄存器存储输出点序号,序号为n时,根据输出点序号通过查表获取1000*sin(2πn/64)的数值,将定时器的计数值与1000*sin(2πn/64)比较,相等时,IO口输出高电平。不断循环执行上述程序,IO将输出占空比与正弦信号幅值成正比的方波信号,这就是常说的正弦调制PWM信号。设计一个增益可调的有源低通滤波器,PWM信号经过低通滤波器后,输出就是正弦波,调节低通滤波器的增益,即可改变正弦信号的幅值。当然,在设置PWM占空比时,将查表结果先乘以一个设定数值(一般是0~1的小数),也可以调节输出幅值。为了简化运算,可以是先乘以一个整数M,再除以N(N为128、256等2的幂的数值),M取值范围为0~N,因为这种除法可通过移位进行,程序简单,且运算速度快。追问

如果对硬件了解不好,那应该怎么着手,

温馨提示:答案为网友推荐,仅供参考
相似回答