XXXX大学XXXX学院计算机系计算机专业计算机班级课程设计报告书姓名:学号:指导老师:职称:讲师设计地点:4407起讫时间:2010.12.20-2010.12.24完成报告书时间:2011年1月14日计算机系编印二0一0年十二月第1页课程设计要求各专业学生应根据课程任教老师的要求,做出选题计划,并按下列要求完成课程设计任务。一、学生应按照老师的要求完成规定的课程设计任务量。二、课程设计报告书要求格式统一,字迹工整,语言简练,文字通顺,按课程设计格式要求书写。程序清单不够填写时统一用A4纸补充并粘贴。对不按格式要求书写或打印的报告书一律不收,也不得进行答辩和评分。三、必须独立完成课程设计,不得相互抄袭。在答辩和批阅过程中发现源程序相同或有大面积抄袭现象,课程任教老师有权通知学生重做,不得给予评分,并通报综合教研室。四、学生课程设计结束后应提交的材料:(1)课程设计报告书;(2)包含完整的、正确的源程序代码(含电子文档);(3)设计体会与心得,要求深入、具体、生动、1000字以上;(4)答辨材料(介绍课程设计要点)。第2页选题内容及要求一、实验内容(1)要求:十字路口1)、正常情况下,两路口轮流放行,且以一位8段数码管显示剩余时间;2)、夜间,两路口均为黄灯闪烁,均可放行。3)、紧急状况下可以暂停,处理完紧急情况,恢复计时(2)提示—交通灯规律:状态1:南北绿灯通车,东西红灯;状态2:南北绿灯闪烁3次转黄灯亮,东西仍然红灯,延时3秒;状态3:东西绿灯通车,南北红灯;状态4:东西绿灯闪烁3次转黄灯亮,延时3秒南北仍然红灯。以开关控制正常状态与夜间。二、实验要求1)、自学、查找所选择I/O接口芯片和内存芯片的相关的资料。使用微机原理知识实现能完成相应功能的硬件系统。2)、要求写出系统(包括各个子系统)的设计方案及论证,画出系统原理图(硬件连线图)以及系统工作流程。3)、画出程序流程、编写系统初始化程序和功能程序清单。4)、完成系统最终调试,得出系统运行结果与调试报告。5)、提出系统改进建议和下一步开发和研究计划。第3页选题内容及要求参考文献情况序号名称编著者出版社1《新版汇编语言程序设计》钱晓捷清华大学出版社2《汇编语言程序设计教程与实验》徐爱芸向华清华大学出版社3《微机原理与接口技术》李芷杨文显电子工业出版社4《新版汇编语言程序设计》钱晓捷清华大学出版社5678910第4页课程设计考核情况教师评价情况指导老师评语:指导老师:_____________(签名)日期:年月日学生答辩情况1.8254芯片,有几个口?答:通道0,通道1,通道2,控制口2.8254芯片的A0,A1是什么?答:是端口地址控制线3.8254芯片的D0~~D7的作用是什么?答:连接外设与CPU之间,起到缓冲作用。综合成绩评定情况综合评价等级:__________________注:共分五个等级(1.优2、良3、中4、合格5、不合格)第5页课程设计报告书目录一、设计课题二、设计目的三、操作环境四、设计场所(机房号、机器号或自己机器)五、设计过程(设计内容及主要程序模块)六、本次设计中用到的课程知识点(列出主要知识点)七、设计过程中遇到的问题及解决办法八、课程设计体会与心得(1000字以上)九、程序清单第6页一、设计课题交通信号灯控制设计二、设计目的通过此课程掌握微机系统的构成原理与接口电路的设计方法,掌握基于8086实验平台的基本接口电路的实现与测试方法,及简单微机应用系统的设计与实现方法。在学习完《微机原理与接口技术》这门课程之后,需要学生掌握掌握8086cpu微机系统的存储子系统设计、掌握8086cpu微机系统的中断控制子系统的设计、掌握8086cpu微机系统的I/O系统的设计、掌握8086cpu微机系统的初始化汇编编程和具体项目功能的软件汇编语言代码编写从而培养和考察学生理论与实践相结合以及实践创新的能力。因此设计了一个综合性实验-----《微机原理与接口技术》课程设计------微机系统设计。三、操作环境1、唐都TD-PITC实验箱2、WindowsXP四、设计场所4407实验室第7页五、设计过程(设计内容及主要模块)(一)实验硬件连线图及说明参考硬件接线图如下图所示:(二)流程图(程序主流程图以及子流程图)实验的主流程图和子流程图如图2.1和2.2所示注:子流程图其实就是每个状态(BT0、BT1、BT2、BT3)的流程,它是说明8255A和8254是如何控制模拟交通灯的第8页图2.1主流程图第9页图2.2子流程图(三)设计思想本课程设计使用8255A端口A、B、C工作在方式0,端口A、B作为输出口,端口C高四位输入低四位,8255A端口A来控制LED显示管以显示十字路口的红、绿以及黄灯(各灯的具体),端口B输出线接至到数码管上。PC6用于读取开关K0的状态控制白天和黑夜,PC7用于检测8254的OUT0口实现定时。设计数器0的计数初值为18432,由于CLK0接收脉冲信号,频率为18.432KHZ,输出的频率OUT0为1HZ,所以每计数完一次为1秒钟。第10页六、设计中用到的课程知识点8255A并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。8254:8254是Intel公司生产的可编程定时器。是8253的改进型,比8253具有更优良的性能。七、设计中遇到的问题及解决方法问题1:软件延时,发现软件延时虽然设计简单,使用方便,但是无法进行精确计时,无法在实际应用中进行使用。解决方法:本次课程设计采用了8254计数器0进行计时,每1S产生一个脉冲信号,可以准确的计时并方便8段数码管进行显示。问题2:使用8254计时比较麻烦解决方法:在实验的过程中我们在没有8259中断控制芯片的情况下,巧妙地采用了PC7口来读取8254的端口OUT0的脉冲频率。成功地实现了数码管剩余时间的精确的计时,强化程序功能与执行效率。第11页八、课程设计体会与心得通过这次课程设计,我对8255A芯片有了更深地了解。并且熟练地掌握了8255A可编程并行接口的编辑方法。通过程序,可以对芯片进行多种操作,体验到了8255A芯片强大的通用性以及使用的灵活性。在实验中,对照着程序流程图,我们一步一步地将程序编译出来。编译过程中遇到了不少问题,但是通过与老师的交流以及同学的帮助,我们将问题一一解决了。从中,我体会到了团结合作精神的重要性。大家在一起集思广益,往往能使别人获得灵感,从而解决问题。实验中个人的力量是不及群体的力量的,多个人分工合作,做事的效率就高了很多。虽然有时候会为了一些细节争论,但最后还是会得出一个大家都能接受的结论。实验也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。第12页程序清单(四)源程序清单;*****************************************************************IOY0EQU0E400H;片选IOY0对应的端口始地址IOY1EQU0E440H;片选IOY1对应的端口始地址;*****************************************************************MY8255_AEQUIOY0+00H*2;8255的A口地址MY8255_BEQUIOY0+01H*2;8255的B口地址MY8255_CEQUIOY0+02H*2;8255的C口地址MY8255_MODEEQUIOY0+03H*2;8255的控制寄存器地址MY8254_0EQUIOY1+00H*2;8254的0口地址MY8254_1EQUIOY1+01H*2;8254的1口地址MY8254_2EQUIOY1+02H*2;8254的2口地址MY8254_MODEEQUIOY1+03H*2;8254的控制寄存器地址INTR_IVADDEQU01C8H;INTR对应的中断矢量地址INTR_OCW1EQU0A1H;INTR对应PC机内部8259的OCW1地址INTR_OCW2EQU0A0H;INTR对应PC机内部8259的OCW2地址INTR_IMEQU0FBH;INTR对应的中断屏蔽字PCI_INTCSREQU0EC38H;PCI卡中断控制寄存器地址;*****************************************************************STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDATASEGMENTMESDB'Pressanykeytoexit!',0AH,0DH,0AH,0DH,'$'CS_BAKDW?;保存INTR原中断处理程序入口段地址的变量IP_BAKDW?;保存INTR原中断处理程序入口偏移地址的变量IM_BAKDB?;保存INTR原中断屏蔽字的变量FLAGDB0HYFLAGDB0HDELAYDB66H,4FH,5BH,06H,3FH;0~4DTABLEDB6FH,7FH,07H,7DH,6DH,66H,4FH,5BH,06H,3FH;键值表,0~9对应的7段数码管的段位值DTABLE1DB4FH,5BH,06H,3FH;键值表,0~3对应的7段数码管的段位值DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTRAT:MOVAX,DATAMOVDS,AXMOVDX,MY8255_MODE;定义8255工作方式MOVAL,88H;工作方式0,A口和B口为输出,C口低位输出、高位第13页输入OUTDX,AL;-----------------------------------MOVDX,OFFSETMES;显示退出提示MOVAH,09HINT21HCLIMOVDX,PCI_INTCSRSUBDX,19HINAL,DXMOVDX,PCI_INTCSR;初始化PCI卡中断控制寄存器MOVAX,1F00H;向PCI_INTCSR中写入003F1F00HOUTDX,AXADDDX,2HMOVAX,003FHOUTDX,AXMOVAX,0000H;替换INTR的中断矢量MOVES,AXMOVDI,INTR_IVADDMOVAX,ES:[DI]MOVIP_BAK,AX;保存INTR原中断处理程序入口偏移地址MOVAX,OFFSETMYISRMOVES:[DI],AX;设置当前中断处理程序入口偏移地址ADDDI,2HMOVAX,ES:[DI]MOVCS_BAK,AX;保存INTR原中断处理程序入口段地址MOVAX,SEGMYISRMOVES:[DI],AX;设置当前中断处理程序入口段地址MOVDX,INTR_OCW1;设置中断屏蔽寄存器,打开INTR的屏蔽位INAL,DXMOVIM_BAK,AL;保存INTR原中断屏蔽字ANDAL,INTR_IMOUTDX,ALSTI;---------------------------------;-----------测试状态---------------------------TEST1:MOVDX,MY8255_AMOVAX,0F0H第14页OUTDX,AXCALLT8254_1;-------------------------------------------------;-----------黑夜----------------------------------TEST2