TLC2543程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//========================================================== ===========

// tlc2543驱动程序

//tlc2543.c

//writer:谷雨2008年3月12日于EDA实验室整理

//========================================================== ===========

#include

#define uint unsigned int

#define uchar unsigned char

//**************************修改硬件时要修改的部分********************************

sbit clock = P0^0; //输入、输出时钟端

sbit input = P0^1; //数据输入端

sbit output = P0^2; //数据输出端

sbit CS = P0^3; //片选端,负电平有效

void delay(uchar N)

{

while(N--);

}

uint read2543(uchar CON_WORD) //CON_WORD为选择的通道,为0--10 {

uint ad=0;

uchar i;

CON_WORD<<=4;

clock=0;

CS=0;

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

{

if(output==1) //读取DATAOUT

ad=ad|0x01;

if(CON_WORD&0x80) //读取控制字到INPUT

input=1;

else

input=0;

clock=1;

delay(10);

clock=0;

delay(10);

CON_WORD<<=1;

ad<<=1;

}

CS=1;

ad>>=1;

return(ad);

}

void init_serial() //初始化串口

{

TMOD=0x20; //定时器T1使用工作方式2

TH1=250; //设置初值

TH0=250;

TR1=1; //开始计时

PCON=0x80; //SMOD=1;

SCON=0x50; //工作方式1,波特率9600bit/s,允许接收TI=1;

}

void main()

{

uint ad=0;

float fVoltage1;

uchar buf[5],i;

init_serial();

IE=0; //屏蔽中断

while(1)

{

ad=read2543(0);

fVoltage1=(float)ad/0x0fff*5;

buf[0]=(uchar)fVoltage1;

buf[0]=buf[0]+0x30;

buf[1]=''.'

buf[2]=(uchar)(fVoltage1*10)%10;

buf[2]=buf[2]+0x30;

buf[3]=(uchar)(fVoltage1*100-buf[0]*100)%10;

buf[3]=buf[3]+0x30;

buf[4]=(uchar)((fVoltage1*1000)-buf[0]*1000-buf[1]*100)%10; buf[4]=buf[4]+0x30;

i=0;

while(i<5)

{

if(TI==1)

{

SBUF=buf[i];

TI=0;

i++;

}

}

} }

相关文档
最新文档