📄 tlc0834.c
字号:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit cs=P1^0; //0834片选信号,低电平开始一次转换,高电平结束转换
sbit clk=P1^1; //0834时钟信号
sbit dat=P1^2; //0834模拟输入端进行配置及输出转换所得的数据
/****************************************
TLC0834
*****************************************/
uchar tlc_read(bit SGL,bit ODD,bit Bit1)
{
uchar i,dig1,dig2;
clk=0; //发送输入配置端信号时为上升沿触发
cs=0;
dat=1; //发送start bit
clk=1;
clk=0;
dat=SGL; //发送SGL
clk=1;
clk=0;
dat=ODD; //发送ODD
clk=1;
clk=0;
dat=Bit1; //发送Bit 1
clk=1;
clk=0; //时钟交换变成下降沿触发
for(i=8;i>0;i--)
{
dig1=dig1|dat; //第一次输出数据是高位在前低位在后
dig1=dig1<<1;
clk=1; //输出数据为下降沿触发
dat=1; //先写1后再读,否则读出的数据不可预期 这一点很重要
clk=0;
}
dig1=dig1|dat; //上面差一次赋值
for(i=8;i>0;i--)
{
dig2=dig2>>1; //第二次输出数据是低位在前高位在后
if(dat)
{
dig2=dig2|0x80;
}
clk=1;
dat=1; //先写1后再读,否则读出的数据不可预期 很重要的一点
clk=0;
}
cs=1; //结束转换
//if(dig1==dig2) //判断两次输出结果是否一致
return(dig1); //一致就输出
}
/************************************
主函数
*************************************/
void main(void)
{
while(1)
{
P2=tlc_read(1,0,0); //选择CH0端口输入模拟信号
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -