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

* 4859: ADC0809和89C52数据采集问题求助

   zxy20042050 
zxy20042050发表的帖子 

 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做的接收程序和界面。



发表时间:2008年4月4日19:43:24

  
回复该帖

本主题共有 5 帖,分页:>>>>>该主题的所有内容[5]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  4880.[详细]帮帮忙啊
摘要:各位达人帮帮忙啊......(16字)
- [zxy20042050][648次] 2008年4月5日

  20159.[详细]ADC0809和89C52数据采集问题求助
摘要:呵呵,这样子,可 能没有人能帮到你,  用QQ聊吧,......(49字)
- [103969993][819次] 2008年4月6日

  20284.[详细]zxy20042050:ADC0809和89C52数据采集问题求助
摘要:你的单片机程序一上电就进行一次数据采集,而后不再进行数据采集,建议你上电延时一段时间比如500ms等待系统稳定再进行数据采集,数据采集该在在while循环中。你试试。[em16]......(162字)
- [sungh][832次] 2008年4月6日

[上一篇帖子]:帮帮忙啊各位达人帮帮忙啊
[下一篇帖子]:[求助]基于单片机的函数发生器我是一个大四的学生,做的毕业设计叫“基于单片机的函数发生器”。