为什么基于STC89C52的温湿度检测系统采集不到信号
时间:10-02
整理:3721RD
点击:
AD用的是TLC2543的12位串行芯片,有可能跟时序有关系吗。哪位大神帮帮忙,仿真出来了,就是实物调不出来
这是AD转换程序,
uint read2543(uchar port) //读2543端口号的直
{
uint ad=0; //保留输出结果
uchar i;
cs=1;
eoc=1;
clock=0;
cs=0;
port<<=4;
for(i=0;i<8;i++) //读高8位
{
if(out)
ad|=0x01; //存放数据高-低
in=(bit)(port&0x80); //高位先输入
clock=1;
_nop_();
_nop_();
_nop_();
clock=0;
_nop_();
_nop_();
_nop_();
port<<=1;
ad<<=1;
}
for(i=8;i<12;i++)
{
if(out)
ad|=0x01;
clock=1;
_nop_();
_nop_();
_nop_();
clock=0;
_nop_();
_nop_();
_nop_();
ad<<=1;
}
cs=1;//开始转换
while(!eoc); //等待转换完成
ad>>=1;
return ad;
这是AD转换程序,
uint read2543(uchar port) //读2543端口号的直
{
uint ad=0; //保留输出结果
uchar i;
cs=1;
eoc=1;
clock=0;
cs=0;
port<<=4;
for(i=0;i<8;i++) //读高8位
{
if(out)
ad|=0x01; //存放数据高-低
in=(bit)(port&0x80); //高位先输入
clock=1;
_nop_();
_nop_();
_nop_();
clock=0;
_nop_();
_nop_();
_nop_();
port<<=1;
ad<<=1;
}
for(i=8;i<12;i++)
{
if(out)
ad|=0x01;
clock=1;
_nop_();
_nop_();
_nop_();
clock=0;
_nop_();
_nop_();
_nop_();
ad<<=1;
}
cs=1;//开始转换
while(!eoc); //等待转换完成
ad>>=1;
return ad;
额,这个没发到Proteus板块,所以没看到!
仿真没有问题,在实际中程序就不会有问题。剩下的是你硬件调试的问题了。