《2022年基于DSP的输出电压范围可调的高精度毫伏信号发生器设计.pdf》由会员分享,可在线阅读,更多相关《2022年基于DSP的输出电压范围可调的高精度毫伏信号发生器设计.pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于 DSP的输出电压范围可调的高精度毫伏信号发生器设计( 内附完整程序 ) 目 录0 摘要-2 1 设计任务与要求 -2 1、1 设计任务 -2 1、2 基本电压 -2 1、3 发挥部分 -2 2 系统方案论证 -2 3 系统设计与理论分析 -2 3、1 核心模块 TMS320DSP 芯片-2 3、2 数模转换模块 -3 3、3 基准电压源模块 -3 3、4 模数转换模块 -4 3、5 485 通信模块 -5 3、6 显示模块 -6 4 系统调试 -7 4、1 调试仪器仪表 -7 4、2 调试及分析 -7 4、3 误差分析 -7 5 设计总结 -8 6 元件清单 -8 7 参考文献 -9 8
2、 程序清单 -10 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 20 页 - - - - - - - - - - 基于 DSP的输出电压范围可调的高精度毫伏信号发生器设计( 内附完整程序 ) 0、 摘要:本系统以 DSP 芯片为核心 ,控制过程就是DSP接收数据并送入DA 电路,利用 AD820作为比较器 , 正端接 D/A输出, 负端接地 , 反馈输出接 AD采样, 失调电压调零 , 输出形成闭环回路 ,通过 AD转换电路将实际值采回DSP,由 DSP 进行运算 , 得输入值与采回值之差
3、即误差, 输出结果通过 12864 液晶屏显示。系统通过LM4050 为 A/D,D/A 提供基准电压 ,使系统具有较高的可靠性。采用的 DSP 减少了由运放产生的非线性误差。关键字 :信号发生器TMS320DSP 芯片 基准电源芯片LM4050 1、设计任务与要求1、1 设计任务 : 设计出有一定输出电压范围高精度毫伏信号发生器, 并能够检测其输出精度1、2 基本要求(1) 输出电压 : 范围 01V,步进 0、5mV;具有输出电压值 (测量值 ) 显示功能 ; 由“” 、“”两键分别控制输出电压步进增减; (2) 具备 485通讯能力 , 波特率可设置 , 即 4800、9600、1920
4、0、38400 、56000、57600、 115200bps可设置 ; (3) 能显示设定值与实际值及其误差。1、3 发挥部分(1) 输出电压 : 范围 02V,步进 0、1mV;指定输出范围内任意电压值; (2) 能提高精度模拟 J 型热电偶分度简表 ( 见附表) 输出(输入温度后 , 自动输出电压值 );(3) 检测部分可单独成为电压测量模块, 测量范围、精度参考电压输出部分;2、系统方案论证用 DSP 作为核心芯片 , 输出的数字信号由D/A转换成模拟信号 , 再经由 A/D采回芯片内部形成反馈。利用 LM4050提供基准电压 ,7809 稳定基准电压源的输出电压, UA741做电压跟
5、随器使其工作稳定。为了使其工作更加精确, 需要再加一个 AD820作为比较器来减小非线性误差。而与单片机相比 ,DSP器件具有较高的集成度。 DSP具有更快的 CPU, 更大容量的存储器 , 内置有波特率发生器与 FIFO缓冲器。提供高速、同步串口与标准异步串口。有的片内集成了A/D与采样/ 保持电路 , 可提供 PWM 输出。DSP器件采用改进的哈佛结构 , 具有独立的程序与数据空间, 允许同时存取程序与数据。 内置高速的硬件乘法器 , 增强的多级流水线 , 使 DSP器件具有高速的数据运算能力。DSP 器件比 16 位单片机单指令执行时间快810 倍, 完成一次乘加运算快1630倍。3、系
6、统设计与理论分析3、1 核心模块 TMS320DSP 芯片DSP就是一种独特的微处理器, 就是以数字信号来处理大量信息的器件。其工作原理就是接收模拟信号 , 转换为 0或 1 的数字信号。再对数字信号进行修改、删除、强化, 并在其她系统芯片中把数字数据解译回模拟数据或实际环境格式。DSP微处理器一般具有如下主要特点: (1) 在一个指令周期内可完成一次乘法与一次加法; (2)程序与数据空间分开 , 可以同时访问指令与数据 ; (3)片内具有快速RAM, 通常可通过独立的数据总线在两块中同时访问; (4)具有低开销或无开销循环及跳转的硬件支持; (5)快速的中断处理与硬件I/O 支持; (6)具
7、有在单周期内操作的多个硬件地址产生器; (7)可以并行执行多个操作; (8)支持流水线操作 , 使取指、译码与执行等操作可以重叠执行。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 20 页 - - - - - - - - - - 基于 DSP的输出电压范围可调的高精度毫伏信号发生器设计( 内附完整程序 ) 3、2 数模转换模块3、2、1 D/A 转换电路如图所示 , 通过 AD5541芯片实现将数字量转换为模拟量, 送给电压比较器。 该电路通过 LM4050提供基准电压源 ,UA741做电压
8、跟随器 , 使电压稳定。AD820作为比较器 ,正端接 D/A输出, 负端接地 , 反馈输出接 AD采样, 失调电压调零 , 输出形成闭环回路 , 减少由运放产生的非线性误差 , 由 DSP 进行运算。算法: 输出值 =(D/65535)*REF, 其中 D为载入 DAC 代码。D/A 转换电路3、2、2 AD5541芯片AD5541 为单通道、 16位、串行输入、电压输出数模转换器(DAC),采用5 V 10%单电源供电。AD5541 采用多功能三线式接口 , 并且与 SPI、QSPI ?、MICROWIRE?、DSP接口标准兼容。 这些 DAC可提供 16位性能, 无需进行任何调整。 DA
9、C 输出不经过缓冲 , 可降低功耗 , 并减少输出缓冲所造成的失调误差。3、3 基准电压源模块3、3、1 LM4050 芯片LM4050/就是精密的二端、并联模式、带隙电压基准, 具有多种固定反向击穿电压:1 、225V 、2、048V、2、500V、3、000V、3、3V、4、096V与 5、000V。LM4050/LM4051 采用超小型、 3 引脚SC70表贴封装 (1、8mm x 1、8mm),比采用 SOT23 表贴封装的同类器件缩小了50% 。如图所示电路 , 即为基准电压电路 , 它为 A/D模块,D/A 模块提供稳定的基准电压。对电路稳定性起着至关重要的作用。精品资料 - -
10、- 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 20 页 - - - - - - - - - - 基于 DSP的输出电压范围可调的高精度毫伏信号发生器设计( 内附完整程序 ) 基准电压模块电路3、3、2 UA741芯片如图所示 ,UA741就是高增益运算放大器这类单片硅集成电路器。件提供输出短路保护与闭锁自由运作。这些类型还具有广泛的共同模式, 差模信号范围与低失调电压调零能力与使用适当的电位。1 与 5 为偏置 ( 调零端),2 为正向输入端 ,3 为反向输入端 ,4 接地,6 为输出 ,7 接电源 8 空脚
11、3、4 模数转换模块3、4、1 ADS8320 芯片AD8320其特点及功能 : ADS8320 就是 Burr-Brown 公司生产的逐次逼近式串行16 位微功耗CMOS 型高速 A/D 转换器 ,它的线性度为 0、05%,工作电源在 2、7V5、25V 范围内 ,采样频率最高可达 100kHz;在 2、7V 供电与 100kHz 采样速率下 ,其功耗仅为 1、8mW,而在 10kHz 低速采样时的功耗仅为0、 3mW;在非转换状态时可处于关闭模式,此时功耗可低至 100W;ADS8320具有同步串行 SPI/SSI接口,因而占用微处理器的端口较少;其差动输入信号范围为500mVVCC(工作
12、电源 );采用 8 引脚 MSOP 小体积封装算法:送入 DSP 芯片的数值 =(输入的模拟值 /REF)*65535 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 20 页 - - - - - - - - - - 基于 DSP的输出电压范围可调的高精度毫伏信号发生器设计( 内附完整程序 ) A/D 转换电路3、4、2 AD820 芯片AD820就是一款精密、低功耗、 FET输入运算放大器 , 可以采用 5 V 至 36 V 单电源或 2、5 V 至18 V 双电源供电。该放大器具有单电源供
13、电能力, 输入电压范围可扩展至负供电轨以下, 因此在单电源模式下可以处理地电压以下的输入信号。输出电压摆幅可扩展至各供电轨10 mV以内, 以提供最大的输出动态范围。直流精度性能包括最大800 V的失调电压、 2 V/C的失调电压漂移、小于25 pA的典型输入偏置电流以及低输入电压噪声, 源阻抗最高可达 1 G。单位增益带宽为1、8 MHz,10 kHz 时总谐波失真 (THD)为- 93 dB, 压摆率为 3 V/ s, 电源电流低至 800 A。AD820可直接驱动最高350 pF 的容性负载 , 并可提供最低 15 mA的输出电流。因此 , 该放大器能够处理各种负载情况。AD820在 A
14、/D 转换电路中有电压跟随器的作用。3、5 485 通信模块3、5、1 max485 芯片MAX485 就是用于 RS-485与 RS-422通信的低功耗收发器。 MAX485 的驱动器摆率不受限制 , 可以实现最高 2、5Mbps的传输速率。 这些收发器在驱动器禁用的空载或满载状态下, 吸取的电源电流在 120A至 500A之间。所有器件都工作在5V单电源下。 驱动器具有短路电流限制 ,并可以通过热关断电路将驱动器输出置为高阻状态。接收器输入具有失效保护特性, 当输入开路时, 可以确保逻辑高电平输出。 具有较高的抗干扰性能。 MAX485 就是市面上最为常见的RS422芯片, 亦就是用量最大
15、的RS422芯片, 性价比高 , 优质, 供货稳定就是大部分厂家采用MAX485接口芯片就是 Maxim公司的一种 RS 485芯片。MAX485 芯片的结构与引脚都非常简单, 内部含有一个驱动器与接收器。RO与 DI 端分别为接收器的输出与驱动器的输入端, 与单片机连接时只需分别与单片机的RXD 与 TXD相连即可 ;/RE 与DE端分别为接收与发送的使能端, 当/RE 为逻辑 0 时, 器件处于接收状态 ; 当 DE为逻辑 1 时, 器件处于发送状态 , 因为 MAX485 工作在半双工状态 , 所以只需用单片机的一个管脚控制这两个引脚即可 ;A 端与 B 端分别为接收与发送的差分信号端,
16、 当 A 引脚的电平高于B 时, 代表发送的数据为 1; 当 A的电平低于 B端时, 代表发送的数据为0。在与单片机连接时接线非常简单。只需要一个信号控制MAX485 的接收与发送即可。 同时将 A与 B端之间加匹配电阻 , 一般可选 100的电阻。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 20 页 - - - - - - - - - - 基于 DSP的输出电压范围可调的高精度毫伏信号发生器设计( 内附完整程序 ) MAX 引脚 ( 管脚 ) 图及工作电路3、5、2 MAX232芯片第一
17、部分就是电荷泵电路。 由 1、2、3、4、5、6 脚与 4 只电容构成。 功能就是产生 +12v 与-12v两个电源 , 提供给 RS-232串口电平的需要。第二部分就是数据转换通道。由7、8、9、10、11、12、 13、 14 脚构成两个数据通道。 其中 13 脚(R1IN) 、 12脚(R1OUT) 、 11 脚(T1IN) 、 14 脚(T1OUT)为第一数据通道。 8 脚(R2IN) 、9 脚(R2OUT) 、10 脚(T2IN) 、7 脚(T2OUT) 为第二数据通道。TTL/CMOS 数据从 T1IN、T2IN 输入转换成 RS-232数据从 T1OUT 、T2OUT 送到电脑
18、DB9插头;DB9插头的 RS-232数据从 R1IN、R2IN输入转换成 TTL/CMOS 数据后从 R1OUT 、R2OUT 输出。第三部分就是供电。 15 脚 GND 、16 脚 VCC(+5v)。3、5、3 485 串口通信电路串口电路3、6 显示模块显示电路采用 12864液晶屏 ,该点阵的屏显成本相对较低,适用于各类仪器 ,小型设备的显示领域。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 20 页 - - - - - - - - - - 基于 DSP的输出电压范围可调的高精度毫伏
19、信号发生器设计( 内附完整程序 ) 液晶屏连线方式4、 系统调试4、1 调试仪器仪表仪器名称型号数量双通道示波器RIGOL 1 数字万用表UT52 1 4、2 调试及分析首先,把 DA 与 AD 的基准电压源调到两伏 ,然后满量程输出的值就应该就是2 伏,而实际上我们得到的就是1、 89伏,原因就是因为 DA 的输出有漂移 ,DSP把数字信号送给DA5541,DA输出模拟信号 ,经过 ADS8320 输出模拟信号 ,整个过程 ,为了使输出的电压更加稳定,加入了AD820 作为电压跟随器 ,利用它的输入阻抗高 ,输出阻抗低的特点 ,同时通过减法器使实测电压缓慢的接近输入电压值 ,通过验证 ,AD
20、 采回的数值偏高 ,这样我们又加入 ua741电压跟随器来调整基准电压的输出 ,最后调整到输入电压值与实测电压值偏差接近0、 2 毫伏之内 ,最后把基准电压确定在 2、0 伏,然后通过万用表与示波器测量出AD 样值与 AD 的输出值通过 LCD12864 液晶屏将输入电压与实测电压显示出来,误差接近 0、1 毫伏,通过按键调整波特率 ,同时使输入电压步进 0、1 毫伏,这样反复通过 AD820 减法器使实测电压值接近输入值,这样就达到了本实验的要求与目的。4、3 误差分析造成误差的原因有(1)零点漂移 :由于运算放大器的零点漂移,温度漂移等带来的误差 ,可以通过温度补偿措施来解决此误差。(2)
21、A/D,D/A 转换误差 : 受 AD转换器精度及基准源稳定程度的限制, 不可避免地带来一定的误差。为了更精确的输出电源电压, 选用更多位数的AD,DA芯片。(3)因外界突发干扰或仪表显示值等引起的随机误差或粗大误差。(4)采样电阻自热效应引起的误差: 由于电阻在温度上升时阻值会发生变化, 因此会引起温度飘移 , 给系统带来测量的误差。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 20 页 - - - - - - - - - - 基于 DSP的输出电压范围可调的高精度毫伏信号发生器设计( 内
22、附完整程序 ) 5、 设计总结直流毫伏信号发生器可以实现如下功能: (1) 输出电压 : 范围 01V,步进 0、 5mV;具有输出电压值 ( 测量值 )显示功能 ; 由 “” 、“”两键分别控制输出电压步进增减; (2) 具备 485 通讯能力 , 波特率可设置 , 即 4800、9600、19200、38400 、56000、57600、115200bps 可设置 ; (3) 能显示设定值与实际值及其误差。本设计制作完成了题目要求的基本部分的全部要求与发挥部分的大部分要求, 而且部分功能大大高于发挥部分的要求。目前, 在电子仪器 , 设备中经常要用到直流毫伏信号发生器, 有时要求应具有良好
23、的稳定性,而且精度较高。该设计完全符合了这些要求, 如果再经过结构优化 , 将具有良好的市场前景。通过本次电子设计大赛的学习,对 DSP 的应用有了基本的了解 ,对 DSP 软件编程及调试有了基本的掌握。这对我们来说就是一个质的提高。在本次设计大赛的过程中,我们的团队精神体现了重要的作用。6、 元件清单TMS320F2812PGF芯片一片AD5541 芯片一片12864 液晶屏一块LM4050 芯片一片AD820 芯片二片ADS8320 芯片一片UA741 芯片一片MAX485 芯片一片MAX232 芯片一片胆电容一个开关四个三端稳压器 7805,AS2830各一片电阻,电容,导线若干7、 参
24、考文献 : 1 全国大学生电子设计设计竞赛组委员会、全国大学生电子设计竞赛训练教程M 、北京电子工业出版社 ,2005 年2 全国大学生电子设计设计竞赛组委员会、全国大学生电子设计竞赛获奖作品汇编( 第一届第五届 )M 、北京理工大学出版社 ,2004 年3 模拟电子技术基础、童诗白 , 华成英主编4 现代电力电子器件原理与应用、机械工业出版社5 TMS320 x28xxx 原理与开发、苏奎峰编8、 程序清单/BUS LCD #include DSP281x_Device、h / DSP281x Header File #include DSP281x_Examples 、h / DSP281
25、x Examples Include File 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 20 页 - - - - - - - - - - 基于 DSP的输出电压范围可调的高精度毫伏信号发生器设计( 内附完整程序 ) #include LED、C /* /定义区unsigned int value; unsigned char ADV AL8=x, 、,x,x,x,x,0; unsigned char ADV AL_err8=0, 、,0,0,0,0, ,0; unsigned int
26、key=0 x4E20; unsigned char key_baud=0 x00; unsigned int key_value=0 x0000; char key_false=0 x00; /* #define AVG 10 / Average sample limit #define BUF_SIZE 10 / Sample buffer size Uint16 Sample_AD=0 x0000; Uint16 SampleTableBUF_SIZE; Uint32 Sample=0,Sample_A VG=0; / SCI 发送接收数据中间变量Uint16 sdataB16; / S
27、end data for SCI-A Uint16 rdataB8; / Received data for SCI-A Uint16 rdata_pointB; / Used for checking the received data /* unsigned char baud_disp8=4,8,0,0, , ,0; unsigned char baud_disp18=9,6,0,0, , ,0; unsigned char baud_disp28=1,9,2,0,0, ,0; unsigned char baud_disp38=3,8,4,0,0, ,0; unsigned char
28、baud_disp48=5,6,0,0,0, ,0; unsigned char baud_disp58=5,7,6,0,0, ,0; unsigned char baud_disp68=1,1,5,2,0,0,0; unsigned char number_tab=0,1,2,3,4,5,6,7,8,9; /* /* /波特率设定首位高字节 ,二位低字节/SCI_PRD14=4800,9600,19200,38400,56000,57600,115200; unsigned char SCI_PRD14=0 x03,0 xCF,0 x01,0 xE7,0 x00,0 xF3,0 x00,0
29、x79,0 x00,0 x52,0 x00,0 x50,0 x00,0 x27; void initlcm(void); /初始化 LCM void sendCMD(char dat); /写控制指令void sendDAT(char dat); /写显示数据 ;也可以写一个单字节字符void display(char x_add,char dat,char dat1);/ 写汉字到 LCD 屏指定位置void delay(unsigned int t); /* /SCI 函数声明 FIFO 模式interrupt void scibTxFifoIsr(void); interrupt voi
30、d scibRxFifoIsr(void); interrupt void cpu_timer0_isr(void); void scib_fifo_init(void); void delay_ad(void); /* 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 20 页 - - - - - - - - - - 基于 DSP的输出电压范围可调的高精度毫伏信号发生器设计( 内附完整程序 ) /* Uint16 spi_data=0 x0000; / send data void delay
31、_loop(void); void spi_xmit(Uint16 a); void spi_fifo_init(void); void spi_init(void); void error(void); /* /发送半角数字与字母字符串/*p 为字符串指针/amount 所发送字符串的最大数量void char_string (unsigned char *p,unsigned char amount); unsigned char title= 输入电压 ;/ 标题unsigned char title1= 实测电压 ;/ 标题unsigned char title2= 输入波特率 ;/
32、标题unsigned char title3= 实际偏差 ;/ 标题/ void delay(unsigned int t) while(t0) t-; /* void sendBYTE(char dat) /串行传送一字节数据 char i; GpioMuxRegs、GPBDIR、all|=SID; for (i=0;i8;i+) delay(1000); GpioDataRegs 、GPBDAT、all&=SCK; /SCK=0 if(dat & 0 x80)!=0) GpioDataRegs 、GPBDAT、all|=SID; /SID=1 else GpioDataRegs 、GPBD
33、AT、all&=SID; /SID=0 GpioDataRegs 、GPBDAT、all|=SCK; /SCK=1; dat = dat1; /* /如果需要改变半字地址 ,也就是用此程序、只需输入地址就可以、void sendCMD(char dat) /写控制指令 sendBYTE(0 xf8); sendBYTE(dat & 0 xf0); sendBYTE(dat4)&0 xf0); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 20 页 - - - - - - - - - - 基
34、于 DSP的输出电压范围可调的高精度毫伏信号发生器设计( 内附完整程序 ) /* void sendDAT(char dat)/写显示数据 ;也可以写一个单字节字符 sendBYTE(0 xfa); sendBYTE(dat & 0 xf0); sendBYTE(dat= GM12232_MINADD_L1)&(x_add = GM12232_MINADD_L2)&(x_add = GM12232_MINADD_L3)&(x_add = GM12232_MINADD_L4)&(x_add GM12232_MAXADD_L4) sendCMD(x_add); for (n=0; pn!=0; n
35、+) sendDAT(pn); else return ; /说明:实验标题 1,应用单实形式发送、void send_title() /标题显示 sendCMD(DDRAM_0); /DDRAM sendCMD(off_cursor); /关光标 /* /说明:单片机初始化void init(void) initlcm(); /LCD 初始化char_string (title,LCD_L11); /发送本实验标题 1 char_string (title1,LCD_L21); /发送本实验标题1 char_string (title2,LCD_L31); /发送本实验标题1 char_st
36、ring (title3,LCD_L41); /发送本实验标题1 char_string (baud_disp,LCD_L36); send_title(); /发送本实验标题2 sendCMD(off_cursor); /关光标 /* /说明:数值转换void conv(unsigned int intdata, unsigned char *pc,unsigned char set_or_ad)/set=0 x00,ad=0 x01 unsigned int a,b,c,d; if(0 x00=set_or_ad) sdataB0=0 x41; sdataB1=ADVAL0=number_
37、tabintdata/10000 ; a=intdata%10000 ; sdataB2= ADVAL2=number_taba/1000 ; b=a%1000 ; sdataB3=ADVAL3=number_tabb/100 ; c=b%100; sdataB4=ADVAL4=number_tabc/10 ; d=c%10; sdataB5=ADVAL5=number_tabd/1 ; sdataB6=0 x30; sdataB7=0 x30; pc0=ADV AL0; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - -
38、 - - -第 12 页,共 20 页 - - - - - - - - - - 基于 DSP的输出电压范围可调的高精度毫伏信号发生器设计( 内附完整程序 ) pc1=、; pc2=ADV AL2; pc3=ADV AL3; pc4=ADV AL4; pc5=ADV AL5; pc6=0; if(0 x01=set_or_ad) sdataB8=0 x42; sdataB9=ADVAL0=number_tabintdata/10000 ; a=intdata%10000 ; sdataB10= ADVAL2=number_taba/1000 ; b=a%1000 ; sdataB11=ADVAL
39、3=number_tabb/100 ; c=b%100; sdataB12=ADVAL4=number_tabc/10 ; d=c%10; sdataB13=ADVAL5=number_tabd/1 ; sdataB14=0 x30; sdataB15=0 x30; pc0=ADV AL0; pc1=、; pc2=ADV AL2; pc3=ADV AL3; pc4=ADV AL4; pc5=ADV AL5; pc6=0; if(0 x02=set_or_ad) intdata=abs(float)key-Sample_AD); ADVAL0=number_tabintdata/10000 ;
40、a=intdata%10000 ; ADVAL2=number_taba/1000 ; b=a%1000 ; ADVAL3=number_tabb/100 ; c=b%100; ADVAL4=number_tabc/10 ; d=c%10; ADVAL5=number_tabd/1 ; pc0=ADV AL0; pc1=、; pc2=ADV AL2; pc3=ADV AL3; pc4=ADV AL4; pc5=ADV AL5; pc6=0; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 2
41、0 页 - - - - - - - - - - 基于 DSP的输出电压范围可调的高精度毫伏信号发生器设计( 内附完整程序 ) /* unsigned int DA_OUT(void) float vol_const=3、27675; float key_voltage; unsigned int key_vol; key_voltage=(float)key; key_voltage*=vol_const; spi_data=key_voltage; void delay_ad(void) unsigned int i,j; for(i=0;i6;i+) for(j=0;j10;j+); Ui
42、nt16 ads8320(void) unsigned int i,da=0 x0000; GpioDataRegs 、GPADAT、bit、GPIOA0=1; GpioDataRegs 、GPADAT、bit、GPIOA1=1; delay_ad(); GpioDataRegs 、GPADAT、bit、GPIOA0=0; GpioDataRegs 、GPADAT、bit、GPIOA1=1; delay_ad(); while(1) GpioDataRegs 、GPADAT、bit、GPIOA1=1; delay_ad(); if( GpioDataRegs、GPADAT、bit、GPIOA2
43、=0) break; GpioDataRegs 、GPADAT、bit、GPIOA1=0; delay_ad(); for(i=0;i0 x10;i+) GpioDataRegs 、GPADAT、bit、GPIOA1=1; delay_ad(); if( GpioDataRegs、GPADAT、bit、GPIOA2=0) da=da1; else da=da|0 x0001; da=da1; GpioDataRegs 、GPADAT、bit、GPIOA1=0; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -
44、第 14 页,共 20 页 - - - - - - - - - - 基于 DSP的输出电压范围可调的高精度毫伏信号发生器设计( 内附完整程序 ) delay_ad(); GpioDataRegs 、GPADAT、bit、GPIOA0=1; delay_ad(); return(da); void AD_SUM_AVG(void) unsigned int i=0; float aF=0、9; static float Sample_A VG_fst=0、0; Sample=0; for (i=0; iA VG; i+) SampleTablei=ads8320(); Sample=Sample
45、+SampleTablei; Sample_A VG=Sample/AVG; Sample_A VG=(1-aF)*Sample_AVG+aF*Sample_AVG_fst; Sample_AD=Sample_A VG*0 、327675; Sample_A VG_fst=Sample_AVG; void main(void) InitSysCtrl(); /初始化系统/初始化系统时钟 ,系统时钟 150M,低俗时钟 37、5M,打开外设时钟 SPI 控制 37、5M EALLOW; SysCtrlRegs 、PCLKCR、bit、SPIENCLK=0 x01; EDIS; /* /初始化 G
46、PIOF,设定 SPI外设控制EALLOW; GpioMuxRegs、GPFMUX、all=0 x000F; / Select GPIOs to be SPI pins / Port F MUX - x000 0000 0000 1111 EDIS; /初始化 GPIOA,设定 GPA0 为 AD8320 的 CS,GPA1为 SCK,GPA2 为 Dout EALLOW; GpioMuxRegs、GPAMUX 、all=0 x0000; / GPIOI/Os GpioMuxRegs、GPADIR、all=0 xFFFB; / GPIO DIR select GPIOs as output G
47、pioDataRegs 、GPADAT、bit、GPIOA0=1; /ads8320-cs GpioDataRegs 、GPADAT、bit、GPIOA1=1; /ads8320-clk EDIS; /初始化 SCI,GP4为 TXD,GP5 为 RXD EALLOW; GpioMuxRegs、GPGMUX、bit、SCITXDB_GPIOG4 = 1; GpioMuxRegs、GPGMUX、bit、SCIRXDB_GPIOG5 = 1; EDIS; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 15
48、页,共 20 页 - - - - - - - - - - 基于 DSP的输出电压范围可调的高精度毫伏信号发生器设计( 内附完整程序 ) /初始化 GPIOB,设定低四位为按键输入EALLOW; GpioMuxRegs、GPBMUX 、all=0 x0000; / peripheral I/Os GpioMuxRegs、GPBDIR、all=0 xFF00; / GPIO DIR select GPIOs as output EDIS; /* /* DINT; /关闭中断IER = 0 x0000; IFR = 0 x0000; /* InitPieCtrl(); /初始化 PIE 控制寄存器I
49、nitPieVectTable(); /初始化 PIE 参数表init(); /初始化液晶显示/* EALLOW; / This is needed to write to EALLOW protected registers PieVectTable 、RXBINT = &scibRxFifoIsr; PieVectTable 、TXBINT = &scibTxFifoIsr; EDIS; / This is needed to disable write to EALLOW protected registers /* scib_fifo_init(); / Init SCI-B spi_
50、fifo_init(); / Initialize the Spi FIFO spi_init(); / init SPI /* / Enable interrupts required for this example PieCtrlRegs、PIECRTL、bit、ENPIE=1; / Enable the PIE block PieCtrlRegs、PIEIER9、bit、INTx3=1; / PIE Group 9, INT1 PieCtrlRegs、PIEIER9、bit、INTx4=1; / PIE Group 9, INT2 /* / PieCtrlRegs、PIEIER6、bi