单片机——led扩展交通灯(proteus8.9和KeilC51)

原理讲解

东西方向先亮绿灯,左右红灯;等待数秒后,东西向绿灯变黄灯闪烁5次,变红灯;南北向由红灯变绿灯。
在这里插入图片描述

红绿灯在proteus的表示方法

第一种方法就是如上图,器件名称是traffic lights
第二种方法就是使用led灯
在这里插入图片描述

注意注意led是低电平亮,traffic lights 是高电平亮

交通灯的实现

原理图

在这里插入图片描述

代码讲解

  1. 我们先来了解一下单片机和红绿灯是如何连接的

    在这里插入图片描述
    各个引脚表示的功能

    P2引脚76543210
    红绿灯无用无用东绿东黄东红北红北黄北绿
  2. 实现能够模拟红绿灯要实现下面六种情况
    在这里插入图片描述

  3. 我们来一个一个分析

    在这里插入图片描述

    东绿北红东黄北红东无北红东红北绿东红北黄东红北无
    P2引脚0x240x140x040x090x0a0x08

完整代码

#include<reg51.h>

#define uchar unsigned char
#define uint unsigned int

void delay(uint xms){
	uint i,j;
	for(i=xms;i>0;i--){
		for(j=110;j>0;j--);
	}
}

void main(){
	uint i;
	while(1){
		P2=0x24;             //东西绿灯亮,南北红灯亮
		delay(3000);
		for(i=0;i<5;i++){
			P2=0x14;           //东西黄灯亮,南北红灯亮
			delay(500);
			P2=0x04;           //东西没有灯亮,南北红灯亮
			delay(500);
		}
		P2=0x09;             //东西红灯亮,南北绿灯亮
		delay(3000);
		for(i=0;i<5;i++){
			P2=0x0a;           //东西红灯亮,南北黄灯亮
			delay(500);
			P2=0x08;           //东西红灯亮,南北没灯亮
			delay(500);
		}
	}
}
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值