20、基于51单片机的函数发生器四种波形频率系统设计

这篇具有很好参考价值的文章主要介绍了20、基于51单片机的函数发生器四种波形频率系统设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

摘要

设计了一个基于DAC0832的信号发生器,使之输出不同频率的正弦波、三角波、锯齿波和方波,并通过按键切换不同的波形,也可以改变频率以及频率变化的步进。本方案选择了DAC0832作为核心芯片,并与51单片机结合,设计出一款建议的高精度频率信号发生器,具有体积小功率等优点。DAC0832是国家半导体公司生产的一款DA转换器。为了实现幅度可程控的功能,这里选用了2个DAC0832芯片完成功能,其中一个用来产生波形,另外一个设计成程控放大器进行改变幅度,它的放大倍数通过DAC0832的数字端口来实现,根据设定的输出幅值,单片机只需要通过公式换算出给予的对应电平。所有要输出的参数都能通过液晶LCD1602显示。

关键词:单片机; LCD1602;信号发生器;DAC0832

1 引言

1.1 目的和意义

信号发生器亦称信号发生器,主要作为实验用信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。目前,市场上常见的波形发生器多为纯硬件的搭接而成,波形种类多为锯齿、正弦、方波、三角等波形。用分立元件组成的信号发生器,通常是单信号发生器且频率不高,其工作不很稳定,不易调试;用集成芯片的信号发生器,可达到较高的频率和产生多种波形信号,但电路较为复杂且不易调试。利用DA转换器配合单片机可以实现波形产生的功能,而且可以根据需要进行调整,设计灵活。

当今是科学技术及仪器设备高度智能化飞速发展的信息社会,电子技术的进步,给人们带来了根本性的转变。现代电子领域中,单片机的应用正在不断的走向深入,这必将导致传统控制与检测技术的日益革新。单片机构成的仪器具有高可靠性、高性能价格比,在智能仪表系统和办公自动化等诸多领域得以极为广泛的应用,并走入家庭,从洗衣机、微波炉到音响汽车,处处可见其应用。因此,单片机技术开发和应用水平已逐步成为一个国家工业发展水平的标志之一。

信号发生器作为一种常见的应用电子仪器设备,传统的一般可以完全由硬件电路搭接而成,如采用555振荡电路发生正弦波、三角波和方波的电路便是可取的路径之一,不用依靠单片机。但是这种电路存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点。在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟机械振动等领域常常要用到低频信号源。而由硬件电路构成的低频信号其性能难以令人满意,而且由于低频信号源所需的RC要很大。大电阻,大电容在制作上有困难,参数的精度亦难以保证。体积大,漏电,损耗显著更是其致命的弱点。一旦工作需求功能有增加,则电路复杂程度会大大增加。

信号发生器作为一种常见的电子仪器设备,既能够构成独立的信号源,也可以是高新能的网络分析仪,频谱仪以及自动测试装备的组成部分,信号信号发生器的关键技术是多种高性能仪器的支的组成部分,信号信号发生器的关键技术是多种高性能仪器的支撑技术,因为它是能够提高质量的精密信号源及扫描源,可使相应系统的检测过程大大简化,降低检测费用并且提高检测精度。

1.2 研究概况及发展趋势

波形发生器是能够产生大量的标准信号和用户定义信号,并保证高精度、高稳定性、可重复性和易操作性的电子仪器。信号波形发生器具有连续的相位变换、和频率稳定性等优点,不仅可以模拟各种复杂信号,还可对频率、幅值、相移、波形进行动态、及时的控制,并能够与其它仪器进行通讯,组成自动测试系统,因此被广泛用于自动控制系统、震动激励、通讯和仪器仪表领域。在 70 年代前,信号发生器主要有两类:正弦波和脉冲波,而信号发生器介于两类之间,能够提供正弦波、余弦波、方波、三角波、上弦波等几种常用标准波形,产生其它波形时,需要采用较复杂的电路和机电结合的方法。这个时期的波形发生器多采用模拟电子技术,而且模拟器件构成的电路存在着尺寸大、价格贵、功耗大等缺点,并且要产生较为复杂的信号波形,则电路结构非常复杂。同时,主要表现为两个突出问题,一是通过电位器的调节来实现输出频率的调节,因此很难将频率调到某一固定值;二是脉冲的占空比不可调节。在 70 年代后,微处理器的出现,可以利用处理器、A/D/和 D/A,硬件和软件使波形发生器的功能扩大,产生更加复杂的波形。这时期的波形发生器多以软件为主,实质是采用微处理器对 DAC的程序控制,就可以得到各种简单的波形。90 年代末,出现几种真正高性能、高价格的信号发生器、但是HP公司推出了型号为 HP770S的信号模拟装置系统,它由 HP8770A任意波形数字化和 HP1776A波形发生软件组成。     HP8770A实际上也只能产生8 中波形,而且价格昂贵。不久以后,Analogic公司推出了型号为 Data-2020的多波形合成器,Lecroy 公司生产的型号为9100 的任意波形发生器等。 到了二十一世纪,随着集成电路技术的高速发展,出现了多种工作频率可过 GHz 的DDS 芯片,同时也推动了信号波形发生器的发展,2003 年,Agilent的产品 33220A能够产生 17  种波形,最高频率可达到 20M,2005 年的产品N6030A  能够产生高达 500MHz  的频率,采样的频率可达 1.25GHz。由上面的产品可以看出,信号波形发生器发展很快近几年来,国际上波形发生器技术发展主要体现在以下几个方面:

(1)过去由于频率很低应用的范围比较狭小,输出波形频率的提高,使得波形发生器能应用于越来越广的领域。波形发生器软件的开发正使波形数据的输入变得更加方便和容易。波形发生器通常允许用一系列的点、直线和固定的信号段把波形数据存入存储器。同时可以利用一种强有力的数学方程输入方式,复杂的波形可以由几个比较简单的公式复合成 v=f (t)形式的波形方程的数学表达式产生。从而促进了信号波形发生器向任意波形发生器的发展,各种计算机语言的飞速发展也对任意波形发生器软件技术起到了推动作用。目前可以利用可视化编程语言(如Visual Basic ,Visual C 等等)编写任意波形发生器的软面板,这样允许从计算机显示屏上输入任意波形,来实现波形的输入。

(2)与VXI资源结合。目前,波形发生器由独立的台式仪器和适用于个人计算机的插卡以及新近开发的VXI模块。由于VXI总线的逐渐成熟和对测量仪器的高要求,在很多领域需要使用VXI系统测量产生复杂的波形,VXI的系统资源提供了明显的优越性,但由于开发VXI模块的周期长,而且需要专门的VXI机箱的配套使用,使得波形发生器VXI模块仅限于航空、军事及国防等大型领域。在民用方面,VXI模块远远不如台式仪器更为方便。

(3)随着信息技术蓬勃发展,台式仪器在走了一段下坡路之后,又重新繁荣起来。不过现在新的台式仪器的形态,和几年前的己有很大的不同。这些新一代台式仪器具有多种特性,可以执行多种功能。而且外形尺寸与价格,都比过去的类似产品减少了一半。

2.1主控模块的选型和论证

方案一:

采用MSP430系列单片机,该单片机是TI公司1996年开始推向市场的一种16位超低功耗的混合信号处理器。其内部集成了很多模拟电路、数字电路和微处理器,提供强大的功能。不过该芯片昂贵不适合一般的设计开发。

方案二

采用51系列的单片机,该单片机是一个高可靠性,超低价,无法解密,高性能的8位单片机,32个IO口,且STC系列的单片机可以在线编程、调试,方便地实现程序的下载与整机的调试。

因此选用方案二中的51系列单片机作为主控芯片。

2.2显示模块的选型和论证

方案一:

采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较合适,如采用在显示数字显得太浪费,且价格也相对较高,所以不用此种作为显示。

方案二:

采用LED数码管动态扫描,LED数码管价格虽适中,对于显示数字也最合适,而且采用动态扫描法与单片机连接时,占用单片机口线少。但是由于数码管动态扫描需要借助74LS164移位寄存器进行移位,该芯片在电路调试时往往有很多障碍,所以不采用LED数码管作为显示。

方案三:

采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,对于本设计而言一个LCD1602的液晶屏即可,价格也还能接受,需要的借口线较多,但会给调试带来诸多方便。

所以本设计中方案三中的LCD1602液显示屏作为显示模块。

2.3信号产生模块的选型和论证

方案一:

利用R2R型DA转换器DAC0832进行产生信号,把要产生的信号根据其规则建立一个ROM表,单片机每隔一段时间根据ROM表的值去改变数模转换器的电压输出值,如果ROM表示根据正弦变化记录的表则输出的波形则为正弦波,如此类推,只用通过改变时间的间隔即可改变输出波形的频率。

方案二:

利用集成芯片DDS芯片AD9833进行产生信号,该芯片可以通过与单片机通信设定其输出波形和频率,而且设定的频率精度非常高。DDS芯片中主要包括频率控制寄存器、高速相位累加器和正弦计算器三个部分。频率控制寄存器可以串行或并行的方式装载并寄存用户输入的频率控制码。

方案一由于使用的独立的DA转换器,设计比较灵活,只要预先先把波形的ROM表生产好存储到单片机内即可输出,定频率的设定波形而选用DDS芯片则只需要通过固定的时序控制则能方便产生设。但是由于DDS成本较为高昂,因此本设计选用DA转换器来实现波形产生的功能。

2.4程控放大模块的选型和论证

方案一:

选用DAC0832搭配外部电路构成程控放大器,由于DAC0832是一个8位DA转换器,因此能设置成256档放大倍数。通过单片机控制DA转换器的数字端口即可改变放大倍数。

方案二:

选用VCA810作为主芯片进行程控放大,VCA是一款高性能的压控放大器芯片,它有一个增益控制引脚,用户可以通过改变该脚的电压进行增益的控制,增益的控制范围为-40dB~40dB,不过VCA810需要搭配外部的DA转换器才能实现程控放大的功能。

由于DAC0832的价格较VCA810便宜,而且VCA810需要搭配外部DA转换器才能实现增益改变的功能,因此这里选用DAC0832进行程控放大。

一、硬件方案

硬件组成:本系统采用51单片机+LCD1602+DAC0832+按键+UA741等而成。

二、设计功能

1. 单片机型号:STC89C52/51、AT89C52/51、AT89S52/51都可通用。
2.产品自带单片机上电复位电路、手动复位电路(复位按键)、晶振电路(给单片机提供时钟周期)。
3.可以通过按键设置切换波形和频率。
4.可以产生4种波形,矩形波、三角波、正弦波、锯齿波。
5.通过1602液晶显示波形和输出频率,频率范围为1HZ-10000HZ,步进频率为1HZ。
6.输出幅度范围为0.1V到5V,步进为0.1V。
7.输出方波时,占空比可以设置,占空比范围10%--99%。

三、成品实物图

ad9833于dac0832有什么不同,51单片机,51单片机,单片机,嵌入式硬件

ad9833于dac0832有什么不同,51单片机,51单片机,单片机,嵌入式硬件

四、原理图   

ad9833于dac0832有什么不同,51单片机,51单片机,单片机,嵌入式硬件

五、PCB图   

ad9833于dac0832有什么不同,51单片机,51单片机,单片机,嵌入式硬件

六、 程序源码 

ad9833于dac0832有什么不同,51单片机,51单片机,单片机,嵌入式硬件

部分代码:

	TH0 = 0xf0;
    TL0 = 0xf0;
	TR0=1;                    //计数器停止计数	    
	ET0=1;                    //开启计数器0中断
	switch(gType)
	{
		case 0: LCDDispString(5,1,"Sin");break;
		case 1: LCDDispString(5,1,"Squ");break;
		case 2: LCDDispString(5,1,"Tri");break;
		case 3: LCDDispString(5,1,"Saw");break;
	}
	LCDDispNum(12,1,SaveTable[5]);LCDDispNum(14,1,SaveTable[6]);
	for(i=0;i<5;i++)
		LCDDispNum(3+i,2,SaveTable[i]);
	if(gType == 1)
	{
		LCDDispNum(13,2,SaveTable[7]);
		LCDDispNum(14,2,SaveTable[8]);
	}
	else
	{
		LCDDispChar(13,2,'-');
		LCDDispChar(14,2,'-');
	}

	EA=1;                     //开总中断
	   
	while(1)
	{
		key_scan();
	}
}	
//gType=0:正弦波
//gType=1:方波
//gType=2:三角波
//gType=3:锯齿波
void timer0(void) interrupt 1 //计数器0中断	 
{
	count = count + fword;
	switch(gType)
	{
		case 0:	DAPort = TableSin[count>>8];
				break;	   
		case 1: if(count>Duty*655)
					DAPort = 0xff;



				gTimeCount=0;
				LCDCursor();
				LCDDispChar(13,1,'.');
			}
			//功能设定四:设置方波占空比
			else if((gFunctionCount==4)&&(gType==1))
			{
				gTimeCount=0;
				LCDCursor();
				LCDDispNum(14,2,DutyNum[1]);
				LCDDispNum(13,2,DutyNum[0]);
			}
			//设定完毕
			else if((gFunctionCount==5)||((gFunctionCount==4)&&(gType!=1)))
			{
				gFunctionCount=0;
				
				LCDNotCursor();
				//计算频率值		
				freqtemp=(unsigned int )FreqNum[0]*10000+(unsigned int )FreqNum[1]*1000+(unsigned int)FreqNum[2]*100+(unsigned int)FreqNum[3]*10+(unsigned int)FreqNum[4];
				if(freqtemp>10000)//当输入频率大于10kHz时,将频率设置成10kHz
				{
					freqtemp = 10000;
					LCDDispNum(3,2,1);LCDDispNum(4,2,0);LCDDispNum(5,2,0);LCDDispNum(6,2,0);LCDDispNum(7,2,0);
					FreqNum[0]=1;FreqNum[1]=0;FreqNum[2]=0;FreqNum[3]=0;FreqNum[4]=0;
				}
				else if(freqtemp<1)//当输入频率小于1Hz时,将频率设置成1Hz
				{
					freqtemp = 1;
					LCDDispNum(3,2,0);LCDDispNum(4,2,0);LCDDispNum(5,2,0);LCDDispNum(6,2,0);LCDDispNum(7,2,1);
				}
				//计算幅值
				amptemp =(unsigned int )AmpNum[0] *10 +(unsigned int )AmpNum[1];
				if(amptemp>50)
				{
					LCDDispNum(12,1,5);LCDDispNum(14,1,0);
					AmpNum[0]=5;AmpNum[1]=0;
				}
				//计算占空比
				dutytemp=(unsigned char)DutyNum[0]*10   +(unsigned char)DutyNum[1];
				if(dutytemp>90)//当输入占空比大于90%时,将占空比设置成90%
				{	
					dutytemp = 90;
					LCDDispNum(13,2,9);LCDDispNum(14,2,0);
				}
				else if(dutytemp<10)//当输入占空比小于10%时,将占空比设置成10%
				{	
					dutytemp = 10;
					LCDDispNum(13,2,1);LCDDispNum(14,2,0);
					DutyNum[0]=1;DutyNum[1]=0;	
				}
				if(gType!=1)//当波形不为方波时,显示横杠表示无效

 资料包括:

ad9833于dac0832有什么不同,51单片机,51单片机,单片机,嵌入式硬件

需要完整的资料可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。

纷传点击用微信打开即可,过程有点繁琐请见谅。文章来源地址https://www.toymoban.com/news/detail-761797.html

到了这里,关于20、基于51单片机的函数发生器四种波形频率系统设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机入门教程(4)——波形发生器

    目录 1、总述 2、系统硬件设计  3、系统软件设计思路  3、测试与分析 (1)Proteus仿真测试 (2)直流稳压电源测试 (3)实物测试 该篇为51单片机入门教程的实战篇 ,本篇介绍了以51单片机和DAC0832数模转换芯片为核心的波形发生器,并对DAC0832和UA741的结构和工作原理以及电

    2024年02月08日
    浏览(46)
  • 单片机——C51实验含Proteus仿真(AD转换器(数字电压表),DA转换器(波形发生器))

    分为两部分:AD转换器实现数字电压表,DA转换器实现波形发生器(在仿真部分详细说明) 所用到的原理图:  AD转换器实现数字电压表部分         需要打开main函数中LCD_init(),ADC(),display()三个注释其中电压的输出显示用到了LCD1602关于这部分详情见(96条消息) 单片机——

    2024年02月08日
    浏览(50)
  • 【单片机基础】使用51单片机制作函数信号发生器(DAC0832使用仿真)

    单片机作为一个数字电路系统,当需要采集外界模拟量的使用需要进行AD转换,将模拟量转换成数字量,供单片机使用。51单片机需要外部配置一个AD转换芯片来进行模拟量的采集,如我之前写了一篇ADC0832的使用。高级的单片机如STC12和STM32已经集成了AD转换功能,只需简单配置

    2024年02月08日
    浏览(42)
  • 毕设分享|基于51单片机DDS信号发生器设计

    在电子通信技术日益发展的时代潮流下,直接式(DFS)和锁相式(PLL)已经不能满足生活和科研方面对于频率技术的需求。经过科研人员的不断攻坚下,直接数字频率合成器(DDS)应运而生。它现在广泛运用于移动通信、电子雷达、航天等方面。本次设计主要通过FPGA模块+单片机最小

    2024年02月03日
    浏览(55)
  • 单片机课程设计波形发生器

    怎么说呢,前面半个月被这个单片机课程设计搞得焦头烂额的,再加上运气属实有点“好”,就脾气有点“暴躁”,好的,也就骂了半天的脏话。有一说一,没有素质确实舒服。 好了,事情目前是过去了,那就好好回顾一下遇到的问题,以及找到了怎样的解决方案,和最后仍

    2024年02月09日
    浏览(48)
  • 单片机实验——简易波形发生器设计

    波形发生器广泛地应用于电子和通信等领域,是应用最广泛的电子仪器之一,本设计用51单片机以及DAC0832实现基本波形的输出,参考电路如下: 可以产生方波、三角波、正弦波、锯齿波等波形,用仿真的示波器查看。 用4个按键分别控制输出相应波形。 利用C51设计程序完成以

    2024年02月12日
    浏览(47)
  • STM32单片机示例:64位全局时间戳发生器

    STM32H743 / H750 系列的芯片有一个64位的全局时间戳发生器( Global timestamp generator ),这篇文章将对它的使用做个记录。 全局时间戳发生器相关的内容可以参考官方参考手册: TGS时钟来源与APB总线时钟,这就是TGS计数器时钟了,并且用于TGS计数时没法对其进行分频操作。我们使

    2024年02月10日
    浏览(44)
  • 单片机实验七 NE555脉冲发生器实验(定时/计数器)

    1.熟悉实验软件和硬件,进行正确的接线; 2.1602显示脉冲频率,调节电位器可改变频率。 1.Keil uVision4 2.PZISP自动下载软件 3.HC6800S开发板 实验界面及跳线帽位置 NE555是一种应用特别广泛作用很大的的集成电路,属于小规模集成电路,在很多电子产品中都有应用。 NE555的作用是

    2024年02月06日
    浏览(51)
  • 蓝桥杯单片机学习13——NE555方波发生器&频率测量

    NE555是一种高度稳定的控制器,内部用三个阻值为5KΩ的电阻分压,因此叫做555芯片。能够产生精确的定时脉冲。单稳态工作时,延时由一个外部电阻和一个电容控制。工作稳定,频率和占空比由两个外部电阻和一个电容器精确控制。具有以下特点: 【1】:大电流驱动能力(

    2024年02月03日
    浏览(32)
  • 【微机原理课设protues-汇编】基于8086四种波形发生器仿真设计-基于8086数码管矩阵键盘控制设计-基于8086微机原理直流电机控制系统-基于单片机PWM直流电机控制系统设计汇编

    文章转自电设屋,资料百度网盘下载地址  https://www.aiesst.cn/share.html 目录 1207基于8086四种波形发生器仿真设计-微机原理汇编仿真资料 1202基于8086数码管矩阵键盘控制设计-全套资料 1218基于8086智能汽车控制系统设计-微机原理课设 1209基于8086微机原理直流电机控制系统-设计资料

    2024年02月12日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包