#include "reg51.h"
#define uint unsigned int
#define uchar unsigned char
sbit SPI_CLK = P1^7; //DA寄存器定义
sbit SPI_DATA = P1^5;
sbit CS_DA = P2^4;
sbit AD_CLK = P2^3; //AD寄存器定义
sbit AD_DATA = P2^1;
sbit CS_AD = P2^2;
void da5615(uint da) //DA转换函数
{
uchar k;
da<<=6;
CS_DA=0; //片选置低
for (k=0;k<12;k++)
{
SPI_CLK=0;
SPI_DATA=(bit)(da&0x8000); //依次取其最高位
SPI_CLK=1;
da<<=1;
}
CS_DA=1; //片选置高,完成一次转换
SPI_CLK=0;
}
uchar ad0832() //AD转换函数,返回转换数值
{
uchar input,i;
input=0x00;
AD_CLK=0; //清时钟,片选置低
AD_DATA=0;
CS_AD=0;
for (i=0;i<3;i++) //写入配置位,双通道单极性输入,选中通道1
{
AD_DATA=1;
AD_CLK=1;
AD_CLK=0;
}
for (i=0;i<8;i++) //启动转换
{
input<<=1;
AD_CLK=1;
AD_CLK=0;
if (AD_DATA) input++;
}
CS_AD=1; //转换结束
return (input);
}
main()
{
uchar j,temp;
da5615(250); //DA转换,输出一定值电压,送入AD0832的通道1
temp=ad0832(); //AD转换
TMOD=0x20; //串口初始化
TH1=0xFD; //baud:9600
TL1=0xFD;
SCON=0x50;
PCON=0;
TR1=1;
for(j=0;j<10;j++)
{
SBUF=temp; //AD转换的数值送串口显示
while(TI==0);
TI=0;
}
}
评论0