一、实验目的
使用8255扩展AT80C51单片机的输出口,控制十二个发光二极管燃灭,模拟交通灯管理。
1、设计相应的电路,要求一个口只能控制一个发光二极管。
2、编写相应的程序并调试,要求使用软件延时。
二、实验内容
设有一个十字路口,初始态为四个路口的红灯全亮。之后6秒钟东西路口的绿灯亮、南北路口的红灯亮,此时东西路口方向通车。持续10秒后,东西路口的绿灯熄灭、黄灯开始闪烁,闪5次后,东西路口的红灯亮,同时南北路口的绿灯亮,此时南北路口方向开始通车。持续10秒后,南北路口的绿灯熄灭、黄灯开始闪烁,闪5次后,南北路口的红灯亮,同时东西路口的绿灯亮,此时东西路口方向通车……一直重复上述过程。
南京理工大学的这个单片机实验主要关注的是使用8255芯片来扩展AT80C51单片机的输出接口,以实现交通灯管理系统的模拟。实验目标是设计电路和编写程序,使得单片机能控制十二个发光二极管(LED)的亮灭,这些LED代表交通灯的不同颜色。
实验内容涉及到一个十字路口的交通灯管理,初始状态为四个路口的红灯全部亮起。接着,东西方向的绿灯亮6秒,南北方向的红灯亮,允许东西方向的车辆通行。10秒后,东西方向的绿灯熄灭,黄灯开始闪烁5次,然后东西方向的红灯亮起,同时南北方向的绿灯亮起,允许南北方向的车辆通行。这个过程不断循环,每次绿灯亮10秒,黄灯闪烁5次,交替控制交通流。
实验步骤包括:
1. 设计电路:使用8255A来控制LED,其中PB4-7对应黄灯,PC0-3对应红灯,PC4-7对应绿灯。
2. 编写程序:设定8255A的工作模式为方式0,所有端口作为输出。程序中设置了交通灯亮灭的逻辑,并通过软件延时实现定时控制。
源代码部分展示了如何初始化8255A,设置其工作模式,以及如何控制不同LED的状态。例如,通过改变PORTB和PORTC的值来控制黄灯、红灯和绿灯的亮灭,使用延时子程序(如DL11和DL12)来实现特定时间的等待。
实验现象与预期一致,即在仿真运行时,交通灯按照预设的时间和顺序正确地亮灭,实现了十字路口的交通管理功能。
这个实验涵盖了以下几个关键知识点:
1. **单片机原理**:AT80C51是一款常用的8位微控制器,它有内置的RAM、ROM和I/O端口,适用于简单的嵌入式系统。
2. **I/O扩展**:8255A是可编程并行接口,可以扩展单片机的输入/输出能力,这里用于增加输出端口的数量。
3. **软件延时**:通过循环计数实现软件延时,控制灯光变化的时间间隔。
4. **硬件电路设计**:LED的连接方式(共阳极),以及如何通过单片机控制其亮灭。
5. **编程逻辑**:通过编写汇编语言程序,实现交通灯控制的逻辑,包括状态转换和定时控制。
通过这个实验,学生能够深入理解单片机控制硬件的基本原理,掌握I/O扩展和软件延时的方法,以及设计和实现简单嵌入式系统的能力。
评论0