基于AT89C52单片机简易函数信号发生器的设计(3)

2019-04-09 17:04

图4

74LS22为四输入双与门

A1,B1,C1,D1为第一个与门的输入,Y1为第一个与门的输出。

A2,B2,C2,D2为第一个与门的输入,Y2为第一个与门的输出。在此系统中用来给单片机提供中断信号。 3.2.5 放大部分 LM324 LM324引脚图(管脚图)

11

图5 LM324引脚图

简介:

LM324系列器件为价格便宜的带有真差动输入的四运算放大器。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。

3.3 系统的软件设计及接口电路

3.3.1 信号频率数据采集

本程序通过外部中断,接收减频或加频按键,单片机内部对接受的值经过运算得出波形的输出延时,从而产生频率的改变。电路较为简单,成本较低。 3.3.2 正弦波产生程序

输入正弦波的采样点,计算出256个(一个周期内)正弦波信号值。然后通过输出的两点间的延时来实现调频。依次循环输出,可得出正弦波。

采点值放在table2[]中,程序如下:

void sin()//正弦波 {

unsigned int i; for(i=0;i<256;i++)

{

12

}

}

DAC0832=table2[i]; delay(pinlv/256);

3.3.3 三角波产生程序

设个自变量i让它不断地自加1,直到加到255时,t=i,对t进行不断地自减1直到减到t=0,然后再不断地重复上述过程产生三角波。程序如下:

void tran()//三角波 { }

3.3.4 方波产生程序

设个自变量i=0使之延时一段时间,再另i=255时在延时与i=0相同的时间,然后再重复上述过程。程序如下:

void fang()//方波

unsigned char i; for(i=0;i<255;i++)

{ }

DAC0832=i; delay(pinlv/64);

for(i=255;i>0;i--)

{ }

DAC0832=i; delay(pinlv/64);

13

{ }

DAC0832=0; delay(pinlv/2);

DAC0832=0xff; delay(pinlv/2);

3.3.5 锯齿波产生程序

锯齿波中的斜线用一个个小台阶来逼近,在一个周期内从最小值开始逐步递增,当达到最大值后又回到最小值,如此循环,当台阶间隔很小时,波形基本上近似于直线。适当选择循环的时间,可以得到不同的周期锯齿波。锯齿波发生原理与方波类似,只是高低两个时延的常数不同,所以用延时法,来产生锯齿波,设个自变量i让它不断地自加1,直到叫到255,DAC0832可以又自动归0,然后再不断地重复上述过程。程序如下:

void jvchi()//锯齿波 { }

3.3.6信号放大模块设计

unsigned char i;

for(i=0;i<255;i++)

{ }

DAC0832=i; delay(pinlv/256);

从单片机中输出的数字信号经过DAC0832转换后,由于信号的幅值比较小,所以

14

需要放大。采用常规的放大方式,采用两片运放,实现两级放大,设计的电路如图6:图6

图6放大电路接口

3. 3. 7数模转换模块设计

本设计模数转换采用常见的芯片:DAC0832,本设计采用直通方式进行模数转换。为了简洁起见,在仿真图中采用网络节点的方式进行连线,从单片机P0口输出的数据直接连接到模数芯片DAC0832的数据口。如图:

图7 DA转换接口电路

15


基于AT89C52单片机简易函数信号发生器的设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:冬吴相对论 文字版 第311-320期

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: