首页 » 科学 » ADC0832介绍_准时器_数据

ADC0832介绍_准时器_数据

少女玫瑰心 2024-10-01 07:27:40 0

扫一扫用手机浏览

文章目录 [+]

proteus事理图

一、ADC0832先容

ADC0832介绍_准时器_数据 ADC0832介绍_准时器_数据 科学

ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片,其最高分辨可达256级。
体积更小,兼容性,性价比更高。
事情频率为250kHz,转换韶光为32μS;内部电源输入与参考电压的复用,使得芯片的仿照电压输入在0~5V之间。
具有双数据输出可作为数据校验,以减少数据偏差,转换速率快且稳定性能强。
独立的芯片使能输入,使多器件挂接和处理器掌握变的更加方便。
通过DI 数据输入端,可以轻易的实现通道功能的选择。

ADC0832介绍_准时器_数据 ADC0832介绍_准时器_数据 科学
(图片来自网络侵删)

其芯片引脚图如下:

ADC0832芯片引脚图

芯片引脚功能如下:

CS_片选使能,低电平芯片使能

CH0 仿照输入通道0,或作为IN+/-利用。

CH1 仿照输入通道1,或作为IN+/-利用。

GND 芯片参考0 电位(地)。

DI 数据旗子暗记输入,选择通道掌握。

DO 数据旗子暗记输出,转换数据输出。

CLK 芯片时钟输入。

Vcc/REF 电源输入及参考电压输入(复用)。

单片机对ADC0832的掌握事理

由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,以是电路设计时可以将DO和DI 并联在一根数据线上利用。

ADC0832未事情时,CS输入端 高电平,CLK 、DO/DI 的电平任意,此时芯片禁用

进行A/D转换时,CS输入端 低电平 开始转换 CLK 输入时钟脉冲 DO/DI端则利用DI端输入通道功能选择的数据旗子暗记,在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示起始旗子暗记。
在第2、3个脉冲下沉之前DI端应输入2 位数据用于选择通道功能。

2 位数据为"1"、"0"时,只对CH0 进行单通道转换。

当2位数据为"1"、"1"时,只对CH1进行单通道转换。

当2 位数据为"0"、"0"时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。

当2 位数据为"0"、"1"时,将CH0作为负输入端IN-,CH1 作为正输入端IN+进行输入。

到第3 个脉冲的下沉之后DI真个输入电平就失落去输入浸染,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。
从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。
直到第11个脉冲时发出转换数据最低位DATA0,一个字节的数据输出完成。
也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATA0。
随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。
末了将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。

作为单通道仿照旗子暗记输入时ADC0832的输入电压是0~5V,且8位分辨率时的电压精度为19.53mV。
如果作为由IN+与IN-输入的输入时,可将电压值设定在某一个较大范围之内,从而提高转换的宽度。
但值得把稳的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。

proteus其完全代码如下:

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

uchar Get_AD_Result(); //模数转换结果

void ET0_init(); //定时器0中断

void RT1_init(); //定时器1中断

//ADC0832引脚定义

sbit CS = P1^0;

sbit CLK = P1^1;

sbit DIDO = P1^2;

//数码管位选

sbit W1 = P2^4;

sbit W2 = P2^5;

sbit W3 = P2^6;

sbit W4 = P2^7;

//数码管位选

unsigned char date[4];

//共阴极七段数码

unsigned char code tab[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,

0x79,0x71,0x00,0X80};

void main()

{

ET0_init(); //定时器0初始化

RT1_init(); //定时器1初始化

ET0 = 1;//许可T0中断

TR0 = 1;//启动定时器T0

ET1 = 1;//许可T1中断

TR1 = 1;//启动定时器T1

EA = 1; //打开总中断

CLK = 0; //ADC0832初始化

CS = 1; //禁用ADC0832

while(1);

}

void ET0_INT() interrupt 1

{

static uchar i;//static 全局变量

TH0 = (65536-2000)/256; // 重装初值

TL0 = (65536-2000)%256;

P2 |= 0xf0; //消影

switch(i) //位选,选择点亮的数码管,

{

case(0):

P0 = date[0];W1 = 0;break;//第一位

case(1):

P0 = date[1];W2 = 0;break;//第二位

case(2):

P0 = date[2];W3 = 0;break;//第三位

case(3):

P0 = date[3];W4 = 0;break; //第四位

}

i++;

if(i==4)

{

i=0;

}

}

void ET1_INT() interrupt 3

{

uint vt;

uchar AD;

TH1 = (65536-2000)/256; // 重装初值

TL1 = (65536-2000)%256;

AD = Get_AD_Result();//得到转换结果 0~255

vt = 1.953AD; //丈量电压值

date[0] =tab[vt/1000];//取第一位

date[1] =tab[vt/100%10]|0x80; //点亮小数点

date[2] =tab[vt/10%10];

date[3] =tab[vt%10];

}

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

// 获取AD转换结果(0通道)

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

uchar Get_AD_Result() //包含11个CLK低落沿

{

uchar i, dat;

CS = 1; //ADC0832未事情时,CS端为高电平,此时芯片禁用

_nop_; //对付延时很短的,哀求在us级的,采取“_nop_”函数

CLK =1;

CS = 0;

DIDO = 1; CLK = 0; _nop_; CLK = 1; _nop_; //SCLK第一个低落沿来到时,DI = 1启动ADC0832

DIDO = 1; CLK = 0; _nop_; CLK = 1; _nop_; //SCLK第二个低落沿

DIDO = 0; CLK = 0; _nop_; CLK = 1; _nop_; //SCLK第三个低落沿,发送1,0选择通道cho

DIDO = 1; //开释总线

for(i = 0; i < 8; i++) //第4个低落沿到第11个低落沿

{

CLK = 0; //clk处于低落沿,每一个低落沿DO端输入下一个

_nop_; //对付延时很短的,哀求在us级的,采取_nop_函数

if(DIDO) dat |= 0x01; // dat = dat | 0x01,dat和0x01做“或”的运算,意思是最低位置1,其它位保持不变。

CLK = 1; _nop_; //clk处于上升沿

dat <<= 1; //数据左移

}

return (dat);

CS = 1; //ADC0832停滞事情

}

void ET0_init()

{

TMOD &= 0xf0; //TMOD与11110000相与,相与结果,前四位不变,后四位掌握定时器T0的被设置为0000,因此选择了内部启动办法,定时器模式 办法0(13位定时器,TH8位,TL低五位)

TMOD |= 0x01;//TMOD与00000001相或,相或结果,前四位为0,后四位掌握定时器T0的被设置为0001,因此选择了内部启动办法,定时器模式 办法1(16位定时器)

TH0 = (65536-2000)/256; //2ms溢出 计数器初值:T=(65536-X)Tcy fosc=12MHz,则Tcy=1us,/256取高八位

TL0 = (65536-2000)%256; //%256取低八位

}

void RT1_init()

{

TMOD &= 0x0f; //TMOD与00001111相与,相与结果,前四位为0,后四位不变,因此选择了T1内部启动办法,定时器模式 办法0(13位定时器,TH8位,TL低五位)

TMOD |= 0x10;//TMOD与00010000相或,相或结果,前四位掌握定时器T0的被设置为0001,后四位为0,因此选择了T1内部启动办法,定时器模式 办法1(16位定时器)

TH1 = (65536-2000)/256; //2ms溢出

TL1 = (65536-2000)%256;

}

相关文章

国产操作系统旧事_操作体系_华为

事实上,1999年,时任科技部部长徐冠华就曾说过,“中国信息家当缺芯少魂”。个中的“芯”指的是芯片,而“魂”则是指操作系统。此后的...

科学 2024-12-17 阅读0 评论0