AVR学习板中AD转换实验,PCF8591T接法SCL,SDA接上拉电阻。这种接法,怎么和单片机通信,百度都查不到。

AVR学习板中AD转换实验,PCF8591T接法SCL,SDA接上拉电阻。这种接法,怎么和单片机通信,百度都查不到。,第1张

下个PCF8591的DATASHEET吧,模拟量可通过1、2、3、4脚接入,就是说可以接4路模拟量输入,然后通过9、10两个脚接到单片机相应是通过串行方式和单片机通信,SCL是时钟信号,SDA是数据,具体如何传送数据你可以看看单片机和24C02通信方式,是相似的,和DS1302也是相似的。结合芯片手册上的时序图和指令,就能看明白了 的IIC总线上,这个看你的单片机资料,那两个脚是IIC

ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch ;//开始转换

这是用STC单片机内部A/D转换电路进行A/D转换时,要给A/D控制寄存器ADC_CONTR写启动转换命令,ADC_CONTR是ADC控制寄存器,其中的每一位的作用见下图,而这行语句前面肯定要有定义每一位状态的语句,或用#define宏定义了各位的值。

#include "reg51h"

#define data_point P0

sbit EOC=P2^0;

sbit ADDA=P2^1;

sbit ADDB=P2^2;

sbit ADDC=P2^3;

sbit OE=P2^5;

sbit START=P2^6;

sbit CLK=P2^7;

sbit ALE=P2^6;

unsigned char disp[3]={0,0,0};

char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsigned char t0count=0;

unsigned int temp;

double sum;

unsigned char val_Integer; //整数

unsigned int val_Decimal; //小数

sbit k1 = P1^0;

sbit k2 = P1^1;

sbit k3 = P1^2;

sbit k4 = P1^3;

void delay(unsigned char ms)

{

unsigned char i;

while(ms--)

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

}

void display()

{

disp[0]=disp[0]&0x7f;

P3= disp[0];

k1 = 1;

delay(2);

k1 = 0;

P3= disp[1];

k2 = 1;

delay(2);

k2 = 0;

P3= disp[2];

k3 = 1;

delay(2);

k3 = 0;

P3= disp[3];

k4 = 1;

delay(2);

k4 = 0;

}

unsigned char ADC0808()

{

unsigned char d;

ADDC=0;

ADDB=0;

ADDA=0;

TR1=1;

ALE=1;ALE=0;

START=1;START=0;

while(EOC==0);

OE=1;

d=data_point;

OE=0;

TR1=1;

return d;

}

void covert(unsigned char x)

{

sum=x00201378;

val_Integer=(unsigned char)sum;

val_Decimal=(unsigned int)((sum-val_Integer)1000);

disp[3]=dispcode[val_Decimal%10];

disp[2]=dispcode[val_Decimal/10%10];

disp[1]=dispcode[val_Decimal/100];

disp[0]=dispcode[val_Integer];

}

void main()

{

TMOD=0x21;

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

TH1=256-2;

ET0=1;

ET1=1;

EA=1;

TR0=1;

OE=0;

START=0;

EOC=1;

while(1)

{

display();

}

}

void time0() interrupt 1

{

TH0=(65536-10000)/256;

TL0=(65536-10000)%256;

t0count++;

if(t0count==100)

{

t0count=0;

covert(ADC0808());

}

}

void time1() interrupt 3

{

CLK=~CLK;

}

以上就是关于AVR学习板中AD转换实验,PCF8591T接法SCL,SDA接上拉电阻。这种接法,怎么和单片机通信,百度都查不到。全部的内容,包括:AVR学习板中AD转换实验,PCF8591T接法SCL,SDA接上拉电阻。这种接法,怎么和单片机通信,百度都查不到。、单片机AD转换用的这段程序意思是什么、adc8080的ad转换单片机程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://www.54852.com/zz/9419882.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存