函数发生器系统设计与制作.doc_第1页
函数发生器系统设计与制作.doc_第2页
函数发生器系统设计与制作.doc_第3页
函数发生器系统设计与制作.doc_第4页
函数发生器系统设计与制作.doc_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

0 引言0.1 问题的提出在自动控制系统设计、调试和现代电子学的各个领域,经常需要高精度、高频率且频率可方便调节的正弦波、矩形波、三角波等信号作为信号源。函数信号发生器的实现方法通常有: 利用专用直接数字合成芯片的函数发生器,能产生任意波形且达到很高的频率,但成本较高。0.2 课题研究的意义目前使用TLC公司开发的新一代专用函数信号发生器芯片TLC5618,其输出频幸范围0.1 MHz -20MHz ,输出电阻小,非线性失真小于,输出波形有正弦波、三角波、锯齿波、方波、脉冲波,频率和占空比都易于调节。因此,TLC5618被称为高频精密函数信号发生器。另外在锁相环、压控振荡器、频率合成器、脉宽调制器等电路的设计上,TLC5618都是优选的器件。但是,基于TLC5618 的函数信号发生器的额率和占空比调节是遥过外接可调电阻来实现的,这样很难满足可调范围精度高、信号稳定的要求。所以,从设备的可操作性和实用性的角度考虑,根据TLC5618输出频率的数控调节原理,采用微处理器作为控制单元,结合DAC和TLC5618可设计程一个使用方便、精度高的数字化波形发生器。 1 设计任务1.1 设计的主要内容本系统从简单实用、功能完备的角度去设计,系统采用单片机控制模块、波形数据存储、波形数据读取、键盘、LED显示、模拟电路、D/A转换电路和时实计算波形值等技术,可以产生任意组波形,而且频率范围宽,步进小,精度高。1.2 主要技术指标(1)工作电压:+5V;(2)待机电流:50mA;(3)频率:20MHZ;2 方案论证2.1 选用单片机ATMEGA16方案一:采用型号为ATMEGA16的AVR单片机芯片。AVR 内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与算数逻辑单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器高至10 倍的数据吞吐率。ATmega16 有如下特点:16K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512 字节EEPROM,1K 字节SRAM,32 个通用I/O 口线,32 个通用工作寄存器,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/ 计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP 封装) 的ADC ,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式。 工作于空闲模式时CPU 停止工作,而USART、两线接口、A/D 转换器、SRAM、T/C、SPI 端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态; ADC 噪声抑制模式时终止CPU 和除了异步定时器与ADC 以外所有I/O 模块的工作,以降低ADC 转换时的开关噪声; Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展Standby 模式下则允许振荡器和异步定时器继续工作。本芯片是以Atmel 高密度非易失性存储器技术生产的。片内ISP Flash 允许程序存储器通过ISP 串行接口,或者通用编程器进行编程,也可以通过运行于AVR 内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用Flash存储区(Application Flash Memory)。在更新应用Flash存储区时引导Flash区(Boot Flash Memory)的程序继续运行,实现了RWW 操作。 通过将8 位RISC CPU 与系统内可编程的Flash 集成在一个芯片内, ATmega16 成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。方案二:选用其他51单片机。无论从单片机的资源,还是执行速度进行比较,51单片机都要比AVR单片机逊色。而且AVR单片机的价格只比51单片机稍贵出几元钱。根据以上的两种方案的比较,所以在本电路设计时采用的是ATMEGA16芯片。2.2 选用高精度的D/A芯片TLC5618TLC5618功能特点:TLC561x系列DA转换器是美国Texas Instrument公司生产的串行可编程DA转换器,包括TLC5615、TLC5617和TLC5618三种。TLC5615为10位单路DA转换器,TLC5617为10位双路DA转换器,TLC5618为12位双路DA转换器。它们均采用3线串行方式输入,输出带有缓冲放大器,直接输出所转换的电压,采用8脚封装,单一5V电源工作,此外,还有可编程的建立时间。3 硬件电路设计3.1 系统整体框图单片机D/A按键波形输出整体框图3.2 人机交互硬件人机交互硬件主要包括键盘和单片机。3.2.1 原理图如下图:图1键盘3.2.2 LED指示灯LED指示系统当前的状态,如是正弦波输出,矩形波输出等, 它们的原理图如下:图2 LED指示灯原理图3.3 高精度的D/A芯片TLC5618TLC5618是美国TexasInstruments公司生产的带有缓冲基准输入的可编程双路12位数/模转换器。DAC输出电压范围为基准电压的两倍,且其输出是单调变化的。该器件使用简单,用5V单电源工作,并包含上电复位功能以确保可重复启动。通过CMOS兼容的3线串行总线可对TLC5618实现数字控制。器件接收用于编程的16位字产生模拟输出。数字输入端的特点是带有斯密特触发器,因而具有高的噪声抑制能力。3.3.1 功能特性(1)可编程至0.5LSB的建立时间;(2)两个12位的CMOS电压输出DAC;(3)单电源工作;(4)3线串行接口;(5)高阻抗基准输入;(6)电压输出范围为基准电压的两倍;(7)软件断电方式;(8)内部上电复位;(9)低功耗,慢速方式为3mW,快速方式为8mW;(10)1.21MHz输入数据更新速率;(11)在工作温度范围内单调变化。3.3.2 芯片结构TLC5618 主要由16位串行接收寄存器、12位DAC锁存器A、锁存器B、权电阻网络A、网络B、输出缓冲放大器、基准源输入缓冲器、双缓冲锁存器、上电复位电路及控制逻辑电路等部分组成。16位串行接收寄存器中接收的数据包括12位数据位和4位编程位。12位数据位将根据编程命令的不同而被写入锁存器A、锁存器B或双缓冲锁存器,而4位可编程位则用以实现包括上述功能在内的各种控制功能,因此使用非常方便。它的外形图和结构框图如下: 图3TLC5618芯片结构框图图4 TLC5618的引脚排列3.3.3 引脚定义表1TLC5618引脚定义管脚 名称 描述1 DIN数据输入2 SCLK串行时钟输入3 CS芯片选择,低电平有效4 OUTADACA模拟输出5 AGND 模拟地6 REFIN 基准电压输入7 OUTBDACB模拟输出8 VDD 正电源3.3.4 工作模式(1)TLC5618的数据的传送顺序及时序关系如图5所示 图5传送顺序及时序关系图当片选(CS)为低电平时,输入数据由时钟定时,以最高有效位在前的方式读入16位移位寄存器,其中前4位为编程位,后12位为数据位。SCLK的下降沿 把数据移入输入寄存器,然后CS的上升沿把数据送到DAC寄存器。所有CS的跳变应当发生在SCLK输入为低电平时。D15和D12用于控制串行接口寄存器的数据向锁存器A、锁存器B或双缓冲锁存器传送,当D15=l时,实现串行接口寄存器向锁存器A和双缓冲锁存器向锁存器B之间的传送。这一功能可用于同时更新二个DAC的输出,而D15=0,且D12=0时,串行接口寄存器数据。可编程位D15D12的功能见表2 所示。表2可编程位D15D12的功能编程位 器件功能 D15 D14 D13 D12 1 X X X 把串行接口寄存器的数据写入锁存器A并用缓冲器锁存数据更新锁存器B 0 X X 0 写锁存器B和双缓冲锁存器 0 X X 1 仅写双缓冲锁存器 X 1 X X 14S建立时间 X 0 X X 3S建立时间 X X 0 X 上电(Powerup)操作 X X 1 X 断电(Powerdown)方式 (2)TLC5618使用由运放缓冲的电阻串网络把12位数字数据转换为模拟电压电平(见图6),其输出极性与基准电压输入相同(见表3)。图6 TLC5618的典型运用电路表3二进制代码表(0V至2VREFIN输出,增益=2)输入 输出 111111111111 2(VREFIN)4095/4096 100000000001 2(VREFIN)2049/4096 100000000000 2(VREFIN)2048/4096=VREFIN 011111111111 2(VREFIN)4097/4096 000000000001 2(VREFIN)1/4096 000000000000 0V 输出电压由下式给出:2(VREFIN)CODE/4096。上电时内部电路把DAC寄存器复位至0。输出缓冲器具有可达电源电压幅度的输出,它带有短路保护并能驱动具100pF负载电容器的2k负载。基准电压输入经过缓冲,它使DAC输入电阻与代码无关。TLC5618的最大串行时钟速率为:f(SCLK)max=1/tW(CH)mintW(CL)min=20MHz(3)TLC5618与单片机的接口TLC5618与单片机的接口见下图。串行数据通过PC6口输入TLC5618,串行时钟通过PC5输入,PC4接片选端。图7 TLC5618与单片机的接口图3.4 单片机ATMEGA16ATmega16是基于增强的AVR RISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。3.4.1 功能特性(1)高性能、低功耗的 8 位AVR 微处理器(2)先进的RISC 结构131 条指令 大多数指令执行时间为单个时钟周期32个8 位通用工作寄存器全静态工作工作于16 MHz 时性能高达16 MIPS只需两个时钟周期的硬件乘法器(3)非易失性程序和数据存储器16K 字节的系统内可编程Flash擦写寿命: 10,000 次具有独立锁定位的可选Boot 代码区通过片上Boot 程序实现系统内编程真正的同时读写操作512 字节的EEPROM擦写寿命: 100,000 次1K字节的片内SRAM可以对锁定位进行编程以实现用户程序的加密(4)JTAG 接口( 与IEEE 1149.1 标准兼容)符合JTAG 标准的边界扫描功能支持扩展的片内调试功能通过JTAG 接口实现对Flash、EEPROM、熔丝位和锁定位的编程(5)外设特点两个具有独立预分频器和比较器功能的8 位定时器/ 计数器一个具有预分频器、比较功能和捕捉功能的16 位定时器/ 计数器具有独立振荡器的实时计数器RTC四通道PWM8路10 位ADC8个单端通道TQFP 封装的7 个差分通道2 个具有可编程增益(1x, 10x, 或200x)的差分通道面向字节的两线接口两个可编程的串行USART可工作于主机/ 从机模式的SPI 串行接口具有独立片内振荡器的可编程看门狗定时器片内模拟比较器(6)特殊的处理器特点上电复位以及可编程的掉电检测片内经过标定的RC 振荡器片内/ 片外中断源6种睡眠模式: 空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及扩展的Standby 模式(7)I/O 和封装32 个可编程的I/O 口40引脚PDIP 封装, 44 引脚TQFP 封装, 与44 引脚MLF 封装(8)工作电压:ATmega16L:2.7 - 5.5VATmega16:4.5 - 5.5V(9)速度等级0 - 8 MHz ATmega16L0 - 16 MHz ATmega16(10)ATmega16L 在1 MHz, 3V, 25C 时的功耗正常模式: 1.1 mA空闲模式: 0.35 mA掉电模式: 1 A3.4.2 芯片结构芯片的结构框图如下:图8 ATMEGA16芯片结构为了获得最高的性能以及并行性, AVR 采用了Harvard 结构,具有独立的数据和程序总线。程序存储器里的指令通过一级流水线运行。CPU 在执行一条指令的同时读取下一条指令( 称为预取)。这个概念实现了指令的单时钟周期运行。程序存储器是可以在线编程的FLASH。快速访问寄存器文件包括32 个8 位通用工作寄存器,访问时间为一个时钟周期。从而实现了单时钟周期的ALU 操作。在典型的ALU 操作中,两个位于寄存器文件中的操作数同时被访问,然后执行运算,结果再被送回到寄存器文件。整个过程仅需一个时钟周期。寄存器文件里有6个寄存器可以用作3个16 位的间接寻址寄存器指针以寻址数据空间,实现高效的地址运算。其中一个指针还可以作为程序存储器查询表的地址指针。这些附加的功能寄存器即为16 位的X、Y、Z 寄存器。ALU支持寄存器之间以及寄存器和常数之间的算术和逻辑运算。ALU也可以执行单寄存器操作。运算完成之后状态寄存器的内容得到更新以反映操作结果。程序流程通过有/ 无条件的跳转指令和调用指令来控制,从而直接寻址整个地址空间。大多数指令长度为16 位,亦即每个程序存储器地址都包含一条16 位或32 位的指令。程序存储器空间分为两个区:引导程序区(Boot 区) 和应用程序区。这两个区都有专门的锁定位以实现读和读/ 写保护。用于写应用程序区的SPM指令必须位于引导程序区。在中断和调用子程序时返回地址的程序计数器(PC) 保存于堆栈之中。堆栈位于通用数据SRAM,因此其深度仅受限于SRAM 的大小。在复位例程里用户首先要初始化堆栈指针SP。这个指针位于I/O 空间,可以进行读写访问。数据SRAM可以通过5 种不同的寻址模式进行访问。AVR 存储器空间为线性的平面结构。AVR有一个灵活的中断模块。控制寄存器位于I/O空间。状态寄存器里有全局中断使能位。每个中断在中断向量表里都有独立的中断向量。各个中断的优先级与其在中断向量表的位置有关,中断向量地址越低,优先级越高。I/O 存储器空间包含64 个可以直接寻址的地址,作为CPU 外设的控制寄存器、SPI,以及其他I/O 功能。映射到数据空间即为寄存器文件之后的地址0x20 - 0x5F。3.4.3 引脚定义详细管脚图如下:图9 ATMEGA16引脚定义VCC: 数字电路的电源GND: 地端口A(PA7.PA0): 端口A 做为A/D 转换器的模拟输入端。端口A 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口A 处于高阻状态。端口B(PB7.PB0): 端口B 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口B 处于高阻状态。端口C(PC7.PC0): 端口C 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口C 处于高阻状态。如果JTAG接口使能,即使复位出现引脚 PC5(TDI)、 PC3(TMS)与 PC2(TCK)的上拉电阻被激活。端口D(PD7.PD0): 端口D 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。RESET: 复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。持续时间小于门限间的脉冲不能保证可靠复位。XTAL1与 XTAL2: 反向振荡放大器与片内时钟操作电路的输入端与输出端。XTAL1 与XTAL2 分别为用作片内振荡器的反向放大器的输入和输出,这个振荡器可以使用石英晶体,也可以使用陶瓷谐振器。熔丝位CKOPT 用来选择这两种放大器模式的其中之一。当CKOPT 被编程时振荡器在输出引脚产生满幅度的振荡。这种模式适合于噪声环境,以及需要通过XTAL2 驱动第二个时钟缓冲器的情况。而且这种模式的频率范围比较宽。当保持CKOPT 为未编程状态时,振荡器的输出信号幅度比较小。其优点是大大降低了功耗,但是频率范围比较窄,而且不能驱动其他时钟缓冲器。3.5 ATMEGA16L单片机指令系统与开发环境为了获得最高的性能以及并行性, AVR 采用了Harvard 结构,具有独立的数据和程序总线。程序存储器里的指令通过一级流水线运行。CPU 在执行一条指令的同时读取下一条指令。这个概念实现了指令的单时钟周期运行。程序存储器是可以在线编程的FLASH。AVRStudio是Atmel公司推出的AVR单片机集成开发环境。能运行于Windows9x/ME/NT/2000/XP等操作系统平台下。它提供了源文件的编辑器,用于软件仿真的芯片仿真器和在线硬件仿真(ICE)的接口。AVRStudio可采用C语言编程。AVRStudio还集成有软件调试(AVR Studio)和实时在线仿真器(JTAG ICE)以及AVRProg下载等功能。 图11 AVRStudio开发环境3.6 ATMEGA16L单片机下载环境4 软件设计4.1 波形的设计与实现4.1.1正弦波形的形成 在设计之初,我一直都在尝试使用函数来计算输出波形,使用这种方法,在示波器上得到了很好的波形,但是在CPU时钟频率没调至最高的情况下,所得到的频率只是多少毫赫兹到几十赫兹之间,基本上没有实用价值。要达到更高的频率,就得另辟蹊径了。分析一下为什么频率上不去,主要原因在于,使用单片机进行正弦函数的运算时占去了不少时间,如果去掉这一计算过程波形的频率应该大有提高,另外就是CPU时钟频率没有调至最高,以及DAC转换过程需要时间。为了达到更高的频率,首先就要免去单片机的计算负担,我使用的解决方法是人为计算出要输出的点,然后建一个表通过查表来进行输出,这样主要工作任务就落到了建表的过程中。在建表的时候考虑单片机的运算速度,把正弦波的整个波形给提高一半,即第一个表值为对应的05V中的2.5V,然后到最高点5V,负半周最低点到0V,再次又回到2.5V即一个正弦波周期,这样做的好处在于,查表所耗费的时钟周期相同,这样输出的点与点之间的距离就相等了,输出的波形将更趋于完美,当然更让我们感到的高兴的是它输出波形的频率将近达到了100K赫兹,能够满足我们设计的扩展要求了。为了实现频率的调整,我在一个正弦波周期里建了两百个点,如果我们隔一个取点的话,且在CPU时钟频率不改变的情形下,正弦波频率将相对于前面的频率提高将近一倍。这样我们就得到了解决频率调整的方法,首先进行CPU时钟频率选择,再调整一个正弦函数一个周期输出的点数,幅度的调节是通过初始幅度设置再通过外部放大电路来调节,设计程序流程图如图所示。另外,由于函数产生波形及其方便,ATMEGA16L单片机又提供了大量函数库,在设计过程中我在低频部分依然采用函数设计,因为这更有利于数字幅度和频率的调节。设计程序流程图如下图判断正弦波形初始化频率增加查表输出判断外部中断判断外部中断判断外部中断退出正弦波输出等待按键指令判断外部中断部频率增加频率增加判断中断查表输出正弦波形初始化判断NY图12 正弦波形查表形成流程图const char sin_data256= 0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae, 0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8, 0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf4, 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7, 0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe3,0xe1,0xde,0xdc, 0xda,0xd8,0xd6,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb4, 0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83, 0x80,0x7d,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52, 0x4f,0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27, 0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x14,0x12,0x10,0x0f,0x0d,0x0c,0x0b, 0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08, 0x09,0x00a,0xc,0x0d,0x0e,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c,0x1e,0x20,0x23, 0x25,0x27,0x29,0x2c,0x2e,0x30,0x33,0x35,0x38,0x3b,0x3d,0x40,0x43,0x46,0x48,0x4b, 0x4e,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x73,0x76,0x79,0x7c ;/正弦码表,可通过SIN()函数获得/* 产生正弦波(脉冲)*/void zhengxian(void) uint n,j; /定义变量 for(j=0;j256;j+)/循环256 n=14*sin_dataj; / 正弦波 TLC5618(n); / 正弦波输出 开始初始化主程序N其他波判断键值Y正弦波输出图13 正弦函数计算形成波形流程图4.1.2 三角波、谐波的形成三角波、谐波形成的原理同正弦波形成的原理大致相同,附谐波三角波的程序 ,三角波是通过给DA芯片一个从小到大(04095)的数值得到三角波的上升沿,在给一个从大到小(40950)的数值得到三角波的下降沿,谐波和三角波原理相同。其流程图如图11所示。开始初始化主程序N其他波判断键值Y三角波输出图14 三角波查表形成流程图void sanjiao(void) /* 产生三角波(脉冲)*/ uint j; /定义变量 for(j=0;j0;j-=80) /循环/ TLC5618(j); / 三角波下降沿 开始初始化主程序N其他波判断键值Y斜波输出void juchibo(void) /* 产生锯齿波(脉冲)*/ uint j; /定义变量 for(j=0;j0;j-)/循环/ TLC5618(j); / 锯齿波输出 4.1.3方波的形成 方波是我们最常用的一种波形,并且常常作为一种标准信号应用在各个领域。方波是由一个低电平,一个高电平组成,只接给DA芯片低电平和高电平就输出一个方波。void fangbo(void) /* 产生方波(脉冲)*/TLC5618(20);/ 方波低电平TLC5618(4090);/ 方波高电平开始初始化主程序N其他波判断键值Y方波输出4.2 键盘驱动程序 键盘驱动程序包括三个子程序。4.2.1 初始化子程序void KeyBoardInit(void)/按键程序/ PORT_Line &= 0xc3;/输出低电平 DDR_Line |= 0x3c;/输出 PORT_Row = 0xff;/上拉 DDR_Row = 0x00;/输入如上所示程序,键盘初始化子程序定义IO的输入输出属性及初始电平值。4.2.2按下判断子程序uint8 Key_Down(void) /判键盘是否活动函数 PORT_Line &= 0xc3;/输出低电平if (PIN_Row!=0xff) /如果有键按下return 1; /否则返回1elsereturn 0; /否则返回0该程序应该在主循环中循环调用,当有按键按下时,程序返回1,否则返回0。4.2.3键盘扫描子程序图15 键盘扫描 switch(d)/ switch函数/ case 0x01: PORTC=0x08;PORTB=0xff;zhengxian();break;/正弦波/ case 0x02: PORTC=0x04;PORTB=0xff;sanjiao();break; /三角波/ case 0x03: PORTC=0x02;PORTB=0xff;fangbo();break; /方波/ case 0x04: PORTC=0x01;PORTB=0xff;juchibo();break; /斜波/ default: d=0;break;/不输出/ 调用该程序,程序会扫描当前按键并返回键值。详细程序请参见附录一。4.3 主程序设计主控制板程序分为两部分:主程序和中断服务程序。主程序首先初始化,键盘等设备,然后进入主循环后,不断查询键盘状态,一旦有按键按下,就做相应的处理,例如进入下级子菜单,选择或执行等操作。程序流程图如下:图16 主程序流程图int main(void) /*-主函数-*/ uint i,n,sj; /定义变量/*- -*/ DDRB=0xff; PORTB=0xff; /设置B口为推挽1输出; DDRC=0xff; PORTC=0xf0; /0输入,1输出 DDRD=0xff; PORTD=0xff; /0输入,1输出 MCUCR=0x00;/低电平 GICR=0x40;/int0 GIFR=0x40;/寄存器 SREG=SREG|0x80; /开中断 /*-*/ while(1)/循环/ switch(d)/ switch函数/ case 0x01: PORTC=0x08;PORTB=0xff;zhengxian();break;/正弦波/ case 0x02: PORTC=0x04;PORTB=0xff;sanjiao();break; /三角波/ case 0x03: PORTC=0x02;PORTB=0xff;fangbo();break; /方波/ case 0x04: PORTC=0x01;PORTB=0xff;juchibo();break; /斜波/ default: d=0;break;/不输出/ 5 系统调试能产生正弦波、方波、三角波、锯齿波几种周期性波形,并且可通过调节变形成其它相关波形。具体测试方法如下:1)正弦波100KHz测试 用键盘设置幅度为5V,通过示波器观察输出波形,计算得输出幅度值为5V。正弦波1KHz测试用键盘设置幅度为5V,通过示波器观察输出波形,计算得输出幅度值为5V。 2)方波1KHz测试 用键盘设置幅度为5V,通过示波器观察输出波形,计算得输出幅度值为5V。 3)三角波1KHz测试 用键盘设置幅度为5V,通过示波器观察输出波形,计算得输出幅度值为5V。 4)组合波形测试 用键盘设置功能为组合输出,设置三种波形幅度为正弦波1V、方波1V、三角波1.5V,用示波器观察输出波形,波形正常。 5) 输出电压测试 用键盘设置正弦波输出幅度值为5V,用示波器观察输出波形,计算得输出电压为5V。同样设置三角波和方波输出幅度值,计算输出电压为5V。 6)用键盘输入编辑可生成正弦波由基波及其谐波线性组合的波形,以及各次谐波单独的波形。 7)输出波形的频率范围为100mHz100kHz;可以通过键盘输入粗调频率,通过外部中断一可同步调节频率,具有在低频部分调节步进小,在高频部分大的特点。 8)输出波形幅度范围为05V(峰-峰值),可通过可变电阻任意调整。结 论本系统中提出的高精度TLC5618。由于TLC5618的体积小、功耗低,控制简单,因而可以方便地用于电池供电测试仪表、移动电话、数字失调与增量调整、机器和机械控制等领域。这次毕业设计,从开始设计到设计的完成,现场调试,都让我感觉收获挺多,这不仅是理论上的升华,还有实践中的锻炼。在系统调试过程中,由于每个电路板出现的问题都不一样,因此,等做完这个毕业设计后,不仅提高了我的独立分析问题能力,而且还加强了实际解决问题的能力。外文翻译 Programmable Settling Time to 0.5 LSB 3 s or 15 s Typ Two 12-Bit CMOS Voltage Output DACs in an 8-Pin Package Simultaneous Updates for DAC A and DAC B Single Supply Operation 3 Wire Serial Interface High-Impedance Reference Inputs Voltage Output Range . 2 Times the Reference Input Voltage Software Power Down Mode Internal Power-On Reset Low Power Consumption:3 mW Typ in Slow Mode8 mW Typ in Fast Mode Input Data Update Rate of 1.21 MHz Monotonic Over Temperature applications Battery Powered Test Instruments Digital Offset and Gain Adjustment Battery Operated/Remote Industrial Controls Machine and Motion Control Devices Cellular TelephonesdescriptionThe TLC5618 is a dual 12-bit voltage output digital-to-analog converter (DAC) with buffered reference inputs (high impedance). The DACs have an output voltage range that is two times the reference voltage, and the DACs are monotonic.The device is simple to use, running from a single supply of 5 V. A power-on reset function is incorporated to ensure repeatable start-up conditions.Digital control of the TLC5618 is over a 3-wire CMOS-compatible serial bus. The device receives a 16-bit word for programming and to produce the analog output. The digital inputs feature Schmitt triggers for high noise immunity. Digital communication protocols include the SPI, QSPI, and Microwire standards. The 8-terminal small-outline D package allows digital control of analog functions in space-critical applications. The TLC5618C is characterized for operation from 0C to 70C. The TLC5618I is characterized for operation from 40C to 85C.Supply voltage (VDD to AGND) 7 VDigital input voltage range to AGND 0.3 V to VDD + 0.3 VReference input voltage range to AGND 0.3 V to VDD + 0.3 VOutput voltage at OUT from external source VDD + 0.3 VContinuous current at any terminal 20 mAOperating free-air temperature range, TA: TLC5618C 0C to 70C TLC5618I 40C to 85CStorage temperature range, Tstg 65C to 150CLead temperature 1,6 mm (1/16 inch) from case for 10 seconds 260Coperating characteristics over recommended operating free-air temperature range, VDD = 5 V 5%,Vref(REFIN) = 2.048 V (unless otherwise noted) (continued)Timing Diagramgeneral function The TLC5618 uses a resistor string network buffered with an op amp to convert 12-bit digital data to analog voltage levels (see functional block diagram and Figure 17). The output is the same polarity as the reference input (see Table 1).The output code is given by: An internal circuit resets the DAC register to all 0s on power-up. TLC5618 Typical Circuit Binary Code Table (0 V to 2 VREFIN Output), Gain = 2buffer amplifier The output buffer has a rail-to-rail output with short circuit protection and can drive a 2-k load witha 100 pF load capacitance. Settling time is a software selectable 15 s or 3 s, typical to within 0.5 LSB of final value.external referenceThe reference voltage input is buffered which makes the DAC input resistance not code dependent. Therefore,the REFIN input resistance is 10 M and the REFIN input capacitance is typically 5 pF independent of input code. The reference voltage determines the DAC full-scale output.logic interfaceThe logic inputs fun

温馨提示

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

评论

0/150

提交评论