ad转换(C语言)
发布网友
发布时间:2022-04-24 02:12
我来回答
共1个回答
热心网友
时间:2023-10-21 05:34
------------------------------------------------------------
// ADC0809模数转换
//ADC0809采样通道3输入的模拟量,转换后结果显示在数码管上
#include reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code LEDData[]=;
//ADC0809引脚定义
sbit OE=P1^0;
sbit EOC=P1^1;
sbit ST=P1^2;
sbit CLK=P1^3;
//延时
void Delayms(uint ms)
{
uchar i;
while(ms--)for(i=0;i120;i++);
}
//显示转换结果
void Display_Result(uchar d)
{
P2=0xf7;
P0=LEDData[d%10];
Delayms(5);
P2=0xfd;
P0=LEDData[d%100/10];
Delayms(5);
P2=0xfd;
P0=LEDData[d/100];
Delayms(5);
}
// 主程序
void main()
{
TMOD=0x02;
TH0=0x14;
TL0=0x00;
IE=0x82;
TR0=1;
P1=0x3f;//选择ADC0809通道3(0111)
//高4位设通道地址为0111
while(1)
{
ST=0;ST=1;ST=0;//启动转换
while(EOC==0); //等待转换结果
OE=1; //允许输出
Display_Result(P3); //显示A/D转换结果
OE=0; //关闭输出
}
}
//T0定时器中断给ADC0809提供时钟信号
void Timer0_INT() interrupt 1
{
CLK=!CLK; //ADC0809时钟信号
}
热心网友
时间:2023-10-21 05:34
------------------------------------------------------------
// ADC0809模数转换
//ADC0809采样通道3输入的模拟量,转换后结果显示在数码管上
#include reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code LEDData[]=;
//ADC0809引脚定义
sbit OE=P1^0;
sbit EOC=P1^1;
sbit ST=P1^2;
sbit CLK=P1^3;
//延时
void Delayms(uint ms)
{
uchar i;
while(ms--)for(i=0;i120;i++);
}
//显示转换结果
void Display_Result(uchar d)
{
P2=0xf7;
P0=LEDData[d%10];
Delayms(5);
P2=0xfd;
P0=LEDData[d%100/10];
Delayms(5);
P2=0xfd;
P0=LEDData[d/100];
Delayms(5);
}
// 主程序
void main()
{
TMOD=0x02;
TH0=0x14;
TL0=0x00;
IE=0x82;
TR0=1;
P1=0x3f;//选择ADC0809通道3(0111)
//高4位设通道地址为0111
while(1)
{
ST=0;ST=1;ST=0;//启动转换
while(EOC==0); //等待转换结果
OE=1; //允许输出
Display_Result(P3); //显示A/D转换结果
OE=0; //关闭输出
}
}
//T0定时器中断给ADC0809提供时钟信号
void Timer0_INT() interrupt 1
{
CLK=!CLK; //ADC0809时钟信号
}
热心网友
时间:2023-10-21 05:34
------------------------------------------------------------
// ADC0809模数转换
//ADC0809采样通道3输入的模拟量,转换后结果显示在数码管上
#include reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code LEDData[]=;
//ADC0809引脚定义
sbit OE=P1^0;
sbit EOC=P1^1;
sbit ST=P1^2;
sbit CLK=P1^3;
//延时
void Delayms(uint ms)
{
uchar i;
while(ms--)for(i=0;i120;i++);
}
//显示转换结果
void Display_Result(uchar d)
{
P2=0xf7;
P0=LEDData[d%10];
Delayms(5);
P2=0xfd;
P0=LEDData[d%100/10];
Delayms(5);
P2=0xfd;
P0=LEDData[d/100];
Delayms(5);
}
// 主程序
void main()
{
TMOD=0x02;
TH0=0x14;
TL0=0x00;
IE=0x82;
TR0=1;
P1=0x3f;//选择ADC0809通道3(0111)
//高4位设通道地址为0111
while(1)
{
ST=0;ST=1;ST=0;//启动转换
while(EOC==0); //等待转换结果
OE=1; //允许输出
Display_Result(P3); //显示A/D转换结果
OE=0; //关闭输出
}
}
//T0定时器中断给ADC0809提供时钟信号
void Timer0_INT() interrupt 1
{
CLK=!CLK; //ADC0809时钟信号
}