毕业设计 基于51单片机信号发生器的设计


🔥 毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是:基于51单片机信号发生器的设计

1 系统组成

根据要求设计信号发生器,输出信号为正弦波。设计中采用锁相环式的频率合成技术,利用锁相环,使输出的正弦波频率与晶体振荡器的稳定度一样。控制部分采用单片机来完成,利用数码管对频率进行显示并对频率值进行存储。系统框图如图1-1所示

图1-1系统框图

2 单元电路的设计

2.1 压控振荡器

压控振荡就是在振荡电路中采用压控元件作为频率控制器件。压控器件一般是用变容二级管,它的电容量受到输入电压的控制,当输入电压变化,就引起了起振荡频率的变化。因此,压控振荡器事实是一种电压——频率变换器。它的特性可用瞬时振荡频率与控制电压υC之间的关系曲线来表示,如图6-1所示。图上的中心频率是在没有外加控制电压时的固有频率。在一定范围内与υC之间是线性关系。在线性范围内,这一线性可用下列方程来表示。

                    

图2-1 压控振荡器的特性曲线

2.1.1 压控振荡器MC1648

MC1648是一个8引线双列直插的器件,内部电路图如图6-2所示。压控振荡电路由芯片内部Q8、Q5、Q4、Q1、Q7和Q6,10脚和12脚外接LC谐振回路组成正反馈的正弦振荡电路[4]

图2-2 MC1648内部原理图

2.1.2 压控振荡电路设计

图6-3为压控振荡电路图。压控振荡器主要由压控振荡芯片MC1648和变容二

图2-3 压控振荡电路

极管MV209以及谐振回路构成。MC1648需要外接一个由电感和电容组成的并联谐振回路[5]。为达到最佳工作性能,在工作频率要求并联谐振回路的QL≥100。电源采用+5V 的电压,振荡器的输出频率随加在变容二极管上的电压大小变化而变化。通过切换电源来切换电感量,从而改变振荡频率。        

2.1.3 变容二级管与开关二级管切换电路

⑴ 变容二极管

变容二级管是一种特制的二级管,它的PN结电容变化范围比较大,正常工作时,变容二级管加反相电压,在其PN结上产生电荷存储,于是相当于一个电容,当反向电压改变时,变容二级管的结电容也发生相应的变化 [6]。

UR 是加在变容二极管的反向电压,CVD0为UR=0时 的结电容U0 是接触电位差;n是电容变化系数。

⑵ 电感切换电路

为了扩大频率的带宽,通过切换电源来切换电感。图6-4是开关二级管切换频段电路图。当开S连接+5V时,开关二级管VD2截止,电感L1和L2相加,电感量较大,对应于低频段VL;当S接向地时,VD2导通,L2被大电容2000pF短接,电感只剩下L1,电感量较小,对应于高频段 [7]。

图2-4 电感切换电路

2.2 锁相环式频率合成器的设计

2.2.1 BU2614的管脚图与内部组成

BU2614为16管脚芯片,其管脚图如图6-5所示。管脚Xout与Xin为外接晶振管脚,一般接75KHz晶体,主要产生标准频率和时钟信号;CE、CLK和DA端分别为使能、时钟和数据输入端,PD为相位比较输出。

图2-5 BU2614管脚图

BU2614是一种串行码输入的锁相频率合成器,它采用标准的I2C总路线结构,可以工作在整个FM波段,具有低噪声、低功耗、高灵敏度的特点,并具有中频检测功能。

BU2614内部主要有相位比较器PD、可编程分频器、参考分频器、高稳定晶体振荡器及内部控制器组成。当单片机对BU2614送入一组数据, BU2614把接收到的数据与接收的信号频率进行比较后输出一个PD,该PD信号通过外部环路低通滤波后加在VCO上,通过VD的不断调整使VCO振荡频率锁定在与单片机送入数据相对应的频率上,实现频率锁定。

在内部结构中,移位锁存器作用是把单片机送来的32位串行数据送入锁存器后进行串并转换,其中16位控制可编程分频器,3位控制参考分频器,其余为内部控制字。可编程分频器按照16位数据的控制要求,把 focs振荡频率信号经过参考分频之后的频率信号fd与fr在PD中进行比较,当 fd不等于fr时由PD输出电压VD控制VCO,使 focs稳定在确定频率上。参考分频器通过状态字中R 0、R1、R2三位数据把高稳定度振荡器产生的75kHz标准频率进行分频。可输出4个固定频率fr。PD把 fr和fd进行鉴相比较,PD的输出为高电平,低电平及高阻三态输出,通过外部LF实现锁相。

2.2.2 输入、输出数据形式

BU2614的串行数据输入靠CE、CLK和DA三个端子完成。时钟信号、数据信号和使能信号逻辑关系如图6-6所示。其中T1应大于15μs, T2大于2μs,时钟宽度应大于1μs。数据和状态字共32位,从低位到高位依次排列为:D0、D1……D 15 、

图2-6 CLK、DATA、CE的逻辑关系

P0、P1、P2 、*、*、*、*、CT、R0、R1、R 2、S、PS、*、GT、TS。其中D0到D 15、表示可变分频比的16位二进制数;*表示与控制不相关的位,可为1 或0;参考分频器产生的标准频率由R0、R1、R2三位数据控制,控制关系如表6-1所示。

表2-1 R0、R1、R2与标准频率的关系

        R0

       R1

      R2

   标准频率

       0

0

0

    25KHz

       0

        1

1

    3.25 KHz

       1

        0

      0

    6.25 KHz

       1

        1

      0

    1 KHz

       1

1

1

*PLL关闭

P0、P1、P2为输出口控制数据,可使输出通道打开或关闭。置0时为通道打开。S和PS可用于收音机中FM和AM的选择。数据输出由CD端输出,此时CLK、CD与CE的逻辑关系与数据输入类似,只不过CE要求为低电平。CT、GT等用于频率测量与计数的控制。

2.2.3 BU2614的外围电路工作原理

图2-7 锁相环控制电路图

2.3 低通滤波器

图2-8 滤波电路图

低通滤波器由三极管和RC电路组成,其电路图如图6-8所示。低通滤波器用于滤除鉴相器输出的误差电压中高频分量和瞬变杂散干扰信号,以获得更纯的控制电压,提高环路稳定性和改善环路跟踪性能和噪声性能。锁相稳频系统是一个相位反馈系统,其反馈目的是使VCO的振荡频率由自有偏差的状态逐步过渡到准确的标准值。而VCO如做调频源用,其瞬时频率总是偏离标准值的。振荡器中心频率不稳主要由温度、湿度、直流电源等外界因素引起,其变化是缓慢的,锁相环路只对VCO平均中心频率不稳定所引起的分量(处于低通滤波器通带之内)起作用,使其中心频率锁定在设定的频率上。因此,输出的调频波的中心频率稳定度很高[8]。

2.4 电源切换电路设计

    电源切换电路如图6-9所示。此控制电路是用三级管和光偶来控制输出的高低电平,使开关二级管截止或导通(见图6-4),从而来切换电感量。当P3.0输出高电平时,三极管导通,导致光偶导通,使输出为低电平;当P3.0为低电平时,三极管截止,导致光偶截止,使输出为高电平[9]。

图2-9 电源切换电路

2.5 电源电路设计

电源电路如图6-10所示,由于低通需要12V的工作电压、MC1648、单片机、BU2614 

图2-10 电源电路

等工作电压需要5V,所以变压器的输出只需要接地和15V,考虑到高频信号产生电路和单片机共用一个电源会互相干扰,所以采取对单片机单独供电。由变压器出来的交流信号分别经过两个L7812CV,一路直接接到低通和L7805CV;另一路L7812CV的输出直接接到L7805CV,它的输出单独供给给单片机。在三端稳压管的输入输出端与地之间连接大容量的滤波电容,使滤掉纹波的效果更好,输出的直流电压更稳定。接小容量高频电容以抑制芯片自激,输出引脚端连接高频电容以减小高频噪声[10]。

2.6 存储电路设计

2.6.1 AT24C02管脚介绍

AT24C02是美国ATMEL公司的低功耗CMOS串行EEPROM,它是内含256×8位存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。

AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址。,第8脚和第4脚分别为正、负电源。第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送。第6脚SCL为串行时钟输入线。SDA和SCL都需要和正电源间各接一个5.1K的电阻上拉。第7脚需要接地。

I2C总线是一种用于I2C器件之间连接的二线制总线。它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件:不管是单片机、存储器、LCD驱动器还是键盘接口[11]。

2.6.2 I2C总线的特性

⑴ I2C总线的基本结构 

采用I2C总线标准的单片机或I2C器件,其内部不仅有I2C接口电路,而且将内部各单元电路按功能划分为若干相对独立的模块,通过软件寻址实现片选,减少了器件片选线的连接。CPU不仅能通过指令将某个功能单元电路挂靠或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统的既简单又灵活的扩展与控制。

⑵ 双向传输的接口特性 

传统的单片机串行接口的发送和接收一般都各用一条线,而I2C总线则根据器件的功能通过软件程序使其可工作于发送或接收方式。当某个器件向总线上发送信息时,它就是发送器(也叫主器件),而当其从总线上接收信息时,又成为接收器(也叫从器件)。主器件用于启动总线上传送数据并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。I2C总线的控制完全由挂接在总线上的主器件送出的地址和数据决定。

总线上主和从(即发送和接收)的关系不是一成不变的,而是取决于此时数据传送的方向。SDA和SCL均为双向I/O线,通过上拉电阻接正电源。当总线空闲时,两根线都是高电平。连接总线的器件的输出级必须是集电极或漏极开路,以具有线“与”功能。I2C总线的数据传送速率在标准工作方式下为100kbit/s,在快速方式下,最高传送速率可达400kbit/s。

⑶ I2C总线上的时钟信号 

在I2C总线上传送信息时的时钟同步信号是由挂接在SCL时钟线上的所有器件的逻辑“与”完成的。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号下跳为低电平,将使SCL线一直保持低电平,使SCL线上的所有器件开始低电平期。此时,低电平周期短的器件的时钟由低至高的跳变并不能影响SCL线的状态,于是这些器件将进入高电平等待的状态。

当所有器件的时钟信号都上跳为高电平时,低电平期结束,SCL线被释放返回高电平,即所有的器件都同时开始它们的高电平期。其后,第一个结束高电平期的器件又将SCL线拉成低电平。这样就在SCL线上产生一个同步时钟。可见,时钟低电平时间由时钟低电平期最长的器件确定,而时钟高电平时间由时钟高电平期最短的器件确定。
⑷ 数据的传送 

在数据传送过程中,必须确认数据传送的开始和结束。当时钟线SCL为高电平时,数据线SDA由高电平跳变为低电平定义为“开始”信号;当SCL线为高电平时,SDA线发生低电平到高电平的跳变为“结束”信号。开始和结束信号都是由主器件产生。在开始信号以后,总线即被认为处于忙状态;在结束信号以后的一段时间内,总线被认为是空闲的。

I2C总线的数据传送格式是:在I2C总线开始信号后,送出的第一个字节数据是用来选择从器件地址的,其中前7位为地址码,第8位为方向位(R/W)。方向位为“0”表示发送,即主器件把信息写到所选择的从器件;方向位为“1”表示主器件将从从器件读信息。开始信号后,系统中的各个器件将自己的地址和主器件送到总线上的地址进行比较,如果与主器件发送到总线上的地址一致,则该器件即为被主器件寻址的器件,其接收信息还是发送信息则由第8位(R/W)确定。

在I2C总线上每次传送的数据字节数不限,但每一个字节必须为8位,而且每个传送的字节后面必须跟一个认可位(第9位),也叫应答位(ACK)。每次都是先传最高位,通常从器件在接收到每个字节后都会作出响应,即释放SCL线返回高电平,准备接收下一个数据字节,主器件可继续传送。如果从器件正在处理一个实时事件而不能接收数据时,(例如正在处理一个内部中断,在这个中断处理完之前就不能接收I2C总线上的数据字节)可以使时钟SCL线保持低电平,从器件必须使SDA保持高电平,此时主器件产生1个结束信号,使传送异常结束,迫使主器件处于等待状态。当从器件处理完毕时将释放SCL线,主器件继续传送。

当主器件发送完一个字节的数据后,接着发出对应于SCL线上的一个时钟(ACK)认可位,在此时钟内主器件释放SDA线,一个字节传送结束,而从器件的响应信号将SDA线拉成低电平,使SDA在该时钟的高电平期间为稳定的低电平。从器件的响应信号结束后,SDA线返回高电平,进入下一个传送周期。

⑸ 总线竞争的仲裁 

总线上可能挂接有多个器件,有时会发生两个或多个主器件同时想占用总线的情况。例如,多单片机系统中,可能在某一时刻有两个单片机要同时向总线发送数据,这种情况叫做总线竞争。I2C总线具有多主控能力,可以对发生在SDA线上的总线竞争进行仲裁,其仲裁原则是这样的:当多个主器件同时想占用总线时,如果某个主器件发送高电平,而另一个主器件发送低电平,则发送电平与此时SDA总线电平不符的那个器件将自动关闭其输出级。总线竞争的仲裁是在两个层次上进行的。首先是地址位的比较,如果主器件寻址同一个从器件,则进入数据位的比较,从而确保了竞争仲裁的可靠性。由于是利用I2C总线上的信息进行仲裁,因此不会造成信息的丢失。

2.6.3 存储电路的设计

存储电路如图6-11所示,由于A0、A1、A2没有被AT24C02使用,所以它们可以不接或直接接VSS、VCC。WP接到VSS表示一般存储器的操作使能,即允许读和写整个存储器,如果接到VCC写操作禁止,整个存储器是写保护,读操作不受影响,在此把WP接VSS。因为SDA是一个双向的地址和数据传送端口,它是开漏极的端口,因此必须接一个上拉电阻到VCC。它读写操作是通过单片机的控制来实现的[12]。

图2-11 存储电路

2.7电子控制单元电路(ECU)

ECU是控制系统的核心,其作用是对输入的信号进行检测、运算处理和逻辑判断,根据预先存储的控制程序和试验数据,向各执行器发出控制指令,控制各执行器的工作。

89C51是控制系统内部的主要部分,它是整个控制系统的处理单元,AT89C51是一种带4K字节可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51 指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案[13]。

2.7.1 89C51单片机的管脚说明 

⑴ VCC:供电电压(5V)

    GND:接地

P0口:P0口为一个8位漏级开路双向I/O口。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

如果学弟学妹们在毕设方面有任何问题,随时可以私信我咨询哦,有问必答!学长专注于单片机相关的知识,可以解决单片机设计、嵌入式系统、编程和硬件等方面的难题。
愿毕业生有力,陪迷茫着前行!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个基于51单片机信号发生器设计的汇编语言实现。 首先,我们选择使用P2口作为输出端口,使用定时器0产生方波信号。 接下来,我们设置定时器的初值和自动重载值,以控制波形的频率和占空比。假设我们需要产生1kHz的方波,可以设置定时器的初值为65536-1000,自动重载值为65536-500,以产生50%的占空比。 ``` MOV TH0, #HIGH(65536-1000) ; 设置定时器0初值 MOV TL0, #LOW(65536-1000) MOV TMOD, #0x01 ; 设置定时器0为模式1 SETB P2.0 ; 设置P2.0为输出 SETB TR0 ; 启动定时器0计数 ``` 接下来,我们编写中断服务函数,在其中完成输出波形的操作。每次定时器溢出时,将P2.0口取反即可产生方波信号。 ``` ORG 0x000B ; 中断向量表中定时器0中断服务函数地址 TIMER0_ISR: CPL P2.0 ; 取反P2.0口,产生方波 RETI ; 中断结束 ``` 最后,在主程序中,不断循环执行,等待中断触发,完成波形输出。 ``` MAIN: SJMP MAIN ; 不断循环 ``` 完整的汇编代码如下: ``` ORG 0x0000 ; 程序入口地址 LJMP MAIN ; 跳转到主程序 ORG 0x000B ; 中断向量表中定时器0中断服务函数地址 TIMER0_ISR: CPL P2.0 ; 取反P2.0口,产生方波 RETI ; 中断结束 MAIN: MOV TH0, #HIGH(65536-1000) ; 设置定时器0初值 MOV TL0, #LOW(65536-1000) MOV TMOD, #0x01 ; 设置定时器0为模式1 SETB P2.0 ; 设置P2.0为输出 SETB TR0 ; 启动定时器0计数 SJMP MAIN ; 不断循环 ``` 以上是一个简单的信号发生器设计的汇编语言实现,可以根据具体的需求进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值