搜索
bottom↓
回复: 6

用过AD7715进来看看

[复制链接]

出0入42汤圆

发表于 2009-5-22 17:29:56 | 显示全部楼层 |阅读模式
#include <iom48v.h>
#include <macros.h>
#define  uchar unsigned char
#define  uint  unsigned int
#define  PD    PORTD
#define  PC    PORTC
#define  PB    PORTB

//控制端口定义
//端口操作定义
#define CS_7715          PB7                     //AD7715的片选接在PA4
#define SET_CS_7715    PORTB |= 1<<CS_7715
#define CLR_CS_7715 PORTB &= ~(1<<CS_7715)

#define RET              PB6                     //AD7715的复位接在PA5
#define SET_RET        PORTB |= 1<<RET
#define CLR_RET        PORTB &= ~(1<<RET)

#define DRRY          PB2                     //AD7715的数据有效接在PB3
#define DRRY_7715    (PINB & (1<<DRRY))
const uchar led[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
const uchar ledrl[]={0XFE,0XFD,0XFB,0XF7,0XEF};
void delay_ms(void)//1ms延时函数
{
  unsigned int i;
  asm("nop");
  for (i=0;i<1139;i++)
  {
  ;
  }
}

void delay_nms(unsigned int n)//延时n毫秒
{
  unsigned int i;
  for (i=0;i<n;i++)//执行n次1毫秒延时
{ delay_ms(); }
}

void delay_nus(unsigned int n)//延时N微秒,N>=5  晶振:8MHz
{
  unsigned int i;
  for (i=5;i<n;i++)
            {
          asm("nop");
          asm("nop");         
            }
}
void port_init(void)
{
PD=0XFF;
DDRC=0XFF;
PC=0XFF;
DDRD=0XFF;
DDRB=0Xff;
PB=0XFF;
}
//SPI initialize
// clock rate: 62500hz
void spi_init(void)
{
DDRB |= (1<<PB5)|(1<<PB4);        //设置MOSI 和SCK 为输出
DDRB &= ~(1<<PB3);
SPCR = 0x53; //setup SPI
SPSR = 0x00; //setup SPI
}
//写入AD7705一字节函数
//入口:data 需写入的字节数据
uint wr_byte(unsigned char data)
{

SPDR = data;
while(!(SPSR &(1 << SPIF)));

return SPDR;
}

//读出AD7705数据函数
//出口:读出的2字节数据
unsigned int rd_7705(void)
   {
   unsigned int temp;                  //定义临时变量
   wr_byte(0x38);                      //选择读数据寄存器,1通道
   SPDR = 0;                           //启动数据传输
   while(!(SPSR &(1 << SPIF)));        //等待传输结束
   temp = SPDR<<8;                     //读取高字节
   delay_nms(20);
   SPDR = 0;                            //启动数据传输
   while(!(SPSR &(1 << SPIF)));         //等待传输结束
   temp |= SPDR;                        //读取低字节
   return(temp);
   }

//判断有无数据函数
//出口:读出的2字节数据

unsigned int ad7715(void)
   {
   if(DRRY_7715==0)
       {
       return(rd_7705());
       }
   else
       {
       return(10);
       }
   
   }
//AD7705初始化函数
void init_7715(void)
   {
   spi_init();
   DDRB |= (1<<CS_7715)|(1<<RET);    //定义端口方向
   DDRB &= ~(1<<DRRY);
   PORTB|= 1<<DRRY;
   CLR_CS_7715;                        //片选有效
   CLR_RET;                        //复位端低有效
   delay_nms(100);                    //保持500MS低电平
   SET_RET;                          //复位端回复高
   delay_nms(1);
   
    wr_byte(0x10);                    //选择时通信存器
    wr_byte(0x44);                    //50HZ的转换频率
    wr_byte(0x00);                    //选择设置寄存器
    wr_byte(0x38);                    //自校准模式,增益为1,单极性
   
   }
void main(void)
{unsigned int ladc=0;
  
  port_init();
  
  spi_init();
  init_7715();  
  while(1)
  {
    ladc=ad7715();
    PD=led[ladc/10000];
    PC =ledrl[0];
    delay_nms(1);
    PD=led[(ladc%10000)/1000];
    PC =ledrl[1];
    delay_nms(1);
    PD=led[(ladc%1000)/100];
    PC =ledrl[2];
    delay_nms(1);
    PD =led[(ladc%100)/10];
    PC =ledrl[3];
    delay_nms(1);
    PD =led[ladc%10];
    PC =ledrl[4];
    delay_nms(1);
    PC=0XFF;
  }
}

数码管不显示,请高手指点。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入42汤圆

 楼主| 发表于 2009-5-23 10:55:16 | 显示全部楼层
别沉了,自己顶了。

出0入12汤圆

发表于 2009-5-23 13:33:47 | 显示全部楼层
wr_byte(0x00);                    //选择设置寄存器
    wr_byte(0x38);                    //自校准模式,增益为1,单极性

这2句不要了

出0入42汤圆

 楼主| 发表于 2009-5-26 17:56:30 | 显示全部楼层
试了还是不行,把电路图也贴上,请高手指点迷津。先谢了!
点击此处下载 ourdev_448067.pdf(文件大小:34K) (原文件名:AD7715连接图.pdf)

出0入0汤圆

发表于 2009-8-19 08:52:46 | 显示全部楼层
期待中

出0入0汤圆

发表于 2009-8-19 08:53:20 | 显示全部楼层
我也在调试,没什么反应,输出是0

出0入0汤圆

发表于 2013-6-24 11:40:32 | 显示全部楼层
现在怎么样?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 23:40

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表