导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→ADC0809和89C52数据采集问题求助[zxy20042050]

 *第47篇: ADC0809和89C52数据采集问题求助

  
楼 主:zxy20042050 2008年4月4日19:43
 ADC0809和89C52数据采集问题求助

要求:ADC0809和AT89C52完成数据采集,通过串口发送到PC机在电脑界面上显示出来。(PC机显示界面和接收程序用VB编写)
我先描述一下硬件电路的连接:单片机的PO口依次和74LS373的D0~D7口同时和ADC0809的D0~D7口相连。373的Q0,Q1,Q2依次和ADC0809的A,B,C端口相连。89C52的ALE端口连接373端口的G端,同时ALE端口通过分频器连接到ADC0809的CLK端口。89C52的P2.7端口和/WR经过或非门连接到ADC0809的ALE和START端口,P2.7和/RD经过或非门连接到OE端口。ADC0809的EOC端口通过非门连接到89C52的/INTO端口。剩下的89C52端口都是标准的接法,用的11.0592MHZ,ADC0809的Vref(+)和VCC连接到+5V,Vref(-)和GND连接到地。
程序如下:
/* 从ADC0809的8个通道轮流采集一次数据,采集的结果放在数组ad中.其程序如下: */
#include  <absacc.h>  
#include  <reg51.h>  
#define uchar unsigned char
#define IN0 XBYTE[0x7ff8] //设置ADC0809的通道0地址
sbit ad_busy=P3^2;//EOC状态 
void ad0809(uchar idata *x)
{uchar i;
 uchar xdata *ad_adr;
 ad_adr=&IN0;
 for(i=0;i  <8;i++)//处理8个通道
 {*ad_adr=0;//启动转换
  i=i;//延时等待EOC变低
  i=i;
 while(ad_busy==0);//查询等待是否结束
 x[i]=*ad_adr;//存转换结果
 ad_adr++;//下一个通道
 }
 }
void main(void)
{unsigned char a;
static uchar idata ad[10];
ad0809(ad);//采样ADC0809通道的值
TMOD=0x20;
TL1=0xfd;TH1=0xfd;//串口初始化,设置波特率9600Kb
SCON=0xd8;PCON=0x00;//串行工作方式3,无奇偶校验位,1位停止位
TR1=1;
while(1)
{
a=ad[0];//发送0通道的采样值
SBUF=a;
while(TI==0);
TI=0;
}
}
VB端接收程序:
Private Sub Form_Load()
MSComm1.CommPort = 1 '选择COM1端口
MSComm1.Settings = "9600,N,8,1" '波特率9600,无奇偶校验,8位数据位,1位停止位
MSComm1.InBufferSize = 1024 '接受缓冲区大小位1024字节
MSComm1.InBufferCount = 0 '清接收缓冲区
MSComm1.OutBufferCount = 0 '清发送缓冲区
MSComm1.PortOpen = True '打开COM1端口
End Sub

Private Sub Receivecmd_Click()
Receivebuf = Trim(MSComm1.Input)
If Len(Receivebuf) = 0 Then
txtreceive.Text = "空"
Else
txtreceive.Text = Receivebuf
End If
End Sub
那个串口发送和接收部分的我测试过了,但是和数据采集部分结合起来,什么也收不到。希望达人能给些指导。
同时附件里面是我用VB做的接收程序和界面。

  
2楼:zxy20042050 2008年4月5日09:07
 帮帮忙啊
各位达人帮帮忙啊
  
3楼:103969993 2008年4月6日18:25
 ADC0809和89C52数据采集问题求助
呵呵,这样子,可 能没有人能帮到你,

用QQ聊吧,

  
4楼:sungh 2008年4月6日21:22
 zxy20042050:ADC0809和89C52数据采集问题求助
你的单片机程序一上电就进行一次数据采集,而后不再进行数据采集,建议你上电延时一段时间比如500ms等待系统稳定再进行数据采集,数据采集该在在while循环中。你试试。
  
5楼:zxy20042050 2008年4月8日11:06
 帮忙啊 啊啊 啊,要死人了
帮忙啊 啊啊 啊,要死人了。。老师什么都不借给我们,本来说用示波器看看0809工作没有。这3天尝试用proteus仿真调试结果也一样没有显示任何东西,估计是程序有问题。硬件电路是很成熟的,0809本来就很老很经典了。差不多每本单片机都介绍的。典型电路和数据采集程序。我是把那个采集程序和发送结合起来就有问题了。

>>>>>>对该主题发表你的看法

本主题贴数5,分页: [第1页]


[上一篇主题]:买哪家的DSP比较好?

[下一篇主题]:[求助]基于单片机的函数发生器