低频发生器控制系统.docx
《低频发生器控制系统.docx》由会员分享,可在线阅读,更多相关《低频发生器控制系统.docx(30页珍藏版)》请在冰豆网上搜索。
低频发生器控制系统
摘要
信号发生器是一种应用广泛的信号源,它经常应用在自动控制系统电、子技术实验等科研领域。
目前,有很多的信号发生器构成方法,例如采用专用的信号发生芯片MAX038、采用DDS(Direct2DigitalSynthesis)型的任意波发生器、以及传统的AWG等。
该可调低频信号发生器的设计以单片机(AT89C52)作为核心控制系统,由晶体振荡电路,地址发生电路,波形产生电路,运算放大电路,数字模拟转换电路组成。
由于输出波形的频率较低,所以决定使用AT89C52作为控制电路,用中断查表法形成波形的数据输出,再用D/A转换器输出需要的波形信号。
该信号发生器可以输出正弦波,方波,三角波三种波形,可提供输出频率从1HZ--10KHZ的方波以及频率从1HZ--5000HZ的正弦波(三角波)。
该设计适用于初学者将其作为一学习板使用,系统价格低廉,功能实用。
关键词可调低频信号发生器;AT89C52;正弦波;方波;三角波
目录
第1章绪论1
1.1低频信号发生器的介绍1
1.2单片机的发展及简要介绍1
1.3AT89C52芯片的介绍2
1.3.1主要性能:
2
1.3.2功能特性:
2
1.3.3管脚说明:
2
1.3.4复位电路:
5
1.3.5晶振电路:
6
1.4TLC7528数模转换器的介绍7
第2章单片机的仿真软件的应用8
2.1ProteusISIS软件的应用介绍8
2.2Keil软件的应用介绍9
第3章可调低频信号发生器的设计10
3.1信号发生器设计的基本要求10
3.2信号发生器的电路设计与仿真10
3.2.1硬件设计部分:
10
3.2.2软件设计部分:
12
3.2.3电路仿真:
16
3.3信号发生器的实物制作22
3.3.1ProtelDxp制版:
22
3.3.2测试与调试23
3.3.3心得体会23
参考文献25
致谢26
第1章绪论
1.1低频信号发生器的介绍
随着电子测量以及很多部门对各种信号发生器的广泛需要以及电子技术的快速发展,促使信号发生器性能提高,种类增多。
尤其随着70年代微处理器的崭露头角,更促使信号发生器向着智能化、自动化方向发展。
现在,微处理器运用在许多信号发生器上,因而这些信号发生器具备了自校、自检、诊断自动故障和形成自动波形和修正等功能,能够和控制计算机以及其他的测量仪器方便的一起构成自动测试系统。
当前信号发生器总的发展是向着低功耗、高频率精度、宽频率覆盖、多功能、智能化和自动化方向发展。
在工程教育,科学研究及生产实践中,如教学实验、工业过程控制、材料试验、动态分析、生物医学、机械振动试验等领域,低频信号发生器常常会有用武之地。
而在我们一些科学研究中,以及日常生活中,方波和正弦波、矩形波信号是常用的基本测试信号。
譬如在电视机、示波器等仪器中,为了利用荧光屏显示图像,让电子能够按照一定得规律运动,常用到方波产生器作为时基电路。
信号发生器作为一种通用的电子设备,在科研、测控、通讯生产等领域都得到了非常广泛的运用。
但市面上能看到的信号发生器在带宽、波形种类、频率精度及程控方面都已经不能够满足许多方面实际应用的各种要求。
加之各类功能的半导体集成芯片的迅速发展,使我们研制一种宽频带、功耗低,能产生多种波形并具有程控等低频的信号发生器成为迫切的需求。
该设计课题的研究和制作全面说明对低频信号发生器要有一个全面的理解掌握、对低频信号的发生原理要非常了解,以及对低频信号发生器工作流程要有一定的了解:
要熟练联接调试波形的设定,单片机(52单片机,显示电路),D/A转换,连接通信,显示和各模块等各个部分,能够正确的掌握常规芯片的使用方法、掌握简单低频信号发生器应用系统软件的设计方案,进一步提高我们在信号处理方面的实际操作能力。
1.2单片机的发展及简要介绍
随着社会的发展,家电智能化给大家的生活带来了革命性的变化。
在我们的生活的周围,单片机的运用可见,如冰箱、洗衣机、电脑外围芯片、防盗器和工业控制器等。
单片机以其强大的控制能力已经被广泛的运用于诸多领域,配以各种接口传感器能够实现系统的智能化。
无论是在工业制造领域、医疗领域,还是在国防军事领域、航天航空领域,微控制器都起着非常重要的作用。
从最初的8位控制器到现在的16位、32位控制器都还有很强劲的发展和应用空间。
那到底什么是单片机呢?
所谓“单片机”,单片机就是在半导体硅片上合成了微处理器(CPU)、存储器(RAM,ROM,EPROM)和各种输入输出接口(定时器/计数器,并行I/O口,串行口,模拟数字转换器以及脉宽调制器PWM等),这样的一块集成电路芯片具备了一台计算机的属性,因此被称为单片机。
在单片机刚面世的时候,其结构单一,功能较差,但经过20多年的迅猛发展,单片机的结构已经变得十分的精妙,集成度也提高了好几个数量级,功能更是当年无法相提并论的。
在国际上,多把单片机称为微控制器MCU,由于在使用中,通常是它处于测控系统的中心地位并嵌入其中,所以我们又把单片机称为嵌入式控制器EMCU。
在中国,我们习惯于把它称为“单片机”,在本课程设计中使用的是AT89C52。
1.3AT89C52芯片的介绍
1.3.1主要性能:
与MCS-51单片机产品兼容、8K字节的在系统可编程Flash存储器、一千次的擦写周期、全静态操作:
0Hz~24MHz、三级加密程序存储器、三十二个可编程I/O口线、三个16位定时器/计数器以及八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。
1.3.2功能特性:
AT89C52是一种低功率消耗、性能较高CMOS8位微控制器,具备8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器高技术制作,可以与工业80C51产品指令和引脚全部兼容片上。
Flash能够允许程序存储器在系统可编程执行,亦适合于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89C52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
此外,AT89C52可降低到0Hz静态逻辑操作,支持2种软件可抉择节电模式。
空闲模式时,CPU不再工作,却允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保留下来,振荡器被冻结,单片机所有工作都停止,直到下一个中断开始或者有硬件复位为止。
1.3.3管脚说明:
VCC:
供电电压,
GND:
接地。
P0口:
P0口作为一个8位漏级开路双向的I/O口,每脚可以吸纳8TTL门电流。
当P1口的管脚第一次写1时,被视为输入高阻。
P0可以用于外部程序或者数据存储器,它可以被定义为数据或者地址的第八位。
在FIASH编程时,P0口被视为为原码输入口,当FIASH开始校验时,P0输出原码,此时P0外部一定被拉高。
P1口:
P1口是内部提供的8位上拉电阻的双向I/O口,P1口缓冲器能收到输出4TTL门电流。
P1口管脚写入1后,可作为输入,其管脚被内部上拉为高电平,P1口被外部下拉为低电平的时候,将输出电流,这是由于内部上拉的原因。
在FLASH编程和校验时,P1口被认为是第八位地址接收。
P2口:
P2口是一个8位内部上拉电阻的双向I/O口,P1口缓冲器可收到或者输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉为高电平,且作为输入。
作为输入,P2口的管脚将被外部拉低的时侯,将输出电流。
这是由于内部上拉的原因。
P2口在用于外部程序存储器或者是16位地址外部数据存储器进行操作时,P2口输出地址作为高八位。
在给出地址“1”时,它有内部上拉的优点,当对外部八位地址数据存储器进行读写操作时,P2口输出它的特殊功能寄存器上的内容。
P2口在FLASH编程和校验的时候,接收信号作为高八位地址信号和控制信号。
·P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,P3口缓冲器可接收输出4个TTL门电流。
当P3口写入“1”后,被内部上拉为高电平,并且作用于输入。
作为输入,因为外部下拉为低电平,P3口将输出电流(ILL),这是由于上拉的原因。
P3口也可作为AT89C51的一些特殊功能口。
P3口管脚备选功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储空间时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期之中,此引脚作用于输入编程脉冲。
在平时,ALE端以一定的频率周期输出正脉冲函数,此频率为振荡器频率的六分之一。
因此它可用于对外部输出的脉冲或用于定时作用的目的。
然而值得注意的是:
每当用作外部数据存储的时候,它将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上复位。
此时,ALE只是在执行MOVX,MOVC指令是ALE时才能够起作用。
此外,该引脚被略微拉高。
若是微处理器在外部执行状态ALE为禁止,那么置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储空间取指期间,每个机器周期是两次PSEN才有效。
但在访问外部数据存储器时,这两次有效的PSEN信号都将不能够实现。
EA/VPP:
当EA保持低电平时,不管是否有内部的程序存储空间,那么在此期间外部程序存储空间(0000H-FFFFH)。
注意当加密方式是1时,EA将内部定为RESET;当EA端保持高电平时,此间内部程序存储空间。
在FLASH编程期间,此引脚也可以用作施加12V编程电源。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
图1-1AT89C52管脚分布
1.3.4复位电路:
MCS-52 单片机复位电路是指单片机的初始化操作。
单片机启运开始工作时,都需要先经过复位,其作用是使CPU和系统中其他配置器件处于一个确定的初始状态,并从这个状态开始执行命令。
因而,复位是一个非常重要的操作方式。
但单片机自己是不能自动执行复位的,必须配合恰当的外部电路才可以实现。
复位功能:
复位电路的基本功能:
系统上电时提供复位功能,一直到系统电源稳定后,去除复位信号。
为保险起见,电源稳定后必须经一定的延时才可以撤销复位的信号,以防电源开关或电源插头分-合过程中导致的抖动而对复位功能产生影响。
单片机的复位是由外部的复位电路来控制的。
片内复位电路是通过复位引脚RST复位电路与一个斯密特触发器相连,斯密特触发器用来达到抑制噪声的目的,在每个机器周期它的输出由复位电路采样一次。
复位电路通常运用上电自动复位以及按钮复位两种方式。
单片机复位后的状态:
单片机的复位操作使单片机达到初始化的状态,其中包括使得程序计数器PC=0000H,这说明程序从0000H地址开始运行。
单片机工作后,片内RAM为任意值,运行中的复位操作不会更改片内RAM区中的数据,21个特殊功能寄存器在复位之后的数据为确定值,见表1。
值得注意的是,记住在复位后的一些特殊功能寄存器的主要状态,对于理解单片机的初态,减少相关的应用程序中的初始化是非常必要的。
PSW=00H,表示选寄存器0组为工作寄存器组;SP=07H,说明堆栈指针指向的是片内RAM07H字节存储空间,依据堆栈操作的先加后压原则,第一个被压入的数据写入到08H单元中;Po-P3=FFH,则代表向各端口线都已经写入1,此时,各端口的作用既可用于输入又可用于输出。
IP=×××00000B,则表明各个中断源是等级低的优先级;IE=0××00000B,则表明各个中断均已经被关闭;系统复位是任何微机系统执行的初始化步骤,使控制芯片整体回到默认的硬件状态下。
由RESET引脚来控制的52单片机复位,此引脚与高电平相连超过24个振荡周期后,52单片机便可以进入芯片内部复位状态,并且可以在此状态下一直等待,一直至RESET引脚转为低电平以后,才校验EA引脚是高电平还是低电平,如果为高电平则运行芯片内部程序的代码,若为低电平则会执行外部程序的代码。
在系统复位后52单片机将一些其内部的重要寄存器设置为特定的数值,至于内部RAM的数据则保持不变。
说明:
表中符号*为随机状态;
表1-1寄存器复位后状态表
特殊功能寄存器
初始状态
特殊功能寄存器
初始状态
A
00H
TMOD
00H
B
00H
TCON
00H
PSW
00H
TH0
00H
SP
07H
TL0
00H
DPL
00H
TH1
00H
DPH
00H
TL1
00H
P0-P3
FFH
SBUF
不定
IP
***00000B
SCON
00H
IE
0***00000B
PCON
0********B
1.3.5晶振电路:
晶振是晶体振荡器的简称,在电路方面它可以等效成一个电容和一个电阻并联再串联一个电容的二端口网络,电学上这个电路有两个谐振点,以频率的高低分把其中较高的频率称为并联谐振,较低的频率称为串联谐振。
AT89C52单片机内部有一个高增益反相放大器,用于构成振荡器。
引脚XTAL2和XTAL1分别是此放大器的输出端和输入端。
作为反馈器件的片外晶体谐振器与该放大器一起构成一个自激振荡器。
电容C2和C1和外接晶体谐振器一起构成并联谐振电路,接在放大器的反馈回路中。
虽然对外接电容的值没有非常严格的要求,但震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性会由电容的大小影响。
所以,此电路系统的晶体振荡器的值为12MHz,电容的种类应尽量选择陶瓷电容,电容值大概30μF。
在电路板焊接时,电容和晶体振荡器应尽可能安装得靠近单片机芯片,这样做是为了减少寄生电容,更好地保证震荡器可靠稳定地工作。
负载电容值是晶振的一个重要的参数,为了得到晶振标称的谐振频率,我们可以选择与负载电容值相等的并联电容。
1.4TLC7528数模转换器的介绍
TLC7528是8位双路数字--模拟转换器,它具有单独的片内数据锁存器,它的特点包括非常严密的DAC至DAC一致性。
信号通过公共输入口传送到两个DAC数据锁存器中的任意一个。
输入控制端DACA/DACB决定哪一个DAC被使用。
该元件的装载周期和随机存取存储器的写周期很相似,可以非常方便地与大多数输出端口和通用微处理器总线相接口。
在最高有效位变化期间内,分段高阶位可以使得闪变最小,该变化期间内的闪变脉冲最强大。
TLC7528功耗小于15mW,工作电源为5——15V。
2或4象限乘法功能使这种器件成为许多微处理器控制的信号控制应用和增益设置的良好选择。
它可以工作在电压方式,产生的不是电流输出而是电压输出。
第2章单片机的仿真软件的应用表3-1元件清单
2.1ProteusISIS软件的应用介绍
Proteus具有和其他EDA工具一样的原理图编辑、电路仿真功能及印刷电路板(PCB)设计,最大的特色是它的电路仿真的可视化和交互化,通过Proteus软件的VSM(虚拟仿真模式),用户可以对单片机及外围元器件、数字电路、模拟电路、模数混合电路等电子线路进行系统仿真。
Proteus软件由ISIS和ARES两部分构成,其中ARES是一款强大的PCB布线编辑软件,ISIS是一款便捷的电子系统原理设计和仿真平台软件。
ProteusISIS软件的特点是:
第一,提供软件调试功能。
在硬件仿真系统中可以观察各个变量、寄存器等的当前状态,同时具备单步、全速、设置断点等调试功能,因此在该软件的仿真系统中,可以支持第三方的软件编译和调试环境,如KeilC51uVision2等软件,并且也具备这些功能。
第二,支持主流单片机系统的仿真。
目前单片机的类型有:
8051系列,PIC12系列,68000系列,PIC16系列,PIC18系列,Z80系列,AVR系列,HC11系列以及各种外围芯片。
第三,实现了单片机仿真和SPICE电路仿真相结合,数字电路仿真、具有模拟电路仿真、单片机及其外围电路组成的系统的仿真、12C调试器、SPI调试器、RS232动态仿真、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器,逻辑分析仪、信号发生器等。
第四,具有强大的原理图绘制功能。
总之,该软件是一款集SPICE和单片机分析于一身的仿真软件,功能非常强大。
在此介绍ProteusISIS软件的一些基本操作和工作环境。
基本操作:
进入ProteusISIS
双击桌面上的ISIS7Professional图标或者单击屏幕下方的“开始”→“程序”→“Proteus7Professional”→“ISIS7Professional”,进入ProteusISIS集成环境。
在进入之后开始依照自己的设计将元器件找到,完成原理图。
其工作界面如下图所示:
图2-1ProteusISIS的工作界面
2.2Keil软件的应用介绍
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,下面仅介绍该软件的简单的应用。
使用步骤:
1).创建工程(作用是管理文件进行编译),工程的后缀名为.uv2。
2).选择芯片的型号(本设计中用AT89C52)。
3).创建源文件,即用C语言编写程序,文件的后缀名为.c。
4).将原文件添加到工程中。
5).最后将生成的16进制文件(.hex文件)加载到原理图中,即可检测仿真结果。
第3章可调低频信号发生器的设计
3.1信号发生器设计的基本要求
设计并制作一台函数信号发生器,能实现以下基本要求:
第一,能产生方波、正弦波、三角波三种波形,其具体的波形有按键选择。
第二,波形无明显失真;
第三,频率范围为1Hz—1000Hz。
3.2信号发生器的电路设计与仿真
3.2.1硬件设计部分:
图3-1信号发生器设计的系统结构框图
如图所示,P3.0-P3.2接三个控制键,其中T1为频率增加键,T2为频率减小键,T3为正弦波和三角波的转化键。
P1口输出波形数据,经过DAC0832进行数模转化得到波形。
图3-2初始化子程序流程图
该程序的主要功能是设置定时器的初始值,工作模式,开中断和开定时器。
当定时器计到极限时就要产生中断,即输出一波形数据。
图3-3键扫描子程序流程图
图3-4波形数据产生子程序流程图
在键扫描子程序中,其任务是检查三个键是否按下来执行其功能。
三个键分别用于频率增加、减小和选择正弦波或三角波;在波形数据产生子程序是定时器T1的中断程序,即当定时器计数溢出时就要产生中断,此时单片机按次序将波形数据表中的波形数据一一送至DAC0832进行数模转化。
3.2.2软件设计部分:
#include"reg51.h"
#defineucharunsignedchar
#defineuintunsignedint
#definekeyP3
#definedataoutP1
ucharcodesin_tab[256]=//正弦波数据表(256个数字);
{
0x80,0x83,0x85,0x88,0x8A,0x8D,0x8F,0x92,0x94,0x97,0x99,0x9B,0x9E,0xA0,0xA3,0xA5,
0xA7,0xAA,0xAC,0xAE,0xB1,0xB3,0xB5,0xB7,0xB9,0xBB,0xBD,0xBF,0xC1,0xC3,0xC5,0xC70xC9,0xCB,0xCC,0xCE,0xD0,0xD1,0xD3,0xD4,0xD6,0xD7,0xD8,0xDA,0xDB,0xDC,0xDD,
0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0xE3,0xE4,0xE4,0xE5,0xE5,0xE6,0xE6,0xE7,0xE7,0xE7,
0xE7,0xE7,0xE7,0xE7,0xE7,0xE6,0xE6,0xE5,0xE5,0xE4,0xE4,0xE3,0xE3,0xE2,0xE1,0xE0,
0xDF,0xDE,0xDD,0xDC,0xDB,0xDA,0xD8,0xD7,0xD6,0xD4,0xD3,0xD1,0xD0,0xCE,0xCC,
0xCB,0xC9,0xC7,0xC5,0xC3,0xC1,0xBF,0xBD,0xBB,0xB9,0xB7,0xB5,0xB3,0xB1,0xAE,0xAC,0xAA,0xA7,0xA5,0xA3,0xA0,0x9E,0x9B,0x99,0x97,0x94,0x92,0x8F,0x8D,0x8A,0x88,0x85,
0x83,0x80,0x7D,0x7B,0x78,0x76,0x73,0x71,0x6E,0x6C,0x69,0x67,0x65,0x62,0x60,0x5D,0x5B,0x59,0x56,0x54,0x52,0x4F,0x4D,0x4B,0x49,0x47,0x45,0x43,0x41,0x3F,0x3D,0x3B,0x39,0x37,
0x35,0x34,0x32,0x30,0x2F,0x2D,0x2C,0x2A,0x29,0x28,0x26,0x25,0x24,0x23,0x22,0x21,0x20,
0x1F,0x1E,0x1D,0x1D,0x1C,0x1C,0x1B,0x1B,0x1A,0x1A,0x1A,0x19,0x19,0x19,0x19,0x19,
0x19,0x19,0x19,0x1A,0x1A,0x1A,0x1B,0x1B,0x1C,0x1C,0x1D,0x1D,0x1E,0x1F,0x20,0x21,
0x22,0x23,0x24,0x25,0x26,0x28,0x29,0x2A,0x2C,0x2D,0x2F,0x30,0x32,0x34,0x35,0x37,0x39,
0x3B,0x3D,0x3F,0x41,0x43,0x45,0x47,0x49,0x4B,0x4D,0x4F,0x52,0x54,0x56,0x59,0x5B,0x5D,0x60,0x62,0x65,0x67,0x69,0x6C,0x6E,0x71,0x73,0x76,0x78,0x7B,0x7D,
};
ucharcodethr_tab[256]=//三角波数据表(256个数字);
{
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,
0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,
0xAF,0