如上图,单片机与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();
w4=ad_weight%1000%100%10;//
}
输出,我是通过164控制数码管控制的。。那一部分的电路都是对的,,所以就没有贴出来了。。电路太大,贴不下。。就写了主要的部分。。
你这个程序,我看过,但是
unsigned char xdata CTRL _at_ 0x2FFF;
unsigned char xdata ADSEL _at_ 0x4FFF;在硬件上接的什么引脚。。真心不不知道。。你有这个程序的电路图嘛。