C51单片机实验-交通灯控制

该博客介绍了使用C51单片机进行交通灯控制的实验,包括实验目的、任务、控制流程图和Proteus仿真。通过编程,实现了四个方向12个发光二极管的亮灭控制,模拟交通灯交替放行的逻辑,以确保交通顺畅。在Proteus环境下进行了硬件仿真和调试,以验证程序的正确性。

实验目的:

  1. 学习模拟交通灯控制的实现方法;
  2. 掌握Proteus硬件仿真与调试。

任务:

  1. 根据要求编写程序,并写出原理性注释;
  2. 将检查程序运行的结果,分析一下是否正确;
  3. 完成所建工程的仿真及调试。

实验内容

按照电路要求在Protues中设计电路图。编程实现如下功能:
用单片机端口作输出口,控制四个方向共12个发光二极管亮灭,模拟交通灯管理。功能描述如下:初始态为四个路口的红灯全亮之后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车,延时一段时间后东西路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪烁,闪烁若干次后,再切换到东西路口方向,之后重复以上过程。

交通灯控制流程图

交通灯控制流程图

Proteus 仿真原理图

在这里插入图片描述

代码

#include <reg51.h>
#include <absacc.h>
typedef unsigned char uchar;
typedef unsigned int uint;

#define CON XBYTE[0x0003] //控制寄存器端口地址
#define PA XBYTE[0x0000] //PA端口地址
#define PB XBYTE[0x0001] //PB端口地址
#define PC XBYTE[0x0002] //PC端口地址

uchar count=0;
uchar sum_time=0;
//定义一个数组,用来显示计时信息
uchar time[] = {
   
   0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10};

//定时器的初始化
void time_init(){
   
   
	TMOD
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值