【51单片机交通灯仿真】

本文介绍了如何将交通灯控制程序中原有的20秒倒计时修改为15秒,并在Proteus环境中进行电路图设计与仿真。作者王佳宁通过调整代码并录制仿真效果,展示了交通灯状态的切换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

交通灯设计与仿真
题量: 1 满分: 100 分 创建者:王佳宁 截止时间:2022-04-24 11:54
一.简答题(共1 题,100.0分)
1
查看书中第六章的交通灯实例,设计并进行仿真,将原程序中倒计时20秒改为倒计时15秒。要求Proteus绘制电路图中体现学号姓名,并录制仿真效果。

填写答案

#include "reg51.h"

sbit in1 = P2^1;
sbit in2 = P2^2;
sbit in3 = P2^3;
sbit in4 = P2^4;
sbit in5 = P2^5;
sbit in6 = P2^6;

typedef unsigned char u8;
u8 a[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
void delay(int ms)
{
	int i,j;
	for(i=ms;i>0;i--) 	 
	  for(j=110;j>0;j--); 
}
void display(int d)
{	  int f = d;
	 while(f>=0)
	 {
	 if(f<10)
	 {
	  P3=a[f];
	  P1=a[0];
	  f=f-1;
	  delay(1000);
	  }
	  if(f>=10)
	  {
	  P3=a[f%10];
	  P1=a[f/10];
	  f=f-1;
	  delay(1000);
	 }
	 }

}

void one()
{
	in1=0;
	in2=1;
	in3=0;
	in4=1;
	in5=0;
	in6=0;
}
void two()
{
  	in1=0;
	in2=1;
	delay(800);
	in2=0;
	delay(800);
	in3=0;
	in4=1;
	in5=0;
	in6=0;
}
void three()
{
  	in1=0;
	in2=0;
	in3=1;
	in4=1;
	in5=0;
	in6=0;
}
void four()
{
  	in1=1;
	in2=0;
	in3=0;
	in4=0;
	in5=1;
	in6=0;
}
void five()
{
  	in1=1;
	in2=0;
	in3=0;
	in4=0;
	in5=1;
	delay(800);
	in5=0;
	delay(800);
	in6=0;
}
void six()
{
  	in1=1;
	in2=0;
	in3=0;
	in4=0;
	in6=1;
	delay(800);
	in6=0;
	delay(800);
	in5=0;
}
int main()
{	
	int i=0;
	in1=0;
	in2=0;
	in3=0;
	in4=0;
	in5=0;
	in6=0;
  while(1)
  {	
   one();
   display(20);
   two();
   display(3);
   three();
   display(2);
   four();
   display(20);
   five();
   display(3);
   six();
   display(2);
  }
}

在这里插入图片描述

交通灯 - Proteus 8 理图绘制


交作业记得该函数名

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值