目录
摘要 (1)
1 引言 (2)
1.1 数据采集系统的简介. (2)
1.2 课程设计内容和要求 (3)
1.3 设计工作任务及工作量的要求 (3)
2 内容提要 (3)
3 系统总体方案 (3)
3.1 系统设计思路 (3)
3.2 系统总体框图 (4)
4 硬件电路设计及描述 (4)
4.1 8253芯片及工作原理 (4)
4.1.1 基本组成及工作原理 (4)
4.1.2 8253与系统连接 (5)
4.2 ADC0809内部功能与引脚介绍 (5)
4.2.1 引脚排列及各引脚的功能 (6)
4.2.2 ADC0809工作方式 (7)
4.2.3 ADC0809与系统连接 (8)
4.3 单片机89C51的引脚与功能介绍 (8)
4.4 8255并行口芯片基本组成及工作原理 (10)
4.4.1 8255的内部结构 (11)
4.4.2 8255的工作方式 (12)
4.2.3 8255与系统连接 (12)
4.5 LED显示部分接线及工作原理 (13)
4.5.1 LED显示工作原理 (13)
4.5.2 LED显示部分接线 (14)
4.6 总体电路图 (14)
5 软件设计流程及描述 (15)
5.1 主程序设计思路 (15)
5.2 部分程序设计流程图 (16)
5.2.1 8253程序流程图 (16)
5.2.2 8255程序流程图 (17)
5.2.3 数据处理流程图 (17)
5.2.4 LED显示流程图 (17)
5.3 汇编语言程序清单 (18)
5.4 仿真结果 (21)
6 课程设计体会 (21)
参考文献 (23)
摘要
数据采集是从一个或多个信号获取对象信息的过程。随着微型计算机技术的飞速发展和普及,数据采集监测已成为日益重要的检测技术,广泛应用于工农业等需要同时监控温度、湿度和压力等场合。数据采集是工业控制等系统中的重要环节,通常采用一些功能相对独立的单片机系统来实现,作为测控系统不可缺少的部分,数据采集的性能特点直接影响到整个系统。
本课程设计采用89C51系列单片机,89C51系列单片机基于简化的嵌入式控制系统结构,具有体积小、重量轻,具有很强的灵活性。设计的系统由硬件和软件两部分构成,硬件部分主要完成数据采集,软件部分完成数据处理和显示。数据采集采用AD0809模数转换芯片,具有很高的稳定性,采样的周期由可编程定时/计数器8253控制。完成采样的数据后输入单片机内部进行处理,并送到LED显示。软件部分用Keil软件编程,操作简单,具有良好的人机交互界面。程序部分负责对整个系统控制和管理,采用了汇编语言进行了判别通道、数据采集处理、数据显示、数据通信等程序设计,具有较好的可读性。
随着计算机在工业控制领域的不断推广应用,将模拟信号转换成数字信号已经成为计算机控制系统中不可缺少的重要环节,因此数据采集系统有着重要的意义。
1 引言
1.1 数据采集系统的简介
数据采集系统一般包括模拟信号的输入输出通道和数字信号的输入输出通道。数据采集系统的输入又称为数据的收集;数据采集系统的输出又称为数据的分配。
数据采集系统的结构形式多种多样,用途和功能也各不相同,常见的分类方法有以下几种,根据数据采集系统的功能分类:数据收集和数据分配;根据数据采集系统适应环境分类:隔离型和非隔离型,集中式和分布式,高速、中速和低速型;根据数据采集系统的控制功能分类:智能化数据采集系统,非智能化数据采集系统;根据模拟信号的性质分类:电压信号和电流信号,高电平信号和低电平信号,单端输入(SE)和差动输入(DE),单极性和双极性;根据信号通道的结构方式分类:单通道方式,多通道方式。
数据采集系统的任务,具体地说,就是采集传感器输出的模拟信号并转换成计算机能识别的数字信号,然后送入计算机,根据不同的需要由计算机进行相应的计算和处理,得出所需的数据。与此同时,将计算得到的数根进行显示或打印,以便实现对某些物理量的监视
从硬件力向来看,白前数据采集系统的结构形式主要有两种:一种是微型计算机数据采集系统;另一种是集散型数据采集系统。
微型计算机数据采集系统是由传感器、模拟多路开关、程控放大器、采样/保持器、AD转换器、计算机及外设等部分组成。集散型数据采集系统是计算机网络技术的产物,它由若干个“数据采集站”和一台上位机及通信线路组成。数据采集站一般是由单片机数据采集装置组成。位于生产设备附近,可独立完成数据采集和预处理任务,还可将数据以数字信号的形式传送给上位机。
微电子技术的一系列成就以及微型计算机的广泛应用,不仅为数据采集系统的应用开拓了广阔的前景,也对数据采集技术的发展产生了深刻的影响。数据采集系统的发展趋势主要表现在以下几个方面。
(1)新型快速、高分辨率的数据转换部件不断涌现,大大提高了数据采集系统的性能。
(2)高性能单片机的问世和各种数字信号处理器的涌现,进一步推动了数据采集系统的广泛应用。
(3)智能化传感器(Smarts nor)的发展,必将对今后数据采集系统的发展产生深远的影响。
(4)与微型机配套的数据采集部件的大量问世,大大方便了数据采集系统在各个领域里应用并有利于促进数据采集系统技术的进一步发展。
(5)分布式数据采集是数据采集系统发展的一个重要趋势。
1.2 课程设计内容和要求
通过一个A/D转换器采样一个模拟电压,每隔一定时间去采样一次,每次相隔的时间由定时器/计数器芯片8253控制,采样的结果送入A/D转换器芯片0809,转换完成后,把转换好的数字信号送入并行接口芯片8255,然后由中断控制器向CPU发出中断请求,在CPU控制下把8225中的数字送入外设即CRT/LED 显示。
1.3 设计工作任务及工作量的要求
(1)据题目要求的指标,通过查阅有关资料,确定系统设计方案,并设计其硬件电路图。
(2)画出电路原理图,分析主要模块功能及他们之间的数据传输和控制关系。
(3)用protel或proteus软件绘制电路原理图。
(4)软件设计,给出流程图及源代码并加注释。
2 设计内容提要
通过一个A/D转换器采样一个模拟电压,每隔一定时间去采样一次,每次相隔的时间由定时器/计数器芯片8253控制,采样的结果送入A/D转换器芯片0809,转换完成后,把转换好的数字信号送入并行接口芯片8255,然后由中断控制器向CPU发出中断请求,在CPU控制下把8225中的数字送入外设即CRT/LED 显示。
3 系统总体方案
3.1 系统设计思路
本设计的基本思路是:根据设计指标,首先从整体上规划好整个系统的功能和性能,然后再对系统进行划分,将比较复杂的系统分解为多个相对独立的子系统,特别注意对各个子系统与系统、子系统与子系统之间的接口关系进行精心设计以及技术指标的合理分解。然后再由子系统到部件、部件到具体元器件的选择和调试。各部件或子系统各自完成后再进行系统联调,直到完成总体目标。
3.2 系统总体框图
图3-1 系统总体框图
4 硬件电路设计及描述
4.1 8253芯片及工作原理
4.1.1 基本组成及工作原理
8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。输出锁存器的值是通过程序设置的。输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。CR、CE和OL都是16位寄存器,但是也可以
作8位寄存器来用。8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。
本次课程设计主要使用8253的循环计时功能,采用8253的方式2,进入这种工作方式 OUT输出高电平,装入计数值n后如果GATE为高电平,则立即开始计数,OUT保持为高电平不变;待计数值减到“1”和“0”之间, OUT将输出宽度为一个CLK周期的负脉冲,计数值为“0”时,自动重新装入计数初值n,实现循环计数,OUT将输出一定频率的负脉冲序列,其脉冲宽度固定为一个CLK 周期,重复周期为CLK周期的n倍。如果在减“1”计数过程中,GATE变为无效(输入0电平),则暂停减“1”计数,待GATE恢复有效后,从初值n开始重新计数。这样会改变输出脉冲的速率。如果在操作过程中要求改变输出脉冲的速率,CPU可在任何时候,重新写人新的计数值,它不会影响正在进行的减“1”计数过程,而是从下一个计数操作用期开始按新的计数值改变输出脉冲的速率。
4.1.2 8253与系统连接
8253的数据线与单片机89C51的P0口连接,片选端CS经过反相器后和单片机的P2.1管脚连接,输出端口ADC0809的START及ALE管脚连接,控制着ADC0809的采样速度,与系统连接图图4-3
图4-3 8253与单片机连接图
4.2 ADC0809内部功能与引脚介绍
ADC0809八位逐次逼近式A/D转换器是一种单片CMOS器件,包括8位模拟转换器、8通道转换开关和与微处理器兼容的控制逻辑。8路转换开关能直接连通8个单端模拟信号中的任何一个。其内部结构如图4-4所示
图4-4 ADC0809内部结构
4.2.1 引脚排列及各引脚的功能
图4-5 ADC0809芯片管脚图
各引脚的功能如下:
(1)IN0~IN7:8个通道的模拟量输入端。可输入0~5V待转换的模拟电压。
(2)D0~D7:8位转换结果输出端。三态输出,D7是最高位,D0是最低位。
(3)A、B、C:通道选择端。当CBA=000时,IN0输入;当CBA=111时,IN7输入。
(4)ALE:地址锁存信号输入端。该信号在上升沿处把A、B、C的状态锁存到内部
的多路开关的地址锁存器中,从而选通8路模拟信号中的某一路。
(5)START:启动转换信号输入端。从START端输入一个正脉冲,其下降沿启动
ADC0809开始转换。脉冲宽度应不小于100~200ns。
(6)EOC:转换结束信号输出端。启动A/D转换时它自动变为低电平。
(7)OE:输出允许端。高电平允许输出
(8)CLK:时钟输入端。ADC0809的典型时钟频率为640kHz,转换时间约为100μs。
(9)REF(-)、REF(+):参考电压输入端。ADC0809的参考电压为+5V。
(10)VCC:供电电源端。ADC0809使用+5V单一电源供电。
当ALE为高电平时,通道地址输入到地址锁存器中,下降沿将地址锁存,并译码。在START上升沿时,所有的内部寄存器清零,在下降沿时,开始进行A/D 转换,此期间START应保持低电平。在START下降沿后10us左右,转换结束信号变为低电平,EOC为低电平时,表示正在转换,为高电平时,表示转换结束。OE为低电平时,D0~D7为高阻状态,OE为高电平时,允许转换结果输出。
4.2.2 ADC0809工作方式
(1)定时传送方式:对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。
(2)查询方式:A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC 端。因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。
(3)中断方式:把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。
不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传
送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。
4.2.3 ADC0809与系统连接
模拟量输入通道选择通道0,即ADD-A、ADD-B、ADD-C引脚直接接地。参考电平和供电电源选择5V。ALE和START引脚连接在一起,接到8253的OUT0引脚,在8253工作方式2下,控制这0809的采样间隔时间。EOC和OE及单片机的外部中断0P3.2引脚相连,模数转换完成后,EOC引脚变成高电平,OE端允许输出,把转换结果通过D0-D7数据输出端和8255的PA口相连,与系统连接如图4-6
图4-6 0809与系统连接图
4.3 单片机89C51的引脚图与功能介绍
图4-7 单片机89C51引脚图
引脚说明:
⑴ VCC:电源电压
⑵ GND:地
⑶ P0口:P0口是一组8位漏极开路型双向I/O口,作为输出口用时,每个引脚能驱动8个TTL逻辑门电路。当对0端口写入1时,可以作为高阻抗输入端使用。
当P0口访问外部程序存储器或数据存储器时,它还可设定成地址数据总线复用的形式。在这种模式下,P0口具有内部上拉电阻。
在Flash编程时,P0口接收指令字节,同时输出指令字节在程序校验时。程序校验时需要外接上拉电阻。
⑷ P1口:P1口是一带有内部上拉电阻的8位双向I/O口。P1口的输出缓冲能接受或输出4个TTL逻辑门电路。当对P1口写1时,它们被内部的上拉电阻拉升为高电平,此时可以作为输入端使用。当作为输入端使用时,P1口因为内部存在上拉电阻,所以当外部被拉低时会输出一个低电流(IIL)。
⑸ P2口:P2是一带有内部上拉电阻的8位双向的I/O端口。P2口的输出缓冲能驱动4个TTL逻辑门电路。当向P2口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。
P2口在访问外部程序存储器或16位地址的外部数据存储器(例如MOVX @ DPTR)时,P2口送出高8位地址数据。在这种情况下,P2口使用强大的内部上拉电阻功能当输出1时。当利用8位地址线访问外部数据存储器时(例MOVX @R1),P2口输出特殊功能寄存器的内容。
当Flash编程或校验时,P2口同时接收高8位地址和一些控制信号。
⑹ P3口:P3是一带有内部上拉电阻的8位双向的I/O端口。P3口的输出缓冲能驱动4个TTL逻辑门电路。当向P3口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。
P3口同时具有AT89C51的多种特殊功能,具体如下表3-1所示。
表4-1 P3口的第二功能
⑺ RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期的高电平将使单片机复位。
⑻ ALE/PROG:当访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的低8位字节。当在Flash编程时还可以作为编程脉冲输出(PROG)。一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。但也要注意,每当访问外部数据存储器时将跳过一个ALE脉冲。
⑼PSEN:程序存储允许时外部程序存储器的读选通信号。当AT89C52执行外部程序存储器的指令时,每个机器周期PSEN两次有效,除了当访问外部数据存储器时,PSEN将跳过两个信号。
⑽EA/VPP:外部访问允许。为了使单片机能够有效的传送外部数据存储器从0000H到FFFH单元的指令,EA必须同GND相连接。需要主要的是,如果加密位1被编程,复位时EA端会自动内部锁存。
当执行内部编程指令时,EA应该接到VCC端。
⑾ XTAL1:振荡器反相放大器以及内部时钟电路的输入端。
⑿ XTAL2:振荡器反相放大器的输出端。
4.4 8255并行口芯片基本组成及工作原理
8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O 口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分。
图4-8 8255芯片管脚图
4.4.1 8255的内部结构
⑴数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。输入输的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。
⑵三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。C端口包含一个8位数据输出锁存器及缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。
⑶ A组和B组控制电路:这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU 输出的一字节方式控制字或对C口按位复位字命令。方式控制字的高5位决定A 组工作方式,低3位决定B组的工作方式。对C口按位复位命令字可对C口的每一位实现置位或复位。A组控制电路控制A口和C口上半部,B组控制电路控制
B口和C口下半部。
⑷读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。
4.4.2 8255的工作方式
8255有三种工作方式:方式0—基本输入输出方式;方式1—选通输入输出方式;方式2—双向选通输入输出方式。
8255只有一个控制寄存器可以写入两个控制字:一个为方式选择控制字,决定8255的端口工作方式;另一个为C口按位置位/复位控制字,控制C口某一位的状态。这两个控制字共用一个地址,具体控制如下表
表4-2 8255A方式控制字
表4-3 C口按位置位/复位控制字表
4.2.3 8255与系统连接
8255PA口和ADC0809连接,作为ADC0809数字量的输入通道,数据输出口D0-D7和单片机的P0口连接,PB口和显示电路LED连接,显示模拟量的大小。
图4-9 8255和系统连接及显示电路
4.5 LED显示部分接线及工作原理
4.5.1 LED显示工作原理
现在一般把显示图形或文字的LED显示屏成为图文屏,其实LED图文显示屏并没有一个公认的严格的定义,这里所谓的图形,是由单色固定亮度的点阵线条组成的任意图形,其中LED点阵发光器件或发光或熄灭,即只有这两种状态。单个LED数码管又叫七段数码管,分为共阴极和共阳级两种,多位七段LED数码显示器结构利用人的视觉延迟的特点,采用扫描的方式驱动多位七段LED数码管,节省驱动电路,降低功耗。保证一定的扫描循环频率,得到较好的显示质量。各位七段LED数码管公用一个段驱动器、一个段码锁存器,为段驱动器提供逻辑输入。每位七段LED数码管的公共端连接一个位驱动器,控制各位数码管的点亮。位驱动器由一个位码锁存器提供。
单片机系统中常用的显示器有:发光二极管LED(Light Emitting Diode)、显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。LED、LCD 显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。
图4-10 数码管原理图
使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。
本实验采用的是共阳接法,共阳数码管码编码如下:
0-9:0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
F:0x88,0x83,0xc6,0xa1,0x86,0x8e
4.5.2 LED显示部分接线
LED数码管采用共阳极接法,段选端由8255的PA口控制,位选由P1.0、P1.1决定。采用NPN的三极管作为数码管的驱动放大电路,详图如4-9。
4.6 总体电路图
图4-11 总体电路图5 软件设计流程及描述
5.1 主程序设计思路
图5-1主程序设计思路
5.2 部分程序设计流程图
5.2.1 8253程序流程图
图5-2 8253程序流程图5.2.2 8255程序流程图
图5-3 8255程序流程图
5.2.3 数据处理流程图
图5-4数据处理流程图5.2.4 LED显示流程图
图5-5 LED显示流程图
5.3 汇编语言程序清单
ORG 000H ;8253三个CLK频率均为0.5MH ,计数器0工作方式AJMP START ;为频率发生器,每510us产生一个负脉冲
ORG 0003H
JMP E8255
ORG 0030H
START: MOV DPTR,FFFFH ;(8253控制器地址)
MOV A,14H ;计数器0,低8位单字节计数,方式2,二进制数OUT @DPTR, A ;控制字写入控制寄存器
MOV DPTR,E6FFH ;计数器0地址
MOV A,FFH ;计数器0的计数初值
OUT @DPTR, A ;计数值写入计数器0
INTTUR: STEB ITO ;选择边沿触发方式