微机原理与接口技术课程设计-交通灯设计说明书_第1页
微机原理与接口技术课程设计-交通灯设计说明书_第2页
微机原理与接口技术课程设计-交通灯设计说明书_第3页
微机原理与接口技术课程设计-交通灯设计说明书_第4页
微机原理与接口技术课程设计-交通灯设计说明书_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.../中南大学微机课程设计报告题目交通灯设计专业班级姓名学号指导老师林立新老师目录课程设计题目、功能、目的……..2系统分析与设计…………3系统所用芯片分析…………..3所选用芯片的简要介绍……………………4系统框图…………..6程序设计………….…………73.1十字路口交通灯状态转换表……………73.2主程序流程图……………………73.3中断子程序流程图…………..83.4数码管码表……………………..83.5各芯片初始化说明………….9运行情况………….………10具体源代码及注释……………………11心得体会………….………16课程设计题目、功能、目的课程设计题目交通灯设计本设计所实现功能实现十字路口交通灯各种状态的转换;各种状态转换的时间可进行灵活设置;采用中断的方法对状态转换进行控制,提高处理器效率;在各个状态转换的同时实现倒计时提醒。本次课程设计目的通过《微机原理与接口》课程设计,使学生能够进一步了解微型计算机工作原理,微型计算机的硬件结构及微型计算机软件编程。要求学生根据接口电路的硬件要求进行计算机的汇编语言程序设计,使学生的软件编程能力得到加强,对接口电路的综合应用能力有较大提高。系统分析与设计系统所用芯片分析首先本个系统需要一个中央处理器来负责对整个系统进行控制管理,因为《微机原理与接口技术》这门课上介绍了8086芯片,所以可以采用8086作为本系统的中央处理器。由于本次的课程设计的题目是交通灯,而根据十字路口处的交通灯南北和东西方向各有红、绿、黄三种颜色的灯,因此可用8255来控制6个LED灯的实现模拟的南北和东西方向上的交通灯。而交通灯的状态转换时间要由中断方式来控制,所以很容易想到了可以用8259作为中断芯片,与8086芯片相连。交通灯的状态转换时间可灵活设置,于是想到了可以采用一块8253或8254芯片和一个脉冲源相连,8253对脉冲源送来的脉冲进行分频,然后将输出送到8259作为中断源,而8253采用不用的计数初值其输出脉冲的频率就不一样,因此实现了交通类状态转换时间的灵活设置。最后关于交通灯状态转换的倒计时功能,可由一个七段数码管来显示倒计时,而本次课程设计的实验箱没有提供单个数码管,而是提供了一个八位一体七段数码管,所以还需一块8279芯片来对数码管进行控制。所选用芯片的简要介绍8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片〔40引脚。其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。intel8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253〔2.6MHz,8253-5<5MHz>8253内部有三个计数器,分别称为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。输出锁存器的值是通过程序设置的。输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用。Intel8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器〔包含了堆栈指标。资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。它提供64K8位元的输出输入〔或32K16位元,以及固定的向量中断。大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。运算结果会储存在操作数中的一个寄存器。Intel8086有四个内存区段〔segment>寄存器,可以从索引寄存器来设定。区段寄存器可以让CPU利用特殊的方式存取1MB内存。8086把段地址左移4位然后把它加上偏移地址。大部分的人都认为这是一个很不好的设计,因为这样的结果是会让各分段有重叠。尽管这样对组合语言而言大部分被接受〔也甚至有用,可以完全地控制分段,,使在编程中使用指针〔如C编程语言变得困难。它导致指针的高效率表示变得困难,且有可能产生两个指向同一个地方的指针拥有不同的地址。更坏的是,这种方式产生要让内存扩充到大于1MB的困难。而8086的寻址方式改变让内存扩充较有效率。8086处理器的时钟频率介于4.77MHz〔在原先的IBMPC频率和10MHz之间。8086没有包含浮点指令部分〔FPU,但是可以通过外接数学辅助处理器来增强浮点计算能力。系统框图程序设计十字路口交通灯状态转换表:南北方向东西方向十六进制代码红绿黄红绿黄0010001022H0010000121H0001010014H000011000CH主程序流程图:中断子程序流程图:共阴数码管码表:数字01234编码0x3F0x060x5B0x4F0x66数字56789编码0x6D0x7D0x070x7F0x905.8259初始化说明MOVAL,13H ;写ICW1,需要ICW4、单片工作、边沿触发方式MOVDX,INTPORT1OUTDX,ALMOVAL,08H ;写ICW2,设置中断向量号MOVDX,INTPORT2OUTDX,ALMOVAL,09H ;写ICW4,普通全嵌套方式、采用缓冲方式OUTDX,ALMOVAL,0F7H ;写OCW1,只开IR3中断请求,其余屏蔽OUTDX,AL6.8253初始化说明MOVDX,TCONTRO MOVAL,10110100B;采用二进制计数方式,工作方式二,十六们计数,计数器二OUTDX,ALMOVDX,TCON2MOVAL,0AH ;计数初值为10,即1S中断一次OUTDX,ALMOVAL,00HOUTDX,AL7.8255初始化说明MOVAL,80H ;PA、PB、PC口都设定为输出工作方式MOVDX,IOCONPTOUTDX,AL运行情况经多次调试后,系统运行良好,实现了要求和设想中的全部功能,如上图为实际运行时的图片。具体代码及注释CODESEGMENTASSUMECS:CODEINTPORT1EQU0020HINTPORT2EQU0021HINTQ3 EQUINTREEUP3 ;8259CONTPORTEQU00DFHDATAPORTEQU00DEH ;8279TCONTROEQU004BH ;8253TCON2 EQU004AHIOCONPTEQU0073H 所用芯片端口地址初始化IOCPT EQU0072HIOBPT EQU0071H ;8255DATA0 EQU0580HDATA1 EQU0500HDATA2 EQU0508HDATA3 EQU0518HDATA4 EQU0520HORG1000HSTART: JMPTint1Tint1:CLI MOVAX,0H MOVDS,AX MOVDX,CONTPORT MOVAL,00H OUTDX,AL8279初始化及工作方式的设定 MOVAL,2AH8279初始化及工作方式的设定 OUTDX,AL MOVAL,0d0h OUTDX,AL MOVAL,90h OUTDX,AL8255初始化及工作方式的设定MOVAL,80H 8255初始化及工作方式的设定MOVDX,IOCONPT OUTDX,AL MOVDX,TCONTRO MOVAL,10110100B OUTDX,AL8253初始化及工作方式的设定 MOVDX,TCON28253初始化及工作方式的设定 MOVAL,0AH OUTDX,AL MOVAL,00H OUTDX,ALCALLFORMAT CLI MOVDI,DATA0 MOVCX,08H XORAX,AX REPSTOSW MOVSI,DATA3 CALLLEDDISP ;数码管显示初始图案"" MOVAX,0H MOVDS,AX CALLWRINTVER ;调用子程序,设置中断地址向量表 MOVAL,13H MOVDX,INTPORT1 OUTDX,AL MOVAL,08H8259初始化及工作方式的设定 MOVDX,INTPORT28259初始化及工作方式的设定 OUTDX,AL MOVAL,09H OUTDX,AL MOVAL,0F7H OUTDX,AL MOVBYTEPTRDS:[0601H],03H MOVBYTEPTRDS:[0602H],00H STI ;开中断WATING:JMPWATING ;等待中断,无限循环WRINTVER:MOVAX,0H MOVES,AX MOVDI,002CH设置中断地址向量表子程序 LEAAX,INTQ3设置中断地址向量表子程序 STOSW MOVAX,CS STOSW RETINTREEUP3: ;中断子程序 CLI MOVAL,DS:[0601H] CALLCONVERS MOVSI,DATA0 CALLLEDDISP CMPBYTEPTRDS:[0601H],03H JNZNEXT MOVDX,IOBPTCOMP: CMPBYTEPTRDS:[0602H],00H JZSI0 CMPBYTEPTRDS:[0602H],01H JZSI1 CMPBYTEPTRDS:[0602H],02H JZSI2 CMPBYTEPTRDS:[0602H],03H JZSI3SI0: MOVAL,22H判断DS:[0602H]判断DS:[0602H]里面的值,并跟据结果来进行对应的转换 JMPPUTSI1: MOVAL,21H ADDBYTEPTRDS:[0602H],01H JMPPUTSI2: MOVAL,14H ADDBYTEPTRDS:[0602H],01H JMPPUTSI3: MOVAL,0CH MOVBYTEPTRDS:[0602H],00H JMPPUT PUT: MOVDX,IOBPT OUTDX,ALNEXT: MOVAL,20H MOVDX,INTPORT1 OUTDX,AL SUBBYTEPTRDS:[0601H],01H CMPBYTEPTRDS:[0601H],00H JZINTRE1 JMPEXCONVERS: MOVBH,0H ANDAL,0FH MOVBL,AL MOVAL,CS:[BX+DATA2] MOVBX,DATA0 MOVDS:[BX],AL RETINTRE1: MOVBYTEPTRDS:[0601H],03HEX: MOVAL,20H中断结束控制方式OCW2,普通中断结束方式 MOVDX,INTPORT1中断结束控制方式OCW2,普通中断结束方式 OUTDX,AL STI IRETLEDDISP: MOVAL,90H MOVDX,CONTPORT OUTDX,AL MOVBYTEPTRDS:[0600H],00LED1: CMPBYTEPTRDS:[0600H],07H显示子程序,从左到右依次送数 JALED2显示子程序,从左到右依次送数 MOVBL,DS:[0600H] MOVBH,0H MOVAL,CS:[BX+SI] MOVDX,DATAPORT OUTDX,AL ADDBYTEPTRDS:[0600H],01H JNZLED1LED2: RET格式化内存,将数码管将要显示的字符的编码写入内存FORMAT:MOVBX,0 ;格式化内存,将数码管将要显示的字符的编码写入内存 MOVWORDPTRDS:[BX+0500H],5050H ADDBX,2 MOVWORDPTRDS:[BX+0500H],0079H ADDBX,2 MOVWORDPTRDS:[BX+0500H],0000H ADDBX,2 MOVWORDPTRDS:[BX+0500H],0000H ADDBX,2 MOVWORDPTRDS:[BX+0500H],063FH ADDBX,2 MOVWORDPTRDS:[BX+0500H],4F5BH ADDBX,2 MOVWORDPTRDS:[BX+0500H],6D66H ADDBX,2 MOVWORDPTRDS:[BX+0500H],077DH ADDBX,2 MOVWORDPTRDS:[BX+0500H],6F7FH ADDBX,2 MOVWORDPTRDS:[BX+0500H],7C77H ADDBX,2 MOVWORDPTRDS:[BX+0500H],5E39H ADDBX,2 MOVWORDPTRDS:[BX+0500H],7179H ADDBX,2 MOVWORDPTRDS:[BX+0500H],4040H ADDBX,2 MOVWORDPTRDS:[BX+0500H],4040H ADDBX,2 MOVWORDPTRDS:[BX+0500H],4040H ADDBX,2 MOVWORDPTRDS:[BX+0500H],4040H ADDBX,2 RETCODEENDSENDSTART心得体会本学期的微机原理和接口技术及其课程设计都已经结束。在这个过程中,我们有所付出,也有所回报,让我感受颇多。对于《微机原理与接口技术》这门课程而言,初学时,感觉摸不着头绪。面对着众多的术语、概念及原理性的问题不知道该如何下手。在了解课程的特点后,我发现,应该以微机的整机概念为突破口,在如何建立整体概念上下功夫。"麻雀虽小,五脏俱全",可以通过学习一个模型机的组成和指令执行的过程,了解和熟悉计算机的结构、特点和工作过程。《微机原理与接口技术》课程有许多新名词、新专业术语。透彻理解这些名词、术语的意思,为今后深入学习打下基础。一个新的名词从首次接触到理解和应用,需要一个反复的过程。而在众多概念中,真正关键的并不是很多。比如"中断"概念,既是重点又是难点,如果不懂中断技术,就不能算是搞懂了微机原理。在学习中凡是遇到这种情况,绝对不轻易放过,要力求真正弄懂,搞懂一个重点,将使一大串概念迎刃而解。学习过程中,我发现许多概念很相近,为了更好地掌握,将一些容易混淆的概念集中在一起进行分析,比较它们之间的异同点。比如:微机原理中,引入了计算机由五大部分组成这一概念;从中央处理器引出微处理器的定义;在引出微型计算机定义时,强调输入/输出接口的重要性;在引出微型计算机系统的定义时,强调计算机软件与计算机硬件的相辅相成的关系。微处理器是微型计算机的重要组成部分,它与微型计算机、微型计算机系统是完全不同的概念。微处理器、微型计算机和微型计算机系统在微机中,最基础的语言是汇编语言。汇编语言是一个最基础最古老的计算机语言。语言总是越基础越重要,在重大的编程项目中应用最广泛。就我的个人理解,汇编是对寄存的地址以及数据单元进行最直接的修改。而在某些时候,这种方法是最有效,最可靠的。比如,在当今的战争中,首先就是运用这方面的知识来修改地方的系统程序。让地方的卫星偏离轨道,从而不能发现目标。其威力可见一斑。然而,事物总有两面性,有优点自然缺点也不少。其中,最重要的一点就是,汇编语言很复杂,对某个数据进行修改时,本来很简单的一个操作会用比较烦琐的语言来解决,而这些语言本身在执行和操作的过程中,占有大量的时间和成本。在一些讲求效率的场合,并不可取。汇编语言对学习其他计算机起到一个比较、对照、参考的促进作用。学习事物总

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论