简易低频信号源的设计.doc_第1页
简易低频信号源的设计.doc_第2页
简易低频信号源的设计.doc_第3页
简易低频信号源的设计.doc_第4页
简易低频信号源的设计.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

天津理工大学中环信息学院电子系单片机课程设计报告题目:简易低频信号源的设计 班 级 09信科2班 指 导 教 师 设 计 成 员 电子系2012年 6 月 18 日一课程设计意义单片机应用十分广泛,具有广泛的使用价值。低频信号发生器作为一种常用的信号源,广泛应用于电子电路、自动控制和科学研究等领域。它是一种为电子测量和计量工作提供符合严格技术要求的电信号设备,因此是电子测试系统的重要部件,是决定电子测试系统性能的关键设备。本设计要求输出信号的频率较低,因此使用了单片机作为控制器使用单片机作为控制器,用中断查表法完成波形数据的输出,再用D/A转换器输出规定的波形信号。方波信号直接由单片机的端口输出。结合功能要求情况,使用80C51单片机作为控制器,用DAC0832作为D/A转换器。功能按键使用单片机的3个端口。通过软/硬件访真实验表明该电路输出频率有较好的稳定性,而且电路使用的元器件比较常见,价格低廉,电路设计方便。二课程设计任务书1. 功能要求简易低频信号发生器要求能输出0.150HZ的正弦波、三角波和方波信号,其中正弦波和三角波信号可以用按键选择输出,输出信号的频率可以从0.150HZ范围内调整。2.设计要求按照系统功能需要,要求选用AT89C51单片机作为控制器,用DAC0832作为D/A转换器。功能键使用单片机的三个端口三、课程设计进度计划及检查情况记录表序号日期计划完成内容实际完成内容12012.6.15预计完成课程选题按计划完成22012.6.16讨论完成设计方案按计划完成32012.6.18完成设计主题内容按计划完成42012.6.18整理实验报告,打印装订成册按计划完成56四、成绩评定与评语 指导教师: 日 期:专业设计的主动性与平时表现(20%)独立思考能力 与动手能力(40%)专业设计 完成情况(40%)专业设计成绩题目:低频信号发生器的实现主要有如下几种:一:利用单片机与精密函数发生器构成的程控信号发生器。这种信号发生器能够克服常规信号发生器的缺陷,保证在某个信号的频带内正弦波的失真度小于0.5。它的输出信号频率调整和幅值调整都由单片机完成。但是,由于数模转换器的非线性误差和函数发生器本身的非线性误差,这种信号发生器输出信号的频率与理论值会有一定的偏差。二:利用DSP处理器,根据幅值,频率参数,计算产生高精度的信号所需数据表,经数模转换后输出,形成需要的信号波形。这种信号发生器可实现程控调幅,调频。但这种信号发生器输出频率不能连续可调,计算烦琐,控制也不便。三:基于单片机,锁相环,可编程分频、相位累加、存储器波形存储以及D/A转换器等组成的数字式函数信号发生器。输出的频率的大小由锁相环和可编程计数器来控制,最终由地址发生器对存储器中的波形数据硬件扫描,单片机提供要输出的波形数据给存储器。这种方案电路简洁,不受单片机的时钟频率的限制,输出信号精度高,频率“连续”,稳定性好,可靠性高,功耗低,调频,调幅都很方便,而且可简化软件设计,实现模块化设计的要求。四:考虑到输出信号的频率较低,使用单片机作为控制器使用单片机作为控制器,用中断查表法完成波形数据的输出,再用D/A转换器输出规定的波形信号。方波信号直接由单片机的端口输出。结合功能要求情况,使用80C51单片机作为控制器,用DAC0832作为D/A转换器。功能按键使用单片机的3个端口。能使输出频率有较好的稳定性,元器件比较常见,价格低廉,电路设计方便。综合考虑,方案四各项性能和指标都优于其他几种方案,能使输出频率有较好的稳定性,充分体现了模块化设计的要求,而且这些芯片及器件均为通用器件,在市场上较常见,价格也低廉,样品制作成功的可能性比较大,所以本设计采用方案四。其系统组成原理框图如图2.1所示。AT89S51单片机控制器 P2口 DAC0832D0D7控制键正弦波(三角波)输出方波输出图2.1 简易低频信号源系统结构框图3系统电路设计3.1 系统控制电路控制芯片选择80C51单片机。芯片为40脚双列直插式封装,工作电压为2.76V,具有13个I/O口,完全满足系统设计要求。控制系统按最小化工作模式设计,p3.2为波形选择,p3.3为频率变换。LM324在图中不接电源,只起到跟随器的作用,节能环保。 3.1.1 D/A转换部分DAC0832是CMOS工艺制造的8位数/模(D/A)转换器,属于8位电流输出型D/A转换器,转换时间为1US,片内带输入数字锁存器,其引脚排列和内部组成原理如图(2)所示。DAC0832与单片机接成数据直接写入方式,当单片机把一个数据直接写入DAC寄存器时,DAC0832的输出模拟电压信号随之变化。利用D/A转换器可以产生各种波形,如方波,三角波,锯齿波等以及它们组合产生的复合波形和不规则波形。这些复合波形利用标准的测试设备很难产生的。3.1.2 DAC0832简要介绍(1) DAC0832的主要性能输入数据量为8位。采用CMOS工艺,所有引脚的逻辑电平与TTL兼容。数据输入可以采用双缓冲,单缓冲或直通方式。转换时间:1US。精度:1LSB。分辨率:8位。单一电源:515V,功耗20MV。参考电压:+10 10V。 (2) DAC0832的引脚功能D7D0:8位数据量输入。ILE:数据输入锁存允许,高电平有效。(3) CS:片选。WR1:输入寄存器写信号。当ILE、CS、WR1同时有效时,数据装入输入寄存器,实现输入数据的第一级缓冲。XFER:数据传送控制信号。控制从输入寄存器到DAC寄存器的内部数据传送。WR2:DAC寄存器写信号。当XFER和WR2均有效时,将输入寄存器中的数据装入DAC寄存器并开始D/A转换,实现输入数据的第二级缓冲。Vref:参考电压源。电压为-10+10V。Rfb:内部反馈电阻接线端。Iout1:DAC电流输出1。其值随输入数字量线性变化。Iout2:DAC电流输出2。当DAC寄存器内容全为1时,Iout1最大,Iout2=0;当DAC寄存器内容全为0时,Iout1=0,Iout2最大;当DAC寄存器内容为N时,Iout1= Vref*N/(256* Rfb),Iout2= Vref/ RfbIout1,无论N值多大,Iout1+ Iout2= Vref/ Rfb*(128)=常数,约等于Vref/ Rfb。VCC:工作电源。其值为+515V,典型值为+15V。AGND:模拟信号地线。DGND:数字信号地线。(4) DAC0832的工作方式DAC0832有双缓冲、 单缓冲和直通3种工作方式。双缓冲工作方式:进行两级缓冲。单缓冲工作方式:只进行一级缓冲。直通工作方式:不进行缓冲,适应于比较简单的场合。3.1.3 80C51管脚说明单片机采用MCS-51系列单片机80C51,其芯片引脚图3.1所示:图3.1 8051引脚管脚功能如下: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口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为80C51的一些特殊功能口,如下表所示:表3.1 P3口的第二功能P3口引脚第二功能P3.0RXD(串行口输入)P3.1TXD(串行口输出)P3.2INT0(外部中断0输入)P3.3INT1(外部中断1输入)P3.4T0(定时器0外部脉冲输入)P3.5T1(定时器1外部脉冲输入)P3.6WR(外部数据存储器写脉冲输出)P3.7RD(外部数据存储器读脉冲输出)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。4电路设计原理图 4.1 简易低频信号源电路原理图5 系统程序的设计5.1 初始化子函数 初始化子函数的主要工作是设置每次波形输出之间的时间间隔,即延时程序从而达到改变频率的作用。开 始设置变量ff1内部延时28微秒返 回图4.1 初始化子函数程序流程图5.2 键扫描子函数 键扫描子函数的任务是检查3个按键中是否有键按下,若有键按下,则执行相应的功能。这里3个按键分别用于频率增加、频率减小和正弦波与三角波的选择功能。其程序流程图如图4.2所示:返 回查键号,按键值执行功能定时值加1定时值减1波形选择有键按下?查键开始图4.2 查键子函数程序流程图5.3 波形数据产生子函数 波形数据产生函数是定时器T1的中断程序。当定时器计数益出时,发生一次中断。当发生中断时,单片机按次序将波形数据表中的波形数据一一送入DAC0832,DAC0832根据输入的数据大小输出对应电压。波形数据产生子函数程序流程图如图4.3所示:关中断、关定时、重装初值、开定时功能标志=1?方波输出输出三角波数据输出正弦波数据查表指针加1开中断、中断返回中断开始图4.3 波形数据产生子函数程序流程图5.4 主函数 主函数的任务是进行上电初始化,并在程序运行中不断查询按键情况执行相应的功能。以下是简易低频信号源控制C源程序清单:#include #define uchar unsigned char#define uint unsigned intuchar code sin_tab256= 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,0xC7,0xC9,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;uchar code thr_tab256= 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,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,0xBF,0xBE,0xBD,0xBC,0xBB,0xBA,0xB9,0xB8,0xB7,0xB6,0xB5,0xB4,0xB3,0xB2,0xB1,0xB0,0xAF,0xAE,0xAD,0xAC,0xAB,0xAA,0xA9,0xA8,0xA7,0xA6,0xA5,0xA4,0xA3,0xA2,0xA1,0xA0,0x9F,0x9E,0x9D,0x9C,0x9B,0x9A,0x99,0x98,0x97,0x96,0x95,0x94,0x93,0x92,0x91,0x90,0x8F,0x8E,0x8D,0x8C,0x8B,0x8A,0x89,0x88,0x87,0x86,0x85,0x84,0x83,0x82,0x81,0x80,0x7F,0x7E,0x7D,0x7C,0x7B,0x7A,0x79,0x78,0x77,0x76,0x75,0x74,0x73,0x72,0x71,0x70,0x6F,0x6E,0x6D,0x6C,0x6B,0x6A,0x69,0x68,0x67,0x66,0x65,0x64,0x63,0x62,0x61,0x60,0x5F,0x5E,0x5D,0x5C,0x5B,0x5A,0x59,0x58,0x57,0x56,0x55,0x54,0x53,0x52,0x51,0x50,0x4F,0x4E,0x4D,0x4C,0x4B,0x4A,0x49,0x48,0x47,0x46,0x45,0x44,0x43,0x42,0x41,0x40,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F;uchar size=1;/波形选?uchar ff1=1;/ 频率/延时函数/void delay(uchar t)uchar m; uint i;for (i=t;i0;i-)for(m=28;m0;m-);/ /正弦波 void sin() uchar a; for(a=0;a255;a+) P2=sin_taba; delay(ff1);/ /三角波 void sanjiao() uchar a; for(a=0;a255;a+) P2=thr_taba; delay(ff1);/方波/ void fangbo() uchar a; for(a=0;a177;a+) P2=0xdf; delay(ff1);for(a=0;a3) size=1;/#/#/外部中断1子函数int1() interrupt 2 ff1+; /中断一次加1 if(ff13) ff1=1;/#void inint() IT0=1; /下降沿触发 EX0=1; /开中断0 IT1=1; /下降沿触发 EX1=1; /开中断1 EA=1; /开总中断/void main(void) inint(); while(1)switch(size) case 1: fangbo(); /方波 break; case 2: sanjiao(); /三角波 break; case 3: sin(); /正弦波 break; default: fangbo(); break; 6仿真电路图6.1方波图6.1方波仿真6.2三角波图6.2三角波仿真6.3正弦波图6.3正弦波仿真图6.4改变频率 图6.4频率变化仿真图小 结此次课程设计主要阐述了高精度数字式函数信号发生器的软、硬件设计。由于采用了单片机,使所设计

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论