1、南京航空航天大学计算机硬件技术基础课程设计课设数据采集系统硬件技术基础课程设计数据采集系统(二)学生姓名学 号学 校南京航空航天大学学 院自动化学院专 业自动化专业班 级同实验者指导老师2014年6月实验目的1.运用PC机和实验装置设计并实现数据采集显示系统2.掌握微机硬件和软件综合设计方法二、实验设备1.微机2.微机接口实验箱实验内容通过ADC0809的通道O(INO)采集电位器的值,并将其处理后通过 DAC0832输出,该输出直接连接到 ADC0809 的通道1 (IN1),并将IN0和IN1采集到的数据分别在 LED和CRT上显示。要求:1、 设计简单操作界面,具有开始与结束运行控制的功
2、能2、 IN0采集的电压值在LED上以十进制显示3、 对IN0采集的通道进行如下处理:(1)如果 IN0 2.5V,则送 FFH到 DAC0832(2)DAC0832的输出接 ADC0809的IN1,同时接示波器(3) IN1采集的电压值以十进制在 CRT上显示4、 ADC0809采用定时方式读取数据。定时由 8253实现,采用查询方式判断定时结束5、 显示须有一定的延时四、实验总框图五、实验电路图1. ADC0809电路图 XIOR.RDI0Y1 二-CSDAC0832电路图XD0-XD7即_D72.0809-D73.4.10Y2XIOW8253电路图xpay)7XIO% 育 WRXIOR*
3、 - RDXA2 . . A0XA3 . . Al10Y3 肯 .CSXDOXD7XIO备iy-D7i 肯WR ;RDX1OR*XA2二 AOXA3 -OYOr CS8255电路图8255OK i丄-|a B C * *INOINI8432MHZXAdADJ (电位器)UT0 (0832)XA2XA308328253PCO-PC2 GATFX)CLK0OUTOLI-L3+5V盲 盲 1.8432MHZ PC* 7(8255)数码管德盘单元5.电路实物图六、程序流程图及程序1、程序流程图:初始化输入1YES系统6号功能输出 提示信息NO输出到DATA中于 2.5VES送 00H到0832转换过程
4、YESNO输入2启动8253定时YESNONO定时结束启动 ADC0809进行IN0转换ES查询8255PC.7输出到DATA中送OFF倒0832除33HINC DI调调用NO输入ESCINC DIYESNOC劝0调用2号 功能输出的第到个单向输出到DI指向的第二个单元调用十六进制转 十进制子程序TRANSFBC显示子程序DISPBCDCR显示子程序DISPCER的第到个单向启动 ADC0809进行IN0转换转换过程启动0832数模转换转换过程调用十六进制转 十进制子程序TRANSF系统6号功能输出提示信息ES余数乘10除33H余数乘10除33H2、程序见附件取出DI指向单元中数据查表YES取
5、出DI指向 单元中数据1 调用2号 功能输出1 INC DIcX为0:七、 实验结果、分析及所提问问题1.实验结果通过ADC0809的通道O(INO)采集电位器的值并经 AD转换后在LED上以精度为百分位的十进制实时动态显示, 通过DAC0832转换后输出到 ADC0809在转换,最后输出到 CRT结果如下:1)第一组:2)第二组:2.实验分析:1)CRT上 显示:当IN0小于2.5V时CRT理论显示应为 0.00V,但由于ADC0809和DAC0832误差,CRT上动态显示0.00V附近的 值,比如0.01V,0.02V;由于器件存在零点漂移,所以会存在变动。当大于或等于2.5V时,CRT上
6、理论显示5.00V,实际也为5.00V没有存在误差。2)BCD上结果由于BCD是实时显示的是采样的电位器上的电位。由于电位器存在比较大的误差,所以会 BCD最后一位(百分位)一直在跳动。3.提问问题及回答:(提问时未加批注)1)MOV AL,88H语句什么意思 ?回答:这个根据控制字写 8255控制字,具体为PA、PB PC下C 口 口作为输出,PC上C 口作为输入,其中 PA 口输出数据岛BCD PB 口未用、PC 口下C 口输出选择工作的工作的 BCD, PC.7作为数据定时器的定时查询端口,以确保转换完成。2)MOV DX,TC 中 TC是什么?回答:TC是定时器8253控制字的偏移地址
7、,代表定义的常值,当写控制字时必须先写地址,具体为 30CCH,8253芯片偏移地址为 30C0H3)TEST AL,80H 为什么是 80H回答:这条语句用来查询是否定时到时间,由于电路中链接的 PC.7对应的PC 口的最高位,当定时未到时间时(默认转换未结束),该位用8253输入的是低电平,而当定时结束时,该位为高电平输入,从而根据PC.7的高低电 平实现查询转换是否结束。4)MOV DATA2,AL语句什么意思?回答:把IN1输入的ADC0809转换结果存入预留的 DATA2中,以便后面装换,输出。八、实验总结及建议1.总结:遇到的第问题以及解决的办法:1) 8522的端口 A地址信号给
8、错,T8255A少打了一个 A解决办法:把端口 A的地址补全(错误书因为把 T8255A少打了一个A)。对这类问题其实还是比较麻烦的,检查一个几百 行的代码是一件费时费力的事,不仅需要要足够的耐性,还有有一定的毅力。不过每次检查出错误会以后都会有很 大的成就感2) 数码管一直未未亮,同时 CRT上也没显示解决办法:在我们小组多次分析电路原理及代码,得出理论无错以后,我们从头到尾把链接的电路检查了 5遍,第一遍查出有一根线接错,在我们改正后,检查了第 2、3、4遍,但都没有查出错误,我们初步怀疑硬件硬件存在问题。但我们那个时候还不知道怎么查错误,然后我们找到了我班里的大牛华仔(外号)来给我们分析
9、了一遍,他的没有查 出错误,原理和代码他也看了一遍也没有问题。 这时我们才肯定是硬件出了问题, 然后在华仔的帮助下,通过把BCD直接接到数据端口, 跳过8255芯片,然后BCD也没亮,在把数据线接到LED上,发现也没亮,差不多可以确定 CPU 应该出了问题。3) BCD和 CRT同步显示解决办法:但未能肯定,我们这时直接换了一个实验箱,然后就成功显示了数据,不过不幸的是,这个实验箱依然存在问题,但IN1 口接输入时,BCD和CRT同时为显示0.00V或者5.00V。IN1不接时BCD和CRT可以同步显示INO的采样 值,在检查了 2遍链接后,又一次请了大神,大神说了一句我们 也出现了这个问题,
10、最后我们换了一个实验箱才解决的。这时已经是下午 1点多了,无奈,我们也在换端口地址后,从 IN2,IN3等输入,依然没有解决,没办法,我们就换了第二次实验箱。也许是运气差到一定程度后就变好了,在 10多分钟的链接电路后,竟然一次性成功了,一点问题都没有。对于以上出现的问题,硬件的出现问题的可能性为 95%,但还有5%的可能性是我们没查出问题。每一次实验,对于我们这些经验不多的新手说,都是一个比较大的挑战,当遇到硬件错误时,更是如此。其实对于 我们来说,最大的挑战无非就是硬件出问题,然后我们慢慢排查,这是一个很提升能力的过程,同时一个很艰难的 过程。总的来说,遇到了很多问题,在解决问题的过程中自
11、己的能力得到很大的提升。每一次课程设计都能让我的动 手能力的到锻炼。从组装万用表,数电的数字闹钟,自控的倒立摆系统的控制都能明显感觉自己在不断的进步。2.建议1) 此次课设短短的时间两天内完成根本不可能,就代码就写了 2天,而后查错这类的也花了不少时间,如果不是子啊为开始时就开始准备,那么用两天根本完不成。所以希望以后课设能有充分的时间准备;2) 实验箱存在的问题比较多,希望下次使用,能确保实验箱的完好,以便九、参考文献:南京航空航天大学自编南京航空航天大学电工电子实验中心自编硬件技术基础万晓东、陈则王、孔德明编著微机原理及课程设计指导书 王卫喜编著十、附件:附件1:程序IOYO EQU 30
12、00H ;8255 端口地址IOY1 EQU 3040H ;0809 端口地址IOY2 EQU 3080H ;0832 端口地址IOY3 EQU 30C0H ;8253 端口地址T8255AEQU IOY0;8255 A端口地址T8255CEQU IOY0+08H ; 8255 C端口地址T8255DEQU IOY0+0CH;8255控制端口地址IN0 EQU IOY1;0809 IN0选通信号IN1 EQU IOY1+04H ;0809 IN1选通信号CS_DAEQU IOY2 ;0832端口地址T0 EQU IOY3;8253定时器0选通信号TC EQU IOY3+0CH;8253控制端口
13、地址DATASEGMENT;数据段定义DATA1DB ?;存放IN0转换结果DATA2DB ?;存放IN1转换结杲NUM1DB 3 DUP;存放IN0转换个位,十分位,百分位NUM2DB 3 DUP;存放IN1转换的个位,十分位,百分位TAB1DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;定义数码管断码表DB 7FH,6FH,77H,7CH,39H,5EH,79H,71HMESDB DB DB DBIn terface,0DH,0AH Press 1 to tran sfrom ! Press 2 to End Progro 0DH,0DH,0AH,$;提示信息,0D
14、H,0AHm! ,0DH,0AHMES1DB 0DH,0AH,0DH,0AH;提示信息DATADB DBENDSSTART!0DH,0DH,0AH,$,0DH,0AHSTACK1DBSTACK1SEGMENT100 DUPENDSPARA STACK STACK;定义堆栈段CODE SEGMENT;定义代码段ASSUMEDS:C0DE,DS:DATA,SS:STACK1START:MOV AX,DATA ;标准序MOV DS,AXMOV DX,OFFSET MES ;输出提示信息MOV AH,09HINT 21HLOOP1:MOV DL,0FFHMOV AH,6;调用系统6号功能输入数据INT
15、 21HCMP AL,31H;判断输入是否为1JZ BEGIN;为1转到开始程序CMP AL,32HJZ EXIT;为2结束,返回DOSJMP LOOP1EXIT:MOV AH,4CH ;返回 DOSINT 21HBEGIN:MOV DX,OFFSET MES1MOV AH,09HINT 21HADC0809:MOV DX,T8255DMOV AL,88HOUT DX,ALMOV DX,IN0 OUT DX, ALMOV DX,TCMOV AL,31HOUT DX ,ALMOV DX ,T0MOV AX ,75H OUT DX ,ALMOV AL ,AHOUT DX ,ALMOV DX,T82
16、55CWAIT0:IN AL,DX TEST AL,80H JZ WAIT0MOV DX,IN0IN AL,DXMOV DATA1,AL CMP AL,80HMOV AL,0FFHJNB DAC0832MOV AL,0;写8255控制字地址;写 8255控制字;启动转换IN0端该句为提问句1);写8253控制字地址该句为提问句2);写8253初值;8255C 口地址,PC.7于判断定时结束信号输入;如果PC.7为1,则输入结束该句为提问句3) ;转换未结束,继续等待;把IN0 口地址压人DS;输入转换的数据IN0到AL中;和2.5V进行比较;小于2.5V时给AL赋0;DA转换进行选通 启动转换
17、DAC0832:MOV DX,CS_DAOUT DX,ALMOV DX,IN1OUT DX,ALMOV DX,TC ;初始化 8253MOV AL,31HOUT DX ,ALMOV DX ,T0 ;取定时器0,并赋初值MOV AX ,75HOUT DX ,ALMOV AL ,AHOUT DX ,ALMOV DX,T8255C ;8255C端口地址WAIT1:;等待转换结束INAL,DXTESTAL,80H ;查询转换是否结束JZWAIT1MOVDX,IN1INAL,DXMOVDATA2,AL;把转换结果存在DATA2中该句为提问句4)MOVAL,DATA1;取IN0通道转换结果MOV DI O
18、FFSET NUM1;CALL TRNSF ;调用数码管转换程序MOV DI ,OFFSET NUM1;CALL DISP ;调用数码管显示子程序MOV AL,DATA2 ;取IN1通道转换结果MOV DI ,OFFSET NUM2 ;NUM2 地址送入 DICALL TRNSF ;调用转换程序MOV DI ,OFFSET NUM2 ;NUM2 地址送入 DICALLDISPCRT;调用CRT显示子程序MOVDL,0FFH;调用系统6号功能进行从键盘输入MOVAH,6INT21HCMPAL,1BH;当输入 ESC时还回系统DOSJNZADC0809JMPSTART;不满足返回时,从新开始TRN
19、SF PROC;AD转换结果转换为十进制子程序PUSHAX;保护现场PUSHDXMOVAH,0MOVDX,33H;FFH对应的模拟量为 5V,33H对应1VDIVDL;AX除以51,商t AL,余数t AHMOVDI,AL;将AL结果存于NUM1,即存入个位存储单兀MOVAL,AHMOVDX,0AHMULDL;余数乘以10MOVDX,33HDIVDL;再除以51,商t AL,余数t AHINC DIMOVDI,AL;将十分位存于NUM1的第二个单兀MOVAL,AHMOVDX,0AHMULDL;余数乘以10MOVDX,33HDIVDL;再除以51,商t AL,余数t AHINCDIMOVDI,A
20、L;将百分位存于NUM1第三个单元;恢复现场CEND:POP DXPOP AXRETTRNSF ENDPMOVAL,DI;将个位内容t ALLEABX,TBL1XLAT;查表显示ADDAL,80H;加小数点MOVDX,T8255AOUTDX,AL;8255的A 口作为段控MOVAL,01HOUTDX,ALCALLDELAYMOV CX,02HLOOP1: INC DI ;十分位,百分位显示MOVAL, DI;将十分位内容t alLEABX,TBL1XLAT;查表显示MOVDX,T8255AOUTDX,AL;8255的B 口作为段控MOVDX,T8255C;8255的C 口作为位控MOV AL,02H OUT DX,AL CALL DELAYCOM CX,00HJNZLOOP1POPBX;恢复现场POPAXPOPDSRETDELAYPROCPUSHMOVNEARCXBX,0040HDEL1:MOVCX,0FFFFHLOOP$DECBXJNZDEL1POPCXRETDELAYENDPCODEENDSDISPBCD ENDPEND START;延时子程序
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1