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被保留,否则被清除。重复此过程,直至逼近寄存器最低位。转换结束后,将逐次逼近寄存器中的数字量送入缓冲寄存器,得到数字量的输出。逐次逼近的操作过程是在一个控制电路的控制下进行的。

双积分法

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

电压频率转换法

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

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

电压频率转换法电压频率转换法的工作过程是:当模拟电压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);

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()

{

unsigned int led;

unsigned char a ,b,c;

init();

while(1)

{

led = getad();

a = led/100;

b=led%100/10;

c=led%10;

Display(a,b,c);

}

}

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

{

PORTB=DIG_CODE[c];

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

Delay();

PORTB=DIG_CODE[b];

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

Delay();

PORTB=DIG_CODE[a];

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

Delay();

}

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--);

}

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

  1. pic单片机延时程序C语言,PIC单片机C语言延时程序和循环子程序实现方法

    PIC单片机C语言延时程序和循环子程序实现方法 很多朋友说C中不能精确控制延时时间,不能象汇编那样直观. 其实不然,对延时函数深入了解一下就能设计出一个理想的框价出来. 一般的我们都用 for(x=1 ...

  2. pic单片机内部时钟校准c语言,pic单片机时钟配置

    pic单片机时钟配置 已有 1687 次阅读2016-1-2 18:38 |个人分类:发现 还是PIC12F1572,某个io 输出脉冲信号.io置高,置低都是立即数给寄存器,电平竟然要16us才变化 ...

  3. pic单片机配置字c语言,PIC单片机配置字说明及使用.pdf

    PIC单片机配置字说明及使用 PIC 单片机器件配置字简介和使用 在PIC系列单片机里,其芯片内部大都有设置一个特殊的程序存储单元,地 址为2007 ,由单片机的用户自由配置,用来定义一些单片机功能电 ...

  4. pic单片机解惑篇,6个pic单片机问题解疑(上)

    pic单片机具备很多应用,对于pic单片机,想必大家并不陌生.往期文章中,小编对pic单片机做过诸多介绍.本文中,小编将为大家带来6个pic单片机问题,并予以解答.而在之后的pic单片机文章中,小编将 ...

  5. pic1路AD转换c语言,pic单片机的ad转换(实例解析)

    描述 AD转换就是模数转换.顾名思义,就是把模拟信号转换成数字信号.主要包括积分型.逐次逼近型.并行比较型/串并行型.Σ-Δ调制型.电容阵列逐次比较型及压频变换型.A/D转换器是用来通过一定的电路将模 ...

  6. pic单片机流水灯循环右移c语言,PIC单片机LED流水灯程序

    PIC 单片机 LED流水灯程序 ;************************************************************* include ;*********** ...

  7. 煤气检测与报警程序C语言,基于单片机的煤气检测报警系统毕业设计.doc

    基于单片机的煤气检测报警系统毕业设计 届 别 学 号 毕业设计 基于单片机的煤气检测报警系统 姓 名 系 别. 专 业 导 师 姓 名.职 称 完 成 时 间 目录 摘要3 Abstract3 1 绪 ...

  8. 单片机4人抢答器程序C语言,基于单片机的4人抢答器.pdf

    基于单片机的4人抢答器 本文由wosulewen贡献 doc文档可能在WAP端浏览体验不佳.建议您优先选择TXT,或下载源文件到本机 查看. 福建工程学院国脉信息学院 目录 摘要----------- ...

  9. 单片机跑马灯程序c语言,MCS-51单片机控制跑马灯的三种方法

    描述 在MCS一51单片机的控制系统中,它的四个并行8位输入输出端口P0一P3是我们经常使用的.在并行端口的编程学习中,"跑马灯"是单片机并行端口输出控制的典型实例.所谓跑马灯,是 ...

最新文章

  1. Android 双击返回键退出程序 实现
  2. 在Exchange 2010中批量导入用户
  3. 如何读懂并写出装逼的函数式代码 1
  4. 全境封锁服务器维护 2018,全境封锁全域事件2018年8月活动什么时候开始_全域事件怎么玩...
  5. 微信自动回复如何实现?用 Python 就可以!
  6. Hadoop中的Streaming(20)
  7. oracle column的设置,SQL*PLUS的命令行——column命令 - [ORACLE]
  8. uni-app之实现分页
  9. 兰州大学计算机基础在线考试,[兰州大学]《计算机基础》2020年5月考试在线考核试题...
  10. 两平面平行方向向量关系_空间向量,如果一条直线与一平面平行,那么直线的方向向量与平面的法向量有什么关系??垂直呢?...
  11. 黑苹果OC的血泪史之硬盘(三星固态1T)篇
  12. R语言【探究时间序列的自相关性】
  13. 驾驭synchronize的方法
  14. 日语日常信函书信写作范文(6篇)
  15. linux驱动管道,Xilinx Linux 如何理解V4L2的管道驱动程序
  16. 【实用教程】让我来帮你一键下载公zhong号图文封面吧(文末附小白教程)
  17. verilog HDLBits Verilog语法
  18. zabbix监控软件安装
  19. 离散数学 求命题公式的主析取范式和主合取范式
  20. POJ - 1651 Multiplication Puzzle (区间dp)

热门文章

  1. python中字典的索引_按索引访问Python字典的元素
  2. 【linux】Linux配置环境变量
  3. 如何修改默认浏览器_iPhone可以修改默认浏览器了
  4. 备份linux分区到usb,将Linux引导加载程序备份到USB的方法
  5. Python模块之: fractions模块-分数模块
  6. 1067 Sort with Swap(0, i) (25 分)
  7. CentOS 系列安装 Docker
  8. Hibernate 连接不同数据库的方言
  9. 动态字段列表实现及ListT排序
  10. 深拷贝浅拷贝的一些理解