📄 tlc2543.txt
字号:
/****************************************************
程序功能: 使用TLC2543进行AD转换
文件名 : AD.c
作者 : kaixinlaohe
单位 : 河北工程大学 信电学院 电工电子实验室
日期 : 2007-8-17
版本 : 1.0
修改记录: 无
程序说明: 本程序适应于绝大多数没有四线制SPI口的8051
单片机,模拟一个接口,可根据实际情况修改四个
接口的地址即可实现移植,使用编译器为keil c2
***************************************************/
#include <reg51.h>
//-------------------------------------------------
//函数头的声明
//-------------------------------------------------
void delay(); //延时函数
unsigned int AD_Conver(unsigned char Channel);
//AD转换
//--------------------------------------------------
//定义四线制接口
//-------------------------------------------------
sbit cs = P3^2; //片选
sbit clk = P3^3; //时钟
sbit din = P3^4; //数据入口
sbit dout = P3^5; //数据出口
//---------------------------------------------------
//主函数
void main()
{
long AdValue = 0;
delay();
while(1)
{
AdValue = AD_Conver(0); //0通道,转换数据12位,高位在前,低位在后
}
}
//--------------------------------------------------
// 函数名称: delay
// 函数功能: 延时55us
// 入口参数: 无
// 出口参数: 无
//--------------------------------------------------
void delay()
{
int i = 5;
while(i--);
}
//--------------------------------------------------
// 函数名称: AD_Conver
// 函数功能: AD转换
// 入口参数: 地址命令字
// 出口参数: AD值
//--------------------------------------------------
unsigned int AD_Conver(unsigned char channel)
{
unsigned char i;
long int ad_value = 0;
clk = 0;
cs = 1;
delay();
cs = 0;
channel <<=4;
for (i = 0; i < 12; i++) //注意:在12个时钟周期的下降沿产生了数据输出
{ //在前4个时钟周期内,TLC2543已经知道下一次将
if (dout) ad_value |= 1; //哪个通道做转换,在后8个时钟内就一直对此通道
din = (bit)(channel & 0x80); //进行采样,并保持到第12个时钟周期结束,此后才
clk = 1; //开始进行A/D转换,转换时间需要10us.
delay(); //在第4-8个时钟周期内输入的是命令控制字
clk = 0; //可根据需要输入
channel <<=1;
ad_value <<=1;
}
clk =1;
ad_value >>=1;
return ad_value;
}
//----------------end-----------------------------------/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -