• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

单片机控制AD1674,采集电压

爱玲 2014-09-05 浏览量:1385

单片机控制AD1674,采集电压

如上图,单片机与AD1674的连接。。AD1674的CE操作使能端,连接74LS00的6引脚,通过WR/RD控制。AD1674的片选CS通过译码器与单片机高地址连接。A0/A7连接单片机低地址的D0/D1。。。下面是我写的程序,有详细注释,请问哪里有问题,怎么采集的数据都是0000呢。

sbit ad_1674_status=P3^3;
#define ad_1674_start XBYTE[0x2000]//开始工作,通过单片机总线法编写
#define ad_1674_readhbyte XBYTE[0x2001]//读取高八位
#define ad_1674_readlbyte XBYTE[0x2003]//读取低四位
uchar hbyte,lbyte;

void adc_convert(void)//开始转换
{
 ad_1674_start=0xff;//开始转换
 while(ad_1674_status==1);//等待转化完成
 hbyte=ad_1674_readhbyte;//读
 lbyte=ad_1674_readlbyte;//读
 delay(111);
}
void main(void)
{
 uint MSB,LSB,adc_res;
 uint ad_weight;
 uint w1,w2,w3,w4;
 while(1)
 {

  adc_convert();

  MSB=(unsigned int)(hbyte<<4);//高八位左移四位
  LSB=(unsigned int)(lbyte>>4);//低四位右移四位(读取的是八位的高四位数据,低四位为0000,)移动构成12位
  adc_res=MSB+LSB;//构成12位数据
  ad_weight=(adc_res/4096)*10000  ;//获得AD值2^12=4096.。。AD1674输入采用0-10v,扩大1000倍,方便得到数据
  w1=ad_weight/1000;//
  w2=ad_weight%1000/100;//
  w3=ad_weight%1000%100/10;//

  w4=ad_weight%1000%100%10;//

}
  

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:4
  • 怎么都没有人啊。。。。大家一起讨论啊

  • 楼主是怎样观察输出的

  • 无能为力,电路还没有整明白! 数据总线和地址总线没有看懂!

  • 输出,我是通过164控制数码管控制的。。那一部分的电路都是对的,,所以就没有贴出来了。。电路太大,贴不下。。就写了主要的部分。。

    你这个程序,我看过,但是

    unsigned char xdata CTRL _at_ 0x2FFF;

    unsigned char xdata ADSEL _at_ 0x4FFF;在硬件上接的什么引脚。。真心不不知道。。你有这个程序的电路图嘛。

相关问题

问题达人换一批

单片机控制AD1674,采集电压