欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    微机原理课程设计报告数据采集系统三(中断法).doc

    • 资源ID:2392941       资源大小:89KB        全文页数:17页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    微机原理课程设计报告数据采集系统三(中断法).doc

    微机原理课程设计课设题目:数据采集系统三(中断法)实验者姓名: 刘 京 实验者学号: 041010114 学院: 电子信息工程学院 数据采集系统三(中断法)一、实验目的 进一步掌握微机原理知识,了解微机在实时采集过程中的应用,学习、掌握编程和程序调试方法。二、实验内容 1、用中断法,将ADC 0809通道0外接0 5V电压,转换成数字量后,在七段LED数码管上,以小数点后两位(几十毫伏)的精度,显示其模拟电压的十进值;0809通道0的数字量以线性控制方式送DAC0832输出,当通道0的电压为5V时,0832的OUT为0V, 当通道0的电压为0时,0832的OUT为2.5V;此模拟电压再送到ADC 0809通道1,转换后的数字量在CRT上以十六进制显示。 2、ADC 0809 的CLK 脉冲,由定时器8254的OUT0提供;ADC 0809的EOC信号,用作8259中断请求信号。 3、要有较好的人机对话界面;控制程序的运行。三、总体设计 1 、ADC 0809的IN0采集电位器0 5V电压,IN1采集0832输出的模拟量。 2 、DAC 0832将ADC 0809的IN0数字量后重新转换成模拟量输出。 3、8259用于检测ADC 0809转换是否结束和向CPU发送INTR信号 4、 8255为七段LED数码管显示提供显示驱动信息。 5、七段LED数码管显示ADC 0809的IN0的值。 6、8254提供ADC 0809的采样时钟脉冲。 7、有良好的人机对话界面。系统运行时,显示主菜单,开始数据采集, 在数据采集时, 主键盘有键按下, 退出返回DOD系统。四、硬件设计 因采用了PC机和微机实验箱, 硬件电路设计相对比较简单, 主要利用微机实验箱上的8255并行口、ADC 0809、DAC 0832、七段LED数码管单元、8254定时/计数器、74LS574输出接口、电位器等单元电路, 就构成了数据采集系统, 硬件电原理框图4-3-1所示。五、软件设计 本设计通过软件编程,实现模/数转换器0809分别对IN0 0-5V直流电压的采样,和经0832线性控制后输出电压的IN1采样,IN0的值转换成十进制后,在七段数码管上显示; IN1的值在显示器上显示。CPU 根据IN0的值,使八位发光二极管根据题目的要求,指示相应的范围。1、设计思想 数据采集系统分成四个功能模块,分别是主程序模块、量纲转换模块、数码管显示模块、中断服务子程序模块。(1)主程序模块 根据题目要求,采用中断方式实现数据采集,因此可把读取IN0的值并保存,和此数字量经线性控制后送给0832输出, 作为0809 IN1的模拟电压和IN1的启动、读取以及IN0的BCD码转换, 放在中断服务子程序模块中完成。所以,在主程序模块上主要实现启动0809 IN0、显示模块的调用、和中断结束部分程序。(2) 键盘扫描模块 设置键盘扫描模块,采用行列反转发,先PC4-PC7输出低电平,然后读入PC0-PC3.再让PC0-PC3输出低电平,读入PC4-PC7.合并扫描值,获得按键值。(3) 量纲转换模块 量纲转换模块在中断服务程序内完成,只要将IN0的数字量分别除以51, 商存入显示IN0的个位存储单元; 余数乘以十,再除以51, 商存入十分位存储单元; 余数再乘以十,除以51, 若余数大于25,则商加1, 小于25则舍去, 这样就达到四舍五入的精度, 再把商存入百分位存储单元; 以供七段数码管显示时调用,BCD码转换模块可参考图10所示的流程图。(4) 数码管显示模块数码管显示模块比较简单,自编程序可参考实验指导书图1-6所示的流程图,也可参考实验8255并行口中的显示模块,应注意的是在显示个位时, 要加上小数点的显示,这可以在查表获取个位段码后,再加上80H来实现,注意每一位显示后要适当延迟时间。(5) 中断服务子程序模块 考虑到0832的输出是0809 IN1的输入,因此,为防止在执行中断服务子程序时,二次进入中断服务子程序, 故在进入中断服务子程序后,应关闭中断,而在退出中断前开中断,以便下次中断进入。中断服务子程序模块主要完成对IN0数据的读取和保存,对IN1的启动和读取,对IN0数据的BCD转换等任务。1、 程序流程图 数据采集三主程序流程图如图4-3-2所示; 中断服务子程序如图4-3-3所示。数码管显示子程序流程图如图3-4-7所示,键盘扫描流程图如图 4-3-4所示。YN初 始 化显示提示信息关中断保存原中断向量表内容设置新的中断向量表保存原中断屏蔽寄存器值允许IRQ2中断8254初始化开中断启动0809 IN0FLAG=0FFHIN0值量纲转换后送显存调用数码管显示子程序将IN1的值进行ASCII码转换显示器显示IN1的值有键按下吗?恢复原中断屏蔽寄存器值恢复原中断向量表内容结 束 图4-3-2 数据采集三主程序流程图NY图4-3-3 中断服务子程序流程图读IN0值, 保存IN0值按要求变换后,送0832输出 启动IN1FLAG=0 读IN1值, 保存发中断结束命令返回主程序恢复现场 ; 开中断保护现场 ; 关中断FLAG=01H ?列值为0,读行值,屏蔽高四位后保存行值为0,读列值,屏蔽低四位后保存 AL=合并行列后取反 AL=0?YSI=键盘扫描码首址,CX=16,DL=0NAL=SI?YN 键值=DL键值缓冲区移位DL+1,SI+1 CX-1NN CX=0? 返回 图4-3-4 键盘扫描程序流程图六、试验所遇问题及解决方法问题1:转动电位器时数码管电压变化不灵敏,有很严重的迟滞现象,且输出不稳定。分析:每次转动电位器都对应一次中断请求,中断数据采集频率对应8254的OUT0输出的600KHZ,即对CLK0输入的1.8432MHZ的三分频。我想问题应该是采样频率太低的原因,输出之所以不稳定也是有可能因为频率不匹配的问题。解决方法:修改8254计数器0的计数初值,将原来的3改为了2,即对应2分频,结果电位器变化与数码管电压变化基本一致。问题2:中断服务子程序中要实现0809通道0的数字量以线性控制方式送DAC0832输出,当通道0的电压为5V时,0832的OUT为0V, 当通道0的电压为0时,0832的OUT为2.5V,但是我们的程序中线性变换结果混乱。分析:设0809通道0的值为X,DAC0832的输出端数据为Y,根据实验所给数据推得X与Y的数值关系式为Y=(5-X)/2。解决方法:将中断服务子程序中的0809通道0的数字量和DAC0832输出量之间的转换函数修改为MOV IN0IN, AL ; A1为IN0 MOV AH,0 DIV N (N=2) ; IN0 AD后线性转换给0832的值 NEG AL ADD AL,80H MOV BL,AL CMP BL,40H JB SS1 SUB BL,4 SS1: MOV AL,BL MOV A3,AL MOV DX,DACS OUT DX,AL最后0809通道0的数据和0832输出端的数据得到正确的对应关系。七、心得体会及建议 体会: 通过一学期的学习,我发现汇编语言与我之前所学过的C+完全不同,汇编语言是从计算机内部结构出发,立足于CPU存储结构进行编程,更加基础,深入。 为了顺利完成课程设计,在进行编程之前,我把中断控制器8259、并行控制8255、时钟发生器8254以及A/D转换0809和D/A转换0832的工作原理以及工作方式进行了深入的回顾与理解。 结合以前80X86实验内容,我完成了课程设计的编程。接下来是上机调试,经过汇编链接,有几个小问题,经过检查顺利排除。程序已经可以生成.EXE文件执行了,但是转动电位器,屏幕上现实IN0和IN1的值但是关系不正确。后来经过仔细研究IN0经转换后的数字量应该进行的变换,调整了程序,终于实现了功能。验收时,老师让我们修改源程序与试验箱上的接线。这对我来说也是一次挑战,我根据自己的理解,修改了源程序与接线,编译链接之后,实现了转动电位器,在不同电压范围内发出不同频率声音的功能。也顺利通过了老师的验收。通过这次课程设计,自己对编程解决问题不是那么恐惧了,相反还有了很大的兴趣。我发现,当我们把汇编语言当成一种工具,而不是一门考试时,就能更加好的掌握它。建议:1.希望老师们能在上课期间增加必要的试验箱器件知识,同时在课外增加一些汇编语言在生活中应用的相关知识介绍,帮助学生提高工程意识,在后期学习当中有一种将知识运用于实践的思想。2.希望老师可以提前布置和安排微机原理课设的任务,不要等到微机原理课程结束且考试也已经结束的情况下载布置微机课设,老师们也知道,一方面微机原理已经考完大家在微机原理课程上投入的时间肯定不会太多,大家对汇编语言的编写说实话也就少了几分热情;另一方面,随着期末考试的紧逼,后续课程的复习也是大家要付出很多时间的。以上两点建议希望老师们能接纳,先谢谢老师了。八、源程序 ;*回车宏定义*CRLF MACRO MOV DL, 0DH MOV AH,02H INT 21H ;宏定义了回车 ENDM ;*端口地址定义* Y0EQU 3000H ;片选Y0对应的端口始地址,0809,0832Y2 EQU 3040H ;片选Y2对应的端口始地址IN1 EQU Y0+01H*4ADCSEQU Y0 ;AD0809的端口地址DACSEQU Y2 ;DAC0832的端口地址Y3 EQU 3060H TIMER0 EQUY3+00H*4 ;8254计数器0端口地址,8254TIMER1 EQUY3+01H*4 ;8254计数器1端口地址TIMER2 EQUY3+02H*4 ;8254计数器2端口地址TCTL EQU Y3+03H*4 ;8254控制寄存器端口地址Y1 EQU 3020H ;片选Y1对应的端口始地址,8255PA55 EQU Y1+00H*4 ;8255的A口地址PB55 EQU Y1+01H*4 ;8255的B口地址PC55 EQU Y1+02H*4 ;8255的C口地址PCTL EQU Y1+03H*4 ;8255的控制寄存器地址INTR_IVADDEQU 01C8H;INTR对应的中断矢量地址,8259INTR_OCW1 EQU 0A1H ;INTR对应PC机内部8259的OCW1地址INTR_OCW2 EQU 0A0H ;INTR对应PC机内部8259的OCW2地址INTR_IM EQU 0FBH;INTR对应的中断屏蔽字Y7 EQU 30E0H;片选Y7对应的端口始地址MY8259_ICW1 EQU Y7+00H;实验系统中8259的ICW1端口地址MY8259_ICW2 EQU Y7+04H;实验系统中8259的ICW2端口地址MY8259_ICW3 EQU Y7+04H;实验系统中8259的ICW3端口地址MY8259_ICW4 EQU Y7+04H;实验系统中8259的ICW4端口地址MY8259_OCW1 EQU Y7+04H;实验系统中8259的OCW1端口地址MY8259_OCW2 EQU Y7+00H;实验系统中8259的OCW2端口地址MY8259_OCW3 EQU Y7+00H;实验系统中8259的OCW3端口地址;*堆栈段定义* STACK1 SEGMENT STACKDW 256DUP(?)STACK1 ENDS;*堆栈段定义* DATA SEGMENTDCTBLDB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh ;数码管的段码表 DB 77h,7Ch,39h,5Eh,79h,71h,00HN DB 2IN0IN DB ?IN1OUT DB ?A3 DB ?B DB 3 DUP(?)D1 DB 0AHE1 DB 33HFLAG DB ?MES4DB0DH,0AH,'+ WELCOME TO WEI JI YUAN LI KE SHE: +',0DH,0AH,'$'MES0DB0DH,0AH,'* DATA COLECTION SYSTEM *',0DH,0AH,'$'MES1DB0DH,0AH,'- ZUO ZHE :LIU JING AND WANG ZHI MING',0DH,0AH,'$'MESSDB 0DH, 'PRESS ANY KEY TO END THE SYSTEM!',0DH,0AH,0DH, 0AH,'$'MES2DB 0DH, 'IN1OUT DATA : $',0DH,'$' CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量IM_BAK DB ? ;保存INTR原中断屏蔽字的变量DATA ENDS;*代码段定义* CODESEGMENTASSUME CS:CODE,SS:STACK1,DS:DATASTART: MOVAX,DATA MOVDS,AX MOV AL, 10000000B ;8255初始 MOV DX, PCTL OUT DX, AL MOVDX,OFFSET MES4 MOVAH,9 ;显示MES4 INT 21H MOVDX,OFFSET MES0 MOVAH,9 ;显示MES0 INT 21H MOVDX,OFFSET MES1 MOVAH,9 ;显示MES1 INT 21H MOVDX,OFFSET MESS MOVAH,9 ;显示MESS INT 21H CLI ; 8259初始 MOV AX,0000H MOV ES,AX ;替换INTR的中断矢量 MOV DI,INTR_IVADD ;保存INTR原中断处理程序入口偏移地址 MOV AX,ES:DI MOV IP_BAK,AX MOV AX,OFFSET MYISR ;设置当前中断处理程序入口偏移地址 MOV ES:DI,AX ADD DI,2 MOV AX,ES:DI ;保存INTR原中断处理程序入口段地址 MOV CS_BAK,AX MOV AX,SEG MYISR ;设置当前中断处理程序入口段地址 MOV ES:DI,AX MOV DX,INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR的屏蔽位 IN AL,DX ;保存INTR原中断屏蔽字 MOV IM_BAK,AL AND AL,INTR_IM ;允许PC机内部8259的IR2中断 OUT DX,AL MOV DX,MY8259_ICW1; 初始化实验系统中8259的ICW1 MOV AL,13H ;边沿触发、单片8259、需要ICW4 OUT DX,AL MOV DX,MY8259_ICW2 MOV AL,08H ;初始化实验系统中8259的ICW2 OUT DX,AL MOV DX,MY8259_ICW4 ;初始化实验系统中8259的ICW4 MOV AL,01H ;非自动结束EOI OUT DX,AL MOV DX,MY8259_OCW3 MOV AL, 0AH OUT DX, AL MOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1 MOV AL,0FCH ;打开IR0的屏蔽位 OUTDX,AL MOV DX, TCTL ;8254初始 MOV AL, 17H OUT DX, AL MOV DX, TIMER0; MOV AL,2 OUT DX,AL STI S33: MOV AL, 0 MOV DX,ADCS;启动0809 IN0 OUT DX,AL MOV FLAG,0FFH CALL DISPINT0 MOV DX,OFFSET MES2 MOV AH,9 ;显示MES2 INT 21H MOV AL,IN1OUT CALL DISPINT1 MOV DL,0FFH MOV AH,6 INT 21H JZ S33 QUIT: CLI MOV AX,0000H ;恢复INTR原中断矢量 MOV ES,AX MOVDI,INTR_IVADD ;恢复INTR原中断处理程序入口偏移地址 MOV AX,IP_BAK MOV ES:DI,AX ADD DI,2 MOV AX,CS_BAK;恢复INTR原中断处理程序入口段地址 MOV ES:DI,AX MOV DX,INTR_OCW1 MOV AL,IM_BAK ;恢复INTR原中断屏蔽寄存器的屏蔽字 OUT DX,AL STI EXIT: MOV AH,4CH ;返回到DOS INT 21H;*数码管显示INT1*DISPINT1 PROC PUSH AX MOV BL,AL ; 屏幕显示 AND AL,0F0H MOVCL,4 ; 显示高位 ROR AL,CL CALLCRT1 MOVAL,BL ANDAL,0FH ;显示低位 CALLCRT1 CRLF POP AX RETDISPINT1 ENDP CRT1PROC ADDAL,30H CMPAL,39H JBE D0 ADD AL,7 ;在屏幕上显示一位16进制字符D0: MOVDL,AL MOVAH,2 INT 21H RET CRT1ENDP;*数码管显示INT0*DISPINT0 PROC PUSHDS PUSHAX MOV AL,IN0IN ;转换IN0个位 十分位 百分位 MOV AH,0 DIV E1 MOV SI,OFFSET B MOV SI,AL MOV AL,AH MOV AH,0 MUL D1 DIV E1 INC SI MOV SI,AL MOV AL,AH MOV AH,0 MUL D1 DIV E1 INC SI CMP AH,19H JNBE S11 MOV AL,0 JMP S2S11: INC ALS2: MOV SI,AL MOVCL,8 ;从最左边开始显示 MOVSI,OFFSET B MOVAL,SI LEABX,DCTBL XLAT ;输出段码 ADD AL,80H MOVDX,PB55 OUTDX,AL MOVDX,PA55 MOVAL,CL ;输出位码 OUTDX,AL CALLDELAY INCSI ;段码地址+1 ROLCL,1 ;位码向左移1位 MOVAL,SI LEABX,DCTBL XLAT MOVDX,PB55 OUTDX,AL MOVDX,PA55 MOVAL,CL ;输出位码 OUTDX,AL CALLDELAY INCSI ;段码地址+1 ROLCL,1 ;位码向左移1位 MOVAL,SI LEABX,DCTBL XLAT MOVDX,PB55 OUTDX,AL MOVDX,PA55 MOVAL,CL ;输出位码 OUTDX,AL CALLDELAY ;输出三位码 MOVSI,OFFSET B MOV AL,SI CMP AL,2 JB A2 MOVDX,PC55 MOVAL,0FFH OUTDX,AL JMP G3 A2:MOVDX,PC55 MOVAL,00H OUTDX,AL MOV DX, TCTL ;8254计数器1控制蜂鸣器 MOV AL, 77H OUT DX, AL MOV DX, TIMER1; MOV AL,00 OUT DX,AL MOV AL,01 OUT DX,ALG3: POPAX POPDS RETDISPINT0 ENDPMYISR PROC NEAR ;中断处理程序MYISR PUSH AX PUSH DX CLI ;关中断 MOV DX,MY8259_OCW3 IN AL,DX AND AL,03H CMP AL,01H JE IROISR JMP OVERIROISR: CMP FLAG,0FFH JE S MOV DX,IN1 IN AL,DX MOV IN1OUT,AL ; A2为IN1 AD后的值 JMP OVERS: MOV DX,ADCS IN AL, DX MOV IN0IN, AL ; A1为IN0 MOV AH,0 DIV N ; IN0 AD后线性转换给0832的值 NEG AL ADD AL,80H MOV BL,AL CMP BL,40H JB SS1 SUB BL,4 SS1: MOV AL,BL MOV A3,AL MOV DX,DACS OUT DX,AL MOV DX,IN1 ; 启动IN1 OUT DX,AL MOV AL,0 MOV FLAG,ALOVER: MOVDX,INTR_OCW2 ; 向PC机内部8259发送中断结束命令 MOVAL,20H OUTDX,AL MOVAL,20H OUT 20H,AL STI POP DX POPAX IRETMYISR ENDPDELAY PROCNEAR ;延时 PUSHCX MOVCX,0FFFFH LOOP $ POP CX RETDELAY ENDPCODE ENDS END START

    注意事项

    本文(微机原理课程设计报告数据采集系统三(中断法).doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开