📄 [技术问答 模拟技术] ad7705的源程序==www_ic37_com.htm
字号:
style="TEXT-INDENT: 2em">#defineWR_CLOCK_REG0x20//选中写时钟寄存器</P>
<P style="TEXT-INDENT: 2em">#define
RD_DATA_REG0x38//选中数据寄存器读</P>
<P
style="TEXT-INDENT: 2em">#defineWR_OFFSET_REG0x60//选中写offset寄存器</P>
<P
style="TEXT-INDENT: 2em">#defineRD_OFFSET_REG0x68//选中读offset寄存器</P>
<P style="TEXT-INDENT: 2em">#defineWR_FULL_REG0x70//选中写full
scale寄存器</P>
<P style="TEXT-INDENT: 2em">#defineRD_FULL_REG0x78//选中读full
scale寄存器</P>
<P
style="TEXT-INDENT: 2em">#defineSYS_ZERO_CALI0x80//系统零校准模式</P>
<P
style="TEXT-INDENT: 2em">#defineSYS_FULL_CALI0xC0//系统满量程校准模式</P>
<P style="TEXT-INDENT: 2em">#define ZERO_CALIBRATION0x00
//系统零校准</P>
<P style="TEXT-INDENT: 2em">#define FULL_CALIBRATION0x01
//系统满量程校准</P>
<P style="TEXT-INDENT: 2em">//CLOCK寄存器设置,无分频,50HZ输出更新速率</P>
<P style="TEXT-INDENT: 2em">#define CLOCK_REG_SET0X04</P>
<P style="TEXT-INDENT: 2em">//函数声明</P>
<P style="TEXT-INDENT: 2em">void reset_<A
title="AD7705 PDF资料和全国供应商"
href="http://www.ic37.com/AD7705-p.htm"
target=_blank>AD7705</A>(void);</P>
<P style="TEXT-INDENT: 2em">unsigned char read_<A
title="AD7705 PDF资料和全国供应商"
href="http://www.ic37.com/AD7705-p.htm"
target=_blank>AD7705</A>_byte(void);</P>
<P style="TEXT-INDENT: 2em">unsigned intread_<A
title="AD7705 PDF资料和全国供应商"
href="http://www.ic37.com/AD7705-p.htm"
target=_blank>AD7705</A>_word(void);</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">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">void write_<A
title="AD7705 PDF资料和全国供应商"
href="http://www.ic37.com/AD7705-p.htm"
target=_blank>AD7705</A>_word(unsigned int data);</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">void ReadData7705(unsigned int
*const pdata);</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">void start_<A
title="AD7705 PDF资料和全国供应商"
href="http://www.ic37.com/AD7705-p.htm"
target=_blank>AD7705</A>(void);</P>
<P style="TEXT-INDENT: 2em">#endif</P>
<P style="TEXT-INDENT: 2em">-----------<A
title="AD7705 PDF资料和全国供应商"
href="http://www.ic37.com/AD7705-p.htm"
target=_blank>AD7705</A>主文件开始--------------</P>
<P style="TEXT-INDENT: 2em">#include <util/delay.h></P>
<P style="TEXT-INDENT: 2em">#include <avr/eeprom.h></P>
<P style="TEXT-INDENT: 2em">#include "ad7705.h"</P>
<P style="TEXT-INDENT: 2em">#include "main.h"</P>
<P style="TEXT-INDENT: 2em">#include "crc16.h"</P>
<P style="TEXT-INDENT: 2em">#include "Usart.h"</P>
<P style="TEXT-INDENT: 2em">//针对四个量程的设置寄存器的设置内容</P>
<P
style="TEXT-INDENT: 2em">//(1)对于单极性V级别输入0-5V、0-20mA、0-10V这三个量程,输入范围为0-2V,无极性,增益为1,缓冲模式--0-2V</P>
<P
style="TEXT-INDENT: 2em">//(2)对于双极性V级别输入+-2.5V、+-5V这两个量程,输入范围为+-1V,双极性,增益为2,缓冲模式--+-2V</P>
<P
style="TEXT-INDENT: 2em">//(3)对于双精度mV级别输入+-500mV,增益为4,双极性,缓冲模式--+-2V</P>
<P
style="TEXT-INDENT: 2em">//(4)对双精度mV级别+-50mV,增益为32,双极性,缓冲模式--+-1.6V</P>
<P
style="TEXT-INDENT: 2em">//----MD1(0)MD0(0)G2(0)G1(0)G0(0)B/U(0)BUF(0)FSYNC(0)--------------------//
</P>
<P style="TEXT-INDENT: 2em">const unsigned char
text_of_setup[4]={0X06,0X0A,0X12,0X2A}; //缓冲模式,数字滤波同步</P>
<P style="TEXT-INDENT: 2em">extern volatile unsigned
charcommand[7];//校准命令全局数组</P>
<P style="TEXT-INDENT: 2em">extern volatile unsigned
charscale;//记录系统量程</P>
<P style="TEXT-INDENT: 2em">extern volatile unsigned
charNO_CALI_TYPE; //未校准类型</P>
<P style="TEXT-INDENT: 2em">extern volatile unsigned longint
ZS,GS;//当前量程的校准系数</P>
<P style="TEXT-INDENT: 2em">extern volatile unsigned
chartime_count;//超时标志</P>
<P
style="TEXT-INDENT: 2em">//----------------------------------------------------------------------------</P>
<P style="TEXT-INDENT: 2em">//函数:reset_<A
title="AD7705 PDF资料和全国供应商"
href="http://www.ic37.com/AD7705-p.htm"
target=_blank>AD7705</A></P>
<P style="TEXT-INDENT: 2em">//功能:<A title="AD7705 PDF资料和全国供应商"
href="http://www.ic37.com/AD7705-p.htm"
target=_blank>AD7705</A>串行接口失步后将其复位。复位后要延时500us再访问</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">//----------------------------------------------------------------------------</P>
<P style="TEXT-INDENT: 2em">void reset_<A
title="AD7705 PDF资料和全国供应商"
href="http://www.ic37.com/AD7705-p.htm"
target=_blank>AD7705</A>(void)</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">unsigned char i;</P>
<P style="TEXT-INDENT: 2em">AD_DIN1;</P>
<P style="TEXT-INDENT: 2em">for( i=0; i<36; i++ )</P>
<P style="TEXT-INDENT: 2em">{</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">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">_delay_us(30);</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>_byte</P>
<P style="TEXT-INDENT: 2em">//功能:从<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">//------------------------------------------------------------------------------------------</P>
<P style="TEXT-INDENT: 2em">unsigned char read_<A
title="AD7705 PDF资料和全国供应商"
href="http://www.ic37.com/AD7705-p.htm"
target=_blank>AD7705</A>_byte(void)</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">unsigned char data = 0;</P>
<P style="TEXT-INDENT: 2em">unsigned char i = 0;</P>
<P style="TEXT-INDENT: 2em">for( i=0; i<8; i++ )</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">data <<= 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">//函数:read_<A
title="AD7705 PDF资料和全国供应商"
href="http://www.ic37.com/AD7705-p.htm"
target=_blank>AD7705</A>_word</P>
<P style="TEXT-INDENT: 2em">//功能:从<A
title="AD7705 PDF资料和全国供应商"
href="http://www.ic37.com/AD7705-p.htm"
target=_blank>AD7705</A>读一个字的数据,共16bit</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">//------------------------------------------------------------------------------------------</P>
<P style="TEXT-INDENT: 2em">unsigned int read_<A
title="AD7705 PDF资料和全国供应商"
href="http://www.ic37.com/AD7705-p.htm"
target=_blank>AD7705</A>_word(void)</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">unsigned int data = 0;</P>
<P style="TEXT-INDENT: 2em">unsigned char i = 0;</P>
<P style="TEXT-INDENT: 2em">for( i=0; i<16; i++ )</P>
<P style="TEXT-INDENT: 2em">{</P>
<P style="TEXT-INDENT: 2em">data <<= 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>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -