AD转换的问题

AD转换的问题,第1张

1 电压值是16进制

2 首先跟你adc的位数有关。假如你adc是8位的,基准电压为3.3v,假如你输入电压为1v

那么adc采样得到碧哪的数为: 1/3.3x(2e8)

你可以反推过去51是为什么来的。悔败码这个51和单片机的位数,基准电压有枯槐关。

3 加0x30是因为要转换为ACSII码。这个你可以差ACSII码表。

//------------------------------------------------------------

// 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=0i<120i++)

}

//显示转换结果

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=0ST=1ST=0//启动转换

while(EOC==0) //等待转换结果

OE=1 //允许输出

Display_Result(P3) //显示A/D转换结果

OE=0 //关闭输出

}

}

//T0定时器中断给ADC0809提供时钟信号

void Timer0_INT() interrupt 1

{

CLK=!CLK//ADC0809时钟信余信号

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8283818.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存