用单片机制作的简易信号发生器

🏠 首页 《无线电》杂志 2005年 🔗 第5期 🔗 第38页 分类:电脑·单片机·通信 🔗 杜丽芳 🔗

笔者制作了一个简易的信号等发生器,可产生正弦波、三角波、方波等。如果电路及源程序经过适当改动,还能产生任意的波形。该信号发生器利用单片机的定时器0进行定时,使单片机往其数据端(P0口)定时发送数据来控制DAC0832,实现由数字量向模拟量的变换,从而产生各种需要的波形。其电路硬件结构简单,适合电子爱好者制作,且源程序用C语言编写,容易理解。该电路实现的功能是,当按一下SB1产生正弦波,按两下产生三角波,按三下产生方波。另外该电路还可以加大、缩小和显示产生信号的频率。

一、硬件电路(参照原理图1)

图1
图1 🔍原图 (850×725)

1.电源:
AT89C52单片机需要5V直流稳压电源。为了使电路性能更好,可以在74LS138和DAC0832的V\(_{CC}\)和GND上跨接一个0.1μF的瓷片电容,进行滤波消噪。


2.晶振时钟电路:
12MHz的晶振、C1、C2构成了简单的晶振振荡电路,为CPU提供12MHz的时钟。


3.操作控制电路:
利用键SB1控制发出正弦波、三角波、方波; SB2键加大发波频率;SB3键减小发波频率; SB4键控制数码管DS1、DS2、DS3分别显示频率的百位、十位、个位。C3、R1、R2和 SB键构成了简单的上电复位电路。


4.地址译码及数据锁存电路:
地址译码电路用一片三-八译码器U6即可,而U3~U5组成数据锁存电路。


5.D/A转换电路:
采用芯片U2(DAC0832),将单片机输出的数字信号转变为模拟信号,经U4A(LM342)放大输出,将示波器的一个通道接到OUT端即可看到发出的相应波形。

二 、软件系统

软件系统分为两个部分:主程序部分,中断服务程序产生信号部分。

主程序主要功能是判断键是否按下,另外还有设置定时器,设置中断,循环往复检查是否有键按下等功能。

中断服务程序的主要功能是当定时器定时一到,就关闭定时器,并且判断是哪个键按下的,然后根据按下的键来发不同类型的波形。

用C语言编写的源程序见本期配刊光盘。

文/杜丽芳