《数据采集系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《数据采集系统的设计与实现.doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、长江大学工程技术学院课程设计报告课 设 题 目数据采集系统的设计与实现课 程 名 称汇编语言+微型计算机技术系 部信息系班 级学 生 姓 名学 号序 号指 导 教 师时 间2012年8月28日2012年9月9日目 录目录长江大学工程技术学院1一、设计目的1二、设计内容1三、硬件设计及分析21总体结构图22.各部件端口地址设计及分析23.各部件的组成及工作原理2四、软件设计及分析31总体流程图32.主要程序编写及分析4五、系统调试41.调试环境介绍42. 各部件的调试43.调试方法及结果9六、总结与体会9七、附录10数据采集系统的设计与实现一、设计目的1.通过本设计,使学生综合运用微型计算机技术
2、、汇编语言程序设计以及电子技术等课程的内容,为以后从事计算机检测与控制奠定一定的基础。2.主要掌握并行I/O接口芯片8253、8255A、ADC0809及中断控制芯片8259A等可编程器件的使用,掌握译码器74LS138的使用。3.学会用汇编语言编写一个较完整的实用程序。4.掌握微型计算机技术应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等步骤。二、设计内容1. 功能要求 利用汇编语言+微型计算机系统课程中所学的可编程接口芯片8253、8255A、ADC0809和微机内部的中断控制器8259A(从保留的IRQ2或TRQ10端引入)设计一个数据采集系统、并且编程与
3、调试。 用8253定时器定时10MS,每次定时10MS后启动一次模/数转换,要求对所接通道变化的模拟电压值进行采集。 每次模/数转换结束后,产生一次中断,在中断服务程序中,采集来的数字量被读入微处理器的累加器AL中,然后通过8255A输出到8个LED发光二极管显示。2. 设计所需器材与工具 微机原理与接口综合仿真实验平台。 可编程接口芯片8253、8255A、ADC0809和译码器芯片74LS138、74LS245等。 可调电位器4.7K一个。 其他逻辑器件、导线若干。 万用表、常用工具等。三、硬件设计及分析1总体结构图 CPU数据显示中断管理模块复位电路数据采集模块定时模块电源模块时钟电路模
4、块图1框架总图2.各部件端口地址设计及分析8255端口地址:208-20FH,端口A输入,端口B输出。A口地址:208H,B口地址:209H。C口地址:20AH。8259端口地址:210-217H,ICW1应写入8259A偶地址端口,它的D7D5位,当8259A应用于8088/8086系统时无效,故以0填充。D4位是ICW1的标志位,为1。需要多片8259A级联时才需要输入ICW3。D0位表示初始化编程时是否需要写入ICW4。这样,ICW1的命令字就是:00011011,即十六进制的1BH。8253端口地址:200-207H。本实验中计数器按方式0工作。即十六位二进制计数器。当计数设置好后,计
5、数器就开始计数。如果要读入计数器的值,要先锁存计数值,才能读到计数值。同时OUT脚输出一个高电平。实验时,可以将OUT0接到LED上,观察计数器是否工作。ADC0809端口地址:218-21FH,CS79接译码处21821FH这个插孔。A/D的CS插译码处20820F这个插孔,0809的IN0接至电位器W1的中心抽头插孔。3.各部件的组成及工作原理8255A有三个并行输入/输出接口,分别为A、B、C三个端口。分别为:方式0 :基本的输入输出方式,即无须联络就可以直接进行的 I/O方式。其中A、B、C口的高四位或低四位可分别设置成输入或输出。 方式1 :选通I/O,此时接口和外围设备需联络信号进
6、行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0。 方式2: 双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。然后根据在程序中是设置的那种工作方式去与74LS245进行连接。在程序中我所使用的是B口输入,A口输出的输出方式。在这个模块中最主要的就是去怎样设置好输入与输出端口。这就要要求我们在对8255A进行初始化的时候就要考虑清楚这个问题。图2-825
7、5中断管理模块主要74LS138来完成,74LS138为3-8译码器,可以产生8片选,但是在这个程序中只要用四个片选,即200-207、208-20F、210-217、218-21F。74LS138其工作原理如下:当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平。可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。同时,中断管理模块需要做的工作有设置中断向量。在对中断进行设置的时候可以对中断类型号进行修改。其实中断类型号的设置在对8259进行初始化的时候就完成了。数据采集模块是用ADC0809来完成的,通过ADC0809来进行模数转换,ADC08
8、09所采集的模拟信号转换为数字信号。这个模块是用来对数据进行采集、处理、转换的部分。在这个模块里我们要注意的是如何去处理在设计过程中该怎样去处理送入软件里面的信号的频率,我们在实验中ADC0809所接入的频率为1MHZ,但是也可以去使用2MHZ的这样一个频率,因为是8253的ADC0809是模/数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。IN3连接一个滑动电阻器,通过该电阻器改变电阻得到不同的电压值,经过数据采集并转换后通过LED显示得到结果图3-ADC08098253内部有三个计数器,分别成为计数器0、计数器1和计数器
9、2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。 8253可编程计数器/定时器,内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。工作原理:8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输
10、入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。图4-8253四、软件设计及分析1总体流程图8259的初始化设置中断向量8255初始化8253初始化开中断等待中断图5-主程序流程图2.主要程序编写及分析1.8255A I/o调通端口地址:208H20FH从端口A输入开关的状态,端口B输出接到发光二极管上,然后由二极管是否发光来判断芯片是否正常start: mov dx,20bhmov al,90hout dx,alabc: mov dx,208h ;端口A读入in al,dxmov dx,209h ;端口B输出out dx,aljmp abc2. 通过按钮
11、产生中断脉冲,向8259申请中断,在中断服务程序中8255A I/o思路:设置ICW1,ICW2和ICW4,设置ICW1用于指定中断触发方式和芯片的数量,ICW2设置用于中断类型号,设置ICW4主要用于中断结束的方式start: mov al,13h; icw1 mov dx,210h; 8259 out dx,al mov al,8; icw2 mov dx,211h out dx,al mov al,1; icw4 out dx,al mov ax,0 mov ds,ax lea ax,int0 mov ds:4*8,ax mov ax,cs mov ds:4*8+2,ax in al,d
12、x and al,0feh out dx,al mov dx,203h mov al,80h out dx,al mov bl,1 mov al,bl mov dx,200h out dx,al ;pa0 sti repeat:hlt jmp repeatint0 proc near rol bl,1 mov al,bl mov dx,200h out dx,al mov dx,210h mov al,20h out dx,al iret int0 endp3. 用8253定时,产生中断,重复第二步。思路:将中断服务程序的段基地址和偏移地址保存在中断向量表中,即设置ip和cs,可以将中断类型号
13、改为8,中断从IR0端启动。start: mov al,13h ;设置ICW1初始化命令字(00011011) mov dx,210h out dx,al ;将ICW1输出到偶地址端口 mov al,0ah ;ICW2中断类型号基值(0ah),IR2启动 mov dx,211h out dx,al ;将ICW2输出到奇地址端口 mov al,1 ;ICW4,一般结束中断的方式 out dx,al mov ax,0 mov ds,ax lea ax,int0 mov ds:4*0ah,ax ;INT0中断偏移地址,即设置ip mov ax,cs mov ds:4*0ah+2,ax ;中断向量指针
14、,设置cs ;in al,dx ;and al,0feh ;out dx,al ;8255初始化 mov dx,203h ;控制端口地址,送控制字 mov al,80h out dx,al mov bl,1 mov al,bl mov dx,200h out dx,al ;端口A输出,输出1 ;8253初始化(200H-207H)f=1mhz,t=1us,T=10ms启动 mov dx, 20bH mov al,00110110B ;选择计数器0,方式3,先低后高 out dx ,al ;送计数方式控制字 mov dx,208H ;选择计数器0 mov ax,1000 out dx,al ;后
15、送高八位 mov al,ah out dx,al ;先送低八位 mov dx, 20bH mov al,01110110B ;选择计数器1,方式3,先低后高 out dx ,al ;送计数方式控制字 mov dx,209H ;选择计数器0 mov ax,1000 out dx,al ;后送高八位 mov al,ah out dx,al ;先送低八位 sti repeat: hlt ;等待中断 jmp repeat ;中断服务程序 int0 proc near rol bl,1 mov al,bl ;移位后从端口A输出 mov dx,200h out dx,al mov dx,210h mov
16、al,20h out dx,al iret int0 endp4. 定时中断,ADC 8255 I/o思路:设置控制端口,初始化8253,使用计数器0和计数器1,采用方式3,OUT端输出方波,送数据时先送低8位,后送高8位,Clock1使用1MHZ的脉冲频率。将两个计数器级联,最后OUT端输出的方波的周期是:T=1us*1000*1000start: mov al,13h ;设置ICW1初始化命令字(00011011) mov dx,210h out dx,al ;将ICW1输出到偶地址端口 mov al,0ah ;ICW2中断类型号基值(0ah),IR2启动 mov dx,211h out
17、dx,al ;将ICW2输出到奇地址端口 mov al,1 ;ICW4,一般结束中断的方式 out dx,al mov ax,0 mov ds,ax lea ax,int0 mov ds:4*0ah,ax ;INT0中断偏移地址,即设置ip mov ax,cs mov ds:4*0ah+2,ax ;中断向量指针,设置cs ;in al,dx ;and al,0feh ;out dx,al ;8255初始化 mov dx,203h ;控制端口地址,送控制字 mov al,80h out dx,al mov bl,1 mov al,bl mov dx,200h out dx,al ;端口A输出,输
18、出1 ;8253初始化(200H-207H)f=1mhz,t=1us,T=10ms启动 mov dx, 20bH mov al,00110110B ;选择计数器0,方式3,先低后高 out dx ,al ;送计数方式控制字 mov dx,208H ;选择计数器0 mov ax,1000 out dx,al ;后送高八位 mov al,ah out dx,al ;先送低八位 mov dx, 20bH mov al,01110110B ;选择计数器1,方式3,先低后高 out dx ,al ;送计数方式控制字 mov dx,209H ;选择计数器0 mov ax,1000 out dx,al ;后
19、送高八位 mov al,ah out dx,al ;先送低八位 STI ;开中断 ABC: HLT ;等待中断 JMP ABC ;中断服务程序 INT0 Proc NEAR ;定义过程NEAR mov dx,218H ;ADC0809的地址- dx mov al,0 ;初始化一个低电平 out dx, al CALL DELAY ;调用延时子程序 IN al, dx;读转换结果-AL中 ;输出 mov dx,200H out dx, al ;自动结束中断 mov dx,210H mov al,20H out dx, al STI ;开中断 IRET ;中断返回 INT0 endp DELAY
20、Proc near push cx mov al,0F00H LOOP $ ;CXDX MOV AL,0 ;初始化一个低电平 OUT DX,AL CALL DELAY ;调用延时子程序 IN AL,DX ;读转换结果-AL中 ;输出 MOV DX,208H OUT DX,AL ;自动结束中断 MOV DX,210H MOV AL,20H OUT DX,AL STI ;开中断 IRET ;中断返回 INT0 endp DELAY Proc near PUSH CX MOV CX,0F00H LOOP $ ;CX-CX-1 ;这条指令 POP CX ;出栈 RET ;从子程序返回 DELAY endp;子程序结束 CODE ENDS ;代码段结束 END START ;结束汇编第 18 页(共 20 页)长江大学工程技术学院课设报告指导教师评阅意见报告成绩: 指导教师签名: 年 月 日