计算机科学与技术 专业课程设计任务书
学生姓名 | 专业班级 | 学号 | |||||
题 目 | 交通信号灯控制系统的设计 | ||||||
课题性质 | 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.设计任务与要求
初始状态用K1键控制,为两个黄灯闪烁;
K2键控制红、黄、绿灯接通时间分别为5秒、2秒、5秒;
K3键控制红、黄、绿灯接通时间分别为2秒、1秒、2秒。
一位数码管显示红灯和绿灯亮时间的倒计时信息。
1、画出逻辑硬件图
2、用汇编语言写出程序
3、画出程序流程图,设计出全部程序并调试通过
4、写出设计思路和调试方法与步骤
2.设计思想
使用8086CPU芯片+8255A并行接口芯片+单位共阴数码管+红、黄、绿LED灯+SWITCH开关等进行连线,再通过编写汇编程序实现输入输出——实现通过输入K1、K2、K3三个开关的断连状态输出对应的东西南北LED红绿灯、数码管倒计时状态。
3.主要元器件介绍
3.1 8086CPU芯片(33引脚
高电平:最小模式)
⑴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)
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寄存器中的数据写入输出锁存器。
适合于无条件输入输出方式。
74LS138工作原理如下:当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。下图是它的原理结构图以及真值表:
无论从逻辑图还是功能表我们都可以看到74LS138的八个输出管脚,任何时刻要么全为高电平1—芯片处于不工作状态,要么只有一个为低电平0,其余7个输出管脚全为高电平1。如果出现两个输出管脚在同一个时间为0的情况,说明该芯片已经损坏。
74LS138有三个附加的控制端、和。当、时,输出为高电平(S=1),译码器处于工作状态。否则,译码器被禁止,所有的输出端被封锁在高电平,如表中所示。这三个控制端也叫做“片选”输入端,利用片选的作用可以将多篇连接起来以扩展译码器的功能。
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的数据不变。
⑴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位地址锁存器。
一个七段数码管由一根导线选中,一组八根导线控制发光显示不同的数字。
LED_RED/YELLOW/GREEN红黄绿发光二极管、SWITCH一位开关、RES电阻、NOT非门、OR_10或门(10连线)等。
4.设计方案与硬件连线
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一样。
5.程序流程图
5.1总流程图(AGAIN0)
6.程序源代码
......
7.设计结果
7.2 K2键控制红、黄、绿灯接通时间分别为5秒、2秒、5秒
图7.4 东西黄,南北红(2)
7.3 K3键控制红、黄、绿灯接通时间分别为2秒、1秒、2秒
图7.10 东西红,南北黄(1)
8.总结
通过本次课设,我更加深刻的理解到了微机课上所讲的知识,很好的将学过的知识:8086、8255A、汇编语言等联系到一起,中间遇到了一些小困难——比如如何实现延时0.5秒,那些端口控制什么进行输入输出、初始化控制字、硬件连线等,但是都通过查找相关资料得到了较好的解决。
“纸上得来终觉浅,绝知此事要躬行”,选择了自己很感兴趣的交通信号灯管理系统。做完这个课设明白了原来红绿灯的实现也没有那么难做,现在的自己也对用单片机开发连线、编程实现简单功能有了个囫囵见解,很有成就感,希望能继续加油,下次争取做得更好。