微机原理与接口技术课程设计交通灯设计.docx

上传人:b****8 文档编号:9292247 上传时间:2023-02-04 格式:DOCX 页数:23 大小:789.49KB
下载 相关 举报
微机原理与接口技术课程设计交通灯设计.docx_第1页
第1页 / 共23页
微机原理与接口技术课程设计交通灯设计.docx_第2页
第2页 / 共23页
微机原理与接口技术课程设计交通灯设计.docx_第3页
第3页 / 共23页
微机原理与接口技术课程设计交通灯设计.docx_第4页
第4页 / 共23页
微机原理与接口技术课程设计交通灯设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术课程设计交通灯设计.docx

《微机原理与接口技术课程设计交通灯设计.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计交通灯设计.docx(23页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术课程设计交通灯设计.docx

微机原理与接口技术课程设计交通灯设计

中南大学

微机课程设计报告

题目交通灯设计

专业班级

姓名

学号

指导老师林立新老师

目录

1.课程设计题目、功能、目的……………………………………..2

2.系统分析与设计…………………………………………………………3

2.1系统所用芯片分析…………………………………………………………..3

2.2所选用芯片的简要介绍……………………………………………………4

2.3系统框图…………………………………………………………………………..6

3.程序设计………….…………………………………………………………7

3.1十字路口交通灯状态转换表……………………………………………7

3.2主程序流程图……………………………………………………………………7

3.3中断子程序流程图…………………………………………………………..8

3.4数码管码表……………………………………………………………………..8

3.5各芯片初始化说明………………………………………………………….9

4.运行情况………….………………………………………………………10

5.具体源代码及注释……………………………………………………11

6.心得体会………….………………………………………………………16

一、课程设计题目、功能、目的

1.课程设计题目--------------交通灯设计

 

2.本设计所实现功能

1)实现十字路口交通灯各种状态的转换;

2)各种状态转换的时间可进行灵活设置;

3)采用中断的方法对状态转换进行控制,提高处理器效率;

4)在各个状态转换的同时实现倒计时提醒。

 

3.本次课程设计目的

1)通过《微机原理与接口》课程设计,使学生能够进一步了解微型计算机工作原理, 微型计算机的硬件结构及微型计算机软件编程。

2)要求学生根据接口电路的硬件要求进行计算机的汇编语言程序设计,使学生的软件编程能力得到加强,对接口电路的综合应用能力有较大提高。

二、系统分析与设计

1.系统所用芯片分析

1)首先本个系统需要一个中央处理器来负责对整个系统进行控制管理,因为《微机原理与接口技术》这门课上介绍了8086芯片,所以可以采用8086作为本系统的中央处理器。

2)由于本次的课程设计的题目是交通灯,而根据十字路口处的交通灯南北和东西方向各有红、绿、黄三种颜色的灯,因此可用8255来控制6个LED灯的实现模拟的南北和东西方向上的交通灯。

3)而交通灯的状态转换时间要由中断方式来控制,所以很容易想到了可以用8259作为中断芯片,与8086芯片相连。

4)交通灯的状态转换时间可灵活设置,于是想到了可以采用一块8253或8254芯片和一个脉冲源相连,8253对脉冲源送来的脉冲进行分频,然后将输出送到8259作为中断源,而8253采用不用的计数初值其输出脉冲的频率就不一样,因此实现了交通类状态转换时间的灵活设置。

5)最后关于交通灯状态转换的倒计时功能,可由一个七段数码管来显示倒计时,而本次课程设计的实验箱没有提供单个数码管,而是提供了一个八位一体七段数码管,所以还需一块8279芯片来对数码管进行控制。

2.所选用芯片的简要介绍

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),但是可以通过外接数学辅助处理器来增强浮点计算能力。

 

3.系统框图

 

三、程序设计

1.十字路口交通灯状态转换表:

南北方向

东西方向

十六进制代码

绿

绿

0

0

1

0

0

0

1

0

22H

0

0

1

0

0

0

0

1

21H

0

0

0

1

0

1

0

0

14H

0

0

0

0

1

1

0

0

0CH

2.

主程序流程图:

3.

中断子程序流程图:

4.共阴数码管码表:

数字

0

1

2

3

4

编码

0x3F

0x06

0x5B

0x4F

0x66

数字

5

6

7

8

9

编码

0x6D

0x7D

0x07

0x7F

0x90

5.8259初始化说明

MOVAL,13H;写ICW1,需要ICW4、单片工作、边沿触发方式

MOVDX,INTPORT1

OUTDX,AL

MOVAL,08H;写ICW2,设置中断向量号

MOVDX,INTPORT2

OUTDX,AL

MOVAL,09H;写ICW4,普通全嵌套方式、采用缓冲方式

OUTDX,AL

MOVAL,0F7H;写OCW1,只开IR3中断请求,其余屏蔽

OUTDX,AL

6.8253初始化说明

MOVDX,TCONTRO

MOVAL,10110100B;采用二进制计数方式,工作方式二,十六们计数,计数器二

OUTDX,AL

MOVDX,TCON2

MOVAL,0AH;计数初值为10,即1S中断一次

OUTDX,AL

MOVAL,00H

OUTDX,AL

7.8255初始化说明

MOVAL,80H;PA、PB、PC口都设定为输出工作方式

MOVDX,IOCONPT

OUTDX,AL

 

四、

运行情况

经多次调试后,系统运行良好,实现了要求和设想中的全部功能,如上图为实际运行时的图片。

 

五、具体代码及注释

CODESEGMENT

ASSUMECS:

CODE

INTPORT1EQU0020H

INTPORT2EQU0021H

INTQ3EQUINTREEUP3;8259

CONTPORTEQU00DFH

DATAPORTEQU00DEH;8279

TCONTROEQU004BH;8253

TCON2EQU004AH

IOCONPTEQU0073H所用芯片端口地址初始化

IOCPTEQU0072H

IOBPTEQU0071H;8255

DATA0EQU0580H

DATA1EQU0500H

DATA2EQU0508H

DATA3EQU0518H

DATA4EQU0520H

ORG1000H

START:

JMPTint1

Tint1:

CLI

MOVAX,0H

MOVDS,AX

MOVDX,CONTPORT

MOVAL,00H

OUTDX,AL

8279初始化及工作方式的设定

MOVAL,2AH

OUTDX,AL

MOVAL,0d0h

OUTDX,AL

MOVAL,90h

OUTDX,AL

 

8255初始化及工作方式的设定

MOVAL,80H

MOVDX,IOCONPT

OUTDX,AL

MOVDX,TCONTRO

MOVAL,10110100B

OUTDX,AL

8253初始化及工作方式的设定

MOVDX,TCON2

MOVAL,0AH

OUTDX,AL

MOVAL,00H

OUTDX,AL

CALLFORMAT

CLI

MOVDI,DATA0

MOVCX,08H

XORAX,AX

REPSTOSW

MOVSI,DATA3

CALLLEDDISP;数码管显示初始图案“-------”

MOVAX,0H

MOVDS,AX

CALLWRINTVER;调用子程序,设置中断地址向量表

MOVAL,13H

MOVDX,INTPORT1

OUTDX,AL

MOVAL,08H

8259初始化及工作方式的设定

MOVDX,INTPORT2

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

RET

INTREEUP3:

;中断子程序

CLI

MOVAL,DS:

[0601H]

CALLCONVERS

MOVSI,DATA0

CALLLEDDISP

CMPBYTEPTRDS:

[0601H],03H

JNZNEXT

MOVDX,IOBPT

COMP:

CMPBYTEPTRDS:

[0602H],00H

JZSI0

CMPBYTEPTRDS:

[0602H],01H

JZSI1

CMPBYTEPTRDS:

[0602H],02H

JZSI2

CMPBYTEPTRDS:

[0602H],03H

JZSI3

SI0:

MOVAL,22H

判断DS:

[0602H]里面的值,并跟据结果来进行对应的转换

ADDBYTEPTRDS:

[0602H],01H

JMPPUT

SI1:

MOVAL,21H

ADDBYTEPTRDS:

[0602H],01H

JMPPUT

SI2:

MOVAL,14H

ADDBYTEPTRDS:

[0602H],01H

JMPPUT

SI3:

MOVAL,0CH

MOVBYTEPTRDS:

[0602H],00H

JMPPUT

PUT:

MOVDX,IOBPT

OUTDX,AL

NEXT:

MOVAL,20H

MOVDX,INTPORT1

OUTDX,AL

SUBBYTEPTRDS:

[0601H],01H

CMPBYTEPTRDS:

[0601H],00H

JZINTRE1

JMPEX

CONVERS:

MOVBH,0H

ANDAL,0FH

MOVBL,AL

MOVAL,CS:

[BX+DATA2]

MOVBX,DATA0

MOVDS:

[BX],AL

RET

INTRE1:

MOVBYTEPTRDS:

[0601H],03H

EX:

MOVAL,20H

中断结束控制方式OCW2,普通中断结束方式

MOVDX,INTPORT1

OUTDX,AL

STI

IRET

LEDDISP:

MOVAL,90H

MOVDX,CONTPORT

OUTDX,AL

MOVBYTEPTRDS:

[0600H],00

LED1:

CMPBYTEPTRDS:

[0600H],07H

显示子程序,从左到右依次送数

JALED2

MOVBL,DS:

[0600H]

MOVBH,0H

MOVAL,CS:

[BX+SI]

MOVDX,DATAPORT

OUTDX,AL

ADDBYTEPTRDS:

[0600H],01H

JNZLED1

LED2:

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

RET

CODEENDS

ENDSTART

 

六、心得体会

本学期的微机原理和接口技术及其课程设计都已经结束。

在这个过程中,我们有所付出,也有所回报,让我感受颇多。

 

对于《微机原理与接口技术》这门课程而言,初学时,感觉摸不着头绪。

面对着众多的术语、概念及原理性的问题不知道该如何下手。

在了解课程的特点后,我发现,应该以微机的整机概念为突破口,在如何建立整体概念上下功夫。

“麻雀虽小,五脏俱全”,可以通过学习一个模型机的组成和指令执行的过程,了解和熟悉计算机的结构、特点和工作过程。

《微机原理与接口技术》课程有许多新名词、新专业术语。

透彻理解这些名词、术语的意思,为今后深入学习打下基础。

一个新的名词从首次接触到理解和应用,需要一个反复的过程。

而在众多概念中,真正关键的并不是很多。

比如“中断”概念,既是重点又是难点,如果不懂中断技术,就不能算是搞懂了微机原理。

在学习中凡是遇到这种情况,绝对不轻易放过,要力求真正弄懂,搞懂一个重点,将使一大串概念迎刃而解。

学习过程中,我发现许多概念很相近,为了更好地掌握,将一些容易混淆的概念集中在一起进行分析,比较它们之间的异同点。

比如:

微机原理中,引入了计算机由五大部分组成这一概念;从中央处理器引出微处理器的定义;在引出微型计算机定义时,强调输入/输出接口的重要性;在引出微型计算机系统的定义时,强调计算机软件与计算机硬件的相辅相成的关系。

微处理器是微型计算机的重要组成部分,它与微型计算机、微型计算机系统是完全不同的概念。

 微处理器、微型计算机和微型计算机系统在微机中,最基础的语言是汇编语言。

汇编语言是一个最基础最古老的计算机语言。

语言总是越基础越重要,在重大的编程项目中应用最广泛。

就我的个人理解,汇编是对寄存的地址以及数据单元进行最直接的修改。

而在某些时候,这种方法是最有效,最可靠的。

比如,在当今的战争中,首先就是运用这方面的知识来修改地方的系统程序。

让地方的卫星偏离轨道,从而不能发现目标。

其威力可见一斑。

 

然而,事物总有两面性,有优点自然缺点也不少。

其中,最重要的一点就是,汇编语言很复杂,对某个数据进行修改时,本来很简单的一个操作会用比较烦琐的语言来解决,而这些语言本身在执行和操作的过程中,占有大量的时间和成本。

在一些讲求效率的场合,并不可取。

汇编语言对学习其他计算机起到一个比较、对照、参考的促进作用。

学习事物总是从最简单基础的开始。

那么学习高级语言也当然应当从汇编开始。

学习汇编语言实际上是培养了学习计算机语言的能力和素养。

个人认为,学习汇编语言对学习其他语言很有促进作用。

  汇编语言在本学期微机学习中有核心地位。

本学期微机原理课程内容繁多,还学习了可编程的计数/定时的8253,可编程的外围接口芯片8255A等。

学的都是芯片逻辑器件,而在名字前都标有“可编程”,其核心作用不可低估。

我认为,在学习中要考虑到“学以致用”,因此,在接下来我们又安排了微机原理与接口技术的课程设计。

 

  经过本次微机课题的设计与研究,我们深入的学习了除课本以外的很多微机附件的内容,掌握了很多实验室操作技能。

我们在实际设计中遇到很多问题,但结合所学知识以及参考资料的帮助,不断地尝试,设计了一种能够解决实际问题的系统。

同时也加深了我们对于现实生活中,实际的嵌入式操作系统的原理的理解。

 

  在实际设计过程中,我们遇到了诸多设计的问题。

例仿真系统中某些芯片没有,这一问题主要是因为我们所设计的功能诸多,刚开始对于这一设计在硬件方面设计不是非常的合理,后来通过使用所用仿真软件的绘画功能,新增加了一个芯片便解决了所有的按键和现实问题。

 

  在程序设计中,我们更加深入了解了8086的使用与本质。

为了能设计成功,我们查阅了各种关于其硬件连接和软件设计的资料,同时也发现了理论资料与实践上的区别,通过多次尝试,成功完成了硬件和软件的设计。

在这次课题设计过程中,我们合理的分工,适宜的规划进度的进展,不仅仅按时完成了预先设计的内容,而且学到了很多书本上没有的知识。

 

在这一过程中,我们充分发挥我们的主观能动性,想象创造性,攻克了很多之前都没有想过的难关,真的受益匪浅。

这次设计不仅仅耗时耗力,而且还要整天对着电脑进行仿真且不停的调试、修改,这次课程设计对我们理论和实验都有很大的提升,我想这些对于我们今后的学习生活都有很重要的意义,这将是我们在程序设计以及大学学习过程中的宝贵经验和财富。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1