导航:首页 > 操作系统 > 单片机ad转换实验

单片机ad转换实验

发布时间:2022-08-04 12:13:13

单片机AD转换的实质是不是就是检测电压的大小

单片机AD转换的实质可以理解为检测电压的大小,但不准确。对于模拟电压可以用万用表测出电压多少。但对于单片机却无法识别和处理模拟电压,所以,需要把模拟电压(模拟量)转换成对应的数字量,才能进行计算,比较等处理。而且,自然界中的物理量都是模拟量,要测量就要先转换成电压,再进行A/D转换,单片机通过换算,计算出物理量的值。所以,AD转换不只是要检测电压大小,而是要采集各种物理量。

㈡ 51单片机AD转换实验,电路和程序

#include <reg51.h>
#include <INTRINS.H>
#include <STDIO.H>

// define P1.0 to check STATUS.
sbit STATUS = P1^0;

unsigned char xdata CTRL _at_ 0x2FFF;
unsigned char xdata ADSEL _at_ 0x4FFF;
unsigned char hByte;
unsigned char lByte;

void adc_Convert (void)
{ // Start a conversion with A0 and A/$C$ low.
// The convesion takes place on rising CE edge.
CTRL = 0x00;
ADSEL = 0x00;
// Wait until we have completed a conversion .
while(STATUS==1);
// Set R/$C$ with A0 low and read the low byte.
CTRL = 0x02;
hByte = ADSEL;
// Set R/$C$ with A0 high and read the high.
CTRL = 0x03;
lByte = ADSEL;
}

void main(void)
{ unsigned int delay, MSB , LSB, adc_Res;
// Initialize serial interface
SCON = 0xDA; // SCON: mode 1, 8-bit UART, enable rcvr */
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload */
TH1 = 0xFD; // TH1: reload value for 1200 baud @ 12MHz */
TR1 = 1; // TR1: timer 1 run */
TI = 1; // TI: set TI to send first char of UART */

while(1)
{ adc_Convert();
MSB=(unsigned int)(hByte << 4);
LSB=(unsigned int)(lByte >> 4);
// adc_Res now has the converted data with 12-bit resolution.
adc_Res = MSB + LSB;
// Send adc results to the serial interface
printf("ADC READINGS: %03Xh\n", adc_Res);
// simple delay - it is mcu clock dependent !
for (delay=0; delay<10000; delay++)
;
}
}

㈢ 单片机,AD转换的原理谢谢啦

简单点将就是将IO口获得的电压信号与基准电压(如VCC或者其他参考源)做比较,得出一个数字量。测量的结果精度取决于你AD的位数

㈣ 单片机AD和DA转换具体过程是怎么样的

比如8位的AD转换吧,转换0~5V为数字量信号,就是把5V分成256份,每份是5/256,这个也就是精度,最小一份就是5/256 V,0.02V左右,比如输入信号为5V,就占了256份,AD输出结果换成16进制就是0xff,比如说输入是3.1V,就占了3.1/(5/256)=158.72份,所以输出结果只能是158份,0x9e,就偏差了0.72份,就是0.72*5/256=0.014V,就偏差了0.014V左右,如果10位的AD转换,每份就是5/1024,精度也就高了很多,反过来DA转换也是一样的

㈤ 51单片机与AD转换程序

#include<reg51.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitwr=P2^6;

sbitrd=P2^7;

sbitadint=P2^5;

delay(uintz)

{

ucharw;

while(z--)

{

for(w=0;w<125;w++);

}

}

ad_star()

{

wr=1;

wr=0;

wr=1;

}

main()

{

uchara;

while(1)

{

ad_star();

while(adint);

rd=0;

a=P0;

delay(10);

rd=1;

if(a>0&a<=20){P3=0xc0;}

if(a>20&a<=40){P3=0xf9;}

if(a>40&a<=60){P3=0xa4;}

if(a>60&a<=80){P3=0xb0;}

if(a>80&a<=100){P3=0x99;}

if(a>100&a<=120){P3=0x92;}

if(a>120&a<=140){P3=0x82;}

if(a>140&a<160){P3=0xf8;}

if(a>160&a<=180){P3=0x80;}

if(a>180&a<=200){P3=0x90;}

if(a>200&a<=220){P3=0x88;}

if(a>220&a<=240){P3=0x83;}

if(a>240&a<=255){P3=0xc6;}

}

}

㈥ 什么是单片机ad转换,单片机ad转换处理方法

不管哪个单片机或者哪个应用系统,AD转换的作用都是,将被测电压转换成相对应的数值,这样的话单片机才能够据此进行运算、判断、和控制处理.
例如,一个温度传感器在0℃的时候是100欧,对应2.5V的电压,那么单片机是无法直接知道此时的电压是2.5V的,单片机本身只能知道电平是高还是低,因此这个2.5V的电压就需要经过ADC转换为数字量,如果是用8位分辨率的ADC、参考电压为5V,那么转换结果就是127,也就是0x7F,这样的话,单片机就可以判断这个温度是否过高或者过低,就能进行运算和控制了.

㈦ 如何实现单片机中多路AD转换

有两种办法,一个就是用两个AD转换芯片,两路模拟量分别接一个。用单片机控制两个AD芯片同时启动转换,这样基本可以实现采集到同一时刻的两路模拟量值。
另一种办法就是用两个采样保持器(LF398),来暂时保存模拟量的瞬时值。两个保持器后面接模拟多路转换器,模拟多路转换器后面接一个AD转换器。过程是这样的:要采集之前先给两个采样保持器一个保持信号,紧接着选择多路开关通道,紧接着启动AD转换器。分别选择多路开关的两个通道,来取得两路模拟量的值。

㈧ 51单片机关于AD转换的问题

假设AD的精度满足要求,就跟跟AD没有关系,就是数据处理显示问题,k=AD_IN0*10就是把数字处理成两位数,然后后面代码就是显示出来

㈨ 单片机ad输出的结果如何转换

可以通过移位的方式来合并两个寄存器的值,不同的单片机有不同的结构。具体情况要看单片机硬件结构来处理。10位值要与8位的来比较大小,可以在精度允许的情况下将10位的低2位略去。

阅读全文

与单片机ad转换实验相关的资料

热点内容
安卓手机信号旁边的汉字怎么设置 浏览:301
nrf2401单片机 浏览:710
清除电脑文件夹垃圾的方法 浏览:223
天河程序员 浏览:189
成都程序员公积金 浏览:765
程序员为什么叫程序猿 浏览:481
加西贝拉压缩机价格 浏览:786
海信聚好看如何用u盘安装app 浏览:69
加密狗怎么写的 浏览:557
安卓手机如何能调最大声音 浏览:665
编程开发工具大全 浏览:569
如何把安卓系统换成windows 浏览:28
android拼接url 浏览:22
华为nfc复制加密卡怎么模拟 浏览:772
在pdf中怎么插入文件 浏览:112
单片机中fw缩写是什么 浏览:375
交换律的算法怎么样看能看出简便 浏览:659
找医疗工作用哪个app 浏览:143
梦幻之乡密码解压 浏览:596
nvidiasmi命令 浏览:757