用51写TLC2543ADC模数转换低位先传的程序
时间: 2023-05-30 08:01:42 浏览: 117
以下是使用STC89C52RC单片机,通过SPI接口将TLC2543ADC模数转换器的结果读取出来的程序:
```c
#include <reg52.h>
sbit ADC_CS = P1^0; //定义ADC片选信号
sbit SPI_MOSI = P1^1; //定义SPI数据输出引脚
sbit SPI_MISO = P1^2; //定义SPI数据输入引脚
sbit SPI_CLK = P1^3; //定义SPI时钟引脚
unsigned int ADC_Result = 0; //定义存储ADC转换结果的变量
void ADC_Read(void)
{
unsigned char i;
ADC_CS = 0; //拉低片选信号,选中ADC
for (i = 0; i < 12; i++)
{
SPI_MOSI = 1; //将数据位输出为1
SPI_CLK = 1; //上升沿时钟
ADC_Result <<= 1; //将结果左移1位
ADC_Result |= SPI_MISO; //将输入的数据位存入结果中
SPI_CLK = 0; //下降沿时钟
}
ADC_CS = 1; //拉高片选信号,释放ADC
}
void main(void)
{
while (1)
{
ADC_Read(); //读取ADC转换结果
P2 = ADC_Result; //将结果输出到P2口
}
}
```
注:该程序中使用了“低位先传”的方式读取ADC转换结果。因此,在读取12位数据时,需要先将数据位输出为1,再将输入的数据位存入结果中。最后将结果左移1位。如果是“高位先传”的方式,则需要先将数据位输出为0,再将输入的数据位存入结果中。
阅读全文