⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 [技术问答 模拟技术] ad7705的源程序==www_ic37_com.htm

📁 有关于AD7705的众多详细资料
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">}</P>
                  <P style="TEXT-INDENT: 2em">return data;</P>
                  <P style="TEXT-INDENT: 2em">}</P>
                  <P 
                  style="TEXT-INDENT: 2em">//------------------------------------------------------------------------------------------</P>
                  <P style="TEXT-INDENT: 2em">//函数:read_<A 
                  title="AD7705 PDF资料和全国供应商" 
                  href="http://www.ic37.com/AD7705-p.htm" 
                  target=_blank>AD7705</A>_dword</P>
                  <P style="TEXT-INDENT: 2em">//功能:从<A 
                  title="AD7705 PDF资料和全国供应商" 
                  href="http://www.ic37.com/AD7705-p.htm" 
                  target=_blank>AD7705</A>读一个24的数据</P>
                  <P style="TEXT-INDENT: 2em">//参数:无</P>
                  <P style="TEXT-INDENT: 2em">//返回:读到的一字节数据</P>
                  <P style="TEXT-INDENT: 2em">//变量:无</P>
                  <P style="TEXT-INDENT: 2em">//备注:<A title="AD7705 PDF资料和全国供应商" 
                  href="http://www.ic37.com/AD7705-p.htm" 
                  target=_blank>AD7705</A>是一个16位AD</P>
                  <P 
                  style="TEXT-INDENT: 2em">//------------------------------------------------------------------------------------------</P>
                  <P style="TEXT-INDENT: 2em">unsigned long int read_<A 
                  title="AD7705 PDF资料和全国供应商" 
                  href="http://www.ic37.com/AD7705-p.htm" 
                  target=_blank>AD7705</A>_dword(void)</P>
                  <P style="TEXT-INDENT: 2em">{</P>
                  <P style="TEXT-INDENT: 2em">unsigned long data = 0;</P>
                  <P style="TEXT-INDENT: 2em">unsigned char i = 0;</P>
                  <P style="TEXT-INDENT: 2em">for( i=0; i&lt;24; i++ )</P>
                  <P style="TEXT-INDENT: 2em">{</P>
                  <P style="TEXT-INDENT: 2em">data &lt;&lt;= 1;</P>
                  <P style="TEXT-INDENT: 2em">AD_CLK0;</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">if(AD_DOUT)</P>
                  <P style="TEXT-INDENT: 2em">{</P>
                  <P style="TEXT-INDENT: 2em">data++;</P>
                  <P style="TEXT-INDENT: 2em">}</P>
                  <P style="TEXT-INDENT: 2em">AD_CLK1;</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">}</P>
                  <P style="TEXT-INDENT: 2em">return data;</P>
                  <P style="TEXT-INDENT: 2em">}</P>
                  <P 
                  style="TEXT-INDENT: 2em">//------------------------------------------------------------------------------------------</P>
                  <P style="TEXT-INDENT: 2em">//函数:write_<A 
                  title="AD7705 PDF资料和全国供应商" 
                  href="http://www.ic37.com/AD7705-p.htm" 
                  target=_blank>AD7705</A>_byte</P>
                  <P style="TEXT-INDENT: 2em">//功能:往<A 
                  title="AD7705 PDF资料和全国供应商" 
                  href="http://www.ic37.com/AD7705-p.htm" 
                  target=_blank>AD7705</A>写8位数据</P>
                  <P style="TEXT-INDENT: 2em">//参数:IN - uint8_tdata,要写入<A 
                  title="AD7705 PDF资料和全国供应商" 
                  href="http://www.ic37.com/AD7705-p.htm" 
                  target=_blank>AD7705</A>的数据</P>
                  <P style="TEXT-INDENT: 2em">//返回:无</P>
                  <P style="TEXT-INDENT: 2em">//变量:无</P>
                  <P style="TEXT-INDENT: 2em">//备注:无</P>
                  <P 
                  style="TEXT-INDENT: 2em">//------------------------------------------------------------------------------------------</P>
                  <P style="TEXT-INDENT: 2em">void write_<A 
                  title="AD7705 PDF资料和全国供应商" 
                  href="http://www.ic37.com/AD7705-p.htm" 
                  target=_blank>AD7705</A>_byte(unsigned char data)</P>
                  <P style="TEXT-INDENT: 2em">{</P>
                  <P style="TEXT-INDENT: 2em">for(unsigned char i=0; i&lt;8; 
                  i++)</P>
                  <P style="TEXT-INDENT: 2em">{</P>
                  <P style="TEXT-INDENT: 2em">AD_CLK0;</P>
                  <P style="TEXT-INDENT: 2em">if(data&amp;0x80)</P>
                  <P style="TEXT-INDENT: 2em">AD_DIN1;</P>
                  <P style="TEXT-INDENT: 2em">else</P>
                  <P style="TEXT-INDENT: 2em">AD_DIN0;</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">AD_CLK1;</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">data &lt;&lt;= 1;</P>
                  <P style="TEXT-INDENT: 2em">}</P>
                  <P style="TEXT-INDENT: 2em">AD_DIN1;</P>
                  <P style="TEXT-INDENT: 2em">}</P>
                  <P 
                  style="TEXT-INDENT: 2em">//------------------------------------------------------------------------------------------</P>
                  <P style="TEXT-INDENT: 2em">//函数:write_<A 
                  title="AD7705 PDF资料和全国供应商" 
                  href="http://www.ic37.com/AD7705-p.htm" 
                  target=_blank>AD7705</A>_dword</P>
                  <P style="TEXT-INDENT: 2em">//功能:往<A 
                  title="AD7705 PDF资料和全国供应商" 
                  href="http://www.ic37.com/AD7705-p.htm" 
                  target=_blank>AD7705</A>写24位数据,因为<A title="AD7705 PDF资料和全国供应商" 
                  href="http://www.ic37.com/AD7705-p.htm" 
                  target=_blank>AD7705</A>是24位的器件</P>
                  <P style="TEXT-INDENT: 2em">//参数:IN - int32_tdata,要写入<A 
                  title="AD7705 PDF资料和全国供应商" 
                  href="http://www.ic37.com/AD7705-p.htm" 
                  target=_blank>AD7705</A>的数据</P>
                  <P style="TEXT-INDENT: 2em">//返回:无</P>
                  <P style="TEXT-INDENT: 2em">//变量:无</P>
                  <P style="TEXT-INDENT: 2em">//备注:无</P>
                  <P 
                  style="TEXT-INDENT: 2em">//------------------------------------------------------------------------------------------</P>
                  <P style="TEXT-INDENT: 2em">void write_<A 
                  title="AD7705 PDF资料和全国供应商" 
                  href="http://www.ic37.com/AD7705-p.htm" 
                  target=_blank>AD7705</A>_dword(unsigned long int data)</P>
                  <P style="TEXT-INDENT: 2em">{</P>
                  <P style="TEXT-INDENT: 2em">for(unsigned char i = 0; i&lt;24; 
                  i++)</P>
                  <P style="TEXT-INDENT: 2em">{</P>
                  <P style="TEXT-INDENT: 2em">AD_CLK0;</P>
                  <P style="TEXT-INDENT: 2em">if(data&amp;0x800000)</P>
                  <P style="TEXT-INDENT: 2em">AD_DIN1;</P>
                  <P style="TEXT-INDENT: 2em">else</P>
                  <P style="TEXT-INDENT: 2em">AD_DIN0;</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">AD_CLK1;</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">asm("nop");</P>
                  <P style="TEXT-INDENT: 2em">data &lt;&lt;= 1;</P>
                  <P style="TEXT-INDENT: 2em">}</P>
                  <P style="TEXT-INDENT: 2em">AD_DIN1;</P>
                  <P style="TEXT-INDENT: 2em">}</P>
                  <P 
                  style="TEXT-INDENT: 2em">//------------------------------------------------------------------------------------------</P>
                  <P style="TEXT-INDENT: 2em">//函数:<A title="AD7705 PDF资料和全国供应商" 
                  href="http://www.ic37.com/AD7705-p.htm" 
                  target=_blank>AD7705</A>_calibration</P>
                  <P style="TEXT-INDENT: 2em">//功能:根据cali_type的值对<A 
                  title="AD7705 PDF资料和全国供应商" 
                  href="http://www.ic37.com/AD7705-p.htm" 
                  target=_blank>AD7705</A>进行系统0校正或系统满量程校正,并将各校正值和校正标志存入</P>
                  <P style="TEXT-INDENT: 2em">//EEPROM,数据保存为双备份。数据块格式为: 
                  内部0校正值(4byte), 内部满量程校正值(4byte), </P>
                  <P style="TEXT-INDENT: 2em">//系统0校正值(4byte), 系统满量程校正值(4byte), 
                  系统0校正标志(1byte),系统满量程校正标志</P>
                  <P 
                  style="TEXT-INDENT: 2em">//(1byte),CRC16校验值(2byte),共20byte。</P>
                  <P style="TEXT-INDENT: 2em">//参数:IN - uint8_t board, 0 - 
                  对主板进行校正,1-对副板进行校正</P>
                  <P style="TEXT-INDENT: 2em">//IN - uint8_t range, 需要校正的量程</P>
                  <P style="TEXT-INDENT: 2em">//IN - uint8_t cali_type, 
                  校正类型,ZERO_CALIBRATION- 0校正;</P>
                  <P style="TEXT-INDENT: 2em">//FULL_CALIBRATION - 满量程校正</P>
                  <P 
                  style="TEXT-INDENT: 2em">//返回:返回-1表示校准失败,非0表示校正成功,并返回相应的索引值</P>
                  <P style="TEXT-INDENT: 2em">//变量:无</P>
                  <P style="TEXT-INDENT: 2em">//备注:做满量程校正前必须先做零校正</P>
                  <P 
                  style="TEXT-INDENT: 2em">//------------------------------------------------------------------------------------------</P>
                  <P style="TEXT-INDENT: 2em">//校准命令格式</P>
                  <P style="TEXT-INDENT: 2em">//STXData LongCommand 
                  CodeParameterCheckSumETX</P>
                  <P 
                  style="TEXT-INDENT: 2em">//0x55数据长度(2)量程指示00H/01HCRC16(2)0x0D</P>
                  <P style="TEXT-INDENT: 2em">//</P>
                  <P 
                  style="TEXT-INDENT: 2em">//校准过程中要用到Command[]的数据,所以校准之前要关掉串口接收中断</P>
                  <P style="TEXT-INDENT: 2em">void <A title="AD7705 PDF资料和全国供应商" 
                  href="http://www.ic37.com/AD7705-p.htm" 
                  target=_blank>AD7705</A>_calibration(void)</P>
                  <P style="TEXT-INDENT: 2em">{</P>
                  <P style="TEXT-INDENT: 2em">//记录读取EEPROM的次数</P>
                  <P style="TEXT-INDENT: 2em">unsigned char readtimes =0;</P>
                  <P style="TEXT-INDENT: 2em">//记录上位机发送的校准量程类型</P>
                  <P style="TEXT-INDENT: 2em">unsigned char cali_scale =0;</P>
                  <P style="TEXT-INDENT: 2em">//读取24位校准系数的临时变量</P>
                  <P style="TEXT-INDENT: 2em">unsigned long int temp =0;</P>
                  <P 
                  style="TEXT-INDENT: 2em">//临时的校准系数数组,存放格式ZSL、ZSM、ZSH;GSL、GSM、GSH;CRCL、CRCH</P>
                  <P 
                  style="TEXT-INDENT: 2em">//并在校准结束时作为参数传递给TXOUT()函数,发送校准系数给上位机</P>
                  <P style="TEXT-INDENT: 2em">unsigned char coefficient[8] ={0}; 
                  //test[8]={0};</P>
                  <P style="TEXT-INDENT: 2em">//16位校验和的临时变量</P>
                  <P style="TEXT-INDENT: 2em">unsigned int crcvalue =0;</P>
                  <P style="TEXT-INDENT: 2em">AD_CS1;</P>
                  <P style="TEXT-INDENT: 2em">cali_scale = command[2]; 
                  //获取上位机发送的要校准的量程类型</P>
                  <P style="TEXT-INDENT: 2em">//读取EEPROM的第一份校准系数</P>
                  <P style="TEXT-INDENT: 2em">eeprom_busy_wait();</P>
                  <P style="TEXT-INDENT: 2em">eeprom_read_block( 
                  &amp;coefficient[0], (void*)(ADDR_EEPROM_1+(cali_scale-1)*10), 
                  8 );</P>
                  <P style="TEXT-INDENT: 2em">crcvalue = <A 
                  title="checksum PDF资料和全国供应商" 
                  href="http://www.ic37.com/checksum-p.htm" 
                  target=_blank>checksum</A>( &amp;coefficient[0], 6 ); 
                  //将6个值调用CRC校验函数得到校验</P>
                  <P style="TEXT-INDENT: 2em">if( 
                  (coefficient[7]*256+coefficient[6]) != crcvalue )</P>
                  <P style="TEXT-INDENT: 2em">{</P>
                  <P style="TEXT-INDENT: 2em">readtimes++;</P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -