📄 tlc0831_一路模数转换一号.c
字号:
//TLC0831_一路模数转换一号
//2006年8月__STC89C54__Ver1.00
//2006年6月单片机中档炉B板适用
//恒科_CD4094串口数显驱动程序
//该芯片采用传统的SPI口的规约形式,是一个非标准的SPI封装.
//P3_0 TI DATA 串行数据输入
//P3_1 RI CLK 时钟信号输入
//P1_0 STB 并行数据输出 高电平有效
#include <AT892051.H>
#include <89BIN.H>
#include <stdio.h>
#include <intrins.h>
#include <absacc.h>
#include <math.h>
sbit T0831_CS=P1^7; //片选I/O端口
sbit T0831_SK=P1^4; //时钟I/O端口
sbit T0831_DO=P1^5; //数据I/O端口
void TIME(int nt) //延时函数
{long int it=0;
for(it=0;it<nt*1000;it++);
return;
}
unsigned char T0831Read()
{unsigned char i,DataSoute;
T0831_CS=1;
TIME(1);
T0831_SK=1;
T0831_CS=0;
T0831_SK=0;
_nop_();
for(i=0;i<8;i++)
{T0831_SK=1;
T0831_SK=0;
if(T0831_DO) DataSoute++;
DataSoute<<=1;
}
T0831_CS=1;T0831_SK=1;
TIME(2);
return(DataSoute);
}
void SN(unsigned int nt)
{ unsigned int Data[12]={0x81,0xED,0x43,0x49,0x2D,0x19,0x11,0xCD,0x01,0x09,0xFE,0xFD};
SCON=0x00;
P1_0=0; //关闭并行输出
TI=0;
SBUF=Data[nt]; //串口传数据到CD4094
while(!TI); //数据传输完成了吗
TI=0; //清除TI标志
P1_0=1; //打开并行输出
}
void main(void)
{ unsigned char AD_data; //AD转换数据结果
unsigned char num,i;
SCON=0x00;
for(i=0;i<10;i++)
{SN(i);
TIME(20);
}
START:
AD_data=T0831Read(); //读取CH进行A/D转换
num=AD_data*5*10/256; //转换为电压实际值的十倍,5V工作电压
SN(11);TIME(20);
SN(num/10);TIME(20); //先显示小数点前一位
SN(num%10);TIME(20); //再显示小数点后一位
//前一位.后一位:为电压实际值
TIME(10);
goto START;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -