《硬件课设报告-数据采集显示系统--nuaa专用(共8页).doc》由会员分享,可在线阅读,更多相关《硬件课设报告-数据采集显示系统--nuaa专用(共8页).doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上计算机硬件课程设计数据采集显示系统设计报告*2010/6/2125南京航空航天大学自动化学院一、实验目的1、利用PC机和实验装置设计并实现数据采集显示系统2、进一步掌握微机硬件的软件综合设计方法 主要内容:通过ADC0809的通道0(IN0)采集电位器的值,并将其处理后通过DAC0832输出,该输出直接连接到ADC0809的通道1(IN1),并将IN0和IN1采集到的数据分别在LED和CRT上显示。二、硬件原理框图ADC0809CRT主机8255DAC0832缓冲器及LED显示CS_ADCS_DACS_55EOCIN1IN0SEGBITPA0A0A1A2+5V三、 程
2、序接线方式CS_55 CS4 CS_AD CS0 CS_DA CS1 Q3 CLK_ADEOC PA0 CS1 CS3 CS2 CS2 IN0 电位器IN1 Vout1 +5V REF功能说明:1. 程序具有开始与结束运行控制的功能2. IN0采集的值在LED上以十六进制显示3. 对IN0采集的通道进行如下处理:(1) 如果IN0小于2.5V,则送00H到DAC0832;如果IN0大于等于2.5v,则送FFH到DAC0832(2) DAC0832的输出接ADC0809的IN1,同时接示波器(3) IN1采集的电压值以十进制在CRT上显示4. ADC0809采用查询方式读取数据5. 显示须有一定
3、的延时四、 程序流程框图主程序流程图子程序流程图:专心-专注-专业一、 实现CRT显示 二、 实现LED数码管显示五、程序清单:ADCS EQU 280HDACS EQU 284HPA8255 EQU 290HDATA SEGMENTMES1 DB PRESS 1 TO RUN,0DH,0AH DB PRESS 2 TO QUIT,0DH,0AH,0DH,0AH,$MES2 DB START TO COLLECT DATAS,0DH,0AH,$DCTBL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71HI
4、N0 DB ?IN1 DB ?NUM1 DB ?NUM2 DB ?WTH DW 1000,100,10,1SHIJIN DB 5 DUP(0),56H,0DH, $DATA ENDSSTACK SEGMENT PARA STACK STACKDB 50 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX LEA DX,MES1 MOV AH,9 INT 21H;显示主菜单,程序界面LOP1:MOVDL,0FFHMOV AH,6INT 21HJZ LOP1CMP AL,1
5、JZ NEXT0CMP AL,2JZ EXIT0JMP START ;判断是否有键按下EXIT0:JMP EXITNEXT0:MOV DX,293HMOV AL,90HOUT DX,ALMOV DX,283HOUT DX,ALMOV DX,290HWAIT0:IN AL,DX ;判断EOC=1否TEST AL,01HMOV IN0,ALCALL DISPCMP AL,80H ;比较输出电压与2.5V的大小JB XIAOYU MOV AL,0FFHJMP SHUCHUXIAOYU:MOV AL,00HSHUCHU:MOV DX,284HOUT DX,ALMOV DX,290H; 用PA口判断EO
6、CWAIT1:IN AL,DXTEST AL,01HJZ WAIT1MOV DX,281H; IN1口IN AL,DXMOV IN1,ALMOV CL,27HMUL CLSHR AX,1; 存储在IN1中MOV BX,0LEA SI,WTHLEA DI,SHIJINMOV CL,4LOP2:MOV DX,0DIV WORD PTR SIADD AL,30HMOV DI,AL;将商依次存入SHIJIN中MOV AX,DXADD SI,2INC DILOOP LOP2LEA SI,SHIJINADD SI,3LEA DI,SHIJINADD DI,4MOV CX,3LOP3:MOV AL,SIMO
7、V DI,ALDEC SIDEC DILOOP LOP3MOV SHIJIN+1,2EH;将四位BCD码的后三位右移一位,空出的第二位加小数点LEA DX,MES2MOV AH,9INT 21HLEA DX,SHIJININT 21H;CRT显示电压值PUSH AXPUSH DXINT 21HPOP DXPOP AXJNZ NEXT1JMP STARTNEXT1:JMP LOP1EXIT:MOV AH,4CHINT 21HDISP PROC ;数码管显示算法程序 PUSH DSPUSH AXMOV AL,IN0MOV AH,0MOV DL,ALMOV DH,0LEA BX,DCTBLAND A
8、L,0FHMOV SI,AXMOV AL,BX+SIMOV NUM2,ALMOV NUM1,02HCALL DISP1; 低位显示MOV CL,4SHR DL,CLMOV SI,DXMOV AH,BX+SIMOV NUM2,AHMOV NUM1,01HCALL DISP1; 高位显示POP AXPOP DSDISP ENDPDISP1 PROC ;数码管显示程序PUSH DXPUSH AXMOV DX,28CHMOV AL,NUM1OUT DX,ALMOV DX,288HMOV AL,NUM2OUT DX,ALCALL DELAY1POP AXPOP DXRETDISP1 ENDPDELAY1
9、PROC NEAR ;延时程序PUSH CXMOV CX,0F00HLOOP $POP CXRETDELAY1 ENDPCODE ENDSEND START; 六、实验结果及相关分析首先REF参考电压和电位器的电压都是+5V,因为所选ADC0809是八位的,故而分辨率为5V/256=19.5mV,故而当电位器电压小于+2.5V时,IN1口的数据时00H,即DAC转换后为0.000V,当电位器的输入电压不小于+2.5V时,IN1口的数据时FFH,即DAC转换后,CRT上的电压值理论上是5.000V。然而在实际的程序写入,经硬件运行后的现象是:当电位器阻值由大变小时,CRT上的电压显示是由4.96
10、2V突变至0.015V,同时当电位器阻值再由小变大时,CRT上的电压显示即有0.015V突变至4.962V,同时数码管的一、二两位(即十六进制的高低位)随电位器阻值的变化在00至FF之间来回变化。同时数码管低位由于延时时间的短暂,低位数码管在不停地闪烁。实验结果与理论的误差:=5-4.962=0.038V,误差百分比为0.038/5=0.76%。误差分析:首先,实验值与理论值的偏差,出现在硬件上,因为在电路中,模拟电压值的输入,经过ADC0809的转换,本身就有一定的误差,即输入电压在2.5V左右时,如果模数转换有误差,很可能判断错误,导致IN0口数据采集要么大变小为00H,要么小变大FFH,
11、同时在DAC0832的数模转换中,由于其内部运算时,小数的精确位数的问题,无法做到准确的零偏差的输出。其次,误差除了与硬件的工作原理有关,同时还与硬件本身有关,因为一个硬件生产出来本身就具有一定的误差,同时随着使用次数的增加,芯片内部电路的老化和个芯片联合工作时的综合误差,导致输出结果与理论值有一定的偏差。最后,实验误差体现在电位器上,由于电位器的阻值变化本身就无法达到真正的0电阻和最点设计电阻,故而在整个实验的最初采集上就出现了误差。七、实验体会与建议:在本次的课设中,虽然是个硬件技术基础课程的课设,但终究还是没有脱离软件程序的编写。因此本次实验的大头还是在于画程序流程图以及程序的编写上。这
12、次实验中,我主要负责了画原理图的数据流程图以及程序中的有关数据采集,数据的数模转换和数据的CRT显示部分,同时参与了参与了整体程序的相关调试,以及硬件连线。本次的课设体会很多。在前期的程序编写上,我和李泠欣有明确的分工,即程序的各模块的编写任务分配。通过对硬件程序的编写,我对硬件如8255的端口有进一步熟悉,即8255芯片有4个端口,每个端口都对应一个物理地址,其中控制字端口是对8255进行初始化,控制字是根据各端口输入输出方式以及芯片的整体工作方式来决定,因此在控制字上我又有了深刻的理解。在对ADC0809进行编程时,首先还是关于对芯片的启动问题,其中ADC的8个输入端口,在本实验中并不是每
13、个家端口都能够很好的使用的,因为在定义芯片的入口地址时,ADC的输入端口对应的地址可能与其他芯片的地址相重叠,如不注意,在实际操作过程中,将会出现故障,使得硬件不能够正常的工作,同时ADC0809的工作原理是逐次逼近式的。当然DAC0832的工作原理以及工作方式我也有了很深的认识。在CRT显示电压方面,我是采用的字符显示的方式来完成的,即要将原来的十六进制数转换成压缩BCD码的形式在屏幕上显示,该算法还是分了较多的时间来完成的。程序在周二就写结束了,接下来的周三便是在实验室3306教室进行调试了,首先在电脑上输入程序,检查初步的语法错误,这次我又可以使自己编的软件程序与硬件电路联合工作,从而来
14、输出结果。整个调试过程还是花了较多的时间的,出现了不少的问题,首先是,结果CRT输出时,出现两行的重复结果,后来发现时程序的返回位点除了问题。同时在数据采集方面,即使再怎么旋转电位器,CRT显示的数值就是没有正常的变化,这时,更不用说数码管是否正常显示了,也许就是这个问题,我们这组就折腾了一下午,还是没有检查出问题来,后来在快到下午五点时,换了一台实验板,重现按照原来的方式连接电路,旋转电位器,屏幕上的电压终于能够按照理论设想大致显示数据了,此时数码管还未能够正常的显示,不够时间不过了,只能拖到周五再到实验室调试了。后来老师检查我们刚开始用的实验板时,发现我们连接电位器的导线本身内部就是断开的
15、,故而没法采集信号。让我感慨颇多,要是能够及早地发现这个问题的话,也许我的课设早就做好了,看来自己的调试的能力还是不够强,今后得注意这方面的锻炼了。到了周五,硬件连线仔细检查过后,启动程序,不过多久便做出实验结果,而且与理论值理论变化一致。看来真是周三时候的断导线阻碍了我们组实验的进度,导致成了最后几个做完的。从课设的整体来看,这次的课设可谓比以往的实验收获多得多,以前实验时,实验的程序已经八九不离十的给了出来,或者有的程序就直接保存在电脑了,用的时候直接调用就是了,省的了自己去画流程图,自己去写程序的麻烦,不过这次不一样了,统统的都需要自己去编写,感觉难度还是挺大的,但现在课设做完了,再来想时,感觉自己硬件课程又有了更深的了解。在课设的老师验收方面,大家都不怎么习惯这样聊天的方式来验收,因为以前的课设都没有这样做过,而且以前的老师问的问题都很简单单一,也就是,只要有一个人验收了,后面的人就轻松多了。而这次,老师验收时的问题很不固定,很随机,虽然总体还是那几个问题,看是针对不同的人,老师便问出不同的问题,感觉这种验收方式很灵活,我很赞同这种方式,毕竟干能够体现出自己对这门课的掌握程度。