微机原理与接口技术课程设计-----交通灯设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学
微机课程设计报告
题目交通灯设计
专业班级
姓名
学号
指导老师林立新老师
目录
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位寄存器来用。
Intel 8086拥有四个16位的通用寄存器,也
能够当作八个8位寄存器来存取,以及四个16位
索引寄存器(包含了堆栈指标)。资料寄存器通常
由指令隐含地使用,针对暂存值需要复杂的寄存
器配置。它提供64K 8 位元的输出输入(或32K
16 位元),以及固定的向量中断。大部分的指令
只能够存取一个内存位址,所以其中一个操作数
必须是一个寄存器。运算结果会储存在操作数中
的一个寄存器。
Intel 8086有四个内存区段(segment)寄存
器,可以从索引寄存器来设定。区段寄存器可以
让CPU 利用特殊的方式存取1 MB内存。8086
把段地址左移 4 位然后把它加上偏移地址。大部
分的人都认为这是一个很不好的设计,因为这样的结果是会让各分段有重叠。尽管这样对组合语言而言大部分被接受(也甚至有用),可以完全地控制分段,,使在编程中使用指针(如C编程语言)变得困难。它导致指针的高效率表示变得困难,且有可能产生两个指向同一个地方的指针拥有不同的地址。更坏的是,这种方式产生要让内存扩充到大于 1 MB 的困难。而8086 的寻址方式改变让内存扩充较有效率。
8086处理器的时钟频率介于4.77MHz(在原先的IBM PC频率)和10 MHz 之间。8086 没有包含浮点指令部分(FPU),但是可以通过外接数学辅助处理器来增强浮点计算能力。