标题:
[求助]求教51单片机问题,高人指点!
[打印本页]
作者:
VincentGu
时间:
2009-10-7 01:01
标题:
[求助]求教51单片机问题,高人指点!
电路的设想很简单,就是用51控制ADC0809采集数据,再将数据通过串口传到电脑里。
附件是设计的电路图,从网上载的,没有串口那一块电路(因为串口那一路比较简单):
然后是根据电路图写的程序:
#include"regx52.h"
#define uchar unsigned char
sbit ST=P1^1;
sbit EOC=P1^0;
sbit OE=P1^2;
sbit CLK=P1^3;
sbit ADDCS=P1^4;
uchar AD_DATA/*,CHECKSEND,CHECKBACK*/; //保存IN0和IN1经AD转换后的数据
//uchar sendflag; //发送许可
xdata uchar sendstr;
/**********延时函数************/
void delay(uchar i)
{
uchar j;
while(i--)
{
for(j=125;j>0;j--)
;
}
}
/*********系统初始化***********/
void init()
{
EA=1; //开总中断
TMOD=0x22; //设定T0、T1定时器工作方式
TH0=0xff; //利用T0中断产生CLK信号
TL0=0xff;
TR0=1;
ET0=1; //开启T0中断
ST=0;
OE=0;
TH1=0xfa; //利用T1产生串口中断
TL1=0xfa;
TR1=1;
ET1=1; //开启T1中断
SCON=0x50; //串行口工作在方式1
PCON=0x40; //bps增倍
ES=0; //禁止串行中断
TI=0; //串行中断发送禁用
RI=0; //串行中断接收禁用
// sendflag=1; //初始允许发送
}
/*****************通信函数************/
void send(uchar databuff)
{
ES=1;
SBUF=databuff; //发送数据
while(!TI)
; //等待发送结束
TI=0;
ES=0;
}
/*void recieve(void)
{
ES=1;
CHECKBACK=SBUF;
while(!RI)
;
RI=0;
ES=0;
} */
/***********AD转换函数**********/
void AD()
{
ST=0;
ADDCS=0; //选择通道IN0
delay(5);
ST=1; //启动AD转换
delay(5);
ST=0;
while(EOC==0)
;
OE=1;
AD_DATA=P2;
OE=0;
}
/***********T0、T1中断服务程序************/
void timer0(void) interrupt 1
{
CLK=~CLK;
AD();
}
void timer1(void) interrupt 2
{
// recieve();
// if(CHECKBACK^CHECKSEND==0)
// {
// sendflag=1;
// }
sendstr=AD_DATA;
send(sendstr);
}
/*****************主函数**************/
void main()
{
init();
while(1)
{
// AD();
// sendstr=AD_DATA;
// if(sendflag){
// sendflag=0;
// send(sendstr);
// }
/* else
{
sendflag=0;
send(CHECKSEND);
} */
}
}
================================================
问题在于,上电后,ADC0809压根不工作,所以c51传给串口的都是一堆乱码
不知道是什么原因,有人说是因为多出来的串口通信改变了单片机某些端口的电平,但是还是一直很疑惑,不知道该怎么改电路...
请各位高人指点!
谢谢!
作者:
linxquan
时间:
2009-10-18 16:11
帮你顶一下
作者:
zjjhtony
时间:
2009-10-20 11:04
建议先仿真再搭电路
作者:
wxf7651598
时间:
2009-10-23 09:49
你采用的操作方式是静态方式,很麻烦,还要注意时序的问题,而且速度慢,建议采用总线方式,就是献给AD芯片用XBYTE[]定义一个地址XBYTE[。。。] = 。。。启动转换,书上这种例子很多的
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1