51单片机设计一个三角波发生器

利用80C51和DAC0832设计一个三角波发生器
1,实现幅值可调 1~5V可调 阶梯为0.1V
2,频率可调 1HZ~100kHZ 阶梯为1HZ
以上全部采用汇编

幅值和频率都要利用单片机自身软件编程实现。。。。
求指点

需要两个模块,首先用51加一个8位DA转换器可以作一个方波输出,单片机输出的8位代码可以控制DA转换器的输出幅度,最后在加个积分电路,即可输出三角波了,很简单的追问

。。。。现在就是不懂如何利用键盘来控制幅值可调,频率可调已经占用了2个外中断,让它们延时一个时间常数就能实现频率可调。。但是幅值就不会了。。。。
还有,我的三角波是用A从00H加到FFH,然后从FFH自减到00H这样生成的,没有用方波生成

温馨提示:内容为网友见解,仅供参考
无其他回答

51单片机用汇编语言如何编写LED灯逐渐变亮在逐渐变暗啊
这个要用到软件的pwm,因为51的没有硬件的pwm所以只好自己写软件的了。首先,要做一个软件三角波发生器子程序,频率自己定,就是变亮变暗的周期。此函数的返回值作为pwm的输入值。再做一个pwm的模拟程序,占空比(0-100)是三角波发生器的输出,pwm模拟程序控制某个端口输出1和0的占空比来控制灯 的...

单片机8051设计简易波形发生器,要求能产生正弦波,方波,三角波,通过...
unsigned char cho=0; \/\/0:正弦波。1:方波。2:三角波。3:锯齿波。unsigned char num=0;unsigned char TIME0_H=0xff,TIME0_L=0xdc; \/\/定时器0的初值设置;全局变量.对应正弦波,锯齿波50HZ sbit chg= P1^0;sbit freq_u=P1^1;sbit freq_d=P1^2;sbit duty_u=P1^3;sbit ...

51单片机 ad9851怎么产生三角波
假设你用的并行输入的DAC(数模转换芯片),并且硬件电路设计是正确的,DAC输入端接的是P2。那么P2的输出由0x00~0xff再到0x00,周而复始,这就是三角波了。当然未必是0xff,也可以是其他的峰值。频率取决于你给P2赋值的时间间隔,当然51的机器时钟太慢,你不用指望输出频率有多高,有四五K就不错了。

如何运用单片机原理制作智能信号发生器,要求产生方波、矩形波、三角波...
sbitkey0 = P3^2;\/\/ 增减切换键 sbitkey1 = P3^3;\/\/个位,十位,百位,千位的控制切换 sbitkey2 = P3^4;\/\/ 调整位 sbitkey3 = P3^5;\/\/ 波形选择正弦、三角、矩形波,锯齿波 unsignedchar i,j;unsignedint counter,step,flag;typedefunsigned int uint;\/\/定时器0初始化 voidInit_Timer0...

基于单片机设计一个波形发生器,可产生方波、三角波、正弦波,且波形幅度...
波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。本次课程设计使用的AT89S51 单片机构成的发生器可产生锯齿波、三角波、正弦波等多种波形,波形的周期可以用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑等优点。在本设计的基础上,加上按钮控制和LED显示...

基于单片机的信号发生器的设计,输出方波,正弦波,三角波,锯齿波,频率可 ...
正弦波:如果有,以PCA模块为例,可以作为DA使用,使用前根据datasheet配置好PCA。在51头文件中有math.h,里面有sin(X)函数,可以在程序中直接使用,使用前在主函数重要包含math.H这个文件。然后每个点采样输出即可,频率可调可以通过不同方法实现,如果是要做信号发生器,推荐使用一个电位器,通过AD采集...

51单片机与DAC0832连接输出三角波
建三角波的斜线函数,设三角波的幅值=2V,采样10个点(红色斜线段),那么 K=2\/10;如此即可计算出Uo数列:0.2、0.4、0.6、。。。1.8、2.0,按顺序送到0832,下降线段就是反过来送。送数的快慢,反映在输出波形上的频率,采样点的多少,就决定了输出波形的相似度,也叫失真度;正弦波的计算...

利用89C51单片机设计多功能低频函数信号发生器,能产生方波、正弦波...
幅度的调节可以用双DA来做啊,也就是用另外一块DA来控制数据转换DA的基准电压。第二种方案:用单片机控制DDS芯片啊,比如用单片机控制AD9834,可以产生正弦波、方波、三角波,频率的调节就更简单了。幅度的调节也可以用双DA来实现,也可以先用电阻衰减再用运放放大,这样幅度就可以连续可调了。电路图和...

哪位大侠能帮我写个单片机输出三角波的C语言程序,最好能解释一下...
{ P0=count;} } } \/***\/ void Timer0(void) interrupt 1 using 0 { P2=0xa0;P0=0x01;if(P0_0==0){ while(P0_0==0);KEY=1;} TH0=0xEC;TL0=0x77;P2=0x40;EA=1;ET0=1;} 这是基于DAC0832的输出三角波的C语言程序!

基于AT89C51单片机波形发生器(汇编)
三角波 SWTTHWVG:MOV DPTR,#0DFFFH DA0 MOV R6,#80H DA1:MOV A,R6 MOVX @DPTR,A INC R6 CJNE R6,0FFH,DA1 AJMP DA0 方波:SSPWMG:MOV R5,#2 SETB TR0 CLR TR1 L0:MOV R5,#5 SETB TR0 CLR TR1 AJMP L3 L1:CLR TR0 CLR TR1 SETB P3.3 AJMP L5 L2:CLR TR0 SETB TR1 ...

相似回答