TLC2543数据采集
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#define ulong unsigned long
/*********************************端口定义***********************************/
sbit ADout=P1^0;
sbit ADin=P1^1;
sbit CS=P1^2;
sbit CLK=P1^3;
tab1[2]=DSY_CODE[bai];
tab1[1]=DSY_CODE[shi];
tab1[0]=DSY_CODE[ge];
}
void display(void)
{
char i,m;
m=0x01;
for(i=0;i<4;i++) //刷新显示在数码管上
{
P2=m;
m=_crol_(m,1);
P0=tab1[i];
#include<at89x52.h>
#include<intrins.h>
//调用LCD显示程序
/*******************************定义类型的简写*******************************/
#define uchar unsigned char
#define uint unsigned int
ulong data td1,td2;
ulong value;
/*******************************实现延时************************************/
void delay(uint ms)
{
uchar t;
while(ms--)for(t=0;t<120;t++);
uchar tab1[4];
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
uchar code DSY_CODE1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xff};
//delay(2);
td2=(ulong)readAD(0); //获取TLC2543采集的数据一定要强制转换成无符号长整形数据,不然数据会丢失精度
value_2=td2*5000/4096; //处理TLC2543(5000为5v放大的数据精度为12位的A/D所以2的12次方=4096)采来的数据
ad>>=1;
return(ad);
}
void fenli (ulong num )
{
ulong qian,bai,shi,ge;
qian=num/1000;
bai=num%1000/100;
shi=num%1000%100/10;
ge=num%10;
tab1[3]=DSY_CODE1[qian];
sbit EOC=P1^4;
/********************************数码管片选********************************/
/*
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
/*******************************定义下文的变量******************************/
delay(10);
}
}
void convent (void)
{
uintvalue_1,value_2;
td1=(ulong)readAD(0); //获取TLC2543采集的数据定要强制转换成无符号长整形数据,不然数据会丢失精度
value_1=td1*5000/4096; //处理TLC2543(精度为12位的A/D)采来的数据
}
/**************从TLC1543读取采样值,形参port是采样的通道号******************/
uint readAD(uchar port)
{
uchar ch,i,j;
uint ad;
ch=port;
for(j=0;j<3;j++)///////空循环三次,为什么是三次!?
//delay(2);
value=(value_2+value_1)/2; //求平均值
}
/***********************************主函数**************************************/
void main(void)
{
delay(100); //等待系统工作稳定
P0=0xff;
P2=0xff;
while(1)
{
convent(); //数据读取处理
fenli(value); //
display();
delay(10);
}
}
{
ad=0;
ch=port;
EOC=1;
CS=1;
CS=0;
CLK=0;
for(i=0;i<12;i++)
{
if(ADout) ad|=0xΒιβλιοθήκη Baidu1;
ADin=(bit)(ch&0x80);
CLK=1;
CLK=0;
ch<<=1;
ad<<=1;
}
}
CS=1;/////////转换和读取数值
while(!EOC);
/*********************************端口定义***********************************/
sbit ADout=P1^0;
sbit ADin=P1^1;
sbit CS=P1^2;
sbit CLK=P1^3;
tab1[2]=DSY_CODE[bai];
tab1[1]=DSY_CODE[shi];
tab1[0]=DSY_CODE[ge];
}
void display(void)
{
char i,m;
m=0x01;
for(i=0;i<4;i++) //刷新显示在数码管上
{
P2=m;
m=_crol_(m,1);
P0=tab1[i];
#include<at89x52.h>
#include<intrins.h>
//调用LCD显示程序
/*******************************定义类型的简写*******************************/
#define uchar unsigned char
#define uint unsigned int
ulong data td1,td2;
ulong value;
/*******************************实现延时************************************/
void delay(uint ms)
{
uchar t;
while(ms--)for(t=0;t<120;t++);
uchar tab1[4];
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
uchar code DSY_CODE1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xff};
//delay(2);
td2=(ulong)readAD(0); //获取TLC2543采集的数据一定要强制转换成无符号长整形数据,不然数据会丢失精度
value_2=td2*5000/4096; //处理TLC2543(5000为5v放大的数据精度为12位的A/D所以2的12次方=4096)采来的数据
ad>>=1;
return(ad);
}
void fenli (ulong num )
{
ulong qian,bai,shi,ge;
qian=num/1000;
bai=num%1000/100;
shi=num%1000%100/10;
ge=num%10;
tab1[3]=DSY_CODE1[qian];
sbit EOC=P1^4;
/********************************数码管片选********************************/
/*
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P2_3=P2^3;
/*******************************定义下文的变量******************************/
delay(10);
}
}
void convent (void)
{
uintvalue_1,value_2;
td1=(ulong)readAD(0); //获取TLC2543采集的数据定要强制转换成无符号长整形数据,不然数据会丢失精度
value_1=td1*5000/4096; //处理TLC2543(精度为12位的A/D)采来的数据
}
/**************从TLC1543读取采样值,形参port是采样的通道号******************/
uint readAD(uchar port)
{
uchar ch,i,j;
uint ad;
ch=port;
for(j=0;j<3;j++)///////空循环三次,为什么是三次!?
//delay(2);
value=(value_2+value_1)/2; //求平均值
}
/***********************************主函数**************************************/
void main(void)
{
delay(100); //等待系统工作稳定
P0=0xff;
P2=0xff;
while(1)
{
convent(); //数据读取处理
fenli(value); //
display();
delay(10);
}
}
{
ad=0;
ch=port;
EOC=1;
CS=1;
CS=0;
CLK=0;
for(i=0;i<12;i++)
{
if(ADout) ad|=0xΒιβλιοθήκη Baidu1;
ADin=(bit)(ch&0x80);
CLK=1;
CLK=0;
ch<<=1;
ad<<=1;
}
}
CS=1;/////////转换和读取数值
while(!EOC);