TLC2543测电压,然后传到电脑的串口助手上
时间:10-02
整理:3721RD
点击:
测得的数据是12位的,分两个8位数发给串口助手,tlc2543基准电压是5v,待测电压是2v,但是收到的数据一直是06 87,就算改变电压也是一样的;如果单独只发dh或dl,收到的又是07,下面是程序
#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit CLOCK=P1^0;
sbit D_IN=P1^1;
sbit D_OUT=P1^2;
sbit _CS=P1^3;
sbit EN485=P3^2;
sbit relay=P2^1;
sbit relayf=P2^0;
void delay(uchar n)
{
uchar i;
for(i=0;i<n;i++)
{
_nop_();
}
}
/**************************************
名称:read2543
功能:TLC2543驱动模块
输入参数:port通道号
输出参数:ad转换值
*************************************/
uint read2543(uchar port)
{
uint ad=0,i;
CLOCK=0;
_CS=0;
port<<=4;
for(i=0;i<12;i++)
{
if(D_OUT) ad|=0x01;
D_IN=(bit)(port&0x80);
CLOCK=1;
delay(3);
CLOCK=0;
delay(3);
port<<=1;
ad<<=1;
}
_CS=1;
ad>>=1;
return(ad);
}
void SendByte(uchar dat)
{
SBUF=dat;
while(!TI);
TI=0;
}
void main()
{uint ad;
uchar dh,dl;
while(1)
{
ad=read2543(0);
dl=ad;
ad>>=8;
dh=ad;
SendByte(dh);
SendByte(dl);
}
}
细想其中过程, 要么采集出了问题, 比如没有采集, 设置出了问题.
要么数据发送出了问题, 比如数据指针错误...