📄 tlc0834.c
字号:
#include <REG52.H>
#include <intrins.h>
#include <main.h>
//单片机与TLC0834之间的引脚定义
sbit CS_0834=P1^3; //片选
sbit DI_0834=P1^3; //输入通道
sbit CLK_0834=P1^3; //时钟输入
sbit SARS_0834=P1^3; //转换状态输出端
sbit DO_0834=P1^3; //数据输出端
//通道0 温度 TEMPERATURE
//通道1 压力 PREASURE
//通道2 流量 FLUX
//TLC0834的读操作函数
//参数:通道数0-2
//返回值:对应通道的8位采样值
uchar Read_TLC0834(uchar channel)
{
uchar receive_data=0; //接收数据的中间存储单元
uchar send_data; //从DI口发送的四位二进制数
uchar i;
if (channel==0)
{ send_data=0xc; }
else if (channel==1)
{send_data=0xe; }
else if (channel==2)
{ send_data=0xd; }
CLK_0834=LOW;
DI_0834=LOW;
CS_0834=HIGH;
_nop_();
CS_0834=LOW;
_nop_();
for(i=4;i>=1;i--) //发送四位数据
{
DI_0834=send_data&0x08;
send_data=send_data<<1;
CLK_0834=HIGH;
_nop_();
CLK_0834=LOW;
_nop_();
}
CLK_0834=HIGH; //插入Mux Settling Time
_nop_();
CLK_0834=LOW;
_nop_();
if (SARS_0834==1)
{
for(i=8;i>=1;i--) //接收八位数据
{
receive_data=receive_data<<1;
receive_data=receive_data|DO_0834;
CLK_0834=HIGH;
_nop_();
CLK_0834=LOW;
_nop_();
}
for(i=7;i>=1;i--) //LSB-First Data DO端口的后七位数据
{
CLK_0834=HIGH;
_nop_();
CLK_0834=LOW;
_nop_();
}
CLK_0834=HIGH; //末尾的两个时钟
_nop_();
CLK_0834=LOW;
_nop_();
CLK_0834=HIGH;
_nop_();
CLK_0834=LOW;
_nop_();
CS_0834=HIGH; //片选置高
}
return(receive_data);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -