交通信号灯控制系统的设计(仿真,汇编语言实现)——微机课设

计算机科学与技术 专业课程设计任务书

学生姓名

专业班级

学号

题  目

交通信号灯控制系统的设计

课题性质

A.工程设计

课题来源

自拟课题

指导教师

同组姓名

主要内容

初始状态用K1键控制,为两个黄灯闪烁;

K2键控制红、黄、绿灯接通时间分别为5秒、2秒、5秒;

K3键控制红、黄、绿灯接通时间分别为2秒、1秒、2秒。

一位数码管显示红灯和绿灯亮时间的倒计时信息。

任务要求

1、画出逻辑硬件图

2、用汇编语言写出程序

3、画出程序流程图,设计出全部程序并调试通过

4、写出设计思路和调试方法与步骤

参考文献

[1]钱晓捷.16/32位微机原理、汇编语言及接口技术教程[M].北京:机械工业出版社,2011.

[2]戴梅萼,史嘉权.微型计算机技术及应用(第4版)[M].北京:清华大学出版社,2008.

[3]荆淑霞.微机原理与汇编语言程序设计(第1版)[M].北京:中国水利水电出版社,2005.

[4]楼天顺,周家让,张伟涛.微机原理与接口技术[M].北京:科学出版社,2019.

[5]牟琦.微机原理与接口技术[M].北京:清华大学出版社,2018.

审查意见

指导教师签字:

教研室主任签字:                          

填表说明:“课题性质”一栏:A.工程设计;B.工程技术研究;C.软件工程(如CAI课题等);D.文献型综述;E.其它。

目录

1.设计任务与要求

1.1设计任务

1.2要求

2.设计思想

3.主要元器件介绍

3.1 8086CPU芯片(33引脚高电平:最小模式)

3.2 8255A并行接口芯片(初始化控制字选择工作方式:方式0)

3.3 74LS138芯片(3 线-8 线译码器)

3.4 74LS273芯片 (8位数据/地址锁存器)

3.5 七段数码管(共阴极)

3.6 其他简单元件

4.设计方案与硬件连线

4.1设计方案

4.2硬件连线

5.程序流程图

5.1总流程图(AGAIN0)

5.2按K1黄灯闪烁流程图(AGAIN1)

5.3按K2红黄绿灯设置时间525流程图(AGAIN2)

5.4按K3红黄绿灯设置时间212流程图(AGAIN3)

6.程序源代码

7.设计结果

7.1 初始状态用K1键控制,为两个黄灯闪烁

7.2 K2键控制红、黄、绿灯接通时间分别为5秒、2秒、5秒

7.3 K3键控制红、黄、绿灯接通时间分别为2秒、1秒、2秒

8.总结

1.设计任务与要求

1.1设计任务

初始状态用K1键控制,为两个黄灯闪烁;

K2键控制红、黄、绿灯接通时间分别为5秒、2秒、5秒;

K3键控制红、黄、绿灯接通时间分别为2秒、1秒、2秒。

一位数码管显示红灯和绿灯亮时间的倒计时信息。

1.2要求

1、画出逻辑硬件图

2、用汇编语言写出程序

3、画出程序流程图,设计出全部程序并调试通过

4、写出设计思路和调试方法与步骤

2.设计思想

使用8086CPU芯片+8255A并行接口芯片+单位共阴数码管+红、黄、绿LED灯+SWITCH开关等进行连线,再通过编写汇编程序实现输入输出——实现通过输入K1、K2、K3三个开关的断连状态输出对应的东西南北LED红绿灯、数码管倒计时状态。

3.主要元器件介绍

3.1 8086CPU芯片(33引脚

高电平:最小模式)

图3.1 8086CPU芯片

⑴AD15~AD0(addressdatabus):地址/数据总线,双向,三态。

⑵A19/S6~A16/S3(address/status):地址/状态信号,输出,三态。

⑶BHE(低)/S7(bushighenable/status):允许总线高8位数据传送/状态信号,输出,三态。

⑷RD/(read):读信号,输出,三态,低电平有效。

⑸READY(ready):准备就绪信号,输入,高电平有效。

⑹INTR(interruptrequest):可屏蔽中断请求信号,输入,高电平有效。

⑺TEST/(test):等待测试控制信号,输入,低电平有效。

⑻NMI(non-maskableinterrupt):非屏蔽中断请求信号,输入,高电平有效。

⑼RESET(reset):复位信号,输入,高电平有效。

⑽CLK(clock):时钟信号,输入。CLK为CPU提供基本的定时脉冲信号。

⑾VCC电源输入引脚。8086CPU采用单一+5V电源供电。

⑿GND:接地引脚。

⒀MN/MX/(minimum/maximum):最小/最大模式输入控制信号。

CPU工作于最小模式时使用的引脚信号24~31的含义及其功能如下。

⑴M/IO/(memoryI/Oselect):存储器、I/O端口选择控制信号。

信号指明当前CPU是选择访问存储器还是访问I/O端口。为高电平时,访问存储器,表示当前要进行CPU与存储器之间的数据传送。为低电平时,访问I/O端口,表示当前要进行CPU与I/O端口之间的数据传送。

⑵WR/(write):写信号,输出,低电平有效。

信号有效时,表明CPU正在执行写总线周期,同时由信号决定是对存储器还是对I/O端口执行写操作。

⑶INTA/(interruptacknowledge):可屏蔽中断响应信号,输出,低电平有效。

CPU通过信号对外设提出的可屏蔽中断请求做出响应。为低电平时,表示CPU已经响应外设的中断请求,即将执行中断服务程序。

⑷ALE(addresslockenable):地址锁存允许信号,输出,高电平有效。

CPU利用ALE信号可以把AD15~AD0地址/数据、A19/S6~A16/S3地址/状态线上的地址信息锁存在地址锁存器中。

⑸DT/(datatransmitorreceive):数据发送/接收信号,输出,三态。

DT/信号用来控制数据传送的方向。DT/为高电平时,CPU发送数据到存储器或I/O端口;DT/为低电平时,CPU接收来自存储器或I/O端口的数据。

⑹DEN/(dataenable):数据允许控制信号,输出,三态,低电平有效。

信号用作总线收发器的选通控制信号。当为低电平时,表明CPU进行数据的读/写操作。

⑺HOLD(busholdrequest):总线保持请求信号,输入,高电平有效。

在DMA数据传送方式中,由总线控制器8237A发出一个高电平有效的总线请求信号,通过HOLD引脚输入到CPU,请求CPU让出总线控制权。

⑻HLDA(holdacknowledge):总线保持响应信号,输出,高电平有效。

HLDA是与HOLD配合使用的联络信号。在HLDA有效期间,HLDA引脚输出一个高电平有效的响应信号,同时总线将处于浮空状态,CPU让出对总线的控制权,将其交付给申请使用总线的8237A控制器使用,总线使用完后,会使HOLD信号变为低电平,CPU又重新获得对总线的控制权。


3.2 8255A并行接口芯片(初始化控制字选择工作方式:方式0)

图3.2 8255A并行接口芯片

8位数据端口:A口、B口、C口

A口:PA7~PA0

B口:PB7~PB0

C口:PC7~PC0

连接外部设备

A口与B口为一个8位的输入口或输出口

C口单独作为一个8位的输入口或输出口

配合A口和B口使用,作为控制信号和状态信号

A组和B组控制逻辑

A组:A口和C口的高4位;

B组:B口和C口的低4位。

控制寄存器:保存CPU送来的命令字。

决定A组和B组的工作方式

对C口的每一位执行置位/复位操作

根据命令字,向相关端口送出控制信号

数据总线缓冲器

D7~D0:8位三态双向缓冲器

连接系统数据总线

用于传输三类信息

CPU送来的数据和控制信息(命令字)

外设送来的数据和状态信息U

高阻态:隔离芯片与系统总线

读/写控制逻辑

CS:片选信号输入引脚,低电平有效

~RD:读信号输入引脚,低电平有效

~WR:写信号输入引脚,低电平有效

~RESET:复位信号输入引脚,高电平有效。用于将8255A控制字寄存器清“0”,并将A、B、C口置成输入状态

A1、A0:端口选择信号输入引脚

其余引脚

VCC接电源,GND接地

8255A与微机系统的连接

8位数据总线的系统中,A1与A0与地址总线的A1与A0相连。

16位数据总线的系统中,A1与A0与地址总线的A2,A1相连,当数据线D7~D0连接到cpu数据总线的低8位,以偶地址来寻址,连接到cpu数据总线的高8位,以奇地址来寻址。

工作方式方式0(基本输入/输出方式)

A口、B口和C口:三个独立的8位输入或输出数据口。

C口:可分为两个独立的4位输入或输出数据口。

输出时有锁存能力,输入时无锁存能力。

基本输入方式

外设将数据送到8255A输入缓冲器

CPU给出有效的8255A地址及控制信号

CPU发读命令,将输入缓冲器中的数据读入AL寄存器中

基本输出方式

CPU给出有效的8255A地址及控制信号。

CPU发写命令,将AL寄存器中的数据写入输出锁存器。

适合于无条件输入输出方式。

3.3 74LS138芯片(3 线-8 线译码器)

74LS138工作原理如下:当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。下图是它的原理结构图以及真值表:

图3.3 74LS138芯片

图3.4 74LS138芯片功能表

无论从逻辑图还是功能表我们都可以看到74LS138的八个输出管脚,任何时刻要么全为高电平1—芯片处于不工作状态,要么只有一个为低电平0,其余7个输出管脚全为高电平1。如果出现两个输出管脚在同一个时间为0的情况,说明该芯片已经损坏。

74LS138有三个附加的控制端、和。当、时,输出为高电平(S=1),译码器处于工作状态。否则,译码器被禁止,所有的输出端被封锁在高电平,如表中所示。这三个控制端也叫做“片选”输入端,利用片选的作用可以将多篇连接起来以扩展译码器的功能。

3.4 74LS273芯片 (8位数据/地址锁存器)

74LS273是一种带清除功能的8D触发器 , D0~D7为数据输入端,Q0~Q7为数据输出端,正脉冲触发,低电平清除,常用作数据锁存器,地址锁存器。

74LS273的工作原理:

1脚是复位端,11脚是时钟(脉冲)输入端;当1脚为L电平时,无论有无脉冲,数据端(D端)是H或L电平,输出端(Q端)都为L电平;仅当1脚为高电平(H)时,“D”端的数据在脉冲的上升期间被传送到“Q”端.

第一脚WR:主清除端,低电平触发,即当为低电平时,芯片被清除,输出全为0(低电平);

CP(CLK):触发端,上升沿触发,即当CP从低到高电平时,D0~D7的数据通过芯片;为0时将数据锁存,D0~D7的数据不变。

图3.5 74LS273芯片

⑴1脚是复位/MR,低电平有效,当1脚是低电平时,输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部输出0,即全部复位。

⑵当1脚为高电平时,11(CP)脚是锁存控制端,并且是上升沿触发锁存.。当11脚有一个上升沿,立即锁存输入脚3、4、7、8、13、14、17、18的电平状态,并且立即呈现在在输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)上。

⑶74ls273其它管脚功能:1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。

3.5 七段数码管(共阴极)

一个七段数码管由一根导线选中,一组八根导线控制发光显示不同的数字。

3.6 其他简单元件

LED_RED/YELLOW/GREEN红黄绿发光二极管、SWITCH一位开关、RES电阻、NOT非门、OR_10或门(10连线)等。

4.设计方案与硬件连线

4.1设计方案

8086采用最小模式,连接8255A并行接口并进行汇编编程实现本次课设要求,如下设计方案:8255A的C端口输入K1、K2、K3三个开关的断连状态,A端口输出倒计时数码管状态,B端口输出东南西北红黄绿灯状态。

首先8255A的C端口读入K1/K2/K3按键数据:如果判断数据为001B则实现功能AGAIN1黄灯闪烁;如果判断为010B则实现功能AGAIN2设置红黄绿525秒;如果判断为100B则实现功能AGAIN3设置红黄绿212秒;如果读入数据都不符合则进行最初AGAIN0循环重新读入按键数据。

按下K1开关进入黄灯闪烁功能AGAIN1:首先向A端口输入0关闭倒计时数码管、B端口输入0100100B点亮东西南北黄灯,进行延时0.5秒,再向B端口输入0熄灭东西南北黄灯,延时一秒。配合外部AGAIN0大循环可以实现黄灯一直闪烁。

按下K2开关进入红绿灯设置时间525功能AGAIN2:首先设置TIME1为5(对应红绿灯倒计时初始值),TIME2为2(对应黄灯倒计时初始值),然后跳转AGAIN_LOOP进行显示——通过A端口向数码管传输数字,通过B端口改变红黄绿灯状态,内部有小循环S1、S2、S3、S4使红绿灯状态不变,倒计时每秒减一。配合外部AGAIN0大循环可以实现实时接受按键变化。

按下K3开关进入红绿灯设置时间212功能AGAIN3:除了更改设置TIME1为2,TIME2为1,其他设计思路与功能AGAIN2一样。

4.2硬件连线

图4.1 总接线图

图4.2 8255A主要接线部分图

5.程序流程图

5.1总流程图(AGAIN0)

图5.1 总流程图

5.2按K1黄灯闪烁流程图(AGAIN1)

图5.2 按K1黄灯闪烁流程图

5.3按K2红黄绿灯设置时间525流程图(AGAIN2)

图5.3 按K2红黄绿灯设置时间525流程图

5.4按K3红黄绿灯设置时间212流程图(AGAIN3)

图5.4 按K2红黄绿灯设置时间212流程图

6.程序源代码

......

7.设计结果


7.1 初始状态用K1键控制,为两个黄灯闪烁

图7.1 黄灯亮

图7.2 黄灯灭

7.2 K2键控制红、黄、绿灯接通时间分别为5秒、2秒、5秒

图7.3 东西绿,南北红(5)

图7.4 东西黄,南北红(2)

图7.5 东西红,南北绿(5)

图7.6 东西红,南北黄(2)

7.3 K3键控制红、黄、绿灯接通时间分别为2秒、1秒、2秒

图7.7 东西绿,南北红(2)

图7.8 东西黄,南北红(1)

图7.9 东西红,南北绿(2)

图7.10 东西红,南北黄(1)

8.总结

通过本次课设,我更加深刻的理解到了微机课上所讲的知识,很好的将学过的知识:8086、8255A、汇编语言等联系到一起,中间遇到了一些小困难——比如如何实现延时0.5秒,那些端口控制什么进行输入输出、初始化控制字、硬件连线等,但是都通过查找相关资料得到了较好的解决。

“纸上得来终觉浅,绝知此事要躬行”,选择了自己很感兴趣的交通信号灯管理系统。做完这个课设明白了原来红绿灯的实现也没有那么难做,现在的自己也对用单片机开发连线、编程实现简单功能有了个囫囵见解,很有成就感,希望能继续加油,下次争取做得更好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/860487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Diffusion Mamba:用于CT到MRI转换的Mamba扩散模型

Diffusion Mamba:用于CT到MRI转换的Mamba扩散模型 提出背景拆解左侧:整体框架中间:Mamba块的细节右侧:螺旋扫描的细节 提出背景 论文:https://arxiv.org/pdf/2406.15910 代码:https://github.com/wongzbb…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十七)

课程地址: 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 27节) P27《26.Stage模型-UIAbility的启动模式》 本节讲解 UIAbility的启动模式:Stage模型的应用&#x…

策略模式-通过枚举newInstance替代工厂

策略模式-使用枚举newInstance 前言一、枚举类:MarkCheckDataTypeEnum二、抽象类:AbstractMarkChecker三、检查类:MarkPeopleChecker四、demo演示总结 前言 很久没写文章了~~ 吐槽下:入职新公司后,基本在搬砖&#xf…

这几个PR小技巧你Get到了吗?

学习是永无止境的,需要不间断地学习,获取新知识。今天带来了5个PR小技巧,可以先收藏起来Adobe Premiere Pro 2024的获取查看Baidu Cloud 1、双倍稳定画面更舒适 一般来说大型电视剧、电影使用的拍摄设备都是非常高端的,不像我们…

【研究】国内外大模型公司进展

2022年11月,OpenAI推出基于GPT-3.5的ChatGPT后,引发全球AI大模型技术开发与投资热潮。AI大模型性能持续快速提升。以衡量LLM的常用评测标准MMLU为例,2021年底全球最先进大模型的MMLU 5-shot得分刚达到60%,2022年底超过70%&#xf…

面相对象程序设计

面相对象程序设计包含内容如下 局域网聊天程序设网页浏览器设计电子日历记事本的设计 以其中的一个的报告进行举例 1需求与总体设计 1 1.1需求分析 1 1.2总体设计方案 1 1.2.1系统功能分析以及功能表 1 1.3系统类图的关系以及表之间的联系 2 2详细设计 3 2.1 Manag…

vuex的actions返回结果类型是promise及actions方法互相调用

this.$store.dispatch(‘logout’)返回的结果是Promise类型的 调用成功的情况下,返回状态为fulfilled,值为undefined。 所以可以直接进行.then操作: this.$store.dispatch(logout).then((result) > {console.log(result); });因为 Vuex …

ARM day1练习 求1~100内的和

题目要求:用ARM汇编语言实现1~100之间之和(5050 0x13BA) .text 声明以下内容是文本段的内容 .global _start .global声明_start标签是一个全局标签_start:mov r1,#0x0 r1 summov r2,#0x1 r2 ifun: 加法函数cmp r2,#100 r2中的值和100作比较add…

理解CNN模型如何学习

深度学习模型常常被认为是不可解释的。但是人们正在探索不同的技术来解释这些模型内发生了什么。对于图像,由卷积神经网络学习的特征是可解释的。我们将探索两种流行的技术来理解卷积神经网络。 可视化中间层的输出 可视化中间层的输出将有助于我们理解输入图像如何…

JupyterLab使用指南(七):JupyterLab使用 LaTeX 生成数学公式

在 JupyterLab 中,可以使用 LaTeX 语法生成复杂的数学公式。JupyterLab 内置对 LaTeX 的支持,使得我们可以方便地在 notebook 中编写和展示数学公式。以下是详细的步骤和示例。 1. 使用 LaTeX 生成数学公式 LaTeX 是一种专门用于排版数学公式的语言。J…

Stable Diffusion 插件安装与推荐,助力你的AI绘图

在上一篇文章我们安装了Stable Diffusion ,这篇文章我们来安装Stable Diffusion的插件 Stable Diffusion的插件是绘画中重要的一环,好的插件可以让你的绘画更加得心应手 中英双语插件 为什么要安装中英双语插件呢,不能只安装中文插件吗&…

安卓应用开发学习:获取导航卫星信息

一、引言 我昨天写了《安卓应用开发学习:获取经纬度及地理位置描述信息》日志,今天再接再厉,记录一下跟着《Android App 开发进阶与项目实战》一书,实现获取导航卫星信息,并在手机上显示的功能的情况。先上实现后的在…

Redis的持久化方式和注意点

redis持久篇 两种持久化技术: AOF日志和RDB快照 Redis默认会开启RBD快照 AOF:持久化只会记录写操作命令。 是一种日志,写入到文件,有相应的格式文本 就是 Redis 里的AOF(Append Only File)持久化功能,注意只会记录写操作命令…

决定马萨诸塞州版图的关键历史事件

决定马萨诸塞州版图的关键历史事件: 1. 早期探索与*民定居:17世纪初,英国清教徒为寻求宗教自由,乘坐“五月花号”到达新大陆,并于1620年在现在的普利茅斯建立了第一个永久性英国*民地。随后,更多的英国*民…

LKD-Net: Large Kernel Convolution Network for Single Image Dehazing

LKD-Net:用于单幅图像去噪的大型核卷积网络 摘要 基于深度卷积神经网络(CNN)的单幅图像去噪方法已经取得了很大的成功。以往的方法致力于通过增加网络的深度和宽度来提高网络的性能。目前的方法侧重于增加卷积核的大小,以受益于更大的接受野来增强其性能…

昇思25天学习打卡营第1天|新手上路

这里写自定义目录标题 打卡昇思MindSpore扫盲快速入门 打卡 昇思MindSpore扫盲 第一节基本是一个mindspore的科普扫盲。大概介绍一通mindspore的一些架构,feature,以及其对比于其他同类框架的优势。简单扫读了一遍大概有点印象直接跳过。 快速入门 这…

Vue 3 中处理文件上传和响应式更新

Vue 3 中处理文件上传和响应式更新 一、前言1.创建文件上传组件2.解释代码3.在主应用中使用文件上传组件4.总结 一、前言 在现代 web 开发中,文件上传是一个常见需求。本文将详细介绍如何在 Vue 3 中处理文件上传,并确保上传后的文件列表能够响应式更新…

如何把图片转换成pdf格式?图片转PDF方法分享

如何把图片转换成pdf格式?图片转换为PDF格式的重要性不言而喻。PDF文件不仅能够在各种操作系统和设备上保持一致的显示效果,还能确保图片内容的清晰度和质量不受损害。此外,PDF格式支持加密和权限设置,可以保护图片内容不被轻易篡…

FireFox 编译指南2024 Windows10篇-环境准备(一)

1. 引言 在开源浏览器项目中,Firefox因其高性能和灵活性而备受开发者青睐。为了在本地环境中编译和定制Firefox,开发者需要做好充分的环境准备工作。这不仅是编译成功的基础,也是后续调试、优化和二次开发的关键步骤。 编译Firefox是一个复…

深入剖析Tomcat(十二) 详解StandardContext

StandardContext是Context容器的一个标准实现,一般情况下,Tomcat都是使用StandardContext类来创建Context容器。前面讲过,Context容器代表了一个Web应用,Tomcat本身支持部署多个应用,相应的每个应用都会有一个Standard…