正弦波发生器(4-99Hz,AD转换)

介绍

通过按键调整输出正弦波频率的大小,最小单位为1Hz,输出频率的可调范围为从4Hz到99Hz。使用的单片机为STC89C52RC,AD转换器为TLC5615,显示器为LCD1602。

总体方案及设计思路

本作品以STC89C52RC单片机为核心,由串行口下载电路、D/A转换电路、按键电路、电源电路和LCD1602显示电路六部分组成。采用MATLAB软件绘制一个正弦波,并对其进行采样量化编码得到一个正弦波的编码,进而利用KEIL5为编程软件并用C51语言为编程语言来设计正弦波发生装置。
本作品的总体设计思路为:先通过MATLAB对正弦波进行采样、量化、编码,再利用STC89C52RC单片机将编码传输到TLC5615内,即可输出一个正弦波信号,通过设置单片机定时器传输一个编码的时间从而控制正弦波的频率。

硬件框图

该作品主要由STC8952RC最小系统、串行口下载电路、D/A转换电路、按键电路、电源电路和LCD1602显示电路等六部分组成。LCD1602直接连接52单片机,显示输出正弦波的频率,并能够根据外部信息进行实时刷新和调整。程序经由串行口下载电路下载到单片机后,系统根据按键信息调整输出正弦波的频率值(初始输出频率为4Hz)。D/A转换电路将系统提供的数字量转换为模拟量进行输出。电源电路负责为整个开发系统进行供电。
在这里插入图片描述

软件流程图

LCD1602用来显示设置输出的正弦波的频率,四个按键分别控制正弦波频率的增加和减少,定时器0中断中控制单片机向TLC5615芯片传输正弦波编码。程序开始时,先进行定时器和LCD1602的初始化,之后在while(1)循环中检测按键是否按下,并进行相应频率的调节,之后根据设置的频率计算每个字节传输所需要定时的时间。

MATLAB采样量化编码程序

MATLAB程序如下:

f0=1; %设置正弦波信号的频率
T0=1/f0; 
t=0:0.01:T0;
xt=127*sin(2*pi*f0*t); %产生正弦波信号
fs=36*f0; 
Ts=1/fs;
n=0:1:T0/Ts-1;  %采样点数
xn=127*sin(2*pi*f0*n*Ts)+128;
Xn=round(xn);   %转化为整数(量化)
hn=dec2hex(Xn)  %十进制转化为十六进制(编码)
stem(n,Xn);

运行结果:
在这里插入图片描述

TLC5615传输程序

void TLC5615_DAC(uint da)
{
  uchar i;
  da<<=2;
  CLK=0;
  CS=0;
  for(i=0;i<10;i++)
  {
     DIN=(bit)(da&0x200);
     CLK=0;
		da<<=1;
		CLK=1;
	}
	CS=1;
	CLK=0;
}

测试结果

硬件测试结果:

设定值(Hz)测量值(Hz)
66.002
77.002
88.000
99.001
1010.00
2020.01
3030.02
4040.00
5050.13
6060.22
7070.38
8080.03
9090.10
9999.59

软件仿真结果:
f=4Hz:
在这里插入图片描述
f=50Hz:
在这里插入图片描述
f=99Hz:
在这里插入图片描述

原理图

在这里插入图片描述

整体程序

https://download.csdn.net/download/qq_45416964/18698921
其中包括MATLAB采样量化编码程序和KEIL程序。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值