您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 微机原理课程设计总结
南京航空航天大学微机原理课程设计数据采集系统(中断法)第1页共13页微机原理课程设计数据采集系统(中断法)南京航空航天大学微机原理课程设计数据采集系统(中断法)第2页共13页一、课设目的:进一步掌握微机原理知识,了解微机在实时采集数据的应用,学习掌握编程和程序调试的方法。二、课设内容和要求:用中断法将ADC0809通道0外接0—5V电压,转换成数字量后,在七段数码管LED上显示。以小数点后两位表示精度,显示模拟电压的十进制;0809通道0的数字量以线性控制方式DAC0832输出,当通道0的电压为5V时,0832的OUT为0V当通道0的电压为0时,0832的OUT为2.5V;此模拟电压再送到ADC0809通道1,转换后的数字量在CRT上以十六进制显示。ADC0809的采样脉冲CLK由定时器8254的OUT0提供;ADC0809的EOC信号用作8259中断请求信号。三、总体设计:1)、ADC0809的IN0采集电位器0—5V电压,IN1采集0832输出的模拟量。2)、DAC0832将ADC0809的IN0数字量重新转换成模拟量输出3)、8259用于检测ADC0809转换是否结束和向CPU发送INTR信号4)8255为七段LED数码管显示提供驱动信息5)、七段LED数码管显示ADC0809的IN0的值6)8254提供ADC0809的采样时钟脉冲。四、硬件设计:因采用PC机和微机实验箱,硬件电路设计相对比较简单,主要利用微机实验箱上的8255并行口,ADC0809,DAC0832,七段数码管LED,8254定时/计数器,74LS574输出接口,电位器等南京航空航天大学微机原理课程设计数据采集系统(中断法)第3页共13页单元8255825982540809数码管键盘单元083274138XIOWWRXD0-XD7D0-D7XIOWWRXIORRDXA2A0XA3A1/Y3CSXD0-XD7D0-D7XIOWWRXIOWRD/Y0CSXD0-XD7D0-D7/Y2CSXD0-XD7D0-D7XIOWWRXIORRDINTRINTR/Y7CSXD0-XD7D0-D7XIOWWRXIORRDXA2A0XA3A1/Y1CSABC/G/Y0/Y1/Y2/Y3/Y4/Y5/Y6/Y7PAO-PA5L1—L6PB0-PB7A,B-G,DPA0A2IR0EOCIN0AXA2BXA3CXA4CLKGATE0+5vCLA01.8432MHZOUT0RFEIOUT12IOUT23IN110k5VLM324(图1:数据采集系统硬件连接示意图)六、软件设计:本设计通过软件编程,实现模/数转换,0809分别对IN00—5V直流电压的采样和经线性控制后输出电压IN1采样,IN0南京航空航天大学微机原理课程设计数据采集系统(中断法)第4页共13页的值转换成十进制后,在七段数码管LED上显示IN1的值。CPU根据IN0的值,使八位二极管根据课设要求指示相应的范围。1、设计思想:数据采集系统分成四个功能模块分别是主程序模块、量纲转换模块、数码管显示模块、中断服务子程序模块。(1)主程序模块:根据课设要求采用中断方式采集数据,因此可把读取IN0的值保存和数字量经线性控制后送给0832输出,作为0809IN1的模拟电压和IN1的启动,读取以及IN0的BCD码转换,放在中断服务子程序模块中完成。在主程序模块上主要实现启动0809的IN0、显示模块的调用、和中断结束部分程序。(2)量纲转换模块:量纲转换模块在中断服务子程序内完成,只有将IN0的数字量分别除以51,商存在显示IN0的个位存储单元;余数乘以十,再除以51,商存入十分位存储单元;余数再乘以十,除以51,若余数大于25则商加一,小于25则舍去。这样就实现了四舍五入的精度,再把商存入百分位存储单元;以供七段数码管显示调用。(3)数码管显示模块:数码管显示模块相对简单,主要在显示个位是加上小数点的显示,可以通过查表获取个位断码后再加上80H来实现(4)中断服务子程序:考虑到0832的输出时0809IN1的输入,因此,为防止在执行中断服务子程序时二次进入中断服务子程序中,故在进入中断服务子程序后关中断,而在退出中断服务子程序前开中断以便下次进入中断服务子程序。中断服务子程序模块主要完成对IN0南京航空航天大学微机原理课程设计数据采集系统(中断法)第5页共13页数据的读取和保存,对IN1的启动和读取,对IN0数据的BCD转换等任务。2、参考流程:中断子程序和主程序流程图图2:中断服务子程序流程图保护现场;CLIFLAG=0FFH?读IN1的值,保存读IN0的值,保存IN0的值按要求变换后,送0832输出启动IN1FLAG=0发送中断结束命令恢复现场;STI返回主程序南京航空航天大学微机原理课程设计数据采集系统(中断法)第6页共13页初始化显示提示信息关中断保存原中断向量内容设置中断向量表保存中断屏蔽值允许TRQ2中断8254初始化开中断启动0809IN0FLAG=0FFHIN0值量纲转换后送显示调用数码管显示子程序将IN1的值进行ASCII码的转换显示器显示IN1的值有键按下么?恢复原中断屏蔽寄存器值恢复原中断向量表内容结束YN图3数据采集系统主程序流程图南京航空航天大学微机原理课程设计数据采集系统(中断法)第7页共13页;微机原理课设CRLFMACRO;宏定义回车,换行MOVDL,0DHMOVAH,02HINT21HMOVDL,0AHINT21HENDMY0EQU3000HY1EQU3020HY2EQU3040HY3EQU3060HY7EQU30E0HPA55EQUY1+00H*4;8255A口地址PB55EQUY1+01H*4;8255B口地址PCTLEQUY1+03H*4;8255控制寄存器地址AD0EQUY0;ADC0809端口IN0地址AD1EQUY0+10H;ADC0809端口IN1地址INTR_IVADDEQU01C8H;INTR对应的中断矢量地址INTR_OCW1EQU0A1H;INTR对应PC机内部8259的OCW1地址INTR_OCW2EQU0A0H;INTR对应PC机内部8259的OCW2地址INTR_IMEQU0FEH;INTR对应的中断屏蔽字MY8259_ICW1EQUY7+00H;实验系统中8259的ICW1端口地址MY8259_ICW2EQUY7+04H;实验系统中8259的ICW2端口地址MY8259_ICW3EQUY7+04H;实验系统中8259的ICW3端口地址MY8259_ICW4EQUY7+04H;实验系统中8259的ICW4端口地址MY8259_OCW1EQUY7+04H;实验系统中8259的OCW1端口地址MY8259_OCW2EQUY7+00H;实验系统中8259的OCW2端口地址MY8259_OCW3EQUY7+00H;实验系统中8259的OCW3端口地址TIMER0EQU3060H;Y3+00H*48254计数器0端口地址TCTLEQU306CH;Y3+03H*48254控制字端口地址DATASEGMENTMES0DB'SIGNALGATHERINGPRORGRAM',0DH,0AH,0DH,0AHDB'###########################################',0DH,0AH,0DH,0AHDB'PRESS1TOSTARTGATHERING!',0DH,0AH,0DH,0AHDB'PRESS2TOEXITTODOS!',0DH,0AH,0DH,0AHDB'###########################################',0DH,0AH,0DH,0AH,'$'MES1DB'ThevalueofIN1is:$'CS_BAKDW?IP_BAKDW?IM_BAKDB?FLAGDB?GWDB?;保存个位SFDB?;保存十分位南京航空航天大学微机原理课程设计数据采集系统(中断法)第8页共13页BFDB?;保存百分位IN0DB?IN1DB?DCTBLDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHDB77H,7CH,39H,5EH,79H,71HDATAENDSSTACSEGMENTPARASTACKDW256DUP(0)STACENDSCODESEGMENTASSUMECS:CODE,SS:STAC,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,MES0MOVAH,9INT21HLOP1:MOVDL,0FFH;测试键盘输入MOVAH,6INT21HJZLOP1CMPAL,'1'JZMAINCMPAL,'2'JZEXIT0JMPSTARTEXIT0:JMPEXIT;主程序模块MAIN:CLI;关中断MOVAX,0000HMOVES,AX;替换INTR的中断矢量MOVDI,INTR_IVADD;保存INTR原中断处理程序入口偏移地址MOVAX,ES:[DI]MOVIP_BAK,AXMOVAX,OFFSETMYISR;设置当前中断处理程序入口偏移地址MOVES:[DI],AXADDDI,2MOVAX,ES:[DI];保存INTR原中断处理程序入口段地址MOVCS_BAK,AXMOVAX,SEGMYISR;设置当前中断处理程序入口段地址MOVES:[DI],AXMOVDX,INTR_OCW1;设置中断屏蔽寄存器,打开INTR的屏蔽位INAL,DX;保存INTR原中断屏蔽字MOVIM_BAK,ALANDAL,0FBHOUTDX,ALMOVDX,MY8259_ICW1MOVAL,13HOUTDX,ALMOVDX,MY8259_ICW2MOVAL,08HOUTDX,ALMOVDX,MY8259_ICW4MOVAL,01HOUTDX,ALMOVDX,MY8259_OCW3MOVAL,0AHOUTDX,ALMOVDX,MY8259_OCW1MOVAL,0FEH;打开IR0屏蔽位OUTDX,AL南京航空航天大学微机原理课程设计数据采集系统(中断法)第9页共13页;8254初始化MOVDX,TCTLMOVAL,16H;计数器0方式3读低8位二进制计数,若为方式2亦可,MOVAL,14HOUTDX,ALMOVDX,TIMER0MOVAL,4OUTDX,AL;8255初始化MOVAL,80H;A输出、B输出,方式0MOVDX,PCTL;8255控制字OUTDX,ALSTI;开中断;启动0809IN0LOP2:MOVDX,AD0;启动0809IN0OUTDX,ALCALLDELAYMOVAX,0FFHMOVFLAG,AL;设标志符CALLCHANGE;调用量纲转换模块LEADX,MES1MOVAH,9INT21HMOVDX,AD1;读IN1的值INAL,DXNEGAL;线性变换SHRAL,1MOVBL,ALANDAL,0F0H;显示高位MOVCL,4RORAL,CLCALLCRT1MOVAL,BL;显示低位ANDAL,0FHCALLCRT1CRLFINT21HMOVAH,1;判断是否有按键按下INT16HJZLOP2;无按键继续循环,有则退出;退出模块EXIT:CLI;关中断MOVAX,0000HMOVES,AXMOVDI,INTR_IVADD;恢复INTR原中断处理程序入口偏移地址MOVAX,IP_BAKMOVES:[DI],AXADDDI,2MOVAX,CS_BAK;恢复INTR原中断处理程序入口段地址MOVES:[DI],AXMOVDX,INTR_OCW1MOVAL,IM_BAK;恢复INTR原中断屏蔽寄存器的屏蔽字OUTDX,ALSTI;开中断MOVAX,4C00H;退出系统INT21H南京航空航天大学微机原理课程设计数据采集系统(中断法)第10页共13页;量纲转换模块CHANGEPROCMOVAL,IN0XORAH,AHMOVDL,51MOVDH,10DIVDLMOVGW,AL;存个位MOVAL,AHXORAH,AHMULDHDIVDLMOVSF,AL;存十分位MOVAL,A
本文标题:微机原理课程设计总结
链接地址:https://www.777doc.com/doc-2646314 .html