仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
利用已知器件完成一个简易信号发生器的设计。
二、设计内容
请利用你熟悉的单片机和8路输出串行8位D/A转换器TLC5628设计一个锯齿波信号发生器,相关TLC5628资料请自行检索资料,设参考电压,电源电压,运算放大器型号任意。
设计要求及指标: (1)输出幅度。
(2)输出频率之间任意。
(3)画出设计简略电路。
四、设计步骤
1.通过TLC5628引脚图以及逻辑功能图,设计出符合要求的电路图(通过protus仿真)
电路图设计结果:
2.程序设计,通过TLC5628参数资料中的时序仿真,设计出产生锯齿波的程序
程序如下:
#include <reg52.h>
#include <intrins.h>
/*定义I/O端口*/
sbit CLK = P0^0; //串行时钟,下降沿有效
sbit DAT = P0^1; //串行数据
sbit LOAD = P0^7; //串行数据加载,下降沿有效
sbit LDAC = P0^3; //DAC更新锁存控制,下降沿有效
/*函数申明*/
void delayms(unsigned char ms);
void TCL5620_Write(unsigned char addr, bitrng, unsigned char dat);
void Init_TLC5620();
void jichiWave();
void delay5us(void); //误差 0us
/*函数定义*/
/*延时函数*/
void delayms(unsigned char ms)
{
unsignedchar i;
while(ms--)
{
for(i= 0; i < 250; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
void delay5us(void) //误差 0us
{
unsigned char a;
for(a=1;a>0;a--);
}
/*TCL5620 driver*/
void TCL5620_Write(unsigned char addr, bitrng, unsigned char dat)
{
unsignedchar n;
//发送通道地址
n= 3;
do
{
DAT= (bit)(addr & 0x02);
addr<<= 1;
CLK= 0;
CLK= 1;
}while(--n!= 0);
//发送RNG位
DAT= rng;
CLK= 0;
CLK= 1;
//发送8位DAC数据
n= 8;
do
{
DAT= (bit)(dat & 0x80);
dat<<= 1;
CLK= 0;
CLK= 1;
}while(--n!= 0);
//加载数据
LOAD= 0;
// delay5us();
LOAD= 1;
// delay5us();
LDAC= 0;
// delay5us();
LDAC= 1;
}
/*初始化TLC5620*/
void Init_TLC5620()
{
DAT= 1;
CLK= 1;
LDAC= 1;
LOAD= 1;
}
/*
TLC5620转换一次大概要12.5us
即最高80KHz
但是用51单片机,晶振为12MHz
最快产生一个方波为2us,即最高频率为500KHz
正弦波产生函数
用32个点
*/
void SinWave()
{
/*根据曲线光滑来选取采样点*/
codeunsigned char SinTab[] =
{
255,240,230,220,210,200,190,180,170,160,150,140,130,120,110,100,90,80,70,60,50,40,30,20,10,0
};
unsignedchar n;
for(n= 0; n < 25; n++)
{
TCL5620_Write(0,0,SinTab[n]);
delayms(1);
}
}
void main()
{
Init_TLC5620();
while(1)
{
SinWave();
}
}
3.烧录HEX文件
五、实验结果的仿真与验证
信号为锯齿波,符合设计要求。
六、实验总结
本系统的硬件电路非常简单,关键在于软件算法的设计。信号发生器的最重要指标就是频率的稳定性,因此,如何通过单片机来产生精确的控制信号以使频率稳定是其关键所在。本设计在程序中已设计好数据表格,每个周期的采样点数为40个。这样就将频率稳定问题转换为采样周期的精确定位问题了。
本设计采用定时器中断方式来产生精确的采样间隔,具体的算法。
首先是设定一个定时器中断的基准时间,然后将采样时间间隔,设置为定时器中断基准时间的整数倍,倍数参量可根据频率按键扫描函数的结果以及初值来确定。
D/A作为一种常见的应用电子仪器设备,传统的波形产生一般可以完全由硬件电路搭接而成,如采用555振荡电路发生正弦波、三角波和方波的电路便是可取的路径之一,不用依靠单片机。但是这种电路存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点。在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟机械振动等领域常常要用到低频信号源。而由硬件电路构成的低频信号其性能难以令人满意,而且由于低频信号源所需的RC要很大。大电阻,大电容在制作上有困难,参数的精度亦难以保证。体积大,漏电,损耗显著更是其致命的弱点。一旦工作需求功能有增加,则电路复杂程度会大大增加。
利用单片机采用程序设计方法来产生低频信号,其频率底线很低。具有线路相对简单,结构紧凑,价格低廉,频率稳定度高,抗干扰能力强,用途广泛等优点,并且能够对波形进行细微调整,改良波形,使其满足系统的要求。只要对电路稍加修改,调整程序,即可完成功能升级。
(1)分析确定设计方案。在分析的过程中一定要多查资料多听取意见,尽量站在别人的肩膀上少走弯路。对所选的也大概有了一些了解,下一步就是在这样一个基础上,综合已有的资料来更透彻的分析。
(2)查阅资料。上网查资料是必不可少的,目前各大搜索引擎都推出有自己特色的搜索服务,一定要找到适合自己的东西。
(3)学习的能力。明确了问题并且分析了然后就是如何实现的问题了。这个时候学习能力显得特别的重要。如何通过自己的努力把不明白的东西搞明白,这对学习的能力有很高的要求。接着自己开始编写简单的程序来检验一下学习的效果,理论学习和工作实际紧密结合起来。
(4)要实际动手,防止眼高手底。
仿真代码51hei下载地址:
prj.zip
(49.23 KB, 下载次数: 33)
|