数据采集系统设计_第1页
数据采集系统设计_第2页
数据采集系统设计_第3页
数据采集系统设计_第4页
数据采集系统设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子信息与电气工程系课程设计报告设计类型:课程设计综合设计设计题目:数据采集系统B系别:电子信息与电气工程系年级专业:组员:课程设计任务书设计题目数据采集系统B设计类型应用型导师姓名主要内容及目标应用 0809A /D 转换和 8086 系列接口芯片设计一个 A/D 转换器接口将 A/D 转换器的数字量用 LED 七段数码管显示出来。编写 A/D 转换程序,要求能将 IN 端的 0-5V 的直流信号转换为数字量并送 LED 显示;具有的设计条件需要购买电子元件一批。计算机。星研试验箱。计划学生数及任务计划需要3人,需要对整体方案进行设计,完成程序编写,做出数据采集系统并完成报告。计划设计进程1

2、、从接题开始收集资料、准备设计2、第1周 画出设计框图,制定设计方案,画出电路原理图。3、第2周 ,进行实验,电路调试和完善,同时编写设计报告。参考文献1.周荷琴,微机原理与接口技术,中国科技大学,2009.6第4版2、16-32位微型计算机技术及应用清华大学出版社戴梅萼 史嘉权编著3、汇编语言程序设计南京大学出版社姚君遗编著4、汇编语言程序设计教程清华大学出版社杨记文编著5、微型计算机原理及接口技术实验指导书组员分工表组员分工 主要负责硬件电路的设计和仿真,并协助其他组员完成任务。 主要负责软件程序的编写及调试,并协助其他组员完成任务。 主要负责完成设计报告,并协助其他组员完成任务。目录1摘

3、要42总体方案设计42.1设计原理42.2数据采集模块52.3数据转换模块52.4显示模块73软件设计83.1流程框图84程序调试85总结学习96附录10数据采集系统(B)的设计1摘要数据采集系统的任务,具体地说,就是采集传感器输出的模拟信号并转换成计算机能识别的数字信号,然后送入计算机,根据不同的需要由计算机进行相应的计算和处理,得出所需的数据。与此同时,将计算得到的数据进行显示和打印,以便复现对某些物理量的监视。关键词:数据 采集 系统 8086 2总体方案设计2.1设计原理基于8086的数据采集系统它是由8086及其一些外围芯片构成的数据采集系统,具有如下特点:系统不具有自主开发能力。因

4、此,系统的软硬件开发必须借助开发工具。系统的软硬件设计与配置规模都是以满足数据采集系统功能要求为原则,因此系统的软硬件应用,配置比接近于,具有最佳的性价比;系统的软件一般都有应用程序。系统的可靠性好,使用方便。应用程序在中运行不会因外界的干扰而破坏,而且上电后系统立即进入用户状态。05V电位器ADC08098086LED显示8255图(1)设计原理数据采集系统,这种系统主要功能是将通过05v电位器采集来的信号通过外部的采样和转换后的数字信号通过接口电路送入微机进行处理,然后再经过8255将处理结果通过数码管显示出来。1, 连线说明G4区:CS-A3区:CS1G4区:ADDA、ADDB、ADDC

5、-ES-PCI:A0、A1、A2(选择通道)G4区:CLK-B2区:500KG4区IN0-D2区:05v表(1) 连线说明2, 调节05V电位器(D2区)输出电压,显示屏上的电压数字量会随之变化。用万用表验证AD转换的结果。根据原理设计电路,并得到电路仿真图如下图图(2) 数据采集系统的仿真图2.2数据采集模块当用计算机来构成数据采集系统时,所要采集的外部信号或被控制对象的参数,往往是温度、流量、压力、声音、位移等连续变化的模拟量。此次试验的被采集的信号为电压信号。2.3数据转换模块(1)ADC0809的功能简介ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D转

6、换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。图(3)和图(4)分别是ADC0809的工作时序图以及采样状态图。时序图中,START为转换启动控制信号,高电平有效,ALE为模拟信号输入宣统端口地址所存信号,上升沿有效;一旦START有效后,状态信号EOC变为低电平,表示进入转换状态,转换时间约为100us。转换结束后,EOC将变为高电平。此后外部控制可使OE由低电平变为高电平(输出有效),此时,ADC0809的输出数据总线D70从原来的高阻态变为输出数据有效。图(3) ADC0809的工作时序图(4) ADC0809在状态图中

7、,状态st2中需要对ADC0809工作状态信号EOC进行测试,如果为低电平,表示转换没有结束,仍需要停留在st2状态中等待,直到变成高电平后才说明转换结束,在下一个时钟脉冲到来时转向状态st3。在状态st3,由状态机向ADC0809发出转换好的8位数据输出允许命令,这一状态周期同时可作为数据输出稳定周期,以便能在下一状态中向锁存器中锁入可靠的数据。在状态st4,由状态机向FPGA中的锁存器发出锁存信号(LOCK的上升沿),将ADC0809的输出数据进行锁存。图(5) ADC0809与系统连接原理(2)8086简介Intel 8086是一个由Intel于1978年所设计的16位微处理器芯片,是x

8、86架构的鼻祖。不久,Intel 8088就推出了,拥有一个外部的8位数据总线,允许便宜的芯片用途。它是以8080和8085的设计为基础,拥有类似的寄存器组,但是数据总线扩充为16位。总线界面单元(Bus Interface Unit)透过6字节预存(prefecth) 的队列(queue)喂指令给执行单元(Execution Unit),所以取指令和执行是同步的,8086 CPU有20条地址线,可直接寻址1MB的存储空间,每一个存储单元可以存放一个字节(8位)二进制信息。图(6) 8086管脚2.4显示模块使用LED将转换后的数据显示出来。图(7)LED原理3软件设计3.1流程框图开始50&

9、gt;采样次数0>AXA/D转换子程序AX+AD转换结果调用显示子G4区:CS-A3区:CS1G4区:ADDA、ADDB、ADDC-ES-PCI:A0、A1、A2(选择通道)G4区:CLK-B2区:500KG4区:复位RESETG4区IN0-D2区:05v1、 调节05V电位器(D2区)输出电压,显示屏上的电压数字量会随之变化。用万用表验证AD转换的结果。程序取50次AD转换结果的平均值采样次数1=0NY图(8)总流程图4程序调试调试过程中,出现了各种各样的问题,有的是程序代码写错,有的是出现硬件线路连接错误。具体的是在实验箱中得不到我们想要的结果,即在LED显示环节不能显示出来采集并转

10、换过的数据,分析了所有原因之后,我们认为缺少了I/0端口,需要使用8255芯片。总之经过仔细认真的纠错后,我们在老师的指导下,纠正了错误,最终程序能够正确运行。图(9)程序调试图由于设计过程初期,未考虑用8255芯片,导致后来未能在星研试验箱上显示采集并转换后信号,在此,就不展示实物连接图了!5总结学习我们三人通过本实验的学习,学到了好多专业方面的知识,也学会了一些在课堂不能学到的东西。同时,在实验中遇到的问题,在解决问题的过程中,让我从中学到了不少的东西。尤其是在遇到问题时,经过和同学的讨论,以及请教老师而使问题得以解决时,自己中从收获的会更多;更甚者,当遇到问题时,通过自己查阅资料而将问题

11、解决,这样自己心里对自己做的东西会更加的感兴趣。在此,就应该说说在实验过程中遇到的问题,比如,在程序调试过程中,发现在LED数码管上无法得结果,无任何显示,我们便开始寻找错误之处;在此过程中,通过对试验箱等一些外在因素的逐一排除下,我们开始对代码进行分析,通过这些检查,发现出现这一问题的原因是:LED显示子程序无法调用,最后在老师和同学们的帮助下,我们完成了本次实训。在实验过程中,一起发现问题,在一起通过请教和讨论得出答案,这个过程给我们带来的收获。除此之外,这次课设让我感觉到,当我们遇到问题时,首先要静得下心,耐心地慢慢找出问题出在什么地方,再慢慢的解决问题,不要遇到问题就心浮气躁,这样不但

12、不能解决问题,反而会适得其反。6附录程序代码 .MODEL TINYPCIBAR1 EQU 14H ;pci9052I/O基地址(用于访问局部配置寄存器)PCIBAR3 EQU 1CH ;8位I/O空间基地址(它就是实验仪的基地址, ;也为DMA&32 BIT RAM板卡上的8237提供基地址)PCIIPR EQU 3CH ;IRQ号INTCSR EQU 4CH ;PCI9052 INTCSR地址mask_int_9052 EQU 24HVendor_ID EQU 10EBH ;厂商ID号Device_ID EQU 8376 ;设备ID号 .STACK 100 .DATAADDR_08

13、09 DW 00F0HBUFFER DB 'H.V$'LastAD DB 0 ;上一次AD转换值msg3 DB 'AD转换结果(前边是16进制数,后边是十进制数):$'IO8259_0 DW 00F0HRD_IO8259 DW 0000HIO_Bit8_BaseAddress DW ?PCI_IO_BaseAddress0 DW ?PCI_IRQ_NUMBER DB ?INT_Vector DB ?INT_MASK DB ?INT_CS DW ?INT_IP DW ?msg0 DB 'BIOS不支持访问PCI$'msg1 DB '找不到S

14、tar PCI9052板卡$'msg2 DB '读8位I/O空间基地址时出错$'msg4 DB '读IRQ号出错$'Counter DB ?ReDisplayFlag DB 0 .CODESTART: MOV AX,DATA MOV DS,AX NOP CALL InitPCI CALL ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址 MOV AH,00H MOV AL,03H INT 10H ;清屏 MOV AH,09H LEA DX,msg3 INT 21H XOR AL,AL JMP START6START1: MOV

15、 CX,32H MOV BX,0START2: CALL AD0809 XOR AH,AH ADD BX,AXLOOP START2 MOV AX,50 XCHG AX,BX DIV BL ;五十次的平均值 CMP AL,LastAD JZ START3START6: MOV LastAD,AL CALL Display_Data MOV AH,02H MOV DL,43 MOV DH,0 INT 10H MOV AH,09H LEA DX,BUFFER INT 21H ;显示结果START3: CALL DLTime CALL IfExit JZ START1 JMP ExitAD0809

16、PROC NEAR PUSH CX MOV AL,0 MOV DX,ADDR_0809 OUT DX,AL MOV DX,IO_Bit8_BaseAddress MOV CX,200AD08091: MOV DX,ADDR_0809 LOOP $ ;延时,等待AD转换完成 MOV DX,ADDR_0809 IN AL,DX POP CX RETAD0809 ENDPToChar PROC NEAR ;转化为可显示的16进制数 ADD AL,'0' CMP AL,'9' JBE ToChar1 ADD AL,07HToChar1: RETToChar ENDPDI

17、SPLAY_DATAPROCNEARMOVAH,ALANDAL,0FHCALLToCharMOVBUFFER+1,ALMOVAL,AHANDAL,0F0HRORAL,4CALLToCharMOVBUFFER,ALMOVAL,AHXORAH,AHMOVBL,51 ;255/51(16进制的1=1/51V)DIVBLORAL,'0' ;转化为可显示的10进制数MOVBUFFER+4,AL ;整数部分MOVAL,10MULAHDIVBLORAL,'0'MOVBUFFER+6,AL;第一位小数MOVAL,10MULAHDIVBLORAL,'0'MOVBU

18、FFER+7,AL;第二位小数RETDISPLAY_DATAENDPDLTimePROCNEAR PUSH AX PUSH DX MOV DX,100 ;延时100ms MOV AH,0FFH INT 21H POP DX POP AX RETDLTime ENDPExit: MOV AH,4CH INT 21HINT_0: PUSH DX PUSH AX CALL ClearInt JC INT_0_0 MOV DX,RD_IO8259 IN AL,DX IN AL,DX MOV AL,Counter ADD AL,1 DAA MOV Counter,AL MOV ReDisplayFlag

19、,1INT_0_0: MOV DX,IO8259_0 MOV AL,20H OUT DX,AL POP AX POP DX IRETIfExit PROC NEAR PUSH AX PUSH DX MOV AH,06H MOV DL,0FFH INT 21H POP DX POP AX JZ IfExit1 JMP ExitIfExit1: RETIfExit ENDPInitPCI PROC NEAR MOV AH,00H MOV AL,03H INT 10H MOV AH,0B1H MOV AL,01H INT 1AH CMP AH,0 JZ InitPCI2 LEA DX,msg0Ini

20、tPCI1: MOV AH,09H INT 21H JMP ExitInitPCI2: MOV AH,0B1H MOV AL,02H MOV CX,Device_ID MOV DX,Vendor_ID MOV SI,0 INT 1AH JNC InitPCI3 ;是否存在Star PCI9052板卡 LEA DX,msg1 JMP InitPCI1InitPCI3: MOV DI,PCIBAR1 MOV AH,0B1H MOV AL,09H INT 1AH ;读取该卡PCI9052基地址 JNC InitPCI4 LEA DX,msg2 JMP InitPCI1InitPCI4: AND CX

21、,0FFFCH MOV PCI_IO_BaseAddress0,CX MOV DI,PCIBAR3 MOV AH,0B1H MOV AL,09H INT 1AH ;读取该卡拓展的八位IO基地址 JNC InitPCI5 LEA DX,msg3 JMP InitPCI1InitPCI5: AND CX,0FFFCH MOV IO_Bit8_BaseAddress,CX MOV DI,PCIIPR MOV AH,0B1H MOV AL,09H INT 1AH ;读取IRQ号 JNC InitPCI6 LEA DX,msg4 JMP InitPCI1InitPCI6: MOV PCI_IRQ_NUM

22、BER,CL RETInitPCI ENDPModifyAddress PROC NEAR PUSH ES MOV AL,PCI_IRQ_NUMBER CMP AL,08H JAE ModifyVector1 ADD AL,08H ;IRQ0.7->中断向量8.F JMP ModifyVector2ModifyVector1: ADD AL,70H-08H ;IRQ8.F->中断向量70H.77HModifyVector2: MOV INT_Vector,AL MOV AH,35H INT 21H MOV INT_IP,BX MOV AX,ES MOV INT_CS,AX MOV

23、AL,INT_Vector LEA DX,INT_0 PUSH DS PUSH CS POP DS MOV AH,25H INT 21H POP DS MOV BL,PCI_IRQ_NUMBER MOV DX,21H CMP AL,08H JB ModifyVector3 MOV DX,0A1HModifyVector3: IN AL,DX MOV INT_MASK,AL AND BL,07H MOV CL,BL MOV BL,1 SHL BL,CL NOT BL AND AL,BL OUT DX,AL POP ES STI RETModifyVector ENDPClearInt PROC

24、NEAR ;清除PCI9052、系统中断控制器的中断标志 MOV DX,PCI_IO_BaseAddress0 ADD DX,INTCSR IN AL,DX AND AL,mask_int_9052 JZ ClearInt3 INC DX IN AL,DX OR AL,0CH OUT DX,AL MOV AL,PCI_IRQ_NUMBER CMP AL,08H JAE ClearInt1 AND AL,7 OR AL,60H MOV DX,20H OUT DX,AL JMP ClearInt2ClearInt1: AND AL,7 OR AL,60H MOV DX,0A0H OUT DX,AL

25、 MOV DX,20H MOV AL,62H OUT DX,ALClearInt2: CLC RETClearInt3: STC RETClearInt ENDP END START .MODEL TINYPCIBAR1 EQU 14H ;pci9052I/O基地址(用于访问局部配置寄存器)PCIBAR3 EQU 1CH ;8位I/O空间基地址(它就是实验仪的基地址, ;也为DMA&32 BIT RAM板卡上的8237提供基地址)PCIIPR EQU 3CH ;IRQ号INTCSR EQU 4CH ;PCI9052 INTCSR地址mask_int_9052 EQU 24HVendor

26、_ID EQU 10EBH ;厂商ID号Device_ID EQU 8376 ;设备ID号 .STACK 100 .DATAADDR_0809 DW 00F0HBUFFER DB 'H.V$'LastAD DB 0 ;上一次AD转换值msg3 DB 'AD转换结果(前边是16进制数,后边是十进制数):$'IO8259_0 DW 00F0HRD_IO8259 DW 0000HIO_Bit8_BaseAddress DW ?PCI_IO_BaseAddress0 DW ?PCI_IRQ_NUMBER DB ?INT_Vector DB ?INT_MASK DB ?I

27、NT_CS DB ?INT_IP DB ?msg0 DB 'BIOS不支持访问PCI$'msg1 DB '找不到Star PCI9052板卡$'msg2 DB '读8位I/O空间基地址时出错$'msg4 DB '读IRQ号出错$'Counter DB ?ReDisplayFlag DB 0 .CODESTART: MOV AX,DATA MOV DS,AX NOP CALL InitPCI CALL ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址 MOV AH,00H MOV AL,03H INT 1

28、0H ;清屏 MOV AH,09H LEA DX,msg3 INT 21H XOR AL,AL JMP START6START1: MOV CX,32H MOV BX,0START2: CALL AD0809 XOR AH,AH ADD BX,AXLOOP START2 MOV AX,50 XCHG AX,BX DIV BL ;五十次的平均值 CMP AL,LastAD JZ START3START6: MOV LastAD,AL CALL Display_Data MOV AH,02H MOV DL,43 MOV DH,0 INT 10H MOV AH,09H LEA DX,BUFFER I

29、NT 21H ;显示结果START3: CALL DLTime CALL IfExit JZ START1 JMP ExitAD0809 PROC NEAR PUSH CX MOV AL,0 MOV DX,ADDR_0809 OUT DX,AL MOV DX,IO_Bit8_BaseAddress MOV CX,200AD08091: MOV DX,ADDR_0809 LOOP $ ;延时,等待AD转换完成 MOV DX,ADDR_0809 IN AL,DX POP CX RETAD0809 ENDPToChar PROC NEAR ;转化为可显示的16进制数 ADD AL,'0

30、9; CMP AL,'9' JBE ToChar1 ADD AL,07HToChar1: RETToChar ENDPDISPLAY_DATAPROCNEARMOVAH,ALANDAL,0FHCALLToCharMOVBUFFER+1,ALMOVAL,AHANDAL,0F0HRORAL,4CALLToCharMOVBUFFER,ALMOVAL,AHXORAH,AHMOVBL,51 ;255/51(16进制的1=1/51V)DIVBLORAL,'0' ;转化为可显示的10进制数MOVBUFFER+4,AL ;整数部分MOVAL,10MULAHDIVBLORAL,&

31、#39;0'MOVBUFFER+6,AL;第一位小数MOVAL,10MULAHDIVBLORAL,'0'MOVBUFFER+7,AL;第二位小数RETDISPLAY_DATAENDPDLTimePROCNEAR PUSH AX PUSH DX MOV DX,100 ;延时100ms MOV AH,0FFH INT 21H POP DX POP AX RETDLTime ENDPExit: MOV AH,4CH INT 21HINT_0: PUSH DX PUSH AX CALL ClearInt JC INT_0_0 MOV DX,RD_IO8259 IN AL,DX IN AL,DX MOV AL,Counter ADD AL,1 DAA MOV Counter,AL MOV ReDisplayFlag,1INT_0_0: MOV DX,IO8259_0 MOV AL,20H OUT DX,AL POP AX POP DX IRETIfExit PROC NEAR PUSH AX PUSH DX MOV AH,06H MOV DL,0FF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论