数据采集系统.docx

上传人:b****8 文档编号:9923839 上传时间:2023-05-22 格式:DOCX 页数:16 大小:238.92KB
下载 相关 举报
数据采集系统.docx_第1页
第1页 / 共16页
数据采集系统.docx_第2页
第2页 / 共16页
数据采集系统.docx_第3页
第3页 / 共16页
数据采集系统.docx_第4页
第4页 / 共16页
数据采集系统.docx_第5页
第5页 / 共16页
数据采集系统.docx_第6页
第6页 / 共16页
数据采集系统.docx_第7页
第7页 / 共16页
数据采集系统.docx_第8页
第8页 / 共16页
数据采集系统.docx_第9页
第9页 / 共16页
数据采集系统.docx_第10页
第10页 / 共16页
数据采集系统.docx_第11页
第11页 / 共16页
数据采集系统.docx_第12页
第12页 / 共16页
数据采集系统.docx_第13页
第13页 / 共16页
数据采集系统.docx_第14页
第14页 / 共16页
数据采集系统.docx_第15页
第15页 / 共16页
数据采集系统.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据采集系统.docx

《数据采集系统.docx》由会员分享,可在线阅读,更多相关《数据采集系统.docx(16页珍藏版)》请在冰点文库上搜索。

数据采集系统.docx

数据采集系统

实训题目:

数据采集系统

一、任务

设计并制作一个可由键盘控制的数据采集系统,以单片机为核心,以AD0809为数据采集芯片,以矩阵键盘为控制输入设备。

二、要求

1、基本要求

(1)利用按键控制选择采集的模式,分为可自动轮流采集8路电压数据和键盘控制任意采集一路电电压。

(2)用矩阵键盘一个按键控制采集的模式,用8个按键控制选择8路数据的任一路。

(3)利用数码管显示数据及采集编号。

(4)利用发光二极管亮灭表示采集模式。

(5)采集的8路数据可用分压电路实现,要求电压可调。

2、发挥扩展部分

在完成基本要求任务的基础上,增加如下功能:

(1)增加串口传输数据,把采集的数据通过串口发到PC机上,用串口调试助手接收数据;

3、硬件电路的设计方案及框图

3.1设计方案:

根据数据采集系统设计要求,可考虑用如下方法,确定系统由以下模块组成。

(1)0809A/D转换电路

ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。

它是逐次逼近式A/D转换器,可以和单片机直接接口。

①.ADC0809的内部逻辑结构

由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。

多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。

三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

②.

引脚结构

IN0-IN7:

8条模拟量输入通道

ADC0809对输入模拟量要求:

信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。

地址输入和控制线:

4条

ALE为地址锁存允许输入线,高电平有效。

当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。

A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。

通道选择表如下表所示。

C

B

A

选择的通道

0

0

0

IN0

0

0

1

IN1

0

1

0

IN2

0

1

1

IN3

1

0

0

IN4

1

0

1

IN5

1

1

0

IN6

1

1

1

IN7

数字量输出及控制线:

11条

ST为转换启动信号。

当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。

EOC为转换结束信号。

当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。

OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。

OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。

D7-D0为数字量输出线。

CLK为时钟输入信号线。

因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,

VREF(+),VREF(-)为参考电压输入。

③.ADC0809应用说明

a.ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。

b.初始化时,使ST和OE信号全为低电平。

c.送要转换的哪一通道的地址到A,B,C端口上。

d.在ST端给出一个至少有100ns宽的正脉冲信号。

e.是否转换完毕,我们根据EOC信号来判断。

f.当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。

(2)单片机控制电路

1.单片机的40个引脚大致可分为4类:

    电源、时钟、控制和I/O引脚。

①电源:

a.VCC-芯片电源,接+5V;

        b.VSS-接地端;

②时钟:

XTAL1、XTAL2-晶体振荡电路反相输入端和输出端。

③控制线:

控制线共有4根,

2.ALE/PROG:

地址锁存允许/片内EPROM编程脉冲

①ALE功能:

用来锁存P0口送出的低8位地址

    ②PROG功能:

片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。

  3.PSEN:

外ROM读选通信号。

  4.RST/VPD:

复位/备用电源。

       ①RST(Reset)功能:

复位信号输入端。

       ②VPD功能:

在Vcc掉电情况下,接备用电源。

  5.EA/Vpp:

内外ROM选择/片内EPROM编程电源。

          ①EA功能:

内外ROM选择端。

          ②Vpp功能:

片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。

6.I/O线

80C51共有4个8位并行I/O端口:

    P0、P1、P2、P3口,共32个引脚。

P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。

(3)LED显示电路

(4)矩阵键盘

矩阵式键盘的结构与工作原理:

需要的键数比较多时,采用矩阵法来做键盘是合理的。

矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。

这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。

行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。

3.2电路结构框图:

3.3原理图,PCB图

4.软件设计

数据采集系统软件设计总共可分为4个模块:

按键显示模块、数据采集、数据处理以及自动循环采集模块。

流程图:

5.制作与调试过程

制作过程:

首先是找好大概的原理图,经过老师的指导和同学的讨论,得出了最终的结果。

在制版的时候,我把下载口和数码管的封装画出了,后面需要割线才可以使用。

这让我再一次明白了把图画好的重要性。

软件调试过程:

我首先写的是按键显示,按键我是用行扫描的方法去写的,显示我只是先写了一个数码管的程序。

可是当把程序下到板子里面,无论按哪一列都只是显示第一列的4个值,我把程序检查了一遍发现并没有错误,而且我们所使用的KEIL软件并没有单步调试的功能,所以我把程序发给同学帮忙检查,结果也没有检查出来。

后来我们只好去请教老师,在老师的帮助下,我们发现原来是程序没有跳转到第二列,只要改动一个地方就可以了,为了调试方便,我还去借了仿真器。

做显示程序的时候,在显示之前必须关闭0809显示完了才能打开,以免影响显示的数据。

当按键程序写好了以后,我开始写4个数码管的程序,因为电压是有小数点的,所以我们必须使用2个不同的字型码。

写完了按键与显示,我就开始做手动采集,我觉得手动采集部分是比较简单的,我是采用查询的方法去实现的,当EOC为高电平的时候采集结束,把采集的数据经过处理之后送给数码管显示。

只要把手动采集做成一个子程序,在按键部分调用,最后就能实现按键控制通道采集的功能。

根据我按键程序,我把采集通道做成像数码管那样的字型码,我先把字型码赋给P2口然后再进行采集,采集的时候要关闭数码管显示。

接下来是数据处理部分,这个程序在做智能仪器实验二的时候有使用过,所以只要稍微做些改动即可。

我是把数据保存在31H、32H、33H3个寄存器中,最后在显示的时候再把其中的数据读出来。

我最后做的是我觉得本次程序中最难的部分:

自动循环采集。

我是用一个按键控制,只要一按下就进入自动循环采集,然后再用一个没有用到的按键控制跳出循环,只要一按下这个按键,自动循环就会结束。

6.心得体会

通过本次实训,对单片机有了更深的了解,也认识到智能仪器是单片机和微控的升华。

以前在上理论课的时候以为自己听懂了明白了,但是没有经过真正的实践是不会发现在实际的编程面前自己所学的知识有多么的不够用,无论自己的理论知识有多么地扎实,但在实训中都有一定的困难,画好原理图是最重要的一步,如果原理图错了后面的就做不对。

因为有了前几次做板子的经验,再加上这次实训所做的硬件部分比较简单因此很顺利的就做好了。

在编程的时候我们还是遇到了一些问题,像循环部分,按键部分这些都是经过老师和同学的帮助才能最后实现功能,在老师讲解的过程中我们也明白了许多需要注意的地方,比如像数码管的字型码一定要匹配,要看硬件电路是怎么连接的,还有你的按键程序要用什么方式也得看你的硬件电路,不能拿着一个程序就直接用。

这次实训让我更加的了解了51单片机和ADC0809的使用也让我明白了在编程过程中一定要把程序按正确的规则写好,这样才能在检查程序的时候容易发现问题,如果写得太乱找错误的时候就会很头疼,这次实训也让我明白了只有通过实践才能加深对理论知识的学习及掌握,理论知识是为实践做指导的只有学好了理论才能熟练的运用到实践当中,而在实践中遇到的困难又能帮助我们加深理论知识的学习让我们明白自己的不足,从而更加的努力学习。

 

7.参考文献

(1)喻宗泉.单片机原理与应用技术.西安:

西安电子科技大学出版社,2006

(2)冯育长.单片机系统设计与实例分析.西安:

西安电子科技大学出版社,2007

(3)陈涛.单片机应用及C51程序设计.机械工业出版社,2008

(4)赵亮,侯国锐.单片机C语言编程与实例.北京:

人民邮电出版社,2003

附录:

附录1:

元件明细表

附录2:

程序

附录3:

电路原理图

附录4:

PCB图

程序:

ORG0000H

AJMPMAIN

ORG0200H

MAIN:

MOVR5,#00H

MOVR0,#30H

MOVR1,#1FH

MOVR2,#0EFH

MOV65H,#0

MOV62H,#09H

ABC:

ACALLDIS

ACALLCJ

ACALLKEY

AJMPABC

KEY:

MOVP1,#0FH

MOVA,P1

ANLA,#0FH

CJNEA,#0FH,KEYY

AJMPLOOP1003

KEYY:

ACALLDELAY

MOVP1,#0FH

MOVA,P1

ANLA,#0FH

CJNEA,#0FH,NEXT

AJMPLOOP1003

NEXT:

MOVA,R2

MOVP1,A

MOVA,P1

ANLA,#0FH

CJNEA,#0FH,NEXT11

AJMPNEXT21

NEXT11:

CJNEA,#0EH,NEXT12

MOVA,#00H

MOVB,R5

ADDA,B

MOV@R0,A

AJMPKEY_END

NEXT12:

CJNEA,#0DH,NEXT13

MOVA,#04H

MOVB,R5

ADDA,B

MOV@R0,A

AJMPKEY_END

NEXT13:

CJNEA,#0BH,NEXT14

MOV62H,#08H

MOVB,R5

ADDA,B

MOV@R0,A

AJMPKEY_END

NEXT14:

CJNEA,#07H,NEXT21

MOV62H,#09H

MOVB,R5

ADDA,B

MOV@R0,A

AJMPKEY_END

NEXT21:

MOVA,R2

RLA

MOVR2,A

INCR5

MOVA,R5

CJNEA,#04H,NEXT

KEY_END:

MOVR5,#00H

MOVR2,#0efH

LOOP1003:

RET

CJ:

CLRP3.7

CLRP3.6

MOVDPTR,#SHU

INC63H

ACALLXZ

MOVA,30H

MOVCA,@A+DPTR

MOVP2,A

WAIT:

JBP2.7,WAIT

MOVXA,@DPTR

MOV60H,A

MOVP2,#0FFH

SETBP3.7

SETBP3.6

CALLLOOP1

RET

XZ:

MOVA,62H

CJNEA,#09H,CYC

AJMPLOOP101

CYC:

MOVA,65H

CJNEA,#08H,LOOP100

MOV65H,#0

LOOP100:

MOV30H,65H

MOVA,63H

CJNEA,#50,LOOP101

INC65H

MOV63H,#0

LOOP101:

RET

 

LOOP1:

MOVA,60H;数据处理部分y=x*500/255

MOVB,#51

DIVAB

MOV31H,A

MOVA,B

CLRF0

SUBBA,#1AH

MOVF0,C

MOVA,#10

MULAB

MOVB,#51

DIVAB

JBF0,LOOP2

ADDA,#5

LOOP2:

MOV32H,A

MOVA,B

CLRF0

SUBBA,#1AH

MOVF0,C

MOVA,#10

MULAB

MOVB,#51

DIVAB

JBF0,LOOP3

ADDA,#5

LOOP3:

MOV33H,A

RET

DELAY:

MOVR7,#80

LOOP:

MOVR3,#20

DJNZR3,$

DJNZR7,LOOP

RET

D5MS:

MOVR5,#10H

DH0:

MOVR6,#0FFH

DL0:

DJNZR6,DL0

DJNZR5,DH0

RET

DIS:

MOVP1,#10H

MOVP2,#0FEH

MOVDPTR,#LEDMAP;显示子程序

MOVA,30H

MOVCA,@A+DPTR

MOVP0,A

CALLDELAY

MOVP1,#20H

MOVP2,#0FEH

MOVDPTR,#TAB;显示子程序

MOVA,31H

MOVCA,@A+DPTR

MOVP0,A

CALLDELAY

MOVP1,#40H

MOVP2,#0FEH

MOVDPTR,#LEDMAP;显示子程序

MOVA,32H

MOVCA,@A+DPTR

MOVP0,A

CALLDELAY

MOVP1,#80H

MOVP2,#0FEH

MOVDPTR,#LEDMAP;显示子程序

MOVA,33H

MOVCA,@A+DPTR

MOVP0,A

CALLDELAY

RET

LEDMAP:

;八段管显示码

db3fh,06h,5bh,4fh,66h,6dh,7dh,07h

db7fh,6fh,77h,7ch,39h,5eh,79h

DB71h

TAB:

DB0BFH,86H,0DBH,0CFH

DB0E6H,0EDH,0FDH,87H

DB0FFH,0EFH,0F7H,0FCH

DB0B9H,0DEH,0F9H,0F1H

SHU:

DB71H,73H,75H,77H

DB79H,7BH,7DH,7FH

END

 

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

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2