重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
可以产生弦波、方波、三角波、三角波、梯形波及其他任意波形,波形的频率(最大790HZ)和幅度在一定范围内可任意改变。波形和频率的改变通过软件控制,幅度的改变通过硬件实现。
站在用户的角度思考问题,与客户深入沟通,找到娄星网站设计与娄星网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计、成都网站建设、企业官网、英文网站、手机端网站、网站推广、域名与空间、虚拟空间、企业邮箱。业务覆盖娄星地区。
由于51单片机不适宜进行实时正弦运算,所以一般是将正弦波按度数分解并预先计算好,生成一个表固化到程序中,然后51按照所需的周期定时查表喂给0832就行。
unsigned char cho=0; //0:正弦波。1:方波。2:三角波。3:锯齿波。
AT89C51与DAC0832频率1MHZ ,简直就是异想天开,51的指令周期才1M,怎么可能输出1M的正弦波!基于51单片机的信号发生器-完整电路、程序 http://wenku.baidu点抗 /view/effec6f2ba0d4a7302763a1html 免费的。
首先需要建立一个产生三角波、方波和正弦波的波表,然后定时将波表里的数据通过端口刷新至dac0832,然后0832的模拟输出端口即可输出想要的波形,通过控制波表数值的刷新频率即可调整输出频率。
这要费些时间的,不会有人专门给写的,除非有人正好做过。我现在发一个类似的,是别人的,正好被我看到了,你可以参考一下。
1、如果是有无波形,你的硬件上,肯定会引起中断,中断中检测这个IO对应寄存器的值就行。通常1表示高电平,0表示低电平。
2、while(T1);while(!T1);TR1 = 1;while(T1);while(!T1);TR1 = 0;完毕,方波周期在THTL1中。
3、这段代码根本就不是用定时器产生方波,而是靠延时硬憋出来的。 这段代码可能是配合触发器之类工作的,其结果是在P0上产生8个跳变沿。
4、如果是模拟出来的话,频率是1Mhz,首先你要有一个1Mx2的定时,这个2Mhz的定时每次计数到达的时候将对应的io口翻转,频率为1M周期为1us的方波就出来了。大部分单片机都有pwm功能直接配置寄存器使能就可以输出对应的频率方波。
5、频率低的单片机中断可以搞定,很高的话就用高级单片机比如说dsp stm32等,他们的捕获模式很精确,而且可以测量很高的频率。
6、诊断服务程序可以用来读取这个计数值并进行计算。
1、如果是模拟出来的话,频率是1Mhz,首先你要有一个1Mx2的定时,这个2Mhz的定时每次计数到达的时候将对应的io口翻转,频率为1M周期为1us的方波就出来了。大部分单片机都有pwm功能直接配置寄存器使能就可以输出对应的频率方波。
2、100K的方波对51来说要求太高了,尽量不要用,这个程序如果频率不对,对 “TH0=0XF6;//初始值246”这句里的0xf6调整下,向上增加数值会提高精度。
3、测量T1输入方波周期的程序如下:TMOD = 0x50 //令T1方式1计数 while(T1);while(!T1);TR1 = 1;while(T1);while(!T1);TR1 = 0;完毕,方波周期在THTL1中。
4、用C语言编写一段程序,使用查表的方式使单片机控制DAC0832产生一个电压值在0~5V之间的方波。
5、诊断服务程序可以用来读取这个计数值并进行计算。