标题:
51单片机使用ADC0832进行数模转换源程序
[打印本页]
作者:
一入极客深似海
时间:
2022-4-11 21:35
标题:
51单片机使用ADC0832进行数模转换源程序
51单片机使用ADC0832进行数模转换在Project中进行仿真模拟
VeryCapture_20220411212800.jpg
(423.99 KB, 下载次数: 60)
下载附件
2022-4-11 21:35 上传
单片机源程序如下:
#include <REGX52.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//ADC0832绑定引脚
sbit ADCS=P1^3;
sbit ADDI=P1^5;
sbit ADCLK=P1^4;
/**
* @brief ADC083初始化,在程序的开头调用
* @param 无
* @retval 无
*/
void ADC0832_Init()
{
ADCS=1;
}
/**
* @brief ADC083获取无符号8位数据
* @param 无
* @retval 返回 usigned char 型数据
*/
uchar getDaTa()
{
uchar i=0;
uchar j;
uint dat=0;
uchar ndat=0;
ADDI=1;
_nop_();
_nop_();
ADCS=0;//拉低CS端
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿1
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
ADDI=1; //选择通道0
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿2
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
ADDI=0; //选择通道1
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿3
ADDI=1;//控制命令结束
_nop_();
_nop_();
dat=0;
for(i=0;i<8;i++)
{
dat|=ADDI;//收数据
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;//形成一次时钟脉冲
_nop_();
_nop_();
dat<<=1;
if(i==7)dat|=ADDI;
}
for(i=0;i<8;i++)
{
j=0;
j=j|ADDI;//收数据
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;//形成一次时钟脉冲
_nop_();
_nop_();
j=j<<7;
ndat=ndat|j;
if(i<7)ndat>>=1;
}
ADCS=1;//拉低CS端
ADCLK=0;//拉低CLK端
ADDI=1;//拉高数据端,回到初始状态
dat<<=8;
dat|=ndat;
return(dat); //return ad k
}
复制代码
Keil代码下载:
AD数模转换.zip
(110.49 KB, 下载次数: 43)
2022-4-11 21:35 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1