微机毕业课程设计之数据采集系统.docx
《微机毕业课程设计之数据采集系统.docx》由会员分享,可在线阅读,更多相关《微机毕业课程设计之数据采集系统.docx(15页珍藏版)》请在冰点文库上搜索。
微机毕业课程设计之数据采集系统
(此文档为word格式,下载后您可任意编辑修改!
)
微机原理及接口
技术课程设计书
学院:
信息与通信工程学院
专业:
测控技术与仪器
班级:
xxx
学号:
xxx
姓名:
xxx
指导教师:
xxx
目录
1、摘要2
2、总体方案设计2
2.1设计目的2
2.2设计任务与要求2
2.3设计方案3
3、硬件原理图设计设计3
3.1总设计图说明3
3.2各子硬件图说明4
3.2.1原理图所用芯片介绍4
3.2.2各子硬件电路说明9
4、程序设计13
4.1程序流程图14
4.2程序设计说明14
5、课程设计收获与心得体会17
6、参考文献18
7、附录19
一、摘要
本次课程设计,主要是了解可编程外围芯片8255的工作原理,以及学会对ADC0809和8255芯片的应用和设计技术。
对微型计算机基本的系统结构、对微型计算机硬软件的工作原理有个整体的认识。
学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。
通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
二、总体设计方案
2.1设计目的
1)进一步建立微机系统的概念,加深对系统的理解和认识,培养学生应用微型计算机解决实际问题的能力;
2)进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高编写汇编语言程序的水平和学习程序调试方法。
3)进一步熟悉微机最小系统的构成及常用接口芯片的使用,提高系统设计的能力。
2.2设计任务和要求
设计内容:
以8088cpu为核心设计一个采集系统,系统可以实现一路模拟电压信号进行采集,已知该电压信号的电压范围是0~255mv,选用adc0809作为AD转换器,系统中有三位LED显示器显示所采集到电压的毫伏数。
设计要求:
1)画出电路原理图,说明工作原理
2)编写一个实现对输入模拟电压进行转换并在LED显示器显示当前采集数据的数字量程序
2.3设计方案
数据采集系统的设计,要求使用微型计算机的最小系统,且具
有1路的输入,输入信号在0—255mV,而且采用数码管显示输入(显示10进制的结果)。
因此我们采用以下的设计方案:
ADC0809是将各种被测的量转换成为模拟量(电压)作为输入,经过一级放大器的放大,将电压放大至AD转换模块,可以识别的范围,在将AD转换的输出,用数码管显示出来(显示的结果为10进制数),且将AD转换的输出接入到并行接口8255,再将并口的输出接入的系统的总线,也就是对并口8255的相应的输入进行存储。
当完成存储之后将会CPU将存储的数据再通过8255显示在数码管上,这个流程一直循环。
三、硬件原理图设计设计
3.1总硬件设计图说明
本设计以8088为核心,以存储器、总线、接口电路、外设为要素构成了一个最小系统。
其中存储器用到了2764和6264芯片,2764是EPRAM,用来存储数据。
6264是ROM芯片,用来存储程序。
接口电路采用8255芯片,这时一个可编程并行接口,采集电压信号采用了ADC0809,这是一个逐位逼近型8位单片AD转换芯片,8088的三大总线利用8282锁存器锁存信号,外设是三个数码管电路,显示电压信号,另外8088与0809的时钟信号由8282来提供。
总硬件设计图见附录。
3.2各子硬件图说明
1 首先介绍原理图所用到的芯片:
(1)、8088
8088是一个Intel以8086为基础的微处理器,拥有16位元暂存器和8位元外部资料总线。
引脚功能略
(2)、8255
8255是一个可编程并行接口芯片,管脚如图
1、8255的主要引脚功能
CS:
芯片选择信号线,当这个输入引脚为低电平时,即CS=0时,表示芯片被选中,允许8255与CPU进行通讯;CS=1时,8255无法与CPU做数据传输.
RD:
读信号线,当这个输入引脚为低电平时,即RD=0且CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:
写入信号,当这个输入引脚为低电平时,即WR=0且CS=0时,允许CPU将数据或控制字写入8255。
A0,A1:
地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.
(3)、ADC0809
ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式AD转换器。
1、主要引脚功能:
ALE:
地址锁存允许信号,输入,高电平有效。
START:
AD转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动AD转换)。
EOC:
AD转换结束信号,输出,当AD转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:
数据输出允许信号,输入,高电平有效。
当AD转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
2、ADC0809的工作过程
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动AD转换,之后EOC输出信号变低,指示转换正在进行。
直到AD转换完成,EOC变为高电平,指示AD转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
转换数据的传送AD转换后得到的数据应及时传送给单片机进行处理。
数据传送的关键问题是如何确认AD转换的完成,因为只有确认完成后,才能进行传送。
(4)、8282
图3_4是地址锁存器8282芯片的管脚功能和真值表。
8282有8位信号输入管脚DI7~DI0和8位三态信号输出管脚DO7~DO0;OE#为输出允许信号,低电平有效;STB是锁存信号。
下降沿有效。
(5)、8284
8284中,除具有时钟信号产生电路外,还有RESET复位信号和提供时钟信号CLK,以及被CLK同步的复位信号RESET和准备就绪信号READY。
如图-3所示
(6)、6264
Intel6264的容量为8KB,是28引脚双列直插式芯片,采用CMOS工艺制造
1、主要引脚功能:
OE(outputenable):
读出允许信号,输入,低电平有效。
WE(writeenable):
写允许信号,输入,低电平有效。
CS(chipenable):
片选信号1,输入,在读写方式时为低电平。
CS2(chipenable):
片选信号2,输入,在读写方式时为高电平。
2、6264的工作过程
Intel6264的操作方式由,CE1,CE2的共同作用决定
①写入:
当和为低电平,且和CE2为高电平时,数据输入缓冲器打开,数据由数据线D7~D0写入被选中的存储单元。
②读出:
当和为低电平,且和CE2为高电平时,数据输出缓冲器选通,被选中单元的数据送到数据线D7~D0上。
③保持:
当为高电平,CE2为任意时,芯片未被选中,处于保持状态,数据线呈现高阻状态。
(7)、2764
2764是8K*8字节的紫外线镲除、电可编程只读存储器。
1、2764主要引脚的含义:
1 OE:
输出允许信号。
低电平有效。
当该信号为0时,芯片中的数据可由D0~D7端输出。
2 CE:
选片信号。
低电平有效。
当该信号为0时表示选中此芯片。
3 PGM:
编程脉冲输入端。
对EPROM编程时,在该端加上编程脉冲。
读操作时该信号为1。
(8)、8286(引脚图如下)
8286具有两组对称的数据引线A7~A0和B7~B0,为双向的输入输出线,三态。
OE#是输出允许信号,输入,低电平有效。
当OE#为高电平时,A7~A0和B7~B0输出高阻。
T端则控制数据传送方向,T=1,表示数据从A流向B,T=0,表示数据从B流向A。
因此,只需将8086的数据线连接8286的A组端口,8086的数据使能连接8286的OE#,8086的数据发送接收控制DTR#连接8286的数据传送方向控制端T,便实现了8086和数据驱动器的连接。
、各子硬件电路说明:
首先给各个芯片分配的地址
RAM2764
70000H~71FFFH
ROM6264
3E000H~3FFFFH
8255A
A口
00378H
1.
B口
00379H
2.
C口
0037AH
3.
控制字
0037BH
一、存储器
这是存储器电路,其中6264存储程序,2764存储数据,这在程序里定义,它们的地址分别为3E000H~3FFFFH,70000H~71FFFH。
当程序从cpu里写入6264时,WR变为低电平,使6264的WE有效,允许写入数据。
当cpu执行程序时从6264中读出数据,将使RD有效,即OE有效,这样CPU才能读出数据。
2764与此类似。
2、接口电路与外设
接口电路采用8255,adc0809从外面读取电压值,处理完后从D0~D7送出数据,0809采用脉冲启动的方式,将START和EOC取反连接在一起,当转换结束后下一轮转换马上开始,这样就实现了一直采集数据的功能。
我们只读一路端口的值,所以将ADD、ADDB、ADDC都置为0,这样从IN0读取数据。
为了不影响信号的输入,将其他输入口接地。
根据0809的指标,可知道其量化间隔为delta=Vmax(2n-1)=2.5V(256-1)=1mv,Vmax是参考最大电压,我们从8255的PA口输入,整个0809的工作过程就是这样。
下面说明8255的工作过程:
我们设置8255的PA口为输入,PB口为输出,PC口为输入。
D0~D7接CPU的数据总线,PB口接数码管的段选,PC口的PC5~PC7接数码管的位选。
8255不断读入数据,将数据从D0~D7输出,将其存储在存储器中,并通过CPU进行数据处理,同时将处理完的数据通过PB口送给数码管,同时PC5~PC7送位选信号,动态扫描,利用数码管的字形编码,将值显示出来。
这是一个不断刷新的电路,只要0809有读取新数据,那么数码管就能立刻变化,显示新的数据。
3、CPU模块
我们通过8282锁存器将8088的地址信息锁存,利用8286将8088的数据信息锁存。
其工作过程如下:
系统需要独立的地址总线,并在整个总线周期维持地址有效。
需外加地址锁存器来存储地址,20位地址要三片锁存器。
锁存器由ALE信号来控制,即ALE作为锁存器的输入控制信号,控制地址的写入。
除地址外,BHE#信号也要存入外接的地址锁存器。
注意ALE是高电平有效,必须和锁存器的控制信号的电平相一致
(1)、地址总线形成。
将8086的20位地址和BHE#信号分为3组,和3片8282的DI7~DI0连接,CPU的地址锁存使能ALE与8282的STB端相连。
在ALE的下降沿时,对地址信号进行锁存。
地址锁存器8282相当于8个D触发器。
从真值表可以看出,当OE#为高,DO7~DO0为高阻状态。
当OE#为低STB为高时,8282的输出等于输入,8282的输出信号DO7~DO0与输入信号DI7~DI0相等。
当STB由高变低,信号被锁存。
OE#为高电平时,8282的输出为高阻态,OE#为低,DO7~DO0有效。
以其中的第一个8282为例,不难看出,只要将8282的DI7~DI0与8086CPU的AD7~AD0相连,锁存号STB与CPU的ALE端相连。
就可实现地址锁存的功能。
而输出允许信号OE#为什么直接接地?
因为OE#直接接地表示输出允许地址信号一直有效(无高阻态),在不带DMA的单处理器系统中,完全可以这样处理。
与此类似,第二、第三个锁存器的连接基本相同。
地址A与数据D的复用(片)总线信号作为锁存器的输入,由ALE控制输入,输出为直通方式,锁存器输出为地址信号。
ALE信号仅在新地址输出期间有效,使新地址输入锁存器,从而从复用总线上分离出地址信号;由于锁存器输出为直通方式,使地址信号期延长到整个总线周期。
(2)、数据总线的形成。
OE#是输出允许信号,或称三态控制信号,低电平有效。
A到B表示数据从CPU传送到系统其他设备,是数据写的数据流向,B到A是数据从系统的其他设备传送到CPU,是数据读的数据流向。
而CPU的数据发送接收控制DTR#=1时,正好是数据发送(写)状态,DTR#=0时,是数据接收(读)状态,所以可以将DTR#直接和8286的T相连。
8286的输出使能OE#端则必须由CPU的DEN#控制。
在前面我们已经提到了,在CPU的存储器访问周期、IO访问周期以及中断响应周期DEN#输出低电平,即输出有效信号。
使能8286允许数据通过,完成数据的传输。
8286不能象8282那样,将OE#直接接地。
当G=0时,由DIR决定数据驱动的方向;当G=1时总线高阻。
由DEN信号打开收发器,由DTR#信号选择收发器的驱动方向
(3)、系统控制信号的形成。
注意在最小方式下,由MIO#、RD#、WR#的组合来决定进行什么操作;系统的其它信号直接来自CPU:
MIO#
RD#
WR#
操作
1
0
1
读存储器
1
1
0
写存储器
0
0
1
读外设
0
1
0
写外设
四、程序设计
1、程序流程图
程序设计如下:
DATASEGMENT
ORG70000H;数据段在70000H中,数据存储在以此开始的单元中
DATA1DB64DUP(?
)
LEDDB0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90;定义一个共阳极数码管编码0~9
ENDSDATA
CODESEGMENT
ORG3E000H;定义代码段在3E000H开始的单元
ASSUMECS:
CODE,DA:
DATA
INTI_8255:
PROCNEAR;8255初始化子程序
MOVDX,37BH;将8255的控制字地址送到DX中
OUTDX,AL;将此控制字信息输出8255的控制寄存器中
INTI_8255EDNP;8255初始化子程序结束
START:
;主程序开始
MOVAX,DATA
MOVDS,AX
MOVAX,SEGDATA1;将变量DATA1的首地址存入AX中
MOVDS,AX
MOVSI,OFFSETDATA1;将变量DATA1的偏移地址送到SI中
CALLINTI_8255 ;调用8255初始化程序
MOVCX,0
AGAIN:
MOVDX,37AH
OUTDX,CX
OUTDX,AX;给ALE送一个上升沿
NOP;等待
MOVAX,0
OUTDX,AX;给START送一个下降沿,让转换开始,以后转换开始信号就靠EOC
MOVDX,37AH;将PC口得地址送到DX
OUTDX,AX;将PC2=1送到OE口
MOVDX,378H
INAL,DX;读入转换结束
MOV[SI],AL;将转换的结果存入DATA1单元中
MOVAX,DATA1
XIANSHI:
;显示部分
MOVBX,OFFSETLED;将LED的偏移地址送到BX
MOVDX,379H;将数据从存储器内读回,送到PB口
DIV100;处理数据,将数值除完后取百位存入AL中
XLATLED;将值换成数码管的字符码
OUTDX,AL
MOVDX,37AH
OUTDX,10H;位选,显示百位
LOP:
LOOPLOP;等待
MOVDX,379H;以下类似
DIV100
MOVAX,AH;将值除以100后取余数再除以10取其值
DIV10
XLATLED
OUTDX,AL;显示十位
MOVDX,37AH
OUTDX,20H
LOP1:
LOOPLOP
MOVDX,379H;以下显示个位
DIV100
MOVAX,AH
DIV10
MOVAX,AH
XLATLED
OUTDX,AH
MOVDX,37AH
OUTDX,40H
LOP2:
LOOPLOP
JMPAGAIN;下一轮数据转换采集不断循环直至复位或断电
ENDSCODE
ENDSTART
HLT;程序结束
五、课程设计体会总结
本次课程设计我觉得相当的有挑战。
让我自己觉得有很多的东西学的很不够,不明白不了解的地方很多。
在课程设计的过程,了解到了很多的东西,认识了很多的器件,如8284、ADC0809等等一些在课堂上没有了解的很有用的器件。
课程设计的最大作用是将自己学到的东西拿来使用。
知道了,学了的器件使用起来也并不是那么简单的东西。
要对器件分配相应的地址,做初始化的工作,写各种各样的之程序,去支持器件的工作。
在将器件连接起来,一起使用,他们的搭配使用中管脚的连接,也是很重要的。
最好是能够了解器件的内部结构,如果实在不行,那就必须搞清楚器件的管脚定义,以及使用的方法,以及初始化等等的注意事项。
还有很重要的东西系统的误差,误差是影响系统的很重要的一件事情。
只有明白误差的产生,才能更好的去消除误差和减小误差。
才能做到更好的优化系统。
本次课程设计让我学到了很多的东西,更重要的是让自己知道学的东西还有很多,还要继续的努力,才能很好的掌握所学到的东西。
六、主要参考资料
1)《微型计算机原理与接口技术》冯博琴主编清华大学出版社
2)《例说51单片机》张义和等主编邮电出版社
3)《8286+8288芯片介绍》XX文库
4)《微型计算机原理及接口技术课程设计》XX文库
七、附录:
总原理图