微处理器原理与应用实验(51单片机部分)——实验4.5 8255并行I / O口扩展及交通信号灯控制实验
实验具体内容
本实验利用 8255 实现可编程的并行 IO 扩展功能,并利用其完成交通灯控制。实验要求红灯常亮 30S,绿灯常亮 25S 后闪烁 5S。使用静态数码管显示绿灯常亮倒计时。
实验原理图如下
连线关系:
注意事项:
本实验中的东西方向信号灯同步控制,南北方向信号灯同步控制,即:东西方向上同种颜色的灯同时亮或灭,南北方向上同种颜色的灯同时亮或灭。
程序中的延时 1 秒钟,可以利用纯软件延时实现,也可以结合定时器硬件中断加软件计数方式实现。
图中的 CD4511 是 BCD 码到 LED 数码管的显示码转换芯片,因此要显示某个数字,只需要在相应的端口送出该数字的 BCD 码即可,不用进行软件译码。
流程图
实验过程
- 关掉实验箱电源。将 MCU 板,PIO 版,KEY&LED 板插接在母板上。按照前面连接关系表将硬件连接好。
- 在仿真器断电情况下将仿真器的仿真头插在 MCU 板的 CPU 插座上。将仿真器与开发 PC 机的通信口连接好,打开实验箱及仿真器的电源。
- 运行 Keil uVision2 开发环境,建立工程 PIO8255_trafic.uV2,CPU 为 AT89S51,不包含启动文件 STARTUP.A51。
- 按照实验功能要求创建源程序 PIO8255_trafic.asm 并加入到工程PIO8255_trafic.uV2,并设置工程 PIO8255_trafic.uV2 属性,将其晶振频率设置为 11.0592MHz,选择输出可执行文件,DEBUG 方式选择硬件 DEBUG,并选择其中的“WAVE V series MCS51 Driver”仿真器。
- 构造(Build)工程 PIO8255_trafic.uV2。如果编程有误进行修改,直至构造正确为止。
- 运行程序,交通灯状态切换以及倒计时器的显示是否符合程序要求,若不符合,分析出错原因,继续重复第 4、5 步的步骤,直至结果正确。
实验结果:
状态1:东西绿灯亮,南北红灯亮,持续25s,用七段数码管显示倒计时,初值为25;
状态2:东西绿灯以1Hz频率闪烁,南北红灯亮,持续5s,用七段数码管显示倒计时,初值为5;
状态3:东西红灯亮,南北绿灯亮,持续25s,用七段数码管显示倒计时,初值为25;
状态4:东西红灯亮,南北绿灯以1Hz频率闪烁,持续5s,用七段数码管显示倒计时,初值为5;
验证成功。
总结51单片机利用可编程IO扩展芯片的使用方法: 首先需要对8255的命令口进行初始化配置,确定A、B、C口的工作方式,将C51的读写端口分别与8255的读写端口相连,以控制对8255的读写。将8255的输入端与C51的数据输出端相连,通过向C51的数据输出端输出数据实现向8255输入数据,8255按照工作方式输出数据。
编写程序的时候考虑到不知道通过调用子程序的方法控制164的输入输出是否会把R2寄存器的内容入栈,所以选择在每一个状态中加164的控制程序。
实验源程序
1 | ORG 0000H |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 wen's Blog!