单片机 AD574和ADC0832分别选什么传感器 具体资料
展开全部
AD574 是12Bit的ADC 并行数据传送暂用IO口过多
ADC0832是8Bit的ADC
如果对AD采样精度不是很高,建议你采用ADC0809而且有许多参考程序
下面给你一段ADC0809的C语言C51单片机的
使用参考程序
/**********【数字电压温度表】***********/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
char Code[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d,
0x7d, 0x07, 0x7f, 0x6f}; /*显示【0 1 2 3 4 5 6 7 8 9】数字的数码管的段码 */
uchar code C[] = {0x0, 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F};
/*列扫描控制 LED1位 2位 3位 4位 5位 6位 7位 8位*/
uchar disp[4]; //显示器数组
uint temp,result;
sbit CLK=P3^3; //接时钟接口 为ADC0809提供时钟
sbit EOC=P3^2;
sbit ST=P3^0;
sbit OE=P3^1;
/*************延时1MS函数*************/
void delay1ms(uchar x)
{ uchar i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
/**************显示函数***************/
void display(void)
{ P0=Code[disp[0]];
P2=C[1];
delay1ms(10);
P0=Code[disp[1]]|0x80;
P2=C[2];
delay1ms(10);
P0=Code[disp[2]];
P2=C[3];
delay1ms(10);
P0=Code[disp[3]];
P2=C[4];
}
/*********T0定时器的初始化函数***************/
void init(void)
{ EA=1;
ET0=1;
TMOD=0x01;
TH0=(65536-200)/256;
TL0=(65536-200)%256;
TR0=1;
}
/**************T0中断服务,提供时钟信号***************/
void timer0(void) interrupt 1
{ TH0=(65536-200)/256;
TL0=(65536-200)%256;
CLK=~CLK;
}
/*************主函数***************/
main()
{
init();
ST=0;
while(1)
{
ST=1;
ST=0;
while(EOC==0)
;
OE=1;
temp=P1;
result=temp*1.0/255*500;
disp[0]=result/1000;
disp[1]=result/100%10;
disp[2]=result/10%10;
disp[3]=result%10;
display();
}
}
ADC0832是8Bit的ADC
如果对AD采样精度不是很高,建议你采用ADC0809而且有许多参考程序
下面给你一段ADC0809的C语言C51单片机的
使用参考程序
/**********【数字电压温度表】***********/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
char Code[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d,
0x7d, 0x07, 0x7f, 0x6f}; /*显示【0 1 2 3 4 5 6 7 8 9】数字的数码管的段码 */
uchar code C[] = {0x0, 0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F};
/*列扫描控制 LED1位 2位 3位 4位 5位 6位 7位 8位*/
uchar disp[4]; //显示器数组
uint temp,result;
sbit CLK=P3^3; //接时钟接口 为ADC0809提供时钟
sbit EOC=P3^2;
sbit ST=P3^0;
sbit OE=P3^1;
/*************延时1MS函数*************/
void delay1ms(uchar x)
{ uchar i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
/**************显示函数***************/
void display(void)
{ P0=Code[disp[0]];
P2=C[1];
delay1ms(10);
P0=Code[disp[1]]|0x80;
P2=C[2];
delay1ms(10);
P0=Code[disp[2]];
P2=C[3];
delay1ms(10);
P0=Code[disp[3]];
P2=C[4];
}
/*********T0定时器的初始化函数***************/
void init(void)
{ EA=1;
ET0=1;
TMOD=0x01;
TH0=(65536-200)/256;
TL0=(65536-200)%256;
TR0=1;
}
/**************T0中断服务,提供时钟信号***************/
void timer0(void) interrupt 1
{ TH0=(65536-200)/256;
TL0=(65536-200)%256;
CLK=~CLK;
}
/*************主函数***************/
main()
{
init();
ST=0;
while(1)
{
ST=1;
ST=0;
while(EOC==0)
;
OE=1;
temp=P1;
result=temp*1.0/255*500;
disp[0]=result/1000;
disp[1]=result/100%10;
disp[2]=result/10%10;
disp[3]=result%10;
display();
}
}
展开全部
AD574和ADC0832分别选什么传感器?
选择传感器,要看你对什么进行“感应”,和用AD574、ADC0832没有多大的关系。
如果想要检测大气压力、液体的酸碱度、管道煤气中的一氧化碳的浓度......,你就要根据具体的要求来选用传感器。
选择传感器,要看你对什么进行“感应”,和用AD574、ADC0832没有多大的关系。
如果想要检测大气压力、液体的酸碱度、管道煤气中的一氧化碳的浓度......,你就要根据具体的要求来选用传感器。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
说不上那个好点,是根据你情况来选择,需要AD分辨率,IO口多少,AD通道等,你如果IO口多选AD574好了,它是12位的,如果不多,8位也能满足要求,你就选ADC0832也可以,引脚也小
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询