AD转换芯片TLC2543驱动程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//功能选择关闭
delay1(5);
//AD 转换时间延时
AD_2543_CS=0;;
//功能选择打开
delay1(5);
//建立时间延时
for(circle_temp=0;circle_temp<4;circle_temp++)//读出 12 位数据的 高 4 位数据,存于 temp_h 的低 4 位
{ test_vh<<=1; if(AD_2543_D_OUT) { test_vh++; } AD_2543_CLK=1; //时钟上半周期 delay1(2); AD_2543_CLK=0; //下降沿作用,时钟下半周期
} for(circle_temp=0;circle_temp<8;circle_temp++)//读出 12 位数据的 低 8 位数据,存于 temp_l {
//下降沿作用,时钟下半周期 //功能选择关闭
#include <reg52.h>
///////////////////////////////////////// //2543 控制引脚宏定义 ////////////////////////////////////////// sbit AD_2543_CLK=P1^0; //2543 时钟/ sbit AD_2543_D_IN=P1^2 ; //2543 输入 sbit AD_2543_D_OUT=P1^1; //2543 输出 sbit AD_2543_CS=P1^3 ; //2543 片选
据,后四位数据无效
{
if(port&0x80)
{
AD_2543_D_IN=1;
}
else
{
AD_2543_D_IN=0;
}
AD_2543_CLK=1; //上升延作用,时钟上半周期
delay1(2);
AD_2543_CLK=0; //时钟下半周期
port<<=1;
//移位
}
AD_2543_CS=1;
test_vl<<=1; if(AD_2543_D_OUT) {
test_vl++; } AD_2543_CLK=1; //时钟上半周期 delay1(2);
AD_2543_CLK=0; } AD_2543_CS=1; ad_value = test_vh; ad_value <<= 8; ad_value |= test_vl; return ad_value; }
出的数据是 12 位,D1 为输出的数据是 MSB 为前导,D0 为输出的数
据是无符号二进制数据
AD_2543_CS=1;
//功能选择关闭
delay1(5);
//AD 转换时间延时
AD_2543_CS=0;
//功能选择打开
delay1(5);
Biblioteka Baidu
//建立时间延时
for(circle_temp=0;circle_temp<12;circle_temp++)//写入十二个数
delay1(10); test_vh=0; test_vl=0;
//检测到的电压值的高字节 //检测到的电压值的低字节
AD_2543_CLK=0;
//时钟清除 AD_2543_CLK
port<<=4;
//通道数移到高四位
port=port&0xf0; //D7,D6,D5,D4 为要转换的通道,D3,D2 为输
uchar i; for(i=0;i<n;i++)
{ _nop_(); _nop_();
} } uint read2543(unsigned char port)//检测 TLC2543 的 PORT 通道的电 压值 {
unsigned char circle_temp,test_vh,test_vl; uint ad_value;
/////////////////////////////////////////////// // 名称:delay // 功能:延时模块 // 输入参数:n 要延时的周期数 // 输出参数:无 ///////////////////////////////////////
void delay1(uchar n) {