基于单片机AT89S8252与A/D1674的数据采集

来源:本站
导读:目前正在解读《基于单片机AT89S8252与A/D1674的数据采集》的相关信息,《基于单片机AT89S8252与A/D1674的数据采集》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《基于单片机AT89S8252与A/D1674的数据采集》的详细说明。
简介:本文介绍了一种基于A/D1674与AT89S8252的数据采集系统。内容包括A/D1674和单片机AT89S8252的特点,并详细阐述了数据采集系统中A/D1674和AT89S8252的接口技术,包括硬件和软件设计。

1. ATMEL89S8252与AD1674简介:

(1)ATMEL89S8252的性能特点:

ATMEL89系列单片机与8051系列单片机兼容,这个系统对于以8051系列为基础的系统来说,十分容易进行取代。同时,对那些熟悉8051的用户来说,用ATMEL公司的89系列单片机来取代8051进行系统的设计也是轻而易举的事。

本系统采用的ATMEL89系列单片机中的AT89S8252型号,AT89S8252 采用ATMEL的高密度非易失性存储器技术制造,与工业上标准的80C51的指令系统及引脚兼容,

片内可向下装载Flash,允许程序存储器在系统内通过SPI串行口改写或用通用的非易失性存储器编程器改写。通过把通用的8位CPU与可向下装载的Flash集成在一个芯片上,AT89S8252便成为一个高效的微型计算机。它的应用范围广,可用于解决复杂的控制问题,且成本较低。

AT89S8252型单片机除了具备一般的单片机性能之外还具备如下的特点:

● 8 KB Flash的存储器,可写/擦1000次

● 具有2 KB的EEPROM,可写/擦100000次,提高了存储容量

● 含有9个中断响应的能力

● 含有标准型和低档型所不具备的SPI接口

● 含有Watchdog定时器,它的存在可以大大提高单片机工作的可靠性

● 含有双数据指针

● 含有从电源下降的中断恢复

(2)AD1674数模转换芯片是美国模拟器件公司的新一代产品,它是逐次逼近型的12位精度中高端产品。AD1674有如下特点:(1)有参考电压基准和时钟电路,单/双极性输入;(2)全8位或16位微处理器接口;(3)250ns总线取数时间,能满足一般微处理器的时序要求;(4)高转换率,其采样时间控制在10us以内,速度极快,所以此系统设计时是采用查询的方式与单片机连接的;(5)片内集成了采样保持器,保持器使数据传送的准确性得到了保证,而且避免了另加元件使系统复杂化的麻烦。

模拟电压的输入:模拟电压从13脚或14脚输入。因为在芯片内部,13,14脚之间是一个内部分压电阻,所以用13脚作输入端而将14脚悬空不会有什么危害,反之亦然。在本课题中要求双极性输入,与单片机的接口:AD1674 可以进行12位转换,也可以进行8位转换,由于单片机是8位的,需要进行两次转换,这里需要注意的是必须将BIT11-BIT4接到数据总线的D7- D0,而将BIT3-BIT0采取向高位靠齐,接到接到D7-D4,分两次读取转换结果,切不可错接,如果错接的话,极易损坏芯片,也不能正确读取转换结果。

2. AD1674与ATMEL89S8252的接口:

模拟量经由八选一多路转换器ADG408 输入到 AD1674.AD1674可以进行12位转换,也可以进行8位转换,由于单片机是8位的,需要进行两次转换,这里需要注意的是必须将BIT11- BIT4接到数据总线的D7-D0,而将BIT3-BIT0采取向高位靠齐,接到接到D7-D4,分两次读取转换结果。

AD1674有 5根控制线,其中CE CS R/C 为一般控制线,完成器件的定时、寻址、启动和读出操作,12/8和A0决定芯片的转换周期和数据输出格式。CE CS R/C三者有效的次序可先可后,在本单片机系统中,12/8接地,CE与单片机的读写信号经过与或门连接。而CE R/C由74LS373控制, CS由74LS138经过译码来控制。在下图中可以看出AD1674的地址为0x5fff,74LS373的地址为0x3fff 。在启动转换或读取A/D 之前,必须将A0和R/C置成如上图所示的相应电平,然后再在CS端施加一负脉冲。AD1674的总线读取周期为250ns,可直接挂接在数据总线上。由于AD1674的转换速度极快,采用查询的方式来设计的。其中STS是转换结束标志,它可提供CPU查询A/D转换是否结束。

3.本系统软件采用C语言开发设计而成,增强了程序的可读性和易懂性。程序清单如下:

sbit p14=P1^4;

sbit P13=P1^3;

char xdata *ad74_ls=(char xdata *)0x3fff;//373地址

char xdata *ad_1674=(char xdata *)0x5fff;

void select_channel (unsigned char ch)

{

p14=1;选中408

if(ch==0)

{

*ad74_ls=0x00; 373高3位控制ADG408的通道信号

*ad_1674=0x00;//启动12位

while(P13==1);等待P13变低,转换结束

*ad74_ls=0x02; //置r/c为1,A0=0

h=*ad_1674; 读取高8位

*ad74_ls=0x03; //置r/c为1,A0=1

l=*ad_1674; }读取低4位

else if(ch==1)

{ *ad74_ls=0x20;

*ad_1674=0x00;//启动12位

while(P13==1);

*ad74_ls=0x22; //置r/c为1,A0=0

h=*ad_1674;

*ad74_ls=0x23; //置r/c为1,A0=1

l=*ad_1674;

}

else if(ch==2)

{ *ad74_ls=0x40;

*ad_1674=0x00;//启动12位

while(P13==1);

*ad74_ls=0x42; //置r/c为1,A0=0

h=*ad_1674;

*ad74_ls=0x43; //置r/c为1,A0=1

l=*ad_1674;

}

else if(ch==3)

{ *ad74_ls=0x60;

*ad_1674=0x00;//启动12位

while(P13==1);

*ad74_ls=0x62; //置r/c为1,A0=0

h=*ad_1674;

*ad74_ls=0x63; //置r/c为1,A0=1

l=*ad_1674;

}

else if(ch==4)

{ *ad74_ls=0x80;

*ad_1674=0x00;//启动12位

while(P13==1);

*ad74_ls=0x82; //置r/c为1,A0=0

h=*ad_1674;

*ad74_ls=0x83; //置r/c为1,A0=1

l=*ad_1674;

}

else if(ch==5)

{ *ad74_ls=0x0A0;

*ad_1674=0x00;//启动12位

while(P13==1);

*ad74_ls=0x0A2; //置r/c为1,A0=0

h=*ad_1674;

*ad74_ls=0x0A3; //置r/c为1,A0=1

l=*ad_1674;

}

else if(ch==6)

{ *ad74_ls=0x0C0;

*ad_1674=0x00;//启动12位

while(P13==1);

*ad74_ls=0x0C2; //置r/c为1,A0=0

h=*ad_1674;

*ad74_ls=0x0C3; //置r/c为1,A0=1

l=*ad_1674;

}

else

{ *ad74_ls=0x0E0;

*ad_1674=0x00;//启动12位

while(P13==1);

*ad74_ls=0x0E2; //置r/c为1,A0=0

h=*ad_1674;

*ad74_1s=0xE3;

l=*ad_1674;

}

}

void main(void)

{

unsigned char i;

unsigned int hi lo adresult;

while(1)主循环

{

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

{

select_channel(i);

hi=(unsigned int)(h<<4);高8位

lo=(unsigned int)(l>>4);低 4位

adresult=hi+lo;

}

}

}

4.结束语

本系统经实验运行后,取得良好的效果,基本上能准确的将模拟量转换为数字量,其误差在LSB内。

提醒:《基于单片机AT89S8252与A/D1674的数据采集》最后刷新时间 2024-03-14 01:07:57,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《基于单片机AT89S8252与A/D1674的数据采集》该内容的真实性请自行鉴别。