求助!求助了一星期,依然没解决,求高手帮忙解决!

[复制链接]
5008|21
 楼主| jxlyyr3 发表于 2011-8-28 11:35 | 显示全部楼层 |阅读模式
我的程序功能是输入模拟信号经ad1674转换成数字信号;89s52通过锁存器与ad1674连接,读取数字信号,在通过串行口输出到计算机。程序如下:
#include <absacc.h>
#include <reg52.h>
#define uint unsigned int
#define ADCOM4 XBYTE[0XBFFC]
#define ADL4  XBYTE[0XBFFF]
#define ADH4  XBYTE[0XBFFE]
sbit adbusy4=P3^3;
sbit r=P3^7;
uint result3,result4,ad;
int i;
char ad1;
uint read4(void)   /*读取U4即AD1674的转换值*/
{
ADCOM4=0;
while(adbusy4==1);
return((uint)(ADH4<<4)+(ADL4&0X0F));
}
void adtxd(tx_data)   /*串行口输出程序*/
{
ad=tx_data;
SCON= 0x40;                /*串口方式1*/
PCON=0;                     /*SMOD=0*/
/*REN=1;                     /*允许接收*/
TMOD=0X20;
TH1=0XE6;
TL1=0XE6;
TR1=1;        /*高八位*/
ad1=ad/256;
SBUF=ad1;
while(!TI);TI=0;
SBUF=ad%256;      /*低八位*/
while(!TI);TI=0;            /*等待发送完毕 */
}
void timer0(void)interrupt 1 using 1
{
i++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(i==1)
{
  result3=read3();

  adtxd(result3);
}
}
main()
{
i=0;
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
do{}while(1);
}   
当我给他输入500mv的模拟信号,通过串行口助手输出数字信号,发现输出的是0f ef 0f ef,很明显转换出问题了。可是不知道到底是什么原因呢,我个人觉得程序没有错误啊。另外我发现电路板上ad1674很热,其他芯片都没啥感觉的。ad转换结束的信号sts好像一直没出来,不知道什么原因。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
NE5532 发表于 2011-8-28 11:53 | 显示全部楼层
你再这样求助1年也没人来帮你,找问题要学会把问题分模块,一个模块一个模块的找。如果我*想象都可以把你的问题找出来,请叫我“神”。

楼主先给我们分个模块来看看呢。
wangjun403 发表于 2011-8-28 12:16 | 显示全部楼层
时序,最可能的问题
 楼主| jxlyyr3 发表于 2011-8-28 15:55 | 显示全部楼层
不好意思啊,我是新手,能否给我点建议,不大明白分成几个模块的意思,谢了!
我想单独问问,ad1674发热比其他芯片厉害正常吗,谢谢! 2# NE5532
 楼主| jxlyyr3 发表于 2011-8-28 15:57 | 显示全部楼层
谢谢你的帮助!可否给我讲的详细一些呢?谢谢了! 3# wangjun403
dqyubsh 发表于 2011-8-28 17:55 | 显示全部楼层
第一感觉,373这样接很奇怪,不认识。

AD的第一脚是不接了5V?

这个要一个一个地查。发热,首先查电源和地。供电过程有没有出错过。再看焊接有没有连的。片子是否坏了。很热是一定不对的。

解决了发热再查功能。

评分

参与人数 1威望 +1 收起 理由
jxlyyr3 + 1

查看全部评分

virtualtryon 发表于 2011-8-28 19:43 | 显示全部楼层
我觉得应该是AD1674输出电平和74LS373的输入电平不兼容导致的。没有看到AD1674的数字电源,难道内部自带REGULATOR?如果是这样,有可能是电平不兼容,AD1674的输出与74LS373的输入端口之间加限流电阻试试。
729144646 发表于 2011-8-28 19:47 | 显示全部楼层
感觉芯片的接法都不是常规的
xyz769 发表于 2011-8-28 21:41 | 显示全部楼层
1674你这样接,不发热才怪。。

 你对AD的理解可能有问题。。
哲哲55 发表于 2011-8-29 07:25 | 显示全部楼层
AD正負十五伏供電,第一次見到、、、、、好片子呀
huihuangfiler 发表于 2011-8-29 09:26 | 显示全部楼层
首先确定是硬件还是软件的问题,硬件问题就不说了。然后再把软件逐个分开,增加一些小的测试程序验证各个功能,到哪一步出现和预想的设计不正常,问题就出现在哪里了。排除法就可以找到问题的所在,
Ryanhsiung 发表于 2011-8-29 10:06 | 显示全部楼层
我没有看LZ的程序,没有分析,以下意见仅为个人意见
并口的AD芯片,好浪费引脚哦!
12位的AD,用单独芯片没有意义。
    直接换个单片机,片内直接内置AD外设的!
 楼主| jxlyyr3 发表于 2011-8-29 10:10 | 显示全部楼层
非常感谢你的指点!确实是忘记一脚接+5V了,接上电源后,能够正常工作了。谢谢了! 6# dqyubsh
 楼主| jxlyyr3 发表于 2011-8-29 10:12 | 显示全部楼层
谢谢你能够帮助我!六楼指出了我ad1674接法的一个错误,改正了之后就可以了,谢谢! 7# virtualtryon
 楼主| jxlyyr3 发表于 2011-8-29 10:13 | 显示全部楼层
谢谢你的指导!我是新手,刚开始用这些芯片,也是参考别人的一些成果,所以不是很懂。谢谢了! 8# 729144646
 楼主| jxlyyr3 发表于 2011-8-29 10:14 | 显示全部楼层
看到你的指点,我凉了....非常感谢你的指点,能否说的详细一点,把我的问题都指出来,让我能够进步,非常感谢! 9# xyz769
 楼主| jxlyyr3 发表于 2011-8-29 10:16 | 显示全部楼层
我是从介绍芯片的**里看到的,貌似可以吧?我也不是很清楚,谢谢指导了! 10# 哲哲55
NE5532 发表于 2011-8-29 12:41 | 显示全部楼层
所谓模块,就是自己做事的顺序,把一个浩大的事情分成若干个步骤来实现。就不会感觉无从下口了。
 楼主| jxlyyr3 发表于 2011-8-29 19:29 | 显示全部楼层
您好,我还有一个参考电压refout不准确的问题,您能否指点一下呢?谢了! 6# dqyubsh
 楼主| jxlyyr3 发表于 2011-8-29 19:30 | 显示全部楼层
您好!我还有一个refout参考电压不准的问题,麻烦你也帮我解释一下吧,谢谢了! 7# virtualtryon
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

45

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部