📄 tlc1543.c
字号:
//TI公司TLC1543
#include <INTRINS.H>
#include <AT89x51.H>
#define uchar unsigned char
#define unint unsigned int
//#################################################
#define EOC P1_0 //定义接口引脚
#define SCK P1_1
#define ADDR P1_2
#define SDA P1_3
#define CS P1_7
//#################################################
void DELAYL(uchar T) {uchar S;while (T--) //延时子程序
{for (S=200;S>0;S--){_nop_();_nop_();_nop_();} } }
//*************************************************
unint Tlc1543(uchar adr) //10时钟特定地址快速AD转换
{unint data ad;unint data i;
uchar data al=0,ah=0;
SCK=0;CS=0;adr<<=4;
for (i=0;i<4;i++){ //送入AD转换通道地址
ADDR=(bit)(adr&0x80);SCK=1;SCK=0;
adr<<=1; }
for (i=0;i<6;i++) { //填充6个SCK
SCK=1;SCK=0; }
CS=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_(); CS=0; //等待AD转换
_nop_();_nop_();_nop_();
for (i=0;i<2;i++) { //取D9,D8
SDA=1;SCK=1;ah<<=1;
if (SDA) ah|=0x01; SCK=0; }
for (i=0;i<8;i++) { //取D7--D0
SDA=1;SCK=1;al<<=1;
if (SDA) al|=0x01; SCK=0; }
CS=1;
ad=(unint)ah;ad<<=8;ad|=(unint)al; //得到AD值
return (ad); }
//************************************************* 串行口初始化、发送接收子程序
void Comstart(void){ TMOD=0X20;TL1=0xfd;TH1=0xfd; //256-11059200/384/9600=0xfd
SCON=0x40;PCON=0x00;TR1=1; //方式1,波特率不加倍,计数器开
IE=0x00;} //中断总允许,允许串行中断
//*************************************************
void Txd2(uchar z) //串口发送子程序
{ SBUF=z; while(TI==0); TI=0; }//为0等待
//*************************************************
void Pc_com(unint a){ unint m,n; uchar w;
m=a/10000;w=(uchar)(m+0x0030);Txd2(w); //万位
m=a%10000;n=m/1000;w=(uchar)(n+0x0030);Txd2(w); //千位
n=m%1000;m=n/100;w=(uchar)(m+0x0030);Txd2(w); //百位
m=n%100;n=m/10;w=(uchar)(n+0x0030);Txd2(w); //十位
n=m%10;w=(uchar)(n+0x0030);Txd2(w);Txd2(0x0d);Txd2(0x0a);}//个位 回车
//*************************************************
main(){ unint a; Comstart();
// while(1){for (a=0;a<1;a++){ //逐个AD通道进行模数转换
// b=TLC1543(a);Pc_com(b);
// DELAYL(0xcf); } }
//*************************************************
while(1){ //逐个AD通道进行模数转换
a=Tlc1543(0x00);Pc_com(a);
a=Tlc1543(0x01);Pc_com(a);
a=Tlc1543(0x02);Pc_com(a);Txd2(0x0d);Txd2(0x0a);
a=Tlc1543(0x0b);Pc_com(a);
a=Tlc1543(0x0c);Pc_com(a);
a=Tlc1543(0x0d);Pc_com(a);Txd2(0x0d);Txd2(0x0a);
Txd2(0x0d);Txd2(0x0a);
DELAYL(0xcf); }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -