头像-23791

爱玲

  • 安徽省合肥市
  • 单片机 嵌入式 DSP RF/无线
  • 医疗电子

个人成就

获得 0 次赞

帮助过0人

单片机控制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)(hbyte4);//低四位右移四位(读取的是八位的高四位数据,低四位为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;// }   

51单片机WR和RD的自动时序问题。

问题是这样的,单片机的P2口P2.5/P2.6/P2.7连接了74LS138译码器,译码器y7和单片机P3.6WR引脚通过或非门74LS02,输出DIS_CLK。这个DIS_CLK作为74LS164串入并出的时钟线,74LS164的数据输入端1和2连接单片机的P0.0。。。74LS164驱动一个数码管(共阳数码管)。。。我需要通过单片机总线和WR自动产生时序的方法通知数码管。如何编程,请大神指点。 sbit dat=P0^0; #define dis_play_addrece 0xe000//通过译码器得到的y7地址 unsigned char xdata *reg_add;//定义一个指针,得到地址以及给地址写数据 void out_simuseri(uchar data_buf)//  {   uchar i,s;//  reg_add=dis_clk_addrece;//把地址给指针,选通y7,置y7为0.  s=data_buf;//传送过来,需要在数码管上显示的数字       for(i=0;i>1;       } }//这样DIS_CLK就可以从低到高变化,164就能移动数据了??? 请大神帮忙分析下,程序是有错的。。。