课程设计报告纸-1-微机原理课程设计课设题目:数据采集系统三(中断法)实验者姓名:实验者学号:学院:课程设计报告纸-2-数据采集系统三(中断法)一、实验目的进一步掌握微机原理知识,了解微机在实时采集过程中的应用,学习、掌握编程和程序调试方法。二、实验内容1、用中断法,将ADC0809通道0外接0~5V电压,转换成数字量后,在七段LED数码管上,以小数点后两位(几十毫伏)的精度,显示其模拟电压的十进值;0809通道0的数字量以线性控制方式送DAC0832输出,当通道0的电压为5V时,0832的OUT为0V,当通道0的电压为0时,0832的OUT为2.5V;此模拟电压再送到ADC0809通道1,转换后的数字量在CRT上以十六进制显示。2、ADC0809的CLK脉冲,由定时器8254的OUT0提供;ADC0809的EOC信号,用作8259中断请求信号。3、要有较好的人机对话界面;控制程序的运行。三、总体设计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的采样时钟脉冲。7、有良好的人—机对话界面。系统运行时,显示主菜单,开始数据采集,在数据采集时,主键盘有键按下,退出返回DOD系统。四、硬件设计因采用了PC机和微机实验箱,硬件电路设计相对比较简单,主要利用微机实验箱上的8255并行口、ADC0809、DAC0832、七段LED数码管单元、8254定时/计数器、74LS574输出接口、电位器等单元电路,就构成了数据采集系统,硬件电原理框图4-3-1所示。课程设计报告纸-3-1234ABCD4321DCBATitleNumberRevisionSizeBDate:8-Jan-2011SheetofFile:D:\protel99se\Library\Sch\sy.ddbDrawnBy:0832IN0CLKABCD0-D7WRRDCSCSD0-D7D0-D7D0-D7CSCSWRWRWRRDRDA0A1A0A1OUT0CLK0GATE0RfeIout1Iout2PA0-PA5PB0-PB7EOCA,B-G,DpL1-L6/Y0/Y1XD0-XD7XD0-XD7XD0-XD7XD0-XD7XIOWXIOWXIOWXIOWXIORXIORXIORXA2XA3XA2XA3231411ALM324567411BLM324+5V1.8432MHZ10K+5VOUTIN1083282540809825574138ABC/GXA5XA6XA7/Y0/Y1/Y2/Y3/Y4/Y5/Y6/Y7/Y2/Y3数码管键盘单元D0-D7XD0-XD7XIOWWRRDXIORINTRINTRCS/Y7A0A2IR08259XA2XA3XA4课程设计报告纸-4-五、软件设计本设计通过软件编程,实现模/数转换器0809分别对IN00-5V直流电压的采样,和经0832线性控制后输出电压的IN1采样,IN0的值转换成十进制后,在七段数码管上显示;IN1的值在显示器上显示。CPU根据IN0的值,使八位发光二极管根据题目的要求,指示相应的范围。1、设计思想数据采集系统分成四个功能模块,分别是主程序模块、量纲转换模块、数码管显示模块、中断服务子程序模块。(1)主程序模块根据题目要求,采用中断方式实现数据采集,因此可把读取IN0的值并保存,和此数字量经线性控制后送给0832输出,作为0809IN1的模拟电压和IN1的启动、读取以及IN0的BCD码转换,放在中断服务子程序模块中完成。所以,在主程序模块上主要实现启动0809IN0、显示模块的调用、和中断结束部分程序。(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的输出是0809IN1的输入,因此,为防止在执行中断服务子程序时,二次进入中断服务子程序,故在进入中断服务子程序后,应关闭中断,而在退出中断前开中断,以便下次中断进入。中断服务子程序模块主要完成对IN0数据的读取和保存,对IN1的启动和读取,对IN0数据的BCD转换等任务。1、程序流程图数据采集三主程序流程图如图4-3-2所示;中断服务子程序如图4-3-3所示。数码管显示子程序流程图如图3-4-7所示,键盘扫描流程图如图4-3-4所示。课程设计报告纸-5-图4-3-2数据采集三主程序流程图YN初始化显示提示信息关中断保存原中断向量表内容设置新的中断向量表保存原中断屏蔽寄存器值允许IRQ2中断8254初始化开中断启动0809IN0FLAG=0FFHIN0值量纲转换后送显存调用数码管显示子程序将IN1的值进行ASCII码转换显示器显示IN1的值有键按下吗?恢复原中断屏蔽寄存器值恢复原中断向量表内容结束课程设计报告纸-6-NY图4-3-3中断服务子程序流程图读IN0值,保存IN0值按要求变换后,送0832输出启动IN1FLAG=0读IN1值,保存发中断结束命令返回主程序恢复现场;开中断保护现场;关中断FLAG=01H?课程设计报告纸-7-图4-3-4键盘扫描程序流程图列值为0,读行值,屏蔽高四位后保存行值为0,读列值,屏蔽低四位后保存AL=合并行列后取反SI=键盘扫描码首址,CX=16,DL=0AL=0?AL=[SI]?CX=0?DL+1,SI+1CX-1返回键值=DL键值缓冲区移位YYNNNN课程设计报告纸-8-六、试验所遇问题及解决方法问题:在转动电位器,始终没有反应,电路也检查多遍。分析:电路连接可能存在不稳定性,也有可能是机器有些损坏啥的。解决方法:换了个微机实验机器,然后把线路很稳定的连接,转动电位器终于出现正确的反应。七、心得体会及建议体会:通过这次微机原理的课程设计,实验制作,让我了解了设计电路的程序,也让我了解了关于数据采集系统三(中断法)的原理和设计理念,加强了自身动手、思考和解决问题的能力。在此次的数据采集设计过程中,我更进一步的熟悉了机箱的结构及掌握了各芯片的工作原理和其具体的使用方法,巩固和加强了课本知识。认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。通过课程设计,我真正领悟到了“苦中作乐”这词的真正含义,设计连接电路确实有些辛苦,但是还是很有乐趣的,当一个一个的问题被自己发现,然后自己一步一步的按照实验原理去解决问题,知道最后完全解决问题之后,一种难以言明的喜悦心情和成就感瞬间充斥整个大脑和身体,我想这也算是课程设计的乐趣所在了。通过这次课程设计我还知道了,理论与实际相结合是和重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来才能更好的提高我们的能力,更好更全面地发展我们的各项能力,可以说,这次课程设计,我受益匪浅。课程设计报告纸-9-建议:1.希望老师们能在上课期间增加必要的试验箱器件知识,同时在课外增加一些汇编语言在生活中应用的相关知识介绍,帮助学生提高工程意识,在后期学习当中有一种将知识运用于实践的思想。2.希望老师可以提前布置和安排微机原理课设的任务,老师们也知道,一方面;我们也可以多多准备一下,另一方面,随着期末考试的紧逼,后续课程的复习也是大家要付出很多时间的。以上两点建议希望老师们能接纳,先谢谢老师了。八、源程序;*************回车宏定义*********CRLFMACROMOVDL,0DHMOVAH,02HINT21H;宏定义了回车ENDM;*********端口地址定义***********Y0EQU3000H;片选Y0对应的端口始地址,0809,0832Y2EQU3040H;片选Y2对应的端口始地址IN1EQUY0+01H*4ADCSEQUY0;AD0809的端口地址DACSEQUY2;DAC0832的端口地址Y3EQU3060HTIMER0EQUY3+00H*4;8254计数器0端口地址,8254TIMER1EQUY3+01H*4;8254计数器1端口地址TIMER2EQUY3+02H*4;8254计数器2端口地址TCTLEQUY3+03H*4;8254控制寄存器端口地址Y1EQU3020H;片选Y1对应的端口始地址,8255PA55EQUY1+00H*4;8255的A口地址PB55EQUY1+01H*4;8255的B口地址PC55EQUY1+02H*4;8255的C口地址PCTLEQUY1+03H*4;8255的控制寄存器地址INTR_IVADDEQU01C8H;INTR对应的中断矢量地址,8259INTR_OCW1EQU0A1H;INTR对应PC机内部8259的OCW1地址INTR_OCW2EQU0A0H;INTR对应PC机内部8259的OCW2地址课程设计报告纸-10-INTR_IMEQU0FBH;INTR对应的中断屏蔽字Y7EQU30E0H;片选Y7对应的端口始地址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端口地址;*********************************堆栈段定义****************************************STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDS;*********堆栈段定义*****************************************************************DATASEGMENTDCTBLDB3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh;数码管的段码表DB77h,7Ch,39h,5Eh,79h,71h,00HNDB2IN0INDB?IN1OUTDB?A3DB?BDB3DUP(?)D1DB0AHE1DB33HFLAGDB?MES4DB0DH,0AH,'++++++WELCOMETOWEIJIYUANLIKESHE:++++++',0DH,0AH,'$'MES0DB0DH,0AH,'********DATACOLECTIONSYSTEM********',0DH,0AH,'$'MES1DB0DH,0AH,'------------ZUOZHE:LIUJINGANDWANGZHIMING',0DH,0AH,'$'MESSDB0DH,'PRESSANYKEYTOENDTHESYSTEM!',0DH,0AH,0DH,0AH,'$'MES