当前位置:文档之家› 微机原理课程设计

微机原理课程设计

、微机原理课程设计—数据采集系统(查询法)#(一、课设目的进一步掌握微机原理只是,了解危机在实时采集过程中的应用,学习、掌握编程和程序调试方法。

,二、课设内容用查询法,将ADC 0809通道0外接0~5V电压,转换成数字量后,在七段LED数码管上,以小数点后两位(几十毫伏)的精度,显示其模拟电压的十进值;0809~道0的数字量以线性控制方式送DAC0832输出,当通道O的电压为5V时,0832的OUT为0v,当通道O的电压为0时,0832的OUT为2.5V;此模拟电压再送到ADC0809通道1,转换后的数字量在CRT上以十六进制显示;通道0的数字量经74LS574输出到八位LED上,且以一定的要求,点亮LED指示灯。

调整电位器,用示波器或三用表观察0832的变化,观察七段LED数码管数值的变化,观察LED灯的变化,ADC 0809的CLK脉冲,由定时器8254的OUT0提供;ADC 0809的EOC信号,用8255的PC0检测;74LS574外接的LED灯变化如下:若电压值小于0.5V,则最低位(DO)’LED灯亮,若电压值大于4.5V,则最高位LED灯亮,若电压值在0.5V~4.5V,则八位LED灯由低向高变化亮,且高位LED灯亮时低位灯全亮。

要有较好的人机对话界面;控制程序的运行。

三、硬件设计1、电原理框图见附件12、电原理框图工作过程的简要说明【(1)、ADC 0809的INO采集电位器0—5V电压,INl采集0832输出的模拟量。

(2)、DAC 0832将ADC 0809的INO数字量后重新转换成模拟量输出。

(3)、8255用于检测ADC 0809转换是否,为七段LED数码管显示提供显示驱动信息。

(4)、七段LED数码管显示ADC 0809的INO的值。

(5)、74LS574驱动八位发光二极管,使它们按要求点亮:来指示当前采样值的范围。

(6)、8254提供ADC 0809的采样时钟脉冲。

(7)、74LSl38译码器为各芯片提供地址信息。

四、软件设计【首先进行程序初始化显示提示信息,判断是否有键按下,按下1则继续往下执行,按下2则退出。

首先对8254进行初始化选择工作方式及赋初值,然后启动0809的IN0,接着初始化8255,并检测PA7的状态检测转换是否,否继续检测直至EOC为1,然后读采样值并保存,将其经线性转换后送0832,启动0809的IN1,然后重新对8255初始化及检测PA7的EOC状态端口,直至为1,读IN1的采样值并保存,将读出值经线性转换后送往CRT显示,然后将保存的INO采样值进行量纲转换,调用数码显示子程序。

然后对保存的IN0采样值进行比较,若小于,74574只驱动最低位,最低位亮,若大于则只有最高位亮,在中间值依次点亮一位,如大于小于则最低两位亮,在至间低三位亮,在至间低三位亮等。

在和间选择六个值依次控制选择点亮LED灯.最后判断主键盘是否有键按下,有结束,无重新回到启动0809的IN0程序段。

最后列写数码管显示的子程序、CRT 显示子程序、延时子程序。

1、主程序流图见附录22、程序DATA SEGMENTMES1 DB 'PRESS 1 TO BEGIN!',0DH,0AHDB 'PRESS 2 TO QUIT!',0DH,0AH,0DH,0AH,'$'MES2 DB 'IN1 DATA= ','$'【MES3 DB 0DH,0AH,'$'K0 DBK1 DBS DB 3 DUP()DCTBL1 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,3EHDCTBL2 DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0DFHS1 DB 01H【S2 DB 80HDATA ENDSSTACK1 SEGMENT PARA STACK 'STACK'DB 256 DUP()STACK1 ENDSCODE SEGMENT)ASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA DX,MES1MOV AH,9INT 21HLOP1: MOV DL,0FFH/MOV AH,6INT 21HJZ LOP1CMP AL,'1'JZ DACMP AL,'2'JZ EXIT1JMP START—DA: MOV AL,36H ;8254初始化MOV DX,306CHOUT DX,ALMOV AL,00H ;8254赋初值MOV DX,3060HOUT DX,ALMOV AL,01H$MOV DX,3060HOUT DX,ALBE: MOV AL,00H ;启动0809的IN0MOV DX,3000HOUT DX,ALL1: MOV AL,90H ;8255初始化。

MOV DX,302CHOUT DX,ALMOV DX,3020H ;8255的PA7检测EOC状态IN AL,DXTEST AL,80HJZ L1MOV DX,3000H ;读0809采样值IN AL,DX/MOV K0,AL ;保存0809采样值MOV AL,K0 ;线性控制方式转换电压,计算公式-1/2(X-5) SUB AL,0FFHROR AL,1NEG ALMOV K1,AL·MOV DX,30E0H ;把IN0计算值送给0832OUT DX,ALMOV AL,10H ;启动0809的IN1MOV DX,3004HOUT DX,ALL2: MOV AL,90H ;8255PA7检测EOC状态MOV DX,302CH\OUT DX,ALMOV DX,3020HIN AL,DXTEST AL,80HJZ L2NEXT: MOV DX,3004H ;读IN1采样值IN AL,DX\MOV AL,7FHMOV BL,K0SHR BL,1SUB AL,BLMOV K1,AL ;保存IN1LEA DX,MES2MOV AH,9—INT 21HJMP DEEXIT1:JMP EXITDE: MOV AL,K1 ;CRT显示IN1的值MOV BL,AL}AND AL,0F0HMOV CL,4ROR AL,CLCALL CRT1AND AL,0FHCALL CRT1—MOV DL,0DHMOV AH,2INT 21HMOV AL,K0 ;量纲转换 MOV AH,00HMOV BL,51DIV BL-LEA SI,SMOV [SI],ALINC SIMOV AL,AHMOV BL,10MUL BLMOV BL,51DIV BL[MOV [SI],ALINC SIMOV AL,AHMOV BL,10MUL BLMOV BL,51DIV BLCMP AH,25&JA L3JMP L4L3: ADD AL,1L4: MOV [SI],ALCALL DISPMOV AL,K0CMP AL,19H@JB L5CMP AL,3BHJB L6JB L7CMP AL,7FHJB L8CMP AL,0A1H~JB L9CMP AL,0C3HJB L10CMP AL,0E6HJB L11MOV DX,3080HMOV AL,80H$OUT DX,ALJMP L12L5: MOV DX,3080HMOV AL,01HOUT DX,ALJMP L12L6: MOV DX,3080HMOV AL,00000011B ^OUT DX,ALJMP L12L7: MOV DX,3080HMOV AL,00000111B OUT DX,ALCALL DELAYJMP EXIT0L8: MOV DX,3080H,MOV AL,00001111B OUT DX,ALJMP L12L9: MOV DX,3080HMOV AL,00011111B OUT DX,ALJMP L12L10: MOV DX,3080H~MOV AL,00111111B OUT DX,ALJMP L12L11: MOV DX,3080HMOV AL,01111111BOUT DX,ALL12: CALL DELAY。

EXIT0:MOV DL,0FFHMOV AH,6INT 21HJNZ EXITJMP BEEXIT: MOV AH,4CH!INT 21HDISP PROC NEARPUSH DSPUSH CXPUSH DXPUSH AXPUSH BX…MOV AL,B ;8255初始化MOV DX,302CHOUT DX,ALDIS1: MOV SI,OFFSET S ;七段数码管显示IN0转换为十进制后的个位、十分位、百分位的值MOV AL,[SI] ;显示个位LEA BX,DCTBL2%XLATMOV DX,3024HOUT DX,ALMOV AL,000001000BMOV DX,3020HOUT DX,ALCALL DELAYINC SI—MOV AL,[SI] ;显示十分位LEA BX,DCTBL1XLATMOV DX,3024HOUT DX,ALMOV AH,000010000BMOV AL,AH-MOV DX,3020HOUT DX,ALCALL DELAYINC SIMOV AL, [SI] ;显示百分位LEA BX,DCTBL1XLAT【MOV DX,3024HOUT DX,ALMOV AL,100000BMOV DX,3020HOUT DX,ALCALL DELAYPOP BX>POP AXPOP DXPOP CXPOP DSRETDISP ENDPCRT1 PROC ;CRT显示子程序-PUSH AXPUSH DXADD AL,30HCMP AL,39HJBE D0ADD AL,7D0: MOV DL,ALMOV AH,2^INT 21HPOP DXPOP AXRETCRT1 ENDPDELAY PROC NEAR ;DELAY子程序PUSH CX【PUSH BXMOV BX,18HDEL1: MOV CX,0FFFFHLOOP $DEC BXJNZ DEL1POP BX:POP CXRETDELAY ENDPCODE ENDSEND START五、编程和调试中遇到的问题刚开始的时候LED数码管不亮,经检查发现是插线一端接错位置,改正后数码管亮,但发现调整电位器时,八位发光二极管的点亮次序与预计值不同,且LED数码管还会不停闪动。

经检查发现是排线接触不良,对可能接触不良的排线进行排查更换,最终LED和发光二极管正常显示。

~编译时,程序报错Address Out of Range ,即跳转时超程。

相关主题