1、微机原理与接口技术课程设计报告2015-2016学年第二学期设计题目: _小组成员: 所学专业: 指导教师: _完成时间: _目录一、课程设计目的4二、课程设计要求4三、系统功能4四、总体设计41.基本工作原理41.1可编程并行接口接口芯片8255A控制字要求41.2可编程定时器计数器8253控制字要求52.硬件总体设计52.1系统总成方案52.2内存单元编址53.键盘、扬声器及显示功能的定义54.原理图54.1 硬件原理框图64.2 原理连线图65 软件总体设计6五、硬件设计8六、软件设计8七、调试过程21八、系统操作说明21九、总结22十、参考文献22八路抢答器设计一、设计目的1、掌握微机
2、系统的开发步骤;2、掌握抢答器控制编程方法和芯片8255、8253的逻辑功能、键盘中断及使用方法和数码管的用法;3、掌握一定的汇编语言知识,培养自己的动手操作能力。4、学习程序设计的基本思路和方法。因此,本次设计要求对微机原理的理论知识,8255A,8253,键盘显示区的工作方式、工作原理熟练掌握。二、设计要求当按开始键,绿灯亮后,选手抢答,1-8号选手中先按下按键者,LED数码管显示其选手号码(后按下无效),并进行声光报警(黄灯亮)提示。当按开始键未按下时,如果有选手抢答,LED数码管显示其选手号码,并进行声光报警(红灯亮)提示。三、系统功能一个具有8路抢答的抢答器,利用并行接口和开关键。键
3、盘上数字键1-8代表抢答按钮,当某个逻辑开关闭合时(开始键按下未按起时),相当于抢答按钮按下,此时在七段数码管上将其号码显示出来,并使喇叭响一声(或者以发光二极管代替)。四、总体设计1. 基本工作原理当按开始键按下时,绿灯亮后,选手才可抢答,否则违规。若抢答成功,LED显示器显示选手号码,黄灯亮,扬声器鸣叫;若抢答违规(未按下开始键),LED显示器显示违规选手号码,红灯亮,扬声器报警。1.1可编程并行接口接口芯片8255A控制字要求(1)、B口工作在方式0,做为输出端口,经驱动器1连接LED显示器(PB7PB0依次对应连接LED显示器的dp、g、f、e、d、c、b、a七段数码管管脚);(2)、
4、C口也必须工作在方式0,高4 位做输入端口(本次设计中只用PC4、PC5,分别用于连接复位键和开始键),低4位做输出端口(PC3PC0,经驱动器2后PC1、PC2、PC3分别用于连接黄、红、绿三个发光二极管,PC0连接到8253的GATE1端,以控制方式1的计数)。1.2可编程定时器计数器8253控制字要求(1)、方式0:操作类型为先读写低字节再读写高字节,工作在方式3即方波发生器,计数格式为BCD码,计数初值为0。(2)、方式1:操作类型为先读写低字节再读写高字节,工作在方式1即可重触发的单稳态触发器,计数格式为BCD码,计数初值为0。(3)、方式2:操作类型为先读写低字节再读写高字节,工作
5、在方式3即方波发生器,计数格式为BCD码,计数初值为0。2.硬件总体设计2.1系统总成方案该竞赛抢答器所要器件:可编程并行接口接口芯片8255、可编程定时器计数器8253,三个一样的驱动器,黄、红、绿三个发光二极管,十三个电阻,一个8输入与非门,一个非门,一个扬声器,一个LED显示器,10个按键。2.2内存单元编址(1)可编程并行接口接口芯片8255A的端口地址为60H、61H、62H、63H(2) 可编程定时器计数器8253的端口地址为40H、41H、42H、43H(3) 特殊键中断号为2A-36,对应地址为00A8-00DB本实验用到数字键1-8,对应的ASCII为31H-38HLED显示
6、器1-8对应的十六进制是:06H,5BH,4FH,66H,6DH,7CH,07H,7FH3.键盘、扬声器及显示功能的定义一个开始键一个复位键,另外8个数字键用做8位选手的抢答按键。扬声器用与黄、红、绿三个发光二极管配合使用,黄灯亮扬声器鸣叫表示抢答成功,红灯亮扬声报警表示抢答违规报警,绿灯亮扬声器不鸣则表示主持人已按下开始键。LED显示器显示的内容与选手号对应,抢答成功或违规都要显示。4.原理图4.1硬件原理框图按键设置82558 2 5 5 8086CPU82538 2 5 4LED灯LED显 示 模 块扬声器声光报警键盘输入 图14.2 原理连线图4.3软件总体设计主程序流程图:开始置标志
7、位值为FFH使IF=1开放中断点亮绿灯关闭LED显示器检测开始键是否弹起检测开始键是否按下 设置抢答键中断向量并使IF置1开放中断对8259A、8255、8253进行初始化设置LED字形码初值、标志初值开始检测复位键是否按下置标志位值为FFH使IF=1开放中断点亮绿灯关闭LED显示器检测开始键是否弹起检测开始键是否按下 设置抢答键中断向量并使IF置1开放中断对8259A、8255、8253进行初始化设置LED字形码初值、标志初值开始开始设置LED字形码初值、标志初值设置LED字形码初值、标志初值对8255、8253进行初始化对8259A、8255、8253进行初始化设置抢答键键盘中断向量并使I
8、F置1开放中断设置抢答键中断向量并使IF置1开放中断检测开始键是否按下 检测开始键是否按下 NY检测开始键是否弹起检测开始键是否弹起N Y关闭LED显示器关闭LED显示器点亮绿灯点亮绿灯置标志位值为FFH使IF=1开放中断置标志位值为FFH使IF=1开放中断检测复位键是否按下检测复位键是否按下N检测复位键是否弹起 YN Y关闭LED显示器、指示灯将标志位清零,使IF=1开入中断结束图3五、硬件设计1.可编程并行接口接口芯片8255A的工作方式8255A具有三个独立的输入/输出端口,每个端口的并行数据宽度为8位。三个端口分别为A端口,B端口,C端口,可分别与不同的外设进行数据交换,也可联合使用,
9、在中断方式下实现CPU与外设间的数据传递。8255A提供方式0,方式1,方式2三种工作方式供选择。2.可编程定时器计数器8253的工作方式(1)方式0:操作类型为先读写低字节再读写高字节,工作在方式3即方波发生器,计数格式为BCD码,计数初值为0。(2)方式1:操作类型为先读写低字节再读写高字节,工作在方式1即可重触发的单稳态触发器,计数格式为BCD码,计数初值为0。(3)方式2:操作类型为先读写低字节再读写高字节,工作在方式3即方波发生器,计数格式为BCD码,计数初值为0。六、软件设计DATASEGMENTBZDB 00HDATAENDSCODE SEGMENTASSUMEDS:DATA,C
10、S:CODESTART:MOVAX,DATA MOVDS,AX;8255A初始化 MOV AL,88H;置8255A工作方式 OUT 63H,AL XORAL,AL;B口、C口初始化 OUT 61H,AL OUT62H,AL ;8253初始化 MOV AL,37H;置8253方式0控制字 OUT 43H,AL MOV AL,00H;置8253方式0计数初值为4000 OUT40H,AL MOVAL,40H OUT40H,AL MOV AL,73H;置8253 方式1控制字 OUT43H,AL MOVAL,00H;置8253方式1计数初值为3000 OUT41H,AL MOVAL,30H OUT
11、41H,AL MOV AL,0B7H;置8253方式2控制字 OUT43H,AL MOVAL,00H OUT42H,AL MOVAL,00H;置8253方式2计数初值为0 OUT42H,AL ;中断设置 MOV AX,0000H MOV DS,AX; MOV BX,0457H MOV AL,31H MOV CX,8 LOP4:MOV BX,AL INC BX INC AL LOOP LOP4 MOV AX, OFFSET KKK1 MOV 00A8,AX MOV AX,0000H MOV 00AA,AX MOV AX, OFFSET KKK2 MOV 00AC,AX MOV AX,0000H
12、MOV 00AE,AX MOV AX, OFFSET KKK3 MOV 00B0,AX MOV AX,0000H MOV 00B2,AX MOV AX, OFFSET KKK4 MOV 00B4,AX MOV AX,0000H MOV 00B6,AX MOV AX, OFFSET KKK5 MOV 00B8,AX MOV AX,0000H MOV 00BA,AX MOV AX, OFFSET KKK6 MOV 00BC,AX MOV AX,0000H MOV 00BE,AX MOV AX, OFFSET KKK7 MOV 00C0,AX MOV AX,0000H MOV 00C2,AX MOV
13、 AX, OFFSET KKK8 MOV 00C4,AX MOV AX,0000H MOV 00C6,AX STI;使IF置1,开放可屏蔽中断;主循环LOPM:INAL,62H;检测开始键 TESTAL,20H;检测C口的PC5端 JZ LOP2;开始键未按下即PC5=0,则跳转检测 ;复位键LOP1:INAL,62H;检测开始键是否已经弹起,即PC5=0 TESTAL,20H JNZ LOP1;开始键没有弹起再重新检测 MOVAL,00H;关LED显示器 OUT 61H,AL;送到B口 MOVAL,08H;绿灯亮 OUT62H,AL;送到C口 MOVBZ, 0FFH;置标志 STILOP2:
14、INAL,62H;检测复位键 TESTAL,10H;检测C口的PC4端 JZLOPM ;复位键未按下即PC4=0,则跳转再检 ;测开始键LOP3:INAL,62H;检测复位键是否弹起,即PC4=0 TEST AL,10H JNZ LOP3;位键没有弹起,则重新检测 MOVAL,00H;关LED显示器、指标灯 OUT 61H,AL OUT 62H,AL MOVBZ,00H;清标志 STI JMPLOPM ;中断服务子程序 KKK1:PUSHAX;保护现场 PUSHBX PUSH DX PUSHDS CLI;并使本次中断压入堆栈中的IF=0 MOV AL,06H OUT61H,AL CALL PU
15、BLIC POPDS;恢复现场 POPDX POPBX POPAX IRET KKK2:PUSHAX;保护现场 PUSHBX PUSH DX PUSHDS CLI;并使本次中断压入堆栈中的IF=0 MOV AL,5BH OUT61H,AL CALL PUBLIC POPDS;恢复现场 POPDX POPBX POPAX IRET KKK3:PUSHAX;保护现场 PUSHBX PUSH DX PUSHDS CLI;并使本次中断压入堆栈中的IF=0 MOV AL,4FH OUT61H,AL CALL PUBLIC POPDS;恢复现场 POPDX POPBX POPAX IRET KKK4:PU
16、SHAX;保护现场 PUSHBX PUSH DX PUSHDS CLI;并使本次中断压入堆栈中的IF=0 MOV AL,66H OUT61H,AL CALL PUBLIC POPDS;恢复现场 POPDX POPBX POPAX IRET KKK5:PUSHAX;保护现场 PUSHBX PUSH DX PUSHDS CLI;并使本次中断压入堆栈中的IF=0 MOV AL,6DH OUT61H,AL CALL PUBLIC POPDS;恢复现场 POPDX POPBX POPAX IRET KKK6:PUSHAX;保护现场 PUSHBX PUSH DX PUSHDS CLI;并使本次中断压入堆栈
17、中的IF=0 MOV AL,7CH OUT61H,AL CALL PUBLIC POPDS;恢复现场 POPDX POPBX POPAX IRET KKK7:PUSHAX;保护现场 PUSHBX PUSH DX PUSHDS CLI;并使本次中断压入堆栈中的IF=0 MOV AL,07H OUT61H,AL CALL PUBLIC POPDS;恢复现场 POPDX POPBX POPAX IRET KKK8:PUSHAX;保护现场 PUSHBX PUSH DX PUSHDS CLI;并使本次中断压入堆栈中的IF=0 MOV AL,7FH OUT61H,AL CALL PUBLIC POPDS;
18、恢复现场 POPDX POPBX POPAX IRET PUBLIC:TESTBZ,0FFH;判断标志位是否为FFH JZLOP5 MOVAL,00H;置8253方式2计数值 OUT42H,AL MOVAL,10H OUT42H,AL MOVAL,03H;黄灯亮,抢答成功 OUT 62H,AL JMPKKKLOP5:MOV AL,00H;置8253方式2计数值 OUT42H,AL MOV AL,20H OUT 42H,AL MOVAL,05H;红灯亮,抢答违规 OUT62H,AL KKK:MOVAL,20H;中断结束;防止中断重复响应 OUT20H,ALCODEENDSENDSTART七、调试
19、过程(1)在刚开始编程时,各种功能大部分是由主程序来完成的。由于主程序过于复杂,可读性不高。使得在以后的程序的调试中遇到了很大的麻烦。后来把主程序的部分功能转化成子程序来实现,并在一些重要的地方增加了注释,使的程序的可读性大大加强。调试也变的比较简单了。到此基本解决了第一个问题。(2)在编程时,子程序的调试也是相当重要,由于子程序不可避免的使用AXBXCXDX通用寄存器一个或几个。使得原主程序中的通用寄存器的内容很容易被覆盖,对子程序中所有的通用寄存器出入栈即可以避免上诉的问题,不用考虑使用的是哪几个寄存器,使用起来又比较简单方便。所以至此这个问题也已基本解决。(3)调试是一个复杂烦琐而漫长的
20、过程。在调试的过程中一定要耐下心来去做,否则一旦出现烦躁的心里,就会事倍功半,适得其反。在本次设计中出现的主要问题即如上所述,解决方法也如上所述,在今后的软件调试过程中更应注意如上问题。八、系统操作说明比赛开始,在主持人按下开始键,绿灯亮后,选手才可开始抢答,否则违规。若选手抢答成功,LED显示器显示选手号码,扬声器鸣叫。若选手抢答违规(主持人未按开始键),LED显示器显示违规选手号码,红灯亮,扬声器报警。若系统提示某号选手抢答违规,主持人仍未按开始键,此时该号选手又按下抢答键,LED显示器显示该选手的号码。本系统开机后,若主持人既未按复位键又未按开始键,此时有选手按下抢答键,系统提示红灯亮,
21、并报警。注: 1、抢答成功,置8253方式2计数值为1000,扬声器的鸣叫声音频率为1MHz/1000=1KHz。2、抢答失败,置8253方式2计数值为2000,扬声器的鸣叫声音频率为1MHz/2000=0.5KHz。3、扬声器鸣叫或报警的时间为12s。 九、课程设计总结及体会这次实验是一个综合性实验,通过这次实验,使我们将以前我们所学习到的芯片知识综合应用到这个实验上,从结构、功能、用法上都有了全面的认识,并基本达到了能够通过我们小组的讨论完成从构思到设计最后到调试的整个过程,虽然其中遇到了很多困难阻力,从开始到整个完成,但我们还是坚持了下来,所有的努力换回了成功的喜悦。下面就说说实验中的一
22、些问题以及一些体会:实验的初期,由于对整个的电路还不能从整体把握,只能从实验书上的实验要求出发,结合查找到的资料提出解决方案。最大的体会是团队的力量,几乎所有的设计都是在我们的讨论中“诞生”的,尽管每个人的想法不一样,但聚到一起后就会激发出更多的想法,同时也可以完善不足之处。设计如何用一个开关完成这些电路的多功能同时控制,曾经因为这一部分的设计而陷入僵局,好在认真经过分析,终于完成了。这也告诉我们,一定要对自己有信心,所要做的就是坚持,成功就不会遥远。我们调试时,虽然我们有合理的布局作保证,但也遇到了一些麻烦,但最终还是解决了。十、参考文献1刘红玲,邵晓根微机原理与接口技术M.中国电力出版社,2007年第一版2冯博琴微型计算机原理及接口技术M.清华大学出版社,2007.3艾德才微型计算机原理与接口技术M.高等教育出版社,2001.4张雪兰,谭毓安汇编语言程序设计M.北京:清华大学出版社,2005.5王爽汇编语言- 23 -