700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > c语言编程TLC2543AD采集 基于tlc2543的电压表c语言程序

c语言编程TLC2543AD采集 基于tlc2543的电压表c语言程序

时间:2018-09-10 11:07:03

相关推荐

c语言编程TLC2543AD采集 基于tlc2543的电压表c语言程序

经验证的程序

#include

# include

# define PORTA XBYTE[0X7CFF]

# define PORTB XBYTE[0X7DFF]

# define PORTC XBYTE[0X7EFF]

# define CONTROL XBYTE[0X7FFF]

# define uchar unsigned char

# define uint unsigned int

//# define ulong unsigned long

uchar shu[7];

uchar flag=0,count;

uint ad_value=0,advalue_sum=0;

uchar channel=4;

sbit Receive=P1^1;

sbit Send=P1^0;

sbit K0=P2^2;

sbit K1=P2^3;

sbit K2=P2^4;

sbit K3=P2^5;

uchar code data0[]={'0','1','2','3','4','5','6','7','8','9','.','s','p'};//计算机通信0~9和‘.’起始位 结束位

/***************************************************/

uchar code table[12]={0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x080,0x00};//0-9,'.'和消影

//--------------------------------------------------

//定义四线制接口

//-------------------------------------------------

sbit clk = P1^4; //时钟

sbit din = P1^5; //数据入口

sbit dout = P1^6; //数据出口

sbit cs = P1^7; //片选

sbit eoc=P1^3; //转换结束

//---------------------------------------------------

/****************************************************

程序功能: 使用TLC2543进行AD转换

文件名 : AD.c

程序说明: 本程序适应于绝大多数没有四线制SPI口的8051

单片机,模拟一个接口,可根据实际情况修改四个

接口的地址即可实现移植,使用编译器为keil c2

***************************************************/

//--------------------------------------------------

// 函数名称: delay

// 函数功能: 延时55us

// 入口参数: 无

// 出口参数: 无

//--------------------------------------------------

void delay()

{

uchar i,j;

for(i=0;i<20;i++)

for(j=0;j<30;j++);

}

//--------------------------------------------------

// 函数名称: AD_Conver

// 函数功能: AD转换

// 入口参数: 地址命令字

// 出口参数: AD值

//--------------------------------------------------

void delay_5us()

{

;;;;;

}

AD_Conver()

{

uchar i,chan;

uint temp=0;

clk = 0;

cs = 1;

delay_5us();

cs= 0;

temp=0;

chan=channel<<4;

for (i=0;i<12;i++) //注意:在12个时钟周期的下降沿产生了数据输出

{ //在前4个时钟周期内,TLC2543已经知道下一次将

if(dout) temp|= 1; //哪个通道做转换,在后8个时钟内就一直对此通道

din=(bit)(chan&0x80); //进行采样,并保持到第12个时钟周期结束,此后才

clk=1; //开始进行A/D转换,转换时间需要10us.

eoc=0;

while(!eoc); //等待转换完毕

delay_5us(); //

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。