2个回答
展开全部
//------------------------------------------------------------
// ADC0809模数转换
//ADC0809采样通道3输入的模拟量,转换后结果显示在数码管上
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code LEDData[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//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;i<120;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时钟信号
}
// ADC0809模数转换
//ADC0809采样通道3输入的模拟量,转换后结果显示在数码管上
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code LEDData[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//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;i<120;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时钟信号
}
展开全部
bit pinA =P1^0;
sbit pinB =P1^1;
sbit pinC =P1^2;
sbit Start=P1^5;
sbit OE =P1^6;
sbit EOC =P1^7;
/*************************等待转换函数*******************************
函 数 名:void WaitADCEnd(void)
功 能:等待转换
说 明:
调用函数:无
入口参数:
返 回 值:无
设 计:UC 日 期:2009-01-28
修 改: 日 期:
********************************************************************/
void WaitADCEnd(void)
{
while(!EOC);
}
/*************************读取数值*******************************
函 数 名:uchar readdata(uchar CH_num)
功 能:读取ADC的转换数值
说 明:
调用函数:WaitADCEnd()
入口参数:uchar CH_num
返 回 值:uchar temp
设 计:UC 日 期:2009-01-28
修 改: 日 期:
********************************************************************/
uchar readdata(uchar CH_num)
{
uchar temp;
pinC=(bit)(CH_num&0x04);
pinB=(bit)(CH_num&0x02);
pinA=(bit)(CH_num&0x01);
_nop_();
_nop_();
_nop_();
Start=1;
WaitADCEnd();
OE=1;
_nop_();
_nop_();
_nop_();
temp=Data&0xff;
return temp;
}
*************************初始化函数*******************************
函 数 名:void IintADC0809 (void)
功 能:初始化ADC0809
说 明:
调用函数:无
入口参数:无
返 回 值:无
设 计:UC 日 期:2009-01-28
修 改: 日 期:
********************************************************************/
void IintADC0809 (void)
{
Data =0xff;
pinA =0;
pinB =0;
pinC =0;
Start =0;
OE =0;
EOC =1;
}
sbit pinB =P1^1;
sbit pinC =P1^2;
sbit Start=P1^5;
sbit OE =P1^6;
sbit EOC =P1^7;
/*************************等待转换函数*******************************
函 数 名:void WaitADCEnd(void)
功 能:等待转换
说 明:
调用函数:无
入口参数:
返 回 值:无
设 计:UC 日 期:2009-01-28
修 改: 日 期:
********************************************************************/
void WaitADCEnd(void)
{
while(!EOC);
}
/*************************读取数值*******************************
函 数 名:uchar readdata(uchar CH_num)
功 能:读取ADC的转换数值
说 明:
调用函数:WaitADCEnd()
入口参数:uchar CH_num
返 回 值:uchar temp
设 计:UC 日 期:2009-01-28
修 改: 日 期:
********************************************************************/
uchar readdata(uchar CH_num)
{
uchar temp;
pinC=(bit)(CH_num&0x04);
pinB=(bit)(CH_num&0x02);
pinA=(bit)(CH_num&0x01);
_nop_();
_nop_();
_nop_();
Start=1;
WaitADCEnd();
OE=1;
_nop_();
_nop_();
_nop_();
temp=Data&0xff;
return temp;
}
*************************初始化函数*******************************
函 数 名:void IintADC0809 (void)
功 能:初始化ADC0809
说 明:
调用函数:无
入口参数:无
返 回 值:无
设 计:UC 日 期:2009-01-28
修 改: 日 期:
********************************************************************/
void IintADC0809 (void)
{
Data =0xff;
pinA =0;
pinB =0;
pinC =0;
Start =0;
OE =0;
EOC =1;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询