【摘要】运用了8086CPU芯片以及8255A芯片、8253芯片和数码管等辅助硬件电路,进行了数码管倒计时的设计。进行了软件设计并编写了源程序。交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。本系统采用8086为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展强。本设计就是采用8086最小方式下在Protues7.8SP2软件下模拟十字路口交通灯的各种状态显示以及倒计时显示时间。本设计系统由8255AI/O口扩展系统、交通灯状态显示系统、LED数码显示系统等几大部分组成。系统除基本的交通灯功能外,还具有倒计时、紧急情况处理等功能,较好的模拟实现了十字路口可能出现的状况。本系统采用8086汇编语言编写,主要编写了主程序,LED数码管显示程序等。总体上完成了软件的编写。关键词:带倒计时功能的交通灯;8255A;8086微机系统1目录一、概述1.1课程设计的目的··············································31.2课程设计的要求············································3二、总体设计方案及说明2.1系统总体设计方案··········································42.2系统工作框图··············································4三、系统硬件电路设计3.1Intel8086微处理器的简介···································53.28255A芯片的工作原理··············································73.3多位数码管的工作原理··················································83.474LS273芯片简介··········································1023.5系统电路图设计········································113.5.1.系统总电路图设计································113.5.2.8086最小系统原理图设计····································12四、系统软件部分设计4.1系统流程图················································144.2系统软件源程序············································154.2.3汇编源程序及说明········································16五、总结5.1系统调试·······································185.2心得与体会·················································20六、参考文献······················································223一、概述通过本课程设计,使学生掌握控制系统设计的一般步骤,掌握系统总体控制方案的设计方法。使学生进一步掌握微型计算机应用系统的硬、软件开发方法,输入/输出(I/O)接口技术,应用程序设计技术,并能结合专业设计简单实用的微型计算机应用系统。针对课堂重点讲授内容使学生加深对微型计算机硬件原理的理解及提高汇编语言程序设计的能力,为以后的毕业设计搭建了微机系统应用平台,提高学生的开发创新能力。二、总体设计方案与说明2.1系统总体设计方案本设计是基于Windows环境下,在其中进行硬件电路的的设计,汇编语言源程序的编写以及以上两部分工作完成后的软件系统的调试。本设计的处理控制系统由Intel8086微处理器在最小模式下组成的单处理器系统构成,用来进行对外围硬件电路进行信息采集、数据处理和控制。2.2系统工作框图本课程设计使用8086CPU控制8255A和74273锁存器分别控制LED数码管和LED交通灯。第一片8255A被选择后,从数据总线上写入数据到输出端,把LED数码管的待显示的字符对应是16进制数,即要7段数码管的对应位的LED置高电平(选择的是共阴极数码管)就可以显示对应的段码。第二片8255A被选择后,从数据总线上写入的数据是指定哪一位数码管显示字符,低电平有效。同时74273锁存器也要按程序设定点亮LED交通灯。43.5系统电路图设计3.5.1系统总电路图如下图所示:53.5.2.8086最小系统原理图如下所示:8086最小系统由Intel8086微处理器、74273TTL带公共时钟复位八D触发器、以及74154TTL4线—16线译码器等组成。8086有20位地址线,其中高4位A19-A16与状态线S6-S3分时复用,低16位AD15-AD0与数据线分时复用。在总线周期的T1时将地址送出后,就必须用锁存器将它们锁存起来,以便在T2及以后搞死位地址线改为状态输出,低16位地址线该做数据线使用。6另外,表明八位数据线是否起作用的数据总线允许信号是与状态线S7分时复用的,故也需要锁存。21条线需采用3片8位地址锁存器,这里采用74273。与外围硬件电路的连接的I/O部分由4线-16线译码器74154组成,用来分配I/O硬件地址。四、系统软件部分设计.MODELSMALL.8086.STACK.CODE.STARTUPSTART:MOVDX,0406HMOVAL,80HOUTDX,ALMOVDX,0606HMOVAL,80HOUTDX,ALMOVAX,ALL_LIGHT;数据的地址0MOVDX,0200HMOVDX,AX7AGAIN:MOVSI,OFFSETSITUATION;取得定义数据段的偏移地址EAMOVDX,0200H;273地址NEXT:MOVAX,[SI]OUTDX,AX;数据输出到交通LED灯上PUSHSILEASI,LEDLEADI,TABLEONE;DUAN0:MOVAX,32;赋初值32MOVCX,AXPUSHCXAB:CALLDISPLAYPOPCXDECCXPUSHCXMOVAX,CX8CMPAX,2JGEABPOPCXPOPSIADDSI,2;下一状态1MOVDX,0200HMOVAX,[SI]OUTDX,AXPUSHSILEASI,LEDLEADI,TABLETWO;DUAN1:MOVAX,2MOVCX,AXPUSHCXAC:CALLDISPLAYPOPCXDECCX9PUSHCXMOVAX,CXCMPAX,0JGEACPOPCXPOPSIADDSI,2;下一状态2MOVDX,0200HMOVAX,[SI]OUTDX,AXPUSHSILEASI,LEDLEADI,TABLETHREE;DUAN2:MOVAX,30MOVCX,AXPUSHCXAD:CALLDISPLAY10POPCXDECCXPUSHCXMOVAX,CXCMPAX,0JGEADPOPCXPOPSIADDSI,2;下一状态2MOVDX,0200HMOVAX,[SI]OUTDX,AXPUSHSILEASI,LEDLEADI,TABLEFOUR;DUAN3:MOVAX,2MOVCX,AXPUSHCX11AE:CALLDISPLAYPOPCXDECCXPUSHCXMOVAX,CXCMPAX,0JGEAEPOPCXPOPSIJMPAGAIN;完成了一次大循环,返回程序入口地址,再次执行程序1;数码管分解显示子程序DISPLAYDISPLAYPROCNEARMOVDX,10DIVDL;32/10=3,把十位给分解出来显示0,此时AL=3,AH=2MOVCL,ALMOVCH,AHXORBX,BX12MOVBL,CLMOVAL,[SI+BX]MOVDX,0400HOUTDX,ALXORBX,BXMOVBL,CHMOVAL,[SI+BX]MOVDX,0600HOUTDX,ALCALLXUNMOVDX,10DIVDLMOVCL,ALMOVCH,AHXORBX,BXMOVBL,CLMOVAX,[SI+BX]13MOVDX,0402HOUTDX,ALXORBX,BXMOVBL,CHMOVAL,[SI+BX]MOVDX,0602HOUTDX,ALCALLDELAYRETDISPLAYENDPXUNPROCNEARMOVAH,0MOVAL,[DI]INCDIRETXUNENDP14DELAYPROCNEAR;;延时子程序2,延时时间为500*(执行469次循环语句的时间)MOVBX,500LP1:MOVCX,469LP2:LOOPLP2DECBXJNZLP1RETDELAYENDP.DATATABLEONEDB30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0TABLETWODB2,1,0TABLETHREEDB32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3TABLEFOURDB2,1,0LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;数码管待显示的字符数组0SITUATIONDW1111100001100001B;南北向红灯,东西向绿灯,MSB——》led15,LSB——》led0S1DW1111010001010001B;南北向红灯,东西向黄灯,低电平0无效,高电平1有效S2DW1111001100001100B;南北向绿灯,东西向红灯,led15显然没有,那数据的最高四位一定是1111S3DW1111001010001010B;南北向黄灯,东西向红灯4SIT_END=$15ALL_LIGHTEQU1111110010010110BEND五、系统仿真过程与结果5.1系统调试16将编写好的汇编语言源程序在MASM32软件中进行汇编、连接生成可执行文件,并将其载入到8086芯片进行仿真。通过以上的调试过程和仿真调试结果可知,所设计的电路和所编写的程序满足实验要求。六、总结本次课程设计是要设计一个交通灯系统,主要功能如上已有细述。在本次对交通灯的设计过程中以此来加深对微机接口技术的理解,提高了自己的动手能力。首先着手对硬件电路的设计,本次课程设计主要采用了8255A接口电路。由于对各个芯片不熟悉,通过课本了解到了它们的引脚及功能、工作方式、内部结构和控制字。然后就是对程序的设计,想要设计出一个实用的控制系统需要了解程序流程,先画出了流程图,然后对代码进行编写,在编写过程中遇到了很多问题,对芯片的不了解也导致编程的很多的问题,要么灯都不显示,要么灯显示不全,再要么红灯,绿灯时间分配不合理。最后经过一段时间的研究,查阅了很多资料并和同学讨论后终于一一解决。经过为期一个星期的课程设计,我获益颇多。将微机接口技术中的理论与实践相结合起来,对芯片的功能也有了进一步认识理解。17最后希望通过以后的学习,不断提升自身各方面的能力,如对专业知识的掌握程度,动手实践能力等。经过此次的课程设计,我们学会了合作。我们要形成自己的设计思想,以便在今后的专业课形成自己的风格。同时在多多锻炼自己的动手能力,以便在以后的工作能独立完成一些设计项目。