《微机原理与接口技术》课程设计报告姓名:学号:同组实验者:指导教师:日期:重庆邮电大学课程设计报告-1-一、设计题目——交通灯控制根据TD-PIT-B实验箱现有的实验电路,设计电路并编写程序使6个灯按交通变化规律亮、灭或闪烁,且将时间显示在数码管上。十字路口交通灯变化规律要求:(1)南北路口的绿灯、东西路口的红灯同时亮30秒。(2)南北路口的黄灯闪烁3次,同时东西路口的红灯继续亮。(3)南北路口的红灯、东西路口的绿灯同时亮30秒。(4)南北路口的红灯继续亮,同时东西路口的黄灯闪烁3次。(5)转1重复。二、设计思路及电路设计原理图(1)设计思想:设有一个十字路口,1、3为南,北方向,2、4为东西方向,初始态为4个路口的红灯全亮。之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。延迟30秒后,1、3路口的绿灯熄灭,而1,3路口的黄灯开始闪烁(1HZ)。闪烁3次后,1、3路口的红灯亮,同时2、4路口的绿灯亮,2、4路口方向开始通车。延迟30秒时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁。闪烁3次后,再切换到1、3路口方向。之后,重复上述过程。重庆邮电大学课程设计报告-2-通过8254计数,每1ms刷新一次,CX计数不为零,计数值减1,刷新1000次,持续一秒钟(其中,输入始终脉冲为1KHZ)。使用8254实现了PA7~PA0控制二极管的亮灭,PB7~PA0控制数码管的显示。通过设置控制字,使8255的C口高四位输出,低四位输入,PC4和PC5对数码管进行位控,让两位十进制数同时显示。(2)红、黄、绿灯的表示由于仪器上面只有16个发光二级管,且从高到低依次为:D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0。在设计的过程中我们采用了六个灯,但是我们连接了8根线,所以我们做了如下的规定:R表示红灯,G表示绿灯,Y表示黄灯,E表示方向东,W表示方向西,S表示方向南,N表示方向北。所以在设计中采用如下的规定:A7~A5重庆邮电大学课程设计报告-3-分别代表东西方向红黄绿灯,A4~A2分别代表南北方向红黄绿灯,A1~A0无意义。具体连线及表示如下图所示。(3)硬件设计框图及连线/接图:说明:8255连接说明如下8255数据端口连接系统总线数据段D0~D78255RD连接系统IOR8255WD连接系统IOW重庆邮电大学课程设计报告-4-8255CS连接IOY38255寄存器地址输入信号A0A1连接系统总线A0A18255PA端连接外设二极管(PA端A7~A2对应二极管D7~D2),作为输出A7~A5分别代表东西方向;红黄绿灯,A4~A2分别代表南北方向红黄绿灯,A1~A0无意义。且全部为低有效)8255PB端连接外设LED(PB端B0~B7对应LEDabcdefgh),作为输出8255PC端,低位输入、高位输出C0连接8254OUT端作为输入;C4~C5连接X1~X2作为输出,控制LED显示十位个位8254连接说明如下8254数据端口连接系统总线数据段D0~D78254RD连接系统IOR8254WD连接系统IOW8254CS连接IOY28254寄存器地址输入信号A0A1连接系统总线A0A18254CLK0连接1KHZ8254GATE0连接+5V8254OUT0连接8255C0端重庆邮电大学课程设计报告-5-(4)流程图:三、实验日志:星期一:收集相关资料;熟悉8254、8255芯片的工作原理;初步设计完25s后南北绿灯亮东西红灯亮确保P0为0设定定时时间和方式绿灯25s倒计时红灯30s倒计时1s延时后东西南北黄灯闪烁1s开始判断东西南北倒计完计完25s后东西绿灯亮南北红灯亮计完30s后东西红灯亮南北绿灯亮1s延时后东西南北黄灯闪烁1s结束计完30s后南北红灯亮东西绿灯亮判断东西南北倒计完计完25s后南北绿灯亮东西红灯亮重庆邮电大学课程设计报告-6-计。星期二:初步设计;并绘图编程。星期三:设计并绘图编程;接线运行程序。星期四:修改程序,使其能正常运行。星期五:老师验收,并向老师解释程序。四、实验结果与分析在实验室的实验台上可以看到如下的结果:1、即东西方向的绿灯和南北方向的红灯同时点亮20秒钟;2、20秒钟后,东西方向的黄灯闪烁5秒钟,。此时南北方向仍维持红灯点亮。3、东西方向的黄灯闪烁5秒钟后,转为东西方向的红灯和南北方向的绿灯同时点亮20秒钟;4、20秒钟后,转为南北方向的黄灯闪烁5秒钟,此时东西方向仍维持红灯点亮。5、南北方向的黄灯闪烁5秒钟后,东西方向的绿灯和南北方向的红灯同时点亮20秒钟。如此循环重复。在设计过程中,由于延时是通过编写程序实现的,而程序里面是通过执行指令的次数以达到延时,切执行一条指令的时间有很难计算,所以本次设计只是大概地估计了一下延时的时间,这是一点不足之处,若采用硬件延时(比如用8253定时器)的话,也许会使延时的时间相对的准确些。重庆邮电大学课程设计报告-7-五、设计体会及收获:(1)的心得:通过一星期微机接口的课程设计,我们对微机接口芯片有了更进一步的了解。这次实验通过使用了8254计数器、8255可编程并行接口实现了交通灯的控制。由于这学期微机接口这门课学的不是扎实,所以在调试程序中出现了很多问题。所以刚开始在做这个设计时,我们首先将以前做过的8254计数器、8255可编程的实验重新做了一遍,对这些芯片有了更进一步的理解。然后通过网上查阅了很多资料和老师的指导,总算了解了8254计数器、8255可编程等芯片的操作方式,对整个课程设计也有了总体的轮廓,通过学过的知识以及做过的实验,最后有了圆满的结果。通过本次课程设计我们学到了很多新的东西,极大地拓宽了知识面,锻炼了能力,综合素质得到较大提高,感到收获不小。也发现了大量问题,有些在设计过程中已经解决,有些还要待今后慢慢学习,只要学习就会有更多的问题,有更多的难点,但也会有更多的收获。(2)的心得:通过这次微机原理的实习,我学到了很多平时在课堂上不能学到的东西。对于这次选择的交通灯的设计,我最开始抱着的是不能实现的态度,但是在我们组的共同努力下,经过了三天,我们终于有了一定的思路。虽然在中途我们遇到了机器有问题的难题,但是我们还是成功的解决了种种困难,最终取得了成功。通过这次课程设计,我加重庆邮电大学课程设计报告-8-深了对8255,8254芯片的工作方式的认识和使用方法,也对微机原理的理解更加的深刻了,对于实际动手能力的锻炼我也得到了很到的提高。(3)的心得:通过此次课程设计,结合所学的《微机原理与接口技术》这门课程的知识,对其应用之一——交通灯控制器进行设计与实现。总体感觉收获比较多,因为可以将书本上的知识应用到实践当中。刚开始的时候,翻阅了一些资料,还是没有什么头绪,后来在老师和同学的帮助下,终于找到了入口点,接下来的事情就相对的容易一些了。首先,把握整个的设计的大概的流程,然后再对每一个分快进行设计,最后进行调试。在设计的过程中,很重要的一点是要熟悉可编程并行通信接口芯片8255A的初始化及其端口的使用。此次课程设计感觉收获很多,比如,翻阅资料提高了自学能力,和同学一起讨论汲取别人的长处。希望老师能够引导学生应该如何去把握、分析课程设计的主题,找出突破点,让学生积极主动进行课程设计,以使学生更好地提高自学的能力。(4)的心得:通过此次实验,使我全面的解了微机接口的运行方式,以及汇编语言与接口之间的关系.同时加深了我对8255,8254芯片的工作方式的认识和使用方法。本次设计中我们克服了很多难题,在同伴的努力下我们还是按时完成了任务。而且最难的就是硬件的调试,我们最开始的时候由于机器有问题,我们怎么也不能成功,但是我们换了一台机器后我们终于成功的看到了试验现象。通过本次课设学到很多课堂上学不到的调试知识,对Debug有了一定的了解。通过实践也加深了对理论知识的理解。很感谢学校给我们提供了这么好的学习机会。重庆邮电大学课程设计报告-9-六、源代码及注释:MY8255_AEQU9C60HMY8255_BEQU9C61HMY8255_CEQU9C62HMY8255_MODEEQU9C63HMY8254_COUNT0EQU9C40HMY8254_MODEEQU9C43HDATASEGMENTLEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;数码管七段代码表DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,MY8255_MODE;8255初始化,连接端口IOY3MOVAL,10000001B;A口输出接二极管,B口输出接数码管,C0输入,C4~C5输出OUTDX,ALMOVCX,30;计时30秒A1:MOVDX,MY8255_A;8255的A口接LEDMOVAL,01111011B;东西红,南北绿OUTDX,AL;将灯状态传送给LED显示CALLINITIAL_8254LOOP2:MOVAH,0BHINT21HCMPAL,0JNZEXIT0JMPL1EXIT0:MOVAH,4CHINT21H重庆邮电大学课程设计报告-10-L1:CALLDISPL2:MOVDX,MY8255_CINAL,DXTESTAL,1HJELOOP2DECCXCMPCX,3;计时3秒JAA1JMPA2A2:MOVDX,MY8255_AMOVAL,01110111B;东西红,南北黄OUTDX,ALCALLINITIAL_8254LOOP4:MOVAH,0BHINT21HCMPAL,0JNZEXIT1JMPL3EXIT1:MOVAH,4CHINT21HL3:CALLDISPL4:MOVDX,MY8255_CINAL,DXTESTAL,1HJELOOP4DECCXCMPCX,0JEPJMPA2重庆邮电大学课程设计报告-11-P:MOVCX,30;计时30秒JMPA3A3:MOVDX,MY8255_A;东西绿,南北红MOVAL,11001111BOUTDX,ALCALLINITIAL_8254LOOP5:MOVAH,0BHINT21HCMPAL,0JNZEXIT2JMPL6EXIT2:MOVAH,4CHINT21HL6:CALLDISPL7:MOVDX,MY8255_CINAL,DXTESTAL,1HJELOOP5DECCX;计时3秒CMPCX,3JAA3JMPA4A4:MOVDX,MY8255_A;东西黄,南北红MOVAL,10101111BOUTDX,ALCALLINITIAL_8254LOOP6:MOVAH,0BHINT21HCMPAL,0重庆邮电大学课程设计报告-12-JNZEXIT3JMPL8EXIT3:MOVAH,4CHINT21HL8:CALLDISPL9:MOVDX,MY8255_CINAL,DXTESTAL,1HJELOOP6DECCXCMPCX,0JEPPJMPA4PP:MOVAH,0BHINT21HCMPAL,0JNZEXITJMPSTARTEXIT:MOVAH,4CHINT21HINITIAL_8254PROC;8254初始化,1sPUSHAXPUSHDXMOVDX,MY8254_MODE;初始化,计数器0工作在方式0,先写低8位,再写高8位,BCD方式计数MOVAL,00110001BOUTDX,ALMOVDX,MY8254_COUNT0MOVAL,00H;写低8位OUTDX,AL重庆邮电大学课程设计报告-13-MOVAL,10H;写高8位OUTDX,ALPOPDXPOPAXRETINITIAL_8254ENDPDISPPROC;数码管显示PUSHAXPUSHBXPUSHDXPUSHCXDECCXMOVDX,MY8255_C;将CL中二进制数转化为十进制数MOVAL,11101111BOUTDX,ALMOVAX,CXMOVCL,0AH;将十位数放在高位数码管,将个位数放在低位数码管DIVCLPUSHAXMOVBX,OFFSETLEDXLAT;显示十位码MOVDX,MY8255_B;将AL