单片机ad显示程序c语言,pic单片机ad转换c程序分享

 2023-09-09 阅读 22 评论 0

摘要:A/D转换器是用来通过一定的电路将模拟量转变为数字量。模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。A/D转换后,输出的数字信

A/D转换器是用来通过一定的电路将模拟量转变为数字量。模拟量可以是电压、电流等电信号,也可以是压力、温度、湿度、位移、声音等非电信号。但在A/D转换前,输入到A/D转换器的输入信号必须经各种传感器把各种物理量转换成电压信号。A/D转换后,输出的数字信号可以有8位、10位、12位、14位和16位等。

ad转换工作原理

逐次逼近法

逐次逼近式A/D是比较常见的一种A/D转换电路,转换的时间为微秒级。采用逐次逼近法的A/D转换器是由一个比较器、D/A转换器、缓冲寄存器及控制逻辑电路组成,如图所示。基本原理是从高位到低位逐位试探比较,好像用天平称物体,从重到轻逐级增减砝码进行试探。逐次逼近法转换过程是:初始化时将逐次逼近寄存器各位清零;转换开始时,先将逐次逼近寄存器最高位置1,送入D/A转换器,经D/A转换后生成的模拟量送入比较器,称为 Vo,与送入比较器的待转换的模拟量Vi进行比较,若Vo《Vi,该位1被保留,否则被清除。然后再置逐次逼近寄存器次高位为1,将寄存器中新的数字量送D/A转换器,输出的 Vo再与Vi比较,若Vo《Vi,该位1被保留,否则被清除。重复此过程,直至逼近寄存器最低位。转换结束后,将逐次逼近寄存器中的数字量送入缓冲寄存器,得到数字量的输出。逐次逼近的操作过程是在一个控制电路的控制下进行的。

9f2a1c24faaee47d787c4529915ccb64.png

单片机数字钟程序?双积分法

采用双积分法的A/D转换器由电子开关、积分器、比较器和控制逻辑等部件组成。如下图所示。基本原理是将输入电压变换成与其平均值成正比的时间间隔,再把此时间间隔转换成数字量,属于间接转换。 双积分法A/D转换的过程是:先将开关接通待转换的模拟量Vi,Vi采样输入到积分器,积分器从零开始进行固定时间T的正向积分,时间T到后,开关再接通与Vi极性相反的基准电压VREF,将VREF输入到积分器,进行反向积分,直到输出为0V时停止积分。Vi越大,积分器输出电压越大,反向积分时间也越长。计数器在反向积分时间内所计的数 值,就是输入模拟电压Vi所对应的数字量,实现了A/D转换。

c96acc1292f98a40b51643a49f5a138c.png

电压频率转换法

采用电压频率转换法的A/D转换器,由计数器、控制门及一个具有恒定时间的时钟门控制信号组成,如下图所示。

e85d8d3c68b1abb08b19f6598b84da15.png

它的工作原理是V/F转换电路把输入的模拟电压转换成与模拟电压成正比的脉冲信号。

单片机AD、电压频率转换法电压频率转换法的工作过程是:当模拟电压Vi加到V/F的输入端,便产生频率F与Vi成正比的脉冲,在一定的时间内对该脉冲信号计数,时间到,统计到计数器的计数值正比于输入电压Vi,从而完成A/D转换。

pic单片机ad转换c程序

#include《pic.h》

#define uchar unsigned char

#define uint unsigned int

单片机一般用什么语言编程?__CONFIG(0x3FB1);

void init();

void Delay();

unsigned int getad();

void Display(unsigned char a,unsigned char b,unsigned char c);

单片机 PLC、unsigned char DIG_CODE[17]={

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码

void main()

单片机c语言语句?{

unsigned int led;

unsigned char a ,b,c;

init();

while(1)

ad单片机仿真,{

led = getad();

a = led/100;

b=led%100/10;

c=led%10;

plc和单片机?Display(a,b,c);

}

}

void Display(unsigned char a,unsigned char b,unsigned char c)

{

c语言和单片机。PORTB=DIG_CODE[c];

RC4=1;RC5=0;RC6=0;

Delay();

PORTB=DIG_CODE[b];

RC4=0;RC5=1;RC6=0;

c语言编单片机程序?Delay();

PORTB=DIG_CODE[a];

RC4=1;RC5=1;RC6=0;

Delay();

}

STC15W单片机AD通道转换、unsigned int getad()

{

unsigned int ad8;

ADGO =1;

while(ADGO);

单片机三大编程语言。ad8 = ADRES;

return(ad8);

}

void init()

{

TRISA =1;

TRISB = 0; //portB 输出

TRISC = 0;

ADCON0 = 0x41;

ADCON1 = 0x00;

Delay();

}

void Delay()

{

unsigned char a,b,c;

for(c=1;c》0;c--)

for(b=10;b》0;b--)

for(a=5;a》0;a--);

}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/28509.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息