dac5628.rar

  • soranxyh
    了解作者
  • C51
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2016-09-27 19:58
    上传日期
TLV5628 8 位,10us 八路 DAC,串行输入,可编程 1x 或 2x 输出,低功耗
dac5628.rar
  • dac5628.c
    4.1KB
内容介绍
/* dac5628.C file * * Copyright (c) 2002-2005 STMicroelectronics */ #include "STM8S207R.h" #include "STM8S207R8.h" #include "config.h" #include "dac5628.h" extern strdefRun_Inf pRun_Inf; extern strdefDAC pDAC; extern strdefEEPROM pEE; extern unsigned char para_chan_sta[NUMBER_OF_CHANNELS]; /******************************************************************************* * @函数名称 SoftDelay * @函数说明 软延时函数 * @输入参数 Cycles * @输出参数 无 * @返回参数 无 *****************************************************************************/ void SoftDelay(unsigned int Cycles) { unsigned int TempWord1; for (TempWord1 = 0; TempWord1 < Cycles; TempWord1++); } /******************************************************************************* * @函数名称 output * @函数说明 通道输出函数 * @输入参数 channel * @输出参数 无 * @返回参数 无 *****************************************************************************/ void output(unsigned char channel) { float temp; float temp1; if(channel > 7) return; if(((pDAC.output_data[channel] > 32767) && (pDAC.output_data[channel] < 65035 ))||(pDAC.output_data[channel] < 10500)) { para_chan_sta[channel] = 0; if(pDAC.output_data[channel] > 32767) { temp = pDAC.output_data[channel] - 65536; } else { temp = pDAC.output_data[channel]; } temp1 = (float)(pEE.EE_data_h[channel]-pEE.EE_data_l[channel]); temp = (temp / 10000) * temp1; temp = temp + (float)pEE.EE_data_l[channel]; DACStart(temp, channel); } else { para_chan_sta[channel] = 1; } } /******************************************************************************* * @函数名称 DACReg_Init * @函数说明 DAC寄存器初始化函数 * @输入参数 DACValue * @输出参数 无 * @返回参数 无 *****************************************************************************/ void DACReg_Init(unsigned long DACValue) { unsigned long TempWord = DACValue; unsigned char TempByte; Write_singleIO(SYNC_PORTX, SYNC_PORT_NUMBER, LOW_LEVEL); SoftDelay(1); // Write DAC data. for (TempByte = 0; TempByte < 32; TempByte++) { if (0x80000000 & TempWord) { Write_singleIO(DIN_PORTX, DIN_PORT_NUMBER, HIGH_LEVEL); } else { Write_singleIO(DIN_PORTX, DIN_PORT_NUMBER, LOW_LEVEL); } SoftDelay(0); Write_singleIO(SCLK_PORTX, SCLK_PORT_NUMBER, HIGH_LEVEL); SoftDelay(0); //9ns Write_singleIO(SCLK_PORTX, SCLK_PORT_NUMBER, LOW_LEVEL); SoftDelay(0); //9ns TempWord <<= 1; } SoftDelay(0); Write_singleIO(SYNC_PORTX, SYNC_PORT_NUMBER, HIGH_LEVEL); SoftDelay(4); //20ns } /******************************************************************************* * @函数名称 DACStart * @函数说明 DA转换函数 * @输入参数 DACValue,DACCh * @输出参数 无 * @返回参数 无 *****************************************************************************/ void DACStart(unsigned int DACValue, unsigned char DACCh) { unsigned long TempWord = 0x00000000; unsigned char TempByte; unsigned char Channel[8] = {0, 2, 4, 6, 7, 5, 3, 1}; // Calculate data for DAC chip. TempWord += 0x03; // command 4bit 向通道写数据 TempWord <<= 4; TempWord += (Channel[DACCh]); // address 4bit TempWord <<= 12; TempWord += (DACValue); // DATA 12bit TempWord <<= 8; //8bit free Write_singleIO(SYNC_PORTX, SYNC_PORT_NUMBER, LOW_LEVEL); SoftDelay(1); // Write DAC data. for (TempByte = 0; TempByte < 32; TempByte++) { if (0x80000000 & TempWord) { Write_singleIO(DIN_PORTX, DIN_PORT_NUMBER, HIGH_LEVEL); } else { Write_singleIO(DIN_PORTX, DIN_PORT_NUMBER, LOW_LEVEL); } //SoftDelay(0); Write_singleIO(SCLK_PORTX, SCLK_PORT_NUMBER, HIGH_LEVEL); //SoftDelay(0); //9ns Write_singleIO(SCLK_PORTX, SCLK_PORT_NUMBER, LOW_LEVEL); //SoftDelay(0); //9ns TempWord <<= 1; } //SoftDelay(0); Write_singleIO(SYNC_PORTX, SYNC_PORT_NUMBER, HIGH_LEVEL); //SoftDelay(0); }
评论
    相关推荐
    • ad8842code.rar
      八路8BIT DAC数模转换AD8842A的程序,51单片机。
    • DAC7611.zip
      基于STC12C5A60S2内部10AD与DAC7611芯片,模拟八路信号电压采集,而且把八路信号电压在TFT3.2彩屏上显示。
    • Proteus教程:电子线路设计、制版与仿真 (book完整版)
      6.14 基于DAC0832数模转换器的数控电源 6.14.1 Proteus电路设计 6.14.2 源程序设计 6.14.3 Proteus调试与仿真 6.14.4 总结与提示 6.15 基于ADC0808模数转换器的数字电压表 6.15.1 Proteus电路设计 6.15.2 源...
    • SPCE061A.rar
      基于SPCE061A单片机的应用程序,主要是电子类的
    • 百个原创51单片机c程序——经典
      学习单片机的精华资料,让你过目难忘。百个原创51单片机c程序——经典。 百个原创51单片机c程序——经典。
    • 单片机单元电路1222
      单片机入门基础,结合 XL2000 单片机综合仿真实验仪详细介绍了单片机的基础应用
    • xl2000user.rar
      插入随机的驱动光盘,打开 驱动程序\XLISP 目录。 双击其中的setup.exe, 按照提示,点下一步直到完成 安装:如果提醒您系统文件过旧则需要重新启动计算机,重启后继续安装。 // COPY/备份的安装文件,如果您无发...
    • 基于单片机控制的开关电源论文资料.rar
      基于单片机控制的开关电源资料合集。 目录如下: 1 概述 1 1.1 课题来源及意义 1 1.2 课题基本要求 2 ...1.3 相关背景介绍 2 ...2 基于单片机的数控直流电源方案设计 2 ...4.2.3 DAC0832转换子程序 21 4.2.4
    • 单片机ADC软件滤波
      单片机ADC软件滤波,10种AD采样的软件滤波方法,AD采样的软件滤波方法大全
    • Proteus7.12.rar
      Proteus7.12完美破解版.rar电路仿真软件很好用可以仿真单片数字模拟电路