4路模拟信号采集系统.docx

上传人:b****6 文档编号:6423221 上传时间:2023-01-06 格式:DOCX 页数:12 大小:325.60KB
下载 相关 举报
4路模拟信号采集系统.docx_第1页
第1页 / 共12页
4路模拟信号采集系统.docx_第2页
第2页 / 共12页
4路模拟信号采集系统.docx_第3页
第3页 / 共12页
4路模拟信号采集系统.docx_第4页
第4页 / 共12页
4路模拟信号采集系统.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

4路模拟信号采集系统.docx

《4路模拟信号采集系统.docx》由会员分享,可在线阅读,更多相关《4路模拟信号采集系统.docx(12页珍藏版)》请在冰豆网上搜索。

4路模拟信号采集系统.docx

4路模拟信号采集系统

单片机开发与设计工程师

考试文档

 

学校:

湖南人文科技学院

题目:

4路模拟信号采集系统

学生姓名:

陈自斌易颂文

起止日期:

2010-6-15~2010-6-25

摘要

本次设计是建立一个四路模拟信号采集系统,能处理模拟信号(0~5V),同时对信号进行循环采样并通过键盘控制输出。

它主要由A/D转换模块、单片机、显示模块、控制器模块组成。

其中最主要的部分是单片机和A/D转换器,首先被测模拟信号通过A/D转换器转换成数字信号,然后通过单片机的处理,在数码管上不停的显示4路的采样数据,通过的给一个控制信号,可以选择的任意一路信号在数码管上面输出显示。

关键词:

A/D转换模块;单片机;控制模块

 

目录

设计要求1

1、方案1

2、单元电路设计2

2.1A/D转换模块2

2.2单片机3

2.3显示模块3

2.4控制模块设计4

3、系统软件设计5

3.1系统工作流程5

4、总原理图5

5、调试结果及分析6

7、详细仪器清单7

参考文献8

附录9

4路模拟信号采集系统

设计要求

1.4路模拟量输入,范围0-5V;

2.对4个通道的模拟量进行巡回采样,再将采集的数据进行工程量转换;

3.能通过按键切换所选通道;

4.数据在LED显示器上显示,并能够通过键盘操作切换显示不同通道的采样值。

1、方案

此方案以单片机STC89C52为核心,对四路模拟信号进行循环采样输出。

首先,信号通过一个A/D转换模块把模拟信号转换成数据信号,在通过STC89C52和8255的控制,由按键控制选择一路信号在LED数码管上显示。

4路模拟信号采集系统原理框图如图1所示:

图1系统方框图

 

2、单元电路设计

2.1A/D转换模块

A/D转换模块我们采用的ADC0809芯片,设有一路信号巧(0V~5V)从ADC0809的INo通道输入,地址输人端A、B、C均接地,这时1No的通道地址为OOH。

0809是8位ADC,对0V~,5V的信号,其转换精度为20mV/级。

P27和

共同组成ADC0809的口地址和启动转换控制信号。

当P27=0时,指定ADC0809的口地址为0EFFFH;当STC89C52的

来到时,0809的ALE在脉冲的上升沿锁存地址信号,START在脉冲的高电平启动A/D转换。

在转换结束后EOC输出高电平,转换后的数字量锁存在0809内部的三态输出锁存器中。

当输出允许信号

为高电平时,转换结果经数据线D7`~D0输出[2]。

如图2所示:

图2A/D0809芯片

2.2单片机

这个设计的核心我们采用的是STC89C52芯片,P0口作为数据总线和地址总线,首先,当模拟信号输入时,P0口作为数据总线对数据进行输入,其后在把数据传给8255时此时P0口作为一个地址总线。

P2作为ADC0809的控制端口。

P1作为流水灯控制口[1]。

如图3所示。

图3主控芯片

2.3显示模块

它主要由8255和LED数码管组成,通过8255上的PA口和PB口控制数码管,数码管由8段组成,分别为A,B,C,D,E,F,G,H,PA口作为一个位选信号,而PB口作为一个段选信号。

当PA口为低电平时就选择这一位。

如图4所示:

图4LED数码管

2.4控制模块设计

利用STC89C52的外部中断0对信号进行切换,INTO为一个下降沿触发。

每按一次键,就产生一次中断,因为此时P10,P11口连接ADC0809的A,B口,按键一次对P1口进行加1赋值,所以我们可以通过观测二极管的亮灭判断我们选择哪路信号。

如图5所示:

图5控制和复位

3、系统软件设计

3.1系统工作流程

程序开始运行时,我们先将它进行初始化,当数据输入后对4个通道的模拟量进行巡回采样,再将采集的数据进行工程量转换,在数码管管上显示出来,通过外部的中断实现信号的切换。

图6系统工作流程

4、总原理图

U1为单片机STC89C52,U2为芯片8255,复位按键与开始按键分别接到单片机的P3.2、P3.3脚,单片机的P0.0-P0.7脚接8255芯片D0-D7脚,8255的PA0-PA5分别接6个数码管的位选,PB0接数码管引脚11,PB1接数码管引脚10,PB2接数码管引脚7,PB3接数码管引脚1,PB4接数码管引脚2,PB5接数码管引脚3,PB6接数码管引脚4,PB7接数码管引脚5。

P2.2与ADC0809的ALE连接,P2.3连接OE,P3.4连接EOC[3]。

如图7所示:

图7总原理图

5、调试结果及分析

本设计主要是在编写的程序编译通过后[4],用下载软件将编写的程序下载到实验开发板上,验证结果是否满足设计要求。

主要通过按键部分进行控制,通过数码管和LED灯部分进行观察。

当把程序下载到开发板以后,接通电源,单片机开始工作,输入模拟信号,此时我们可以看到在数码管上数据进行循环采集,当我们按下外部中断0的时候停止对数据的采集,数码管显示当前的数据。

再次按下后,则对第2路信号进行循环采集。

依此可以对4路数据进行采集。

7、详细仪器清单

表1元器件及仪器设备明细表

名称

型号

数量

单片机

STC89C52

1块

扩展芯片

8255

1块

A/D转换芯片

ADC0809

1块

数码管

LED数码管

2个

电阻

1K

若干

三极管

9015

若干

导线

若干

电池

1.5V

3个

参考文献

[1]孙育才. 新型AT89S52系列单片机及其应用.北京:

清华大学出版社,2005

[2]张鑫.单片机原理及应用.北京:

电子工业出版社,2005

[3]万福君潘松峰.单片微机原理系统设计与应用.合肥:

中国科学技术大学出版社,2001

[4]陈家骏郑滔程序设计教程北京:

机械工业出版社,2004

[5]余文俊.8051C语言实习北京:

中国水利水电出版社,2002.

 

附录

#include

#include

#definea8255_PAXBYTE[0xD9FF]/*PA口地址*/

#definea8255_PBXBYTE[0xDAFF]/*PB口地址*/

#definea8255_PCXBYTE[0xDDFF]/*PC口地址*/

#definea8255_CONXBYTE[0xDFFF]/*控制字地址[5]*/

#defineucharunsignedchar

sbitST=P2^7;

sbitEOC=P3^4;

sbitOE=P2^3;

sbitCLK=P2^0;

voiddisplay(void);

unsignedcharx0,x1,x2,x3;

unsignedcharchoice=0x00;

unsignedchardispdata[10]=

{

0xA0,/*0*/

0xBB,/*1*/

0x62,/*2*/

0x2A,/*3*/

0x39,/*4*/

0x2C,/*5*/

0x24,/*6*/

0xBA,/*7*/

0x20,/*8*/

0x28/*9*/

};

unsignedcharconstdis_table[16]={

0xA0,/*0*/

0xBB,/*1*/

0x62,/*2*/

0x2A,/*3*/

0x39,/*4*/

0x2C,/*5*/

0x24,/*6*/

0xBA,/*7*/

0x20,/*8*/

0x28,/*9*/

0x30,/*A*/

0x25,/*B*/

0xE4,/*C*/

0x23,/*D*/

0x64,/*E*/

0x74,/*F*/

};

voiddelay(unsignedintnum)

{

unsignedinti=0;

for(i=0;i

}

voiddisplay_F(unsignedcharplace,unsignedcharnum)

{

unsignedchari=0,display_num=0;

unsignedinttest=0;

a8255_CON=0x89;

a8255_PB=0xff;

a8255_PA=0xff;

delay(100);

test=~(0x01<<(place-1));

a8255_PA=test;

display_num=dis_table[num];

a8255_PB=display_num;

delay(100);

}

//0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0};

ucharAD_DATA;//保存

voiddelay1(unsignedinti)

{

while(i--);

}

/*********系统初始化***********/

voidinit()

{

EA=1;//开总中断

TMOD=0x02;//设定定时器T0工作方式

TH0=(65535-65485)/256;//利用T0中断产生CLK信号

TL0=(65535-65485)%256;

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

ET0=1;

ST=0;

OE=0;

IT0=1;

EX0=1;

}

/***********T0中断外断0服务程序************/

voidt0(void)interrupt1using0

{

CLK=~CLK;

}

int0()interrupt0

{

inturpt++;

if((intrupt-1)==0xff)

intrupt=0xfc;

flag=1;

delay(100);

}

else

}

/***********AD转换函数**********/

voidAD()

{

ST=0;

P1=choice;//选择通道

delay

(2);

ST=1;//启动AD转换

delay

(2);

ST=0;

while(0==EOC)

//display();

//delay(20);

OE=1;

AD_DATA=P0;

OE=0;

}

/*****************主函数**************/

voidmain()

{

unsignedintcout=0;

floatc;

unsignedintb=0;

init();

while

(1)

{

P1=choice;

cout++;

if(cout==100)

{cout=0;

AD();

c=(float)AD_DATA;

c=c*5000.0/256.0;

b=(unsignedint)c;

x0=b%10;

x1=b/10%10;

x2=b/100%10;

x3=b/1000;

}

display_F(3,x3);

display_F(4,x2);

display_F(5,x1);

display_F(6,x0);

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1