收藏 分销(赏)

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

上传人:二*** 文档编号:4572476 上传时间:2024-09-30 格式:DOC 页数:22 大小:87.02KB 下载积分:5 金币
下载 相关 举报
微机原理课程设计报告数据采集系统三中断法样本.doc_第1页
第1页 / 共22页
本文档共22页,全文阅读请下载到手机保存,查看更方便
资源描述
微机原理课程设计 课设题目:数据采集系统三(中断法) 实验者姓名: 实验者学号: 学院: 数据采集系统三(中断法) 一、实验目 进一步掌握微机原理知识,理解微机在实时采集过程中应用,学习、掌握编程和程序调试办法。 二、实验内容 1、用中断法,将ADC 0809通道0外接0 ~ 5V电压,转换成数字量后,在七段LED数码管上,以小数点后两位(几十毫伏)精度,显示其模仿电压十进值;0809通道0数字量以线性控制方式送DAC0832输出,当通道0电压为5V时,0832OUT为0V,当通道0电压为0时,0832OUT为2.5V;此模仿电压再送到ADC 0809通道1,转换后数字量在CRT上以十六进制显示。 2、ADC 0809 CLK 脉冲,由定期器8254OUT0提供;ADC 0809EOC信号,用作8259中断祈求信号。 3、要有较好人机对话界面;控制程序运营。 三、总体设计 1 、ADC 0809IN0采集电位器0 — 5V电压,IN1采集0832输出模仿量。 2 、DAC 0832将ADC 0809IN0数字量后重新转换成模仿量输出。 3、8259用于检测ADC 0809转换与否结束和向CPU发送INTR信号 4、8255为七段LED数码管显示提供显示驱动信息。 5、七段LED数码管显示ADC 0809IN0值。 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启动、读取以及IN0BCD码转换,放在中断服务子程序模块中完毕。因此,在主程序模块上重要实现启动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所示。 Y N 初 始 化 显示提示信息 关中断 保存原中断向量表内容 设立新中断向量表 保存原中断屏蔽寄存器值 容许IRQ2中断 8254初始化 开中断 启动0809 IN0 FLAG=0FFH IN0值量纲转换后送显存 调用数码管显示子程序 将IN1值进行ASCII码转换 显示屏显示IN1值 有键按下吗? 恢复原中断屏蔽寄存器值 恢复原中断向量表内容 结 束 图4-3-2 数据采集三主程序流程图 N Y 图4-3-3 中断服务子程序流程图 读IN0值,保存 IN0值按规定变换后,送0832输出 启动IN1 FLAG=0 读IN1值,保存 发中断结束命令 返回主程序 恢复现场 ; 开中断 保护现场 ;关中断 FLAG=01H ? 列值为0,读行值,屏蔽高四位后保存 行值为0,读列值,屏蔽低四位后保存 AL=合并行列后取反 AL=0? Y SI=键盘扫描码首址,CX=16,DL=0 N AL=[SI]? Y N 键值=DL 键值缓冲区移位 DL+1,SI+1 CX-1 N N CX=0? 返回 图4-3-4 键盘扫描程序流程图 六、实验所遇问题及解决办法 问题:在转动电位器,始终没有反映,电路也检查多遍。 分析:电路连接也许存在不稳定性,也有也许是机器有些损坏啥。 解决办法:换了个微机实验机器,然后把线路很稳定连接,转动电位器终于浮现对的反映。 七、心得体会及建议 体会:通过这次微机原理课程设计,实验制作,让我理解了设计电路程序,也让我理解了关于数据采集系统三(中断法)原理和设计理念,加强了自身动手、思考和解决问题能力。在本次数据采集设计过程中,我更进一步熟悉了机箱构造及掌握了各芯片工作原理和其详细用法,巩固和加强了课本知识。结识来源于实践,实践是结识动力和最后目,实践是检查真理唯一原则。 通过课程设计,我真正领悟到了“苦中作乐”这词真正含义,设计连接电路的确有些辛苦,但是还是很有乐趣,当一种一种问题被自己发现,然后自己一步一步按照实验原理去解决问题,懂得最后完全解决问题之后,一种难以言明喜悦心情和成就感瞬间充斥整个大脑和身体,我想这也算是课程设计乐趣所在了。 通过这次课程设计我还懂得了,理论与实际相结合是和重要,只有理论知识是远远不够,只有把所学理论知识与实践相结合起来才干更好提高咱们能力,更好更全面地发展咱们各项能力,可以说,这次课程设计,我受益匪浅。 建议:1.但愿教师们能在上课期间增长必要实验箱器件知识,同步在课外增长某些汇编语言在生活中应用有关知识简介,协助学生提高工程意识,在后期学习当中有一种将知识运用于实践思想。 2.但愿教师可以提前布置和安排微机原理课设任务,教师们也懂得,一方面;咱们也可以多多准备一下,另一方面,随着期末考试紧逼,后续课程复习也是人们要付出诸多时间。 以上两点建议但愿教师们能接纳,先谢谢教师了。 八、源程序 ;*************回车宏定义********* CRLF MACRO MOV DL,0DH MOV AH,02H INT 21H ;宏定义了回车 ENDM ;*********端口地址定义*********** Y0 EQU 3000H ;片选Y0相应端口始地址,0809,0832 Y2 EQU 3040H ;片选Y2相应端口始地址 IN1 EQU Y0+01H*4 ADCS EQU Y0 ;AD0809端口地址 DACS EQU Y2 ;DAC0832端口地址 Y3 EQU 3060H TIMER0 EQU Y3+00H*4 ;8254计数器0端口地址,8254 TIMER1 EQU Y3+01H*4 ;8254计数器1端口地址 TIMER2 EQU Y3+02H*4 ;8254计数器2端口地址 TCTL EQU Y3+03H*4 ;8254控制寄存器端口地址 Y1 EQU 3020H ;片选Y1相应端口始地址,8255 PA55 EQU Y1+00H*4 ;8255A口地址 PB55 EQU Y1+01H*4 ;8255B口地址 PC55 EQU Y1+02H*4 ;8255C口地址 PCTL EQU Y1+03H*4 ;8255控制寄存器地址 INTR_IVADD EQU 01C8H ;INTR相应中断矢量地址,8259 INTR_OCW1 EQU 0A1H ;INTR相应PC机内部8259OCW1地址 INTR_OCW2 EQU 0A0H ;INTR相应PC机内部8259OCW2地址 INTR_IM EQU 0FBH ;INTR相应中断屏蔽字 Y7 EQU 30E0H ;片选Y7相应端口始地址 MY8259_ICW1 EQU Y7+00H ;实验系统中8259ICW1端口地址 MY8259_ICW2 EQU Y7+04H ;实验系统中8259ICW2端口地址 MY8259_ICW3 EQU Y7+04H ;实验系统中8259ICW3端口地址 MY8259_ICW4 EQU Y7+04H ;实验系统中8259ICW4端口地址 MY8259_OCW1 EQU Y7+04H ;实验系统中8259OCW1端口地址 MY8259_OCW2 EQU Y7+00H ;实验系统中8259OCW2端口地址 MY8259_OCW3 EQU Y7+00H ;实验系统中8259OCW3端口地址 ;*********************************堆栈段定义**************************************** STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS ;*********堆栈段定义***************************************************************** DATA SEGMENT DCTBL DB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh ;数码管段码表 DB 77h,7Ch,39h,5Eh,79h,71h,00H N DB 2 IN0IN DB ? IN1OUT DB ? A3 DB ? B DB 3 DUP(?) D1 DB 0AH E1 DB 33H FLAG DB ? MES4 DB 0DH,0AH,'++++++ WELCOME TO WEI JI YUAN LI KE SHE: ++++++',0DH,0AH,'$' MES0 DB 0DH,0AH,'******** DATA COLECTION SYSTEM ********',0DH,0AH,'$' MES1 DB 0DH,0AH,'------------ ZUO ZHE :LIU JING AND WANG ZHI MING',0DH,0AH,'$' MESS DB 0DH,'PRESS ANY KEY TO END THE SYSTEM!',0DH,0AH,0DH,0AH,'$' MES2 DB 0DH,'IN1OUT DATA :$',0DH,'$' CS_BAK DW ? ;保存INTR原中断解决程序入口段地址变量 IP_BAK DW ? ;保存INTR原中断解决程序入口偏移地址变量 IM_BAK DB ? ;保存INTR原中断屏蔽字变量 DATA ENDS ;*********代码段定义*********** CODE SEGMENT ASSUME CS:CODE,SS:STACK1,DS:DATA START: MOV AX, DATA MOV DS, AX MOV AL, 10000000B ;8255初始 MOV DX,PCTL OUT DX,AL MOV DX, OFFSET MES4 MOV AH, 9 ;显示MES4 INT 21H MOV DX, OFFSET MES0 MOV AH, 9 ;显示MES0 INT 21H MOV DX, OFFSET MES1 MOV AH, 9 ;显示MES1 INT 21H MOV DX, OFFSET MESS MOV AH, 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机内部8259IR2中断 OUT DX, AL MOV DX, MY8259_ICW1 ; 初始化实验系统中8259ICW1 MOV AL, 13H ;边沿触发、单片8259、需要ICW4 OUT DX, AL MOV DX, MY8259_ICW2 MOV AL, 08H ;初始化实验系统中8259ICW2 OUT DX, AL MOV DX, MY8259_ICW4 ;初始化实验系统中8259ICW4 MOV AL, 01H ;非自动结束EOI OUT DX, AL MOV DX,MY8259_OCW3 MOV AL,0AH OUT DX,AL MOV DX, MY8259_OCW1 ;初始化实验系统中8259OCW1 MOV AL, 0FCH ;打开IR0屏蔽位 OUT DX, 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 MOV DI, 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 MOV CL, 4 ;显示高位 ROR AL, CL CALL CRT1 MOV AL, BL AND AL, 0FH ;显示低位 CALL CRT1 CRLF POP AX RET DISPINT1 ENDP CRT1 PROC ADD AL, 30H CMP AL, 39H JBE D0 ADD AL, 7 ;在屏幕上显示一位16进制字符 D0: MOV DL, AL MOV AH, 2 INT 21H RET CRT1 ENDP ;***********************数码管显示INT0**************************** DISPINT0 PROC PUSH DS PUSH AX 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 S2 S11: INC AL S2: MOV [SI],AL MOV CL, 8 ;从最左边开始显示 MOV SI, OFFSET B MOV AL, [SI] LEA BX, DCTBL XLAT ;输出段码 ADD AL,80H MOV DX, PB55 OUT DX, AL MOV DX, PA55 MOV AL, CL ;输出位码 OUT DX, AL CALL DELAY INC SI ;段码地址+1 ROL CL, 1 ;位码向左移1位 MOV AL, [SI] LEA BX, DCTBL XLAT MOV DX, PB55 OUT DX, AL MOV DX, PA55 MOV AL, CL ;输出位码 OUT DX, AL CALL DELAY INC SI ;段码地址+1 ROL CL, 1 ;位码向左移1位 MOV AL, [SI] LEA BX, DCTBL XLAT MOV DX, PB55 OUT DX, AL MOV DX, PA55 MOV AL, CL ;输出位码 OUT DX, AL CALL DELAY ;输出三位码 MOV SI, OFFSET B MOV AL,[SI] CMP AL,2 JB A2 MOV DX, PC55 MOV AL, 0FFH OUT DX, AL JMP G3 A2:MOV DX, PC55 MOV AL, 00H OUT DX, 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,AL G3: POP AX POP DS RET DISPINT0 ENDP MYISR PROC NEAR ;中断解决程序MYISR PUSH AX PUSH DX CLI ;关中断 MOV DX,MY8259_OCW3 IN AL,DX AND AL,03H CMP AL,01H JE IROISR JMP OVER IROISR: CMP FLAG,0FFH JE S MOV DX,IN1 IN AL,DX MOV IN1OUT,AL ;A2为IN1 AD后值 JMP OVER S: 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,AL OVER: MOV DX,INTR_OCW2 ;向PC机内部8259发送中断结束命令 MOV AL, 20H OUT DX, AL MOV AL, 20H OUT 20H, AL STI POP DX POP AX IRET MYISR ENDP DELAY PROC NEAR ;延时 PUSH CX MOV CX, 0FFFFH LOOP $ POP CX RET DELAY ENDP CODE ENDS END START
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服